[SCM] advene/master: New upstream version 3.0

oaubert-guest at users.alioth.debian.org oaubert-guest at users.alioth.debian.org
Thu Oct 12 20:45:51 UTC 2017


The following commit has been merged in the master branch:
commit 3a54dbd56fc5f89cf85f1cd32c62d125da228109
Author: Olivier Aubert <contact at olivieraubert.net>
Date:   Thu Jun 1 14:51:17 2017 +0200

    New upstream version 3.0

diff --git a/CHANGES.txt b/CHANGES.txt
index c59c513..105589b 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,24 +1,68 @@
+advene (3.0) unstable; urgency=medium
+
+  * Upgrade libs to Gtk3 / Gstreamer 1.0
+
+  * Preferences are now stored in json format, the old preferences file
+    advene.prefs is converted and can be removed.
+
+  * Many bug fixes, probably some bug introduction
+
+  * Completion:
+
+    - Content completion is available when editing through table view or
+      timeline quick edit mode.
+
+    - New global option completion: if there are predefined terms for the
+      annotation type, then use only these terms. Else fallback on dynamic
+      completion.
+
+    - Annotation type predefined terms used only space as separator (and
+      thus could not contain spaces). If a comma is present in the terms
+      field, then it will be considered as separator, allowing to define
+      terms containing spaces.
+
+  * Table view:
+    - new shortcuts Control-< and Control-> to modify begin/end time
+    - export to CSV action
+
+  * WebAnnotation export filter
+
+  * OWL Schema importer
+
+ -- Olivier Aubert <contact at olivieraubert.net>  Thu, 01 Jun 2017 11:17:02 +0200
+
+advene (1.2) unstable; urgency=medium
+
+  * Source-only release. Various bug fixes. The official source repository
+    is now http://github.com/oaubert/advene/
+
+    This should be the last release of the 1.* series (based on gtk2 and
+    gstreamer 0.10). Development is now done on the new version
+    (based on gtk3/gstreamer1).
+
+ -- Olivier Aubert <contact at olivieraubert.net>  Mon, 22 May 2017 16:08:41 +0200
+
 advene (1.1) unstable; urgency=medium
 
   * Source-only release. Various bug fixes. The official source repository
     is now http://github.com/oaubert/advene/
 
   * Compressed (gzipped) text files can be directly imported.
-  
+
   * Option to specify time unit (s or ms) in text import.
-  
+
   * SVG editor
-  
+
     * can edit paths (polylines)
-    
+
     * slider to change background image
-  
+
     * slider to change opacity value
 
   * Export filters
-  
+
     * TurTLe export filter
-  
+
     * Metadataplayer export filter
 
  -- Olivier Aubert <contact at olivieraubert.net>  Wed, 09 Jul 2014 17:13:48 +0200
@@ -30,7 +74,7 @@ advene (1.0) unstable; urgency=low
     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.
 
diff --git a/INSTALL.txt b/INSTALL.txt
index 72ee6ac..32e91d9 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -13,40 +13,46 @@ You will need the following python packages (the package names are from
 Debian, they may slightly vary on other distributions) :
 
 python >= 2.7
-python-gtk2 (>=2.24)
-python-cherrypy3 (>=3.0.0) [for convenience, a copy of cherrypy may be included in
-this Advene distribution]
+python-gi
+gir1.2-gstreamer-1.0
+python-gi-cairo
+gir1.2-gtk-3.0 (>=3.4)
+gir1.2-webkit-3.0
+gir1.2-goocanvas-2.0
+gir1.2-rsvg-2.0
+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 may be
-included in this Advene distribution] 
+included in this Advene distribution]
 
-For the gstreamer plugin:
-python-gst0.10
-gstreamer0.10-plugins-base
-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)
+For gstreamer, it is useful to also install the gstreamer packages
+needed to decode various formats (esp. gstreamer1.0-plugins-bad and
+gstreamer1.0-plugins-ugly).
 
 Note that all these dependencies are already available in Debian and
-in standard installations of the Ubuntu Feisty Fawn (and later)
-distribution.
+in standard installations of Ubuntu.
+
+When running on virtual machines (parallels, virtualbox...) : you must
+select the X11 video output in Edit/Preferences/Video Player.
 
 ** Windows version
 
 If you want to run Advene from sources on win32, you should install in this order (note the version numbers) :
 
-Python  >=  v. 2.7 : http://python.org/
-
-Gstreamer SDK from http://gstreamer.com/ (choosing complete install to
-get python bindings). It will install both Gstreamer and gtk (with
-python bindings).
+Python2  >=  v. 2.7 : http://python.org/
 
 win32process from http://pywin32.sf.net/
 
-Optionally, 
-python-opencv
+Python bindings for gtk/gstreamer and underlying libs from
+https://wiki.gnome.org/action/show/Projects/PyGObject enabling support for
+ - gtk
+ - cairo
+ - gstreamer
+ - rsvg
+ - webkit
+ - goocanvas
+
+Optionally,
+
 CherryPy: http://download.cherrypy.org/cherrypy/ [for
 convenience, a copy of cherrypy is included in this Advene
 distribution]
@@ -56,28 +62,18 @@ http://www.owlfish.com/software/simpleTAL/download.html [for
 convenience, a copy of simpletal is included in this Advene
 distribution]
 
-
 ** Mac OS X version
 
-From macports (http://www.macports.org/), install :
-
-    * 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]
-    * 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
+The new Advene code has not yet been tested in Mac OS X environement,
+for lack of dedicated hardware. You can consider a donation :-) or try
+yourself to install dependencies (python-gi, gtk, gstreamer) using the
+linux install information.
 
 * Testing
 
 You can run the script ./bin/advene directly from the source
-directory. It will adapt its paths to this location.
+directory. It will detect that it is running from sources and 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 :
@@ -105,7 +101,7 @@ can be used directly from its sources directory.
 * Documentation
 
 An (incomplete) user guide is in the public Advene wiki, feel free to contribute:
-http://liris.cnrs.fr/advene/wiki/index.php/Main_Page
+http://advene.org/wiki/index.php/Main_Page
 
 A summarized list of changes across versions is available in the
 CHANGES.txt file.
diff --git a/README.txt b/README.txt
index fd4d640..159284f 100644
--- a/README.txt
+++ b/README.txt
@@ -5,7 +5,7 @@ The Advene project (Annotate Digital Video, Exchange on the NEt) aims
 at providing a model and a format to share annotations about digital
 video documents (movies, courses, conferences...), as well as tools to
 edit and visualize the hypervideos generated from both the annotations
-and the audiovisual documents.  
+and the audiovisual documents.
 
 With the Advene software, teachers, moviegoers, etc. can exchange
 multimedia comments and analyses about video documents. The project
@@ -58,14 +58,14 @@ Basic use
 
 Sample packages are provided on the Advene website:
 
- http://liris.cnrs.fr/advene/examples.html
+ http://advene.org/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 at:
 
-http://liris.cnrs.fr/advene/wiki/index.php/Main_Page
+http://advene.org/wiki/index.php/Main_Page
 
 Copyright Information
 =====================
diff --git a/README.win32 b/README.win32
index b9556c6..c2896ab 100644
--- a/README.win32
+++ b/README.win32
@@ -1,18 +1,16 @@
-This package was downloaded from http://liris.cnrs.fr/advene/
+This package was downloaded from http://advene.org/
 
-This installer was generated by Bertrand Richard <bertrand.richard at liris.cnrs.fr>
+Upstream Authors:
 
-Upstream Authors: 
-
-   Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+   Olivier Aubert <contact at olivieraubert.net>
    Pierre-Antoine Champin <pierre-antoine.champin at liris.cnrs.fr>
-   Yannick Prie <yannick.prie at liris.cnrs.fr>
-   Bertrand Richard <bertrand.richard at liris.cnrs.fr>
+   Yannick Prie <yannick.prie at univ-nantes.fr>
+   Bertrand Richard
 
 Documentation:
 
   A user guide can be found in the public Advene wiki, feel free to contribute:
-  http://liris.cnrs.fr/advene/wiki/index.php/Main_Page
+  http://advene.org/wiki/
 
 Copyright:
 
diff --git a/advene_pad.xml b/advene_pad.xml
index 6fc86b1..87d1939 100644
--- a/advene_pad.xml
+++ b/advene_pad.xml
@@ -11,25 +11,22 @@
     </MASTER_PAD_VERSION_INFO>
     <Company_Info>
         <Company_Name>Advene</Company_Name>
-	<Address_1>LIRIS - Universite Lyon 1</Address_1>
-        <Address_2>UFR Informatique</Address_2>
-        <City_Town>VILLEURBANNE</City_Town>
-	<State_Province></State_Province>
-	<Zip_Postal_Code>69622</Zip_Postal_Code>
-	<Country>France</Country>
-	<Company_WebSite_URL>http://www.advene.org/</Company_WebSite_URL>
+        <City_Town>Nantes</City_Town>
+	    <Zip_Postal_Code>44100</Zip_Postal_Code>
+	    <Country>France</Country>
+	    <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>
+          <Author_Email>contact at olivieraubert.net</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_Email>contact at olivieraubert.net</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_Email>support at advene.org</Sales_Email>
+          <Support_Email>support at advene.org</Support_Email>
+          <General_Email>support at advene.org</General_Email>
           <Sales_Phone></Sales_Phone><Support_Phone></Support_Phone>
           <General_Phone></General_Phone>
           <Fax_Phone></Fax_Phone>
@@ -37,10 +34,10 @@
     </Company_Info>
     <Program_Info>
       <Program_Name>Advene</Program_Name>
-      <Program_Version>1.0.2</Program_Version>
-      <Program_Release_Month>01</Program_Release_Month>
-      <Program_Release_Day>20</Program_Release_Day>
-      <Program_Release_Year>2012</Program_Release_Year>
+      <Program_Version>2.0</Program_Version>
+      <Program_Release_Month>FIXME</Program_Release_Month>
+      <Program_Release_Day>FIXME</Program_Release_Day>
+      <Program_Release_Year>2017</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,14 +47,14 @@
       <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>32211765</File_Size_Bytes>
-	<File_Size_K>31456</File_Size_K>
-	<File_Size_MB>30</File_Size_MB>
+        <File_Size_Bytes>FIXME32211765</File_Size_Bytes>
+	<File_Size_K>FIXME31456</File_Size_K>
+	<File_Size_MB>FIXME30</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>
       </Expire_Info>
-      <Program_Change_Info>See the changelog at http://svn.gna.org/viewcvs/advene/trunk/CHANGES.txt</Program_Change_Info>
+      <Program_Change_Info>See the changelog at https://github.com/oaubert/advene/blob/master/CHANGES.txt</Program_Change_Info>
       <Program_Category_Class>Audio & Multimedia::Video Tools</Program_Category_Class>
       <Program_Specific_Category></Program_Specific_Category>
       <Program_System_Requirements></Program_System_Requirements>
diff --git a/bin/advene b/bin/advene
index c402228..5693da0 100755
--- a/bin/advene
+++ b/bin/advene
@@ -21,9 +21,8 @@ import sys
 import os
 import time
 import StringIO
-import shutil
 
-#import psyco; psyco.log(); psyco.profile()
+# import psyco; psyco.log(); psyco.profile()
 
 # Magic stuff before the instanciation of Advene : we set the
 # sys.path and the various config.data.path
@@ -48,11 +47,12 @@ def recursive_mkdir(d):
         recursive_mkdir(parent)
     os.mkdir(d)
 
+
 logfile = None
 # Try to find if we are in a development tree.
 (maindir, subdir) = os.path.split(
     os.path.dirname(os.path.abspath(sys.argv[0])))
-if subdir == 'bin' and  os.path.exists(os.path.join(maindir, "setup.py")):
+if subdir == 'bin' and os.path.exists(os.path.join(maindir, "setup.py")):
     # Chances are that we were in a development tree...
     libpath = os.path.join(maindir, "lib")
     print "You seem to have a development tree at:\n%s." % libpath
@@ -86,7 +86,7 @@ if config.data.preferences['language']:
 
 print config.data.version_string, "run at", time.strftime("%d/%m/%y %H:%M:%S %Z"), "on", sys.platform
 
-if config.data.os in ('linux') and not 'DISPLAY' in os.environ:
+if config.data.os in ('linux') and 'DISPLAY' not in os.environ:
     print "The DISPLAY environment variable is not set. Cannot continue."
     sys.exit(1)
 
@@ -104,7 +104,7 @@ if not os.path.exists(config.data.path['resources']):
         if os.path.basename(d) == 'Resources':
             print "Seemingly running from a .app bundle"
 
-            # We will put pangorc, pango.modules and gdk-pixbuf.loaders files in a directory of the user preferences.
+            # We will put pangorc, Pango.modules and gdk-pixbuf.loaders files in a directory of the user preferences.
             userconf = config.data.advenefile('_config', 'settings')
             if not os.path.isdir(userconf):
                 recursive_mkdir(userconf)
@@ -123,8 +123,8 @@ if not os.path.exists(config.data.path['resources']):
             os.environ['XDG_DATA_DIRS'] = d
             os.environ['GST_PLUGIN_PATH'] = os.path.join(d, 'gst-plugins')
 
-            # Let us fix the pango.modules and pixbuf.loaders files if necessary
-            for n in ('pangorc', 'pango.modules', 'gdk-pixbuf.loaders'):
+            # Let us fix the Pango.modules and pixbuf.loaders files if necessary
+            for n in ('pangorc', 'Pango.modules', 'gdk-pixbuf.loaders'):
                 sname = os.path.join(d, n + '.in')
                 dname = os.path.join(userconf, n)
                 data = open(sname, 'r').readlines()
@@ -139,15 +139,22 @@ if not os.path.exists(config.data.path['resources']):
 if config.data.os == 'win32':
     import _winreg
 
-    #win32 platform, add the "lib" folder to the system path
+    # win32 platform, add the "lib" folder to the system path
     os.environ['PATH'] += os.path.pathsep + "lib"
-    #add pixbufloader dir in environment
+    # add pixbufloader dir in environment
     if not ('GDK_PIXBUF_MODULE_FILE' in os.environ.keys() and os.path.exists(os.environ['GDK_PIXBUF_MODULE_FILE'])):
-        os.environ['GDK_PIXBUF_MODULE_FILE'] = os.path.join(os.path.abspath(os.path.dirname(sys.executable)), 'lib', 'gdk-pixbuf-2.0','2.10.0', 'loaders', 'loaders.cache')
+        os.environ['GDK_PIXBUF_MODULE_FILE'] = os.path.join(
+            os.path.abspath(os.path.dirname(sys.executable)),
+            'lib',
+            'gdk-pixbuf-2.0',
+            '2.10.0',
+            'loaders',
+            'loaders.cache')
     print os.environ['GDK_PIXBUF_MODULE_FILE']
     try:
-        import pygtk
-        import gtk
+        import gi
+        gi.require_version('Gtk', '3.0')
+        from gi.repository import Gtk
     except ImportError:
         # Gtk DLLs are not in the PATH. Try to get their directory
         # from the registry
@@ -158,12 +165,14 @@ if config.data.os == 'win32':
         os.environ['PATH'] += os.path.pathsep + os.path.join(path, 'bin').encode('utf8')
         print "Using GTK DLLs at %s" % path
         try:
-            import pygtk
-            import gtk
+            import gi
+            from gi.repository import Gtk
         except ImportError:
             print "Cannot import GTK, try installing visual studio 2008 redist."
 else:
-    import gtk
+    import gi
+    gi.require_version('Gtk', '3.0')
+    from gi.repository import Gtk
 
 if __name__ == '__main__':
 
@@ -200,7 +209,7 @@ Aborting.""" % config.data.path[d]
             output = ".".join((os.path.splitext(f)[0], ext))
             print "Converting ", f, "into", output
             c.load_package(f)
-            #FIXME: could trigger events?
+            # FIXME: could trigger events?
             c.apply_export_filter(l[0], output)
         sys.exit(0)
 
@@ -213,11 +222,11 @@ Aborting.""" % config.data.path[d]
     import advene.gui.main
     gui = advene.gui.main.AdveneGUI()
     try:
-        #import hotshot
-        #filename = "/tmp/pythongrind.prof"
-        #prof = hotshot.Profile(filename, lineevents=1)
-        #prof.runcall(gui.main, config.data.args)
-        #prof.close()
+        # import hotshot
+        # filename = "/tmp/pythongrind.prof"
+        # prof = hotshot.Profile(filename, lineevents=1)
+        # prof.runcall(gui.main, config.data.args)
+        # prof.close()
         gui.main(config.data.args)
     except Exception, e:
         print config.data.version_string
@@ -228,19 +237,19 @@ Aborting.""" % config.data.path[d]
         err = s.getvalue()
         print err
 
-        import gtk
+        from gi.repository import Gtk
         if logfile is not None:
-            d = gtk.MessageDialog(None,
-                                gtk.DIALOG_MODAL,
-                                gtk.MESSAGE_ERROR,
-                                gtk.BUTTONS_OK,
-                                _("An error occurred."))
-            d.format_secondary_text(_("You can inform the Advene developers by sending the file\n %s\n to advene at liris.cnrs.fr, along with a description of how the bug occurred.") % logfile)
+            d = Gtk.MessageDialog(None,
+                                  Gtk.DialogFlags.MODAL,
+                                  Gtk.MessageType.ERROR,
+                                  Gtk.ButtonsType.OK,
+                                  _("An error occurred."))
+            d.format_secondary_text(_("You can inform the Advene developers by sending the file\n %s\n to support at advene.org, along with a description of how the bug occurred.") % logfile)
 
             def q(*p):
-                gtk.main_quit()
+                Gtk.main_quit()
                 return True
 
             d.connect('response', q)
             d.show()
-            gtk.main()
+            Gtk.main()
diff --git a/bin/advene-webserver b/bin/advene-webserver
index c717e24..03f249c 100755
--- a/bin/advene-webserver
+++ b/bin/advene-webserver
@@ -17,9 +17,11 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
 
+import logging
+logger = logging.getLogger(__name__)
+
 import sys
 import os
-import StringIO
 
 # Magic stuff before the instanciation of Advene : we set the
 # sys.path and the various config.data.path
@@ -41,7 +43,7 @@ def fix_paths(path):
 if subdir == 'bin' and  os.path.exists(os.path.join(maindir, "setup.py")):
   # Chances are that we were in a development tree...
   libpath=os.path.join(maindir, "lib")
-  print "You seem to have a development tree at:\n%s." % libpath
+  logger.info("You seem to have a development tree at:\n%s." % libpath)
   sys.path.insert (0, libpath)
 
   import advene.core.config as config
@@ -50,8 +52,8 @@ else:
   try:
     import advene.core.config as config
   except ImportError:
-    print """Cannot guess a valid directory.
-    Please check your installation or set the PYTHONPATH environment variable."""
+    logger.error("""Cannot guess a valid directory.
+    Please check your installation or set the PYTHONPATH environment variable.""")
     sys.exit(1)
 
 # Maybe we are running from a pyinstaller version
@@ -60,25 +62,24 @@ if not os.path.exists(config.data.path['resources']):
   if os.path.exists(os.path.join( maindir, 'share' )):
     # There is a 'share' directory at the same level as the executable
     # This can mean that we are in a pyinstaller version
-    print "Seemingly running from a pyinstaller version in\n%s" % maindir
+    logger.info("Seemingly running from a pyinstaller version in\n%s" % maindir)
     fix_paths(maindir)
 
 if __name__ == '__main__':
     from advene.core.controller import AdveneController
     from advene.model.zippackage import ZipPackage
 
-
     controller=AdveneController()
     controller.init(config.data.args)
 
     if config.data.webserver['mode'] == 2:
-      print "Server ready to serve requests (threaded mode)."
+      logger.info("Server ready to serve requests (threaded mode).")
       controller.serverthread.join()
     elif config.data.webserver['mode'] == 1:
-      print "Server ready to serve requests (mainloop mode)."
+      logger.info( "Server ready to serve requests (mainloop mode).")
       controller.self_loop()
     else:
-      print "Web server deactived in configuration."
+      logger.info("Web server deactived in configuration.")
 
     # Cleanup the ZipPackage directories
     ZipPackage.cleanup()
diff --git a/doc/TODO b/doc/TODO
index 406230d..14105c9 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -1,17 +1,28 @@
-* Shapewidget: allow to resize background image (then adapt to the widget size)
+* Forced text/audio alignment: https://www.readbeyond.it/aeneas/ / https://github.com/readbeyond/aeneas
+
+* Notebook: tab names hidden if content too large vertically
+
+* finder: handle DND of annotation type annotation type and other types
+* finder: update schemas content list on annotation type creation
+* finder: does not work correctly with empty packages (cf exporter)
+* Model: check dc: and xlink: prefixes in _impl.py code that uses uris for namespaces??
 
-* Table view: implement csv export
+* Gstreamer rendering: https://github.com/PhotoFilmStrip/PFS/blob/master/photofilmstrip/core/renderer/GStreamerRenderer.py
 
-* Implement an issue reporting/fixing tool (non-adjacents shots for instance, 0 or negative duration, etc)
+* Transcribe:
+- make delete-existing element a saveable option
+- insert timestamp on control+click (to preserve standard double click)
+
+* Shapewidget: allow to resize background image (then adapt to the widget size)
 
 * Port to gtk3.0/gstreamer1.0: https://wiki.ubuntu.com/Novacut/GStreamer1.0#Using_GStreamer_1.0_from_Python
+Stock items migration guide:
+https://docs.google.com/spreadsheets/d/1HavJQRPpMuq-N0GoN1wJR-9KEGXpKy3-NEPpZZkUGJY/pub?output=html
 
 * Allow to resize the SVG edit window
 
 * x-advene-values: normalize xx.xx notation (convert , to .)
 
-* Use simplejson instead of pickle for saving prefs
-
 * QRcode extractor
 
 * Have webcherry listen on both ipv4/ipv6
@@ -475,27 +486,6 @@ http://www.rexx.com/~dkuhlman/generateDS.html (XML-Schema) Or SOAPy
   - annotation alignment (=~ arrange/align in Impress)
   - ability to specify line order and which types to display
 
-* Make the annotation interface as On-Screen Display over the video window
-
-* Display the data in the form of a graph (annotation=Nodes, relations=Arcs or nodes)
-
-* Style setting:
-sendmail_styles="""
-style "green_button"
-{
-  fg[PRELIGHT] = { 1.0, 1.0, 1.0 }
-  bg[PRELIGHT] = { 0, 0.75, 0 }
-}
-widget "sendmail.*.Send*" style "green_button"
-
-style "blue_text"
-{
-  text[NORMAL] = { 0, 0, 0.75 }
-}
-widget "sendmail.*.mail" style "blue_text"
-"""
-gtk.rc_parse_string(sendmail_styles)
-
 ------------------------------------ Archive ------------------------------------------
 * Write the correct VLC/Python module -> DONE
 
@@ -2663,6 +2653,9 @@ http://www.onlamp.com/pub/a/onlamp/2005/04/28/kupu.html
 
 * shapewidget: allow to switch between begin/end images (or add a slider to select inside the annotation)
 
+* Make the annotation interface as On-Screen Display over the video window 
+
+
 # Local Variables:
 # auto-fill-inhibit-regexp: ".*"
 # End:
diff --git a/doc/advene.1 b/doc/advene.1
index fe2b4b0..558c871 100644
--- a/doc/advene.1
+++ b/doc/advene.1
@@ -33,7 +33,7 @@ the video itself.
 Use the \-\-help option to get a list of command line options.
 
 User documentation is available from the website
-http://www.advene.org/wiki/index.php/Main_Page
+http://www.advene.org/
 
 .SH ETYMOLOGY
 \fBadvene\fP is an ancient english word, meaning "to be added to
@@ -41,5 +41,5 @@ 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>,
+This manual page was written by Olivier Aubert <contact at olivieraubert.net>,
 for the Debian project (but may be used by others).
diff --git a/lib/advene/__init__.py b/lib/advene/__init__.py
index dc5e3f5..0e08aee 100644
--- a/lib/advene/__init__.py
+++ b/lib/advene/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/core/__init__.py b/lib/advene/core/__init__.py
index dc5e3f5..0e08aee 100644
--- a/lib/advene/core/__init__.py
+++ b/lib/advene/core/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/core/config.py b/lib/advene/core/config.py
index f15d0ab..6cfa0a0 100644
--- a/lib/advene/core/config.py
+++ b/lib/advene/core/config.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -27,15 +27,20 @@ It is meant to be used this way::
 
 @var data: an instance of Config (Singleton)
 """
+import logging
+logger = logging.getLogger(__name__)
+
 # FIXME: cf http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/473846
 # for windows-specific paths
 import sys
 import os
 import cPickle
+import json
 from optparse import OptionParser
 import mimetypes
 import operator
 import time
+import xml.dom
 
 APP='advene'
 
@@ -109,7 +114,7 @@ class Config(object):
         elif 'linux2' in os.sys.platform:
             self.os='linux'
         else:
-            print "Warning: undefined platform: ", os.sys.platform
+            logger.warning("Warning: undefined platform: %s", os.sys.platform)
             self.os=os.sys.platform
 
         if self.os == 'win32':
@@ -292,12 +297,13 @@ class Config(object):
             # Engine
             'tts-engine': 'auto',
             'edition-history-size': 5,
-            # popup views may be forced into a specific viewbook,
-            # instead of default popup
-            'popup-destination': 'popup',
+            # popup views may be popup or opened into a specific viewbook,
+            'popup-destination': 'east',
             'embedded': True,
             'abbreviation-mode': True,
             'completion-mode': True,
+            # Complete with predefined terms only if they are defined
+            'completion-predefined-only': False,
             'text-abbreviations': '',
             # Automatically start the player when loading a media file
             # (either directly or through a package)
@@ -345,8 +351,14 @@ class Config(object):
             }
 
         # Global context options
-        self.namespace_prefix = {'advenetool': self.namespace,
-                                 'dc': 'http://purl.org/dc/elements/1.1/'}
+        self.namespace_prefix = { 'advene': "http://experience.univ-lyon1.fr/advene/ns",
+                                  'advenetool': self.namespace,
+                                  'dc': 'http://purl.org/dc/elements/1.1/',
+                                  'svg': 'http://www.w3.org/2000/svg',
+                                  'xlink': "http://www.w3.org/1999/xlink",
+                                  'xml': xml.dom.XML_NAMESPACE,
+                                  'xmlnsNS': xml.dom.XMLNS_NAMESPACE }
+        self.reverse_namespace_prefix = dict( (v, k) for (k, v) in self.namespace_prefix.iteritems() )
 
         # Internal options. These should generally not be modified.
 
@@ -375,6 +387,7 @@ class Config(object):
         # Drag and drop parameters for URIed element and other elements
         self.target_type = {}
         self.drag_type = {}
+        self.target_entry = {}
         for name, typ, mime in (
             ('text-plain',           0, 'text/plain'),
             ('TEXT',                 1, 'TEXT'),
@@ -400,6 +413,7 @@ class Config(object):
             if mime is None:
                 mime = "application/x-advene-%s-uri" % name
             self.drag_type[name] = [ ( mime, 0, typ) ]
+            self.target_entry[name] = None
 
         self.video_extensions = (
             '.264',
@@ -490,6 +504,12 @@ class Config(object):
         parser=OptionParser(usage="""Advene - annotate digital videos, exchange on the Net.
     %prog [options] [file.azp|file.xml|alias=uri]""")
 
+        parser.add_option("-d", "--debug", dest="debug", action="store_true",
+                          help="Display debugging messages.")
+
+        parser.add_option("-i", "--info", dest="info", action="store_true",
+                          help="Display info messages.")
+
         parser.add_option("-v", "--version", dest="version", action="store_true",
                           help="Display version number and exit.")
 
@@ -533,8 +553,13 @@ class Config(object):
 
         (self.options, self.args) = parser.parse_args()
         if self.options.version:
-            print self.get_version_string()
+            logger.info(self.get_version_string())
             sys.exit(0)
+        if self.options.info:
+            logging.getLogger().setLevel(logging.INFO)
+        if self.options.debug:
+            self.debug = True
+            logging.getLogger().setLevel(logging.DEBUG)
 
     def process_options(self):
         """Process command-line options.
@@ -587,9 +612,9 @@ class Config(object):
         self.player['dvd-device']='E:'
         advenehome=self.get_registry_value('software\\advene','path')
         if advenehome is None:
-            print "Cannot get the Advene location from registry"
+            logger.warning("Cannot get the Advene location from registry")
             return
-        print "Setting Advene paths from %s" % advenehome
+        logger.info("Setting Advene paths from %s", advenehome)
         self.path['advene'] = advenehome
         self.path['locale'] = os.path.sep.join( (advenehome, 'locale') )
         self.path['plugins'] = os.path.sep.join( (advenehome, 'vlcplugins') )
@@ -645,6 +670,10 @@ class Config(object):
         self.players[player.player_id] = player
         return True
 
+    def get_target_types(self, *names):
+        return [ self.target_entry[n]
+                 for n in names ]
+
     def get_content_handler(self, mimetype):
         """Return a valid content handler for the given mimetype.
 
@@ -689,7 +718,7 @@ class Config(object):
         elif self.os == 'darwin':
             dirname = os.path.join( 'Library', 'Preferences', 'Advene' )
         else:
-            dirname = '.advene'
+            dirname = '.config/advene'
 
         return os.path.join( self.get_homedir(), dirname )
 
@@ -713,39 +742,49 @@ class Config(object):
         """Generic preferences reading.
         """
         if d is None:
-            d=self.preferences
-        preffile=self.advenefile(name+'.prefs', 'settings')
+            d = self.preferences
+        preffile = self.advenefile(name+'.json', 'settings')
         try:
             f = open(preffile, "r")
+            prefs = json.load(f)
         except IOError:
-            return None
-        try:
-            prefs=cPickle.load(f)
-        except (EOFError, cPickle.PickleError, cPickle.PicklingError):
-            return None
+            # No json file. Use old cPickle .prefs
+            preffile=self.advenefile(name+'.prefs', 'settings')
+            try:
+                f = open(preffile, "r")
+            except IOError:
+                return None
+            try:
+                prefs=cPickle.load(f)
+            except EOFError:
+                logger.error("Cannot load old prefs file", exc_info=True)
+                return None
         d.update(prefs)
         return prefs
 
     def save_preferences_file(self, d=None, name='advene'):
         """Generic preferences saving.
+
+        Save as json.
         """
         if d is None:
             d=self.preferences
-        preffile=self.advenefile(name+'.prefs', 'settings')
+        preffile=self.advenefile(name+'.json', 'settings')
         dp=os.path.dirname(preffile)
         if not os.path.isdir(dp):
             try:
                 os.mkdir(dp)
             except OSError, e:
-                print "Error: ", str(e)
+                logger.error("Error: %s", str(e))
                 return False
         try:
             f = open(preffile, "w")
         except IOError:
             return False
         try:
-            cPickle.dump(d, f)
-        except (EOFError, cPickle.PickleError, cPickle.PicklingError):
+            json.dump(d, f, indent=2)
+        except EOFError:
+            logger.error("Cannot save prefs file", exc_info=True)
             return False
         return True
 
@@ -760,8 +799,7 @@ class Config(object):
             self.config_file=''
             return False
 
-        print "Reading configuration from %s" % conffile
-        config=sys.modules['advene.core.config']
+        logger.info("Reading configuration from %s", conffile)
         for li in fd:
             if li.startswith ("#"):
                 continue
@@ -769,7 +807,7 @@ class Config(object):
             try:
                 exec obj
             except Exception, e:
-                print "Error in %s:\n%s" % (conffile, str(e))
+                logger.error("Error in %s:\n%s", conffile, str(e))
         fd.close ()
 
         self.config_file=conffile
@@ -822,9 +860,8 @@ class Config(object):
         """
         try:
             import advene.core.version as version
-            return "Advene v. %s release %s (svn %s)" % (version.version,
-                                                         version.date,
-                                                         version.svn)
+            return "Advene v. %s release %self" % (version.version,
+                                                   version.date)
         except ImportError:
             return "Advene v. ??? (cannot get version number)"
 
@@ -846,7 +883,7 @@ class Config(object):
         # We override any modification that could have been made in
         # .advenerc. Rationale: if the .advenerc was really correct, it
         # would have set the correct paths in the first place.
-        print "Overriding 'resources', 'locale', 'advene' and 'web' config paths"
+        logger.info("Overriding 'resources', 'locale', 'advene' and 'web' config paths")
         self.path['resources']=os.path.sep.join((maindir, 'share'))
         self.path['locale']=os.path.sep.join( (maindir, 'locale') )
         self.path['web']=os.path.sep.join((maindir, 'share', 'web'))
diff --git a/lib/advene/core/controller.py b/lib/advene/core/controller.py
index de60e3a..b86a6e0 100755
--- a/lib/advene/core/controller.py
+++ b/lib/advene/core/controller.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,6 +28,9 @@ The X{AdveneEventHandler} is used by the application to handle events
 notifications and actions triggering.
 """
 
+import logging
+logger = logging.getLogger(__name__)
+
 import sys
 import time
 import os
@@ -37,7 +40,7 @@ import re
 import webbrowser
 import urllib
 import StringIO
-import gobject
+from gi.repository import GObject
 import shlex
 import itertools
 import operator
@@ -80,7 +83,18 @@ if config.data.webserver['mode']:
     from advene.core.webcherry import AdveneWebServer
 
 import threading
-gobject.threads_init()
+GObject.threads_init()
+
+class MessageHandler(logging.Handler):
+    def __init__(self, level=logging.NOTSET, controller=None):
+        super(MessageHandler, self).__init__(level)
+        self.controller = controller
+        formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
+        self.setFormatter(formatter)
+
+    def emit(self, record):
+        if self.controller.gui:
+            self.controller.gui.log(self.format(record))
 
 class GlobalPackage(object):
     """Wrapper to access all packages loaded data.
@@ -222,7 +236,7 @@ class AdveneController(object):
         self.player.get_default_media = self.get_default_media
         self.player_restarted = 0
         self.slave_players = set()
-        # source-id (returned by gobject.timeout_add)
+        # source-id (returned by GObject.timeout_add)
         self.slave_player_timeout = None
 
         # Some player can define a cleanup() method
@@ -283,7 +297,7 @@ class AdveneController(object):
     def self_loop(self):
         """Autonomous gobject loop for GUI-less controller.
         """
-        self.mainloop = gobject.MainLoop()
+        self.mainloop = GObject.MainLoop()
 
         def update_wrapper():
             """Wrapper for the application update.
@@ -295,7 +309,7 @@ class AdveneController(object):
             self.update()
             return True
 
-        gobject.timeout_add (100, update_wrapper)
+        GObject.timeout_add (100, update_wrapper)
         self.notify ("ApplicationStart")
         self.mainloop.run ()
         self.notify ("ApplicationEnd")
@@ -303,7 +317,7 @@ class AdveneController(object):
     def load_plugins(self, directory, prefix="advene_plugins"):
         """Load the plugins from the given directory.
         """
-        #print "Loading plugins from ", directory
+        logger.debug("Loading plugins from %s", directory)
         l=advene.core.plugin.PluginCollection(directory, prefix)
         for p in l:
             try:
@@ -317,8 +331,8 @@ class AdveneController(object):
                     self.log("Could not register " + p.name)
                 else:
                     self.log("Registering " + p.name)
-            except AttributeError, e:
-                print "AttributeError in", p.name, ":", str(e)
+            except AttributeError:
+                logger.error("AttributeError in %s/%s", directory, p.name, exc_info=True)
                 pass
         return l
 
@@ -352,7 +366,6 @@ class AdveneController(object):
 
         # Now we can process the events
         for (method, args, kw) in ev:
-            #print "Process action: %s" % str(method)
             try:
                 method(*args, **kw)
             except Exception, e:
@@ -369,6 +382,8 @@ class AdveneController(object):
         """Register the GUI for the controller.
         """
         self.gui=gui
+        # Log messages to GUI
+        logging.getLogger().addHandler(MessageHandler(controller=self))
 
     def register_tracer(self, tracer):
         """Register a trace builder
@@ -452,7 +467,7 @@ class AdveneController(object):
                 return True
 
         if self.slave_player_timeout is None and config.data.preferences['slave-player-sync-delay'] != 0:
-            self.slave_player_timeout = gobject.timeout_add(config.data.preferences['slave-player-sync-delay'], synchronize_players)
+            self.slave_player_timeout = GObject.timeout_add(config.data.preferences['slave-player-sync-delay'], synchronize_players)
 
     def unregister_slave_player(self, p):
         """Unregister a slave video player.
@@ -535,7 +550,7 @@ class AdveneController(object):
                     if self.restricted_annotations:
                         l=self.restricted_annotations
                     else:
-                        l=[ a.fragment.begin for a in at.annotations ]
+                        l=[ an.fragment.begin for an in at.annotations ]
                         l.sort()
                     self.queue_action(self.update_status, "set", position=l[0])
             return True
@@ -626,7 +641,6 @@ class AdveneController(object):
                     data_func=lambda e: [ normalize_case(t) for t in e.tags ]
             elif source == 'ids':
                 # Special search.
-                res=[]
                 for i in searched.split():
                     e=p.get_element_by_id(i)
                     if e is not None:
@@ -640,15 +654,15 @@ class AdveneController(object):
 
             for w in mandatory:
                 w=normalize_case(w)
-                sourcedata=[ e for e in sourcedata if w in data_func(e) ]
+                sourcedata=[ el for el in sourcedata if w in data_func(el) ]
             for w in exceptions:
                 w=normalize_case(w)
-                sourcedata=[ e for e in sourcedata if w not in data_func(e) ]
+                sourcedata=[ el for el in sourcedata if w not in data_func(el) ]
             if not normal:
                 # No "normal" search terms. Return the result.
                 result.extend(sourcedata)
             else:
-                normal=[ normalize_case(w) for w in normal ]
+                normal=[ normalize_case(el) for el in normal ]
                 for e in sourcedata:
                     data=data_func(e)
                     for w in normal:
@@ -711,11 +725,21 @@ class AdveneController(object):
 
     def build_context(self, here=None, alias=None, baseurl=None):
         """Build a context object with additional information.
+
+        The information is cached if no additional parameter (alias,
+        baseurl) is specified.
         """
-        if baseurl is None:
-            baseurl=self.get_default_url(root=True, alias=alias)
         if here is None:
             here=self.package
+        if alias is None and baseurl is None:
+            try:
+                c = here._cached_context
+                c.restore()
+                return c
+            except AttributeError:
+                pass
+        if baseurl is None:
+            baseurl=self.get_default_url(root=True, alias=alias)
         c=advene.model.tal.context.AdveneContext(here,
                                                  options={
                 u'package_url': baseurl,
@@ -730,6 +754,8 @@ class AdveneController(object):
         c.addGlobal(u'player', self.player)
         for name, method in config.data.global_methods.iteritems():
             c.addMethod(name, method)
+        # Preserve a copy of globals/locals for later restoring
+        c.checkpoint()
         return c
 
     def busy_port_info(self):
@@ -762,21 +788,20 @@ class AdveneController(object):
         try:
             self.player_plugins=self.load_plugins(os.path.join(os.path.dirname(advene.__file__), 'player'),
                                                   prefix="advene_player_plugins")
-        except OSError, e:
-            print "Error while loading player plugins", str(e).encode('utf-8')
-            pass
+        except OSError:
+            logger.error("Error while loading player plugins", exc_info=True)
 
         try:
             self.app_plugins=self.load_plugins(os.path.join(os.path.dirname(advene.__file__), 'plugins'),
                                                prefix="advene_app_plugins")
         except OSError:
-            pass
+            logger.error("Error while loading app plugins", exc_info=True)
 
         try:
             self.user_plugins=self.load_plugins(config.data.advenefile('plugins', 'settings'),
                                                 prefix="advene_user_plugins")
         except OSError:
-            pass
+            logger.error("Error while loading user plugins", exc_info=True)
 
         # Read the default rules
         self.event_handler.read_ruleset_from_file(config.data.advenefile('default_rules.xml'),
@@ -924,13 +949,10 @@ class AdveneController(object):
         mainloop (main thread).
         """
         if False:
-            print "Notify %s (%s): %s" % (
+            logger.debug("Notify %s (%s): %s" % (
                 event_name,
                 helper.format_time_reference(self.player.current_position_value),
-                str(kw))
-            import traceback
-            traceback.print_stack()
-            print "-" * 80
+                str(kw)), exc_info=True)
 
         # Set the package._modified state
         # This does not really belong here, but it is the more convenient and
@@ -998,8 +1020,8 @@ class AdveneController(object):
             # print "Update snapshot for %d" % position
             try:
                 i = self.player.snapshot (self.player.relative_position)
-            except self.player.InternalException, e:
-                print "Exception in snapshot: %s" % e
+            except self.player.InternalException:
+                logger.error("Exception in snapshot", exc_info=True)
                 return True
             if i is not None and i.height != 0:
                 self.package.imagecache[i.date] = helper.snapshot2png (i)
@@ -1029,11 +1051,11 @@ class AdveneController(object):
         # does not exist, it does not always launch it in the
         # background, so it can freeze the GUI.
         web_browser = os.getenv("BROWSER", None)
-        if web_browser == None:
+        if web_browser is None:
             # Try to guess if we are running a Gnome/KDE desktop
-            if os.environ.has_key('KDE_FULL_SESSION'):
+            if 'KDE_FULL_SESSION' in os.environ:
                 web_browser = 'kfmclient exec'
-            elif os.environ.has_key('GNOME_DESKTOP_SESSION_ID'):
+            elif 'GNOME_DESKTOP_SESSION_ID' in os.environ:
                 web_browser = 'gnome-open'
             else:
                 term_command = os.getenv("TERMCMD", "xterm")
@@ -1057,7 +1079,7 @@ class AdveneController(object):
                                 break
                     if breaked:
                         break
-        if web_browser != None:
+        if web_browser is not None:
             os.system("%s \"%s\" &" % (web_browser, url))
 
         return True
@@ -1118,6 +1140,8 @@ class AdveneController(object):
                 return s
 
         def cleanup(s):
+            if not isinstance(s, basestring):
+                s = unicode(s)
             i=s.find('\n')
             if i > 0:
                 return trim_size(s[:i])
@@ -1204,7 +1228,7 @@ class AdveneController(object):
             name=unicode(os.path.basename(n))
             for d in config.data.path['moviepath'].split(os.pathsep):
                 if d == '_':
-                  # Get package dirname
+                    # Get package dirname
                     d=self.package.uri
                     # And convert it to a pathname (for Windows)
                     if d.startswith('file:'):
@@ -1394,7 +1418,7 @@ class AdveneController(object):
                 d=dict([ (r.findall(l) or [ ('_error', l) ])[0] for l in annotation.content.data.split('\n') ])
                 name="Unknown"
                 for n in ('name', 'title', 'content'):
-                    if d.has_key(n):
+                    if n in d:
                         name=d[n]
                         break
                 d['name']=name.replace('\n', '\\n')
@@ -1540,7 +1564,7 @@ class AdveneController(object):
 
         # Start the new one
         self.player=p()
-        if not 'record' in p.player_capabilities:
+        if 'record' not in p.player_capabilities:
             # Store the selected player if it is not a recorder.
             config.data.player['plugin']=p.player_id
         self.notify('PlayerChange', player=p)
@@ -1659,15 +1683,16 @@ class AdveneController(object):
                 self.activate_package(default_alias)
             return
         else:
-            t=time.time()
+            t = time.time()
             p = Package(uri=uri)
-            dur=time.time()-t
+            dur = time.time() - t
             self.log("Loaded package in %f seconds" % dur)
             # Check if the imported package was found. Else it will
             # fail when accessing elements...
+            imp = []
             for i in p.imports:
                 try:
-                    imp=i.package
+                    imp.append(i.package)
                 except Exception, e:
                     raise Exception(_("Cannot read the imported package %(uri)s: %(error)s") % {
                             'uri': i.uri,
@@ -1731,13 +1756,13 @@ class AdveneController(object):
         # stricter wrt. namespaces. Fix common problems.
         for q in self.package.queries:
             if 'http://liris.cnrs.fr/advene/ruleset' in q.content.data:
-                print "Fixing query", q.id
+                logger.debug("Fixing query %s", q.id)
                 q.content.data = q.content.data.replace('http://liris.cnrs.fr/advene/ruleset',
                                                         config.data.namespace)
         for v in self.package.views:
             if (v.content.mimetype == 'application/x-advene-ruleset'
                 and '<ruleset>' in v.content.data):
-                print "Fixing view ", v.id
+                logger.debug("Fixing view %s", v.id)
                 v.content.data = v.content.data.replace('<ruleset>',
                                                         '<ruleset xmlns="http://experience.univ-lyon1.fr/advene/ns/advenetool">')
 
@@ -1947,7 +1972,7 @@ class AdveneController(object):
         # Handle 'auto-import' meta-attribute
         master_uri=p.getMetaData(config.data.namespace, 'auto-import')
         if master_uri:
-            i=[ p for p in p.imports if p.getUri(absolute=False) == master_uri ]
+            i=[ pk for pk in p.imports if pk.getUri(absolute=False) == master_uri ]
             if not i:
                 self.log(_("Cannot handle master attribute, the package %s is not imported.") % master_uri)
             else:
@@ -1963,7 +1988,7 @@ class AdveneController(object):
             uris=[ e.uri for e in getattr(p, source) ]
             for e in getattr(i, source):
                 if not e.uri in uris:
-                    print "Missing %s: importing it" % str(e)
+                    logger.info("Missing %s: importing it" % str(e))
                     helper.import_element(p, e, self, notify=False)
         return True
 
@@ -2066,9 +2091,9 @@ class AdveneController(object):
         @param msg: the message
         @type msg: string
         """
-        if self.gui:
+        try:
             self.gui.log(msg, level)
-        else:
+        except AttributeError:
             print unicode(msg).encode('utf-8')
 
     def message_log (self, context, parameters):
@@ -2081,7 +2106,7 @@ class AdveneController(object):
         @param parameters: the parameters (should have a 'message' one)
         @type parameters: dict
         """
-        if parameters.has_key('message'):
+        if 'message' in parameters:
             message=context.evaluateValue(parameters['message'])
         else:
             message="No message..."
@@ -2097,10 +2122,10 @@ class AdveneController(object):
                 end=self.event_handler.dump()
                 import difflib
                 diff=difflib.Differ()
-                print "-----------"
+                logger.debug("-----------")
                 for l in diff.compare(start, end):
-                    print l
-                print "-----------"
+                    logger.debug(l)
+                logger.debug("-----------")
             self.event_handler.reset_queue()
             self.event_handler.clear_state()
             self.event_handler.update_rulesets()
@@ -2203,11 +2228,14 @@ class AdveneController(object):
                     if position.origin == self.player.RelativePosition:
                         position = self.player.current_position_value + position.value
                     elif position.origin == self.player.ModuloPosition:
-                        position = (self.player.current_position_value + position.value) % self.player.stream_duration
+                        if self.player.stream_duration:
+                            position = (self.player.current_position_value + position.value) % self.player.stream_duration
+                        else:
+                            position = self.player.current_position_value + position.value
                     else:
                         position=position.value
                 self.update_snapshot(position)
-        except Exception, e:
+        except Exception:
             # FIXME: we should catch more specific exceptions and
             # devise a better feedback than a simple print
             import traceback
@@ -2233,9 +2261,9 @@ class AdveneController(object):
         """
         try:
             self.player.position_update ()
-        except self.player.InternalException, e:
+        except self.player.InternalException:
             # The server is down. Restart it.
-            print "Restarting player...", str(e)
+            logger.info("Restarting player...", exc_info=True)
             self.player_restarted += 1
             if self.player_restarted > 5:
                 raise Exception (_("Unable to start the player."))
@@ -2268,7 +2296,7 @@ class AdveneController(object):
         if p.status == p.PauseStatus and 'frame-by-frame' in p.player_capabilities:
             if self.scrub_lastvalue is None:
                 # Not in a scrubbing state.
-                gobject.timeout_add(250, do_scrub)
+                GObject.timeout_add(250, do_scrub)
             self.scrub_lastvalue = pos
 
         return True
@@ -2305,11 +2333,13 @@ class AdveneController(object):
         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) )
+            begin = a.fragment.begin
+            end = a.fragment.end
+            if begin >= position:
+                future_begins.append( (a, begin, end) )
+                future_ends.append( (a, begin, end) )
+            elif end >= position:
+                future_ends.append( (a, begin, end) )
                 active.append(a)
         future_begins.sort(key=operator.itemgetter(1))
         future_ends.sort(key=operator.itemgetter(2))
@@ -2534,11 +2564,7 @@ class AdveneController(object):
 if __name__ == '__main__':
     cont = AdveneController()
     try:
-        cont.main ()
+        cont.self_loop()
     except Exception, e:
-        print "Got exception %s. Stopping services..." % str(e)
-        import code
-        e, v, tb = sys.exc_info()
-        code.traceback.print_exception (e, v, tb)
-        cont.on_exit ()
-        print "*** Exception ***"
+        logger.error("Got exception %s. Stopping services...", exc_info=True)
+        cont.on_exit()
diff --git a/lib/advene/core/idgenerator.py b/lib/advene/core/idgenerator.py
index 958a776..59df827 100644
--- a/lib/advene/core/idgenerator.py
+++ b/lib/advene/core/idgenerator.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/core/imagecache.py b/lib/advene/core/imagecache.py
index 5b40287..c119e5f 100644
--- a/lib/advene/core/imagecache.py
+++ b/lib/advene/core/imagecache.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/core/mediacontrol.py b/lib/advene/core/mediacontrol.py
index f54596d..524bab6 100644
--- a/lib/advene/core/mediacontrol.py
+++ b/lib/advene/core/mediacontrol.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/core/plugin.py b/lib/advene/core/plugin.py
index 324e174..f7d399e 100755
--- a/lib/advene/core/plugin.py
+++ b/lib/advene/core/plugin.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/core/version.py b/lib/advene/core/version.py
index e5273e0..4a01a09 100644
--- a/lib/advene/core/version.py
+++ b/lib/advene/core/version.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -19,7 +19,6 @@
 """Versioning information.
 """
 
-version='1.1'
-date='20140709'
-svn=''
+version='3.0'
+date='20170601'
 major,minor=[ long(s) for s in version.split('.') ]
diff --git a/lib/advene/core/webcherry.py b/lib/advene/core/webcherry.py
index 8cad4b7..aa4ef58 100644
--- a/lib/advene/core/webcherry.py
+++ b/lib/advene/core/webcherry.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -2080,7 +2080,7 @@ class Root(Common):
         """Display the server root document.
         """
         res=[ self.start_html (_("Advene webserver"), duplicate_title=True, mode='navigation') ]
-        res.append(_("""<p>Welcome on the <a href="http://liris.cnrs.fr/advene/">Advene</a> webserver run by %(userid)s on %(serveraddress)s.</p>""") %
+        res.append(_("""<p>Welcome on the <a href="http://advene.org/">Advene</a> webserver run by %(userid)s on %(serveraddress)s.</p>""") %
                          {
                 'userid': config.data.userid,
                 'serveraddress': cherrypy.request.base,
@@ -2104,7 +2104,7 @@ class Root(Common):
                 mes=_("""the <a href="/packages">loaded packages' data</a>""")
             res.append(_(""" <p>You can either access %s or the <a href="/admin">server administration page</a>.<p>""") % mes)
 
-        res.append(_("""<hr><p align="right"><em>Document generated by <a href="http://liris.cnrs.fr/advene/">Advene</a> v. %s.</em></p>""") % (advene.core.version.version))
+        res.append(_("""<hr><p align="right"><em>Document generated by <a href="http://advene.org/">Advene</a> v. %s.</em></p>""") % (advene.core.version.version))
         return "".join(res)
     index.exposed=True
 
diff --git a/lib/advene/gui/__init__.py b/lib/advene/gui/__init__.py
index dc5e3f5..0e08aee 100644
--- a/lib/advene/gui/__init__.py
+++ b/lib/advene/gui/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/__init__.py b/lib/advene/gui/edit/__init__.py
index dc5e3f5..0e08aee 100644
--- a/lib/advene/gui/edit/__init__.py
+++ b/lib/advene/gui/edit/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/create.py b/lib/advene/gui/edit/create.py
index 6afdf8b..41cf182 100755
--- a/lib/advene/gui/edit/create.py
+++ b/lib/advene/gui/edit/create.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,7 +26,7 @@ from gettext import gettext as _
 import sys
 import re
 
-import gtk
+from gi.repository import Gtk
 
 from advene.model.package import Package
 from advene.model.fragment import MillisecondFragment
@@ -74,9 +74,9 @@ class CreateElementPopup(object):
     def build_widget(self, modal=False):
         i=self.generate_id()
         if modal:
-            flags=gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_MODAL
+            flags=Gtk.DialogFlags.DESTROY_WITH_PARENT | Gtk.DialogFlags.MODAL
         else:
-            flags=gtk.DIALOG_DESTROY_WITH_PARENT
+            flags=Gtk.DialogFlags.DESTROY_WITH_PARENT
 
         d=dialog.title_id_dialog(title=_("%s creation")  % element_label[self.type_],
                                           text=_("To create a new element of type %s,\nyou must give the following information.") % element_label[self.type_],
@@ -88,9 +88,9 @@ class CreateElementPopup(object):
         # Choose a type if possible
         if self.type_ in (Annotation, Relation, AnnotationType, RelationType,
                           View, Query, Resources, ResourceData):
-            hbox = gtk.HBox()
-            l = gtk.Label(_("Type"))
-            hbox.pack_start(l)
+            hbox = Gtk.HBox()
+            l = Gtk.Label(label=_("Type"))
+            hbox.pack_start(l, True, True, 0)
 
             if self.type_ == Annotation:
                 if isinstance(self.parent, AnnotationType):
@@ -142,7 +142,7 @@ class CreateElementPopup(object):
             d.type_combo = dialog.list_selector_widget(
                 members=[ (t, self.controller.get_title(t)) for t in type_list  ],
                 preselect=preselect)
-            hbox.pack_start(d.type_combo)
+            hbox.pack_start(d.type_combo, True, True, 0)
 
             d.vbox.add(hbox)
 
@@ -164,8 +164,8 @@ class CreateElementPopup(object):
 
         @return: the created element, None if an error occurred
         """
-        id_ = unicode(self.dialog.id_entry.get_text())
-        title_ = unicode(self.dialog.title_entry.get_text())
+        id_ = self.dialog.id_entry.get_text().decode('utf-8')
+        title_ = self.dialog.title_entry.get_text().decode('utf-8')
         # Check validity of id.
         if not self.is_valid_id(id_):
             dialog.message_dialog(
@@ -326,7 +326,7 @@ class CreateElementPopup(object):
             dialog.center_on_mouse(d)
             res=d.run()
             retval=None
-            if res == gtk.RESPONSE_OK:
+            if res == Gtk.ResponseType.OK:
                 retval=self.do_create_element()
 
                 if retval is not None:
@@ -347,11 +347,11 @@ if __name__ == "__main__":
 
     package = Package (uri=sys.argv[1])
 
-    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+    window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
 
     window.set_border_width(10)
     window.set_title (package.title)
-    vbox = gtk.VBox()
+    vbox = Gtk.VBox()
     window.add (vbox)
 
     def create_element_cb(button, t):
@@ -360,32 +360,32 @@ if __name__ == "__main__":
         return True
 
     for (t, l) in element_label.iteritems():
-        b = gtk.Button(l)
+        b = Gtk.Button(l)
         b.connect('clicked', create_element_cb, t)
         b.show()
-        vbox.pack_start(b)
+        vbox.pack_start(b, True, True, 0)
 
-    hbox = gtk.HButtonBox()
-    vbox.pack_start (hbox, expand=False)
+    hbox = Gtk.HButtonBox()
+    vbox.pack_start(hbox, False, False, 0)
 
     def validate_cb (win, package):
         filename="/tmp/package.xml"
         package.save (name=filename)
         print "Package saved as %s" % filename
-        gtk.main_quit ()
+        Gtk.main_quit ()
 
-    b = gtk.Button (stock=gtk.STOCK_SAVE)
+    b = Gtk.Button (stock=Gtk.STOCK_SAVE)
     b.connect('clicked', validate_cb, package)
     hbox.add (b)
 
-    b = gtk.Button (stock=gtk.STOCK_QUIT)
+    b = Gtk.Button (stock=Gtk.STOCK_QUIT)
     b.connect('clicked', lambda w: window.destroy ())
     hbox.add (b)
 
     vbox.set_homogeneous (False)
 
-    window.connect('destroy', lambda e: gtk.main_quit())
+    window.connect('destroy', lambda e: Gtk.main_quit())
 
     window.show_all()
-    gtk.main ()
+    Gtk.main ()
 
diff --git a/lib/advene/gui/edit/dvdselect.py b/lib/advene/gui/edit/dvdselect.py
index 0e39139..e644eda 100755
--- a/lib/advene/gui/edit/dvdselect.py
+++ b/lib/advene/gui/edit/dvdselect.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@
 """Widget used to select the DVD chapter in Advene.
 """
 
-import gtk
+from gi.repository import Gtk
 import re
 
 from gettext import gettext as _
@@ -86,30 +86,30 @@ class DVDSelect:
         return self.widget
 
     def make_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        label=gtk.Label(_("Select the correct\ntitle and chapter\nof the DVD"))
+        label=Gtk.Label(label=_("Select the correct\ntitle and chapter\nof the DVD"))
         vbox.add(label)
 
-        hbox=gtk.HBox()
-        hbox.add(gtk.Label(_("Title")))
-        sp=gtk.SpinButton()
+        hbox=Gtk.HBox()
+        hbox.add(Gtk.Label(label=_("Title")))
+        sp=Gtk.SpinButton()
         sp.set_range(1, 15)
         sp.set_increments(1, 1)
-        hbox.pack_start(sp, expand=False)
+        hbox.pack_start(sp, False, True, 0)
         self.titlewidget=sp
         vbox.add(hbox)
 
-        hbox=gtk.HBox()
-        hbox.add(gtk.Label(_("Chapter")))
-        sp=gtk.SpinButton()
+        hbox=Gtk.HBox()
+        hbox.add(Gtk.Label(label=_("Chapter")))
+        sp=Gtk.SpinButton()
         sp.set_range(1, 30)
         sp.set_increments(1, 1)
-        hbox.pack_start(sp, expand=False)
+        hbox.pack_start(sp, False, True, 0)
         self.chapterwidget=sp
         vbox.add(hbox)
 
-        b=gtk.Button(_("Preview"))
+        b=Gtk.Button(_("Preview"))
         b.connect('clicked', self.preview)
         vbox.add(b)
 
@@ -127,19 +127,19 @@ if __name__ == "__main__":
             self.player.check_player()
 
     def key_pressed_cb (win, event):
-        if event.state & gtk.gdk.CONTROL_MASK:
+        if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             # The Control-key is held. Special actions :
-            if event.keyval == gtk.keysyms.q:
-                gtk.main_quit ()
+            if event.keyval == Gdk.KEY_q:
+                Gtk.main_quit ()
                 return True
         return False
 
-    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+    window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
     window.connect('key-press-event', key_pressed_cb)
-    window.connect('destroy', lambda e: gtk.main_quit())
+    window.connect('destroy', lambda e: Gtk.main_quit())
 
     c = DummyController()
     sel=DVDSelect(controller=c)
     window.add(sel.get_widget())
     window.show_all()
-    gtk.main()
+    Gtk.main()
diff --git a/lib/advene/gui/edit/elements.py b/lib/advene/gui/edit/elements.py
index feef5f1..857903f 100644
--- a/lib/advene/gui/edit/elements.py
+++ b/lib/advene/gui/edit/elements.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -27,17 +27,21 @@ View, Package).
 import advene.core.config as config
 from gettext import gettext as _
 
-import gtk
-import gobject
-import pango
+from gi.repository import Gdk
+from gi.repository import GdkPixbuf
+from gi.repository import Gtk
+from gi.repository import GObject
+from gi.repository import Pango
 import re
 import os
 import struct
 
 try:
-    import gtksourceview2
+    import gi
+    gi.require_version('GtkSource', '3.0')
+    from gi.repository import GtkSource
 except ImportError:
-    gtksourceview2=None
+    GtkSource = None
 
 from advene.model.package import Package
 from advene.model.annotation import Annotation, Relation
@@ -106,7 +110,7 @@ class EditElementPopup (AdhocView):
         else:
             t=el.__class__.__name__
         self.view_id="-".join( (EditElementPopup.view_id, t) )
-        self.vbox = gtk.VBox ()
+        self.vbox = Gtk.VBox ()
         self.vbox.connect('key-press-event', self.key_pressed_cb)
         self.editable=editable
         # List of defined forms in the window
@@ -124,25 +128,25 @@ class EditElementPopup (AdhocView):
         """Compatibility property to integrate in the AdhocView framework.
         """
         if self._widget is None:
-            vbox=gtk.VBox()
+            vbox=Gtk.VBox()
 
-            tb=gtk.Toolbar()
-            tb.set_style(gtk.TOOLBAR_ICONS)
+            tb=Gtk.Toolbar()
+            tb.set_style(Gtk.ToolbarStyle.ICONS)
 
-            b=gtk.ToolButton(gtk.STOCK_OK)
+            b=Gtk.ToolButton(Gtk.STOCK_OK)
             b.connect('clicked', self.validate_cb)
             b.set_tooltip_text(_("Apply changes and close the edit window"))
             tb.insert(b, -1)
 
-            b=gtk.ToolButton (gtk.STOCK_APPLY)
+            b=Gtk.ToolButton (Gtk.STOCK_APPLY)
             b.connect('clicked', self.apply_cb)
             b.set_tooltip_text(_("Apply changes"))
             tb.insert(b, -1)
 
             self.extend_toolbar(tb)
 
-            vbox.pack_start(tb, expand=False)
-            vbox.pack_start(self.make_widget(editable=self.editable))
+            vbox.pack_start(tb, False, True, 0)
+            vbox.pack_start(self.make_widget(editable=self.editable), True, True, 0)
 
             def destroy_cb(*p):
                 if self.controller and self.controller.gui:
@@ -160,7 +164,7 @@ class EditElementPopup (AdhocView):
                 vbox.disconnect(self.sig)
                 del self.sig
                 return False
-            self.sig = vbox.connect('expose-event', initial_focus)
+            self.sig = vbox.connect('draw', initial_focus)
 
             self._widget=vbox
 
@@ -169,8 +173,8 @@ class EditElementPopup (AdhocView):
     def reparent_done(self):
         if self._widget.get_toplevel() != self.controller.gui.gui.win:
             # In a popup window. Define appropriate shortcuts.
-            #self.key_cb[gtk.keysyms.Return] = self.validate_cb
-            self.key_cb[gtk.keysyms.Escape] = self.close_cb
+            #self.key_cb[Gdk.KEY_Return] = self.validate_cb
+            self.key_cb[Gdk.KEY_Escape] = self.close_cb
             self._widget.get_toplevel().connect('key-press-event', self.key_pressed_cb)
         return True
 
@@ -270,7 +274,7 @@ class EditElementPopup (AdhocView):
     def close_cb (self, button=None, data=None):
         """Method called when closing a form."""
         if self.get_modified():
-            if not dialog.message_dialog(_("Content has been modified. Close anyway and lose data?"), icon=gtk.MESSAGE_QUESTION,
+            if not dialog.message_dialog(_("Content has been modified. Close anyway and lose data?"), icon=Gtk.MessageType.QUESTION,
                                          modal=True):
                 return False
         self.controller.notify("EditSessionEnd", element=self.element, comment="Window closed")
@@ -298,13 +302,13 @@ class EditElementPopup (AdhocView):
         return t
 
     def framed (self, widget, label=""):
-        fr = gtk.Frame ()
+        fr = Gtk.Frame ()
         fr.set_label (label)
         fr.add (widget)
         return fr
 
     def expandable (self, widget, label="", expanded=False):
-        fr = gtk.Expander ()
+        fr = Gtk.Expander ()
         fr.set_label (label)
         fr.add(widget)
         fr.set_expanded(expanded)
@@ -319,8 +323,8 @@ class EditElementPopup (AdhocView):
             w.set_urgency_hint(True)
             return self.element
         self.callback=callback
-        self.key_cb[gtk.keysyms.Return] = self.validate_cb
-        self.key_cb[gtk.keysyms.Escape] = self.close_cb
+        self.key_cb[Gdk.KEY_Return] = self.validate_cb
+        self.key_cb[Gdk.KEY_Escape] = self.close_cb
 
         if hasattr(self.element, 'isImported') and self.element.isImported():
             self.editable=False
@@ -333,11 +337,11 @@ class EditElementPopup (AdhocView):
             title=_("View %s (read-only)") % self.get_title()
 
         if modal:
-            d = gtk.Dialog(title=title,
-                           parent=None,
-                           flags=gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_MODAL,
-                           buttons=( gtk.STOCK_OK, gtk.RESPONSE_OK,
-                                     gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL ))
+            d = Gtk.Dialog(title=title,
+                           parent=self.controller.gui.gui.win,
+                           flags=Gtk.DialogFlags.DESTROY_WITH_PARENT | Gtk.DialogFlags.MODAL,
+                           buttons=( Gtk.STOCK_OK, Gtk.ResponseType.OK,
+                                     Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL ))
 
             d.vbox.add(self.widget)
             d.vbox.show_all()
@@ -349,9 +353,9 @@ class EditElementPopup (AdhocView):
                 dialog.center_on_mouse(d)
                 res=d.run()
                 retval=False
-                if res == gtk.RESPONSE_OK:
+                if res == Gtk.ResponseType.OK:
                     retval=self.apply_cb()
-                elif res == gtk.RESPONSE_CANCEL:
+                elif res == Gtk.ResponseType.CANCEL:
                     retval=True
 
                 if retval:
@@ -371,8 +375,8 @@ class EditElementPopup (AdhocView):
     def compact(self, callback=None):
         """Display the compact edit window.
         """
-        self.key_cb[gtk.keysyms.Return] = self.validate_cb
-        self.key_cb[gtk.keysyms.Escape] = self.close_cb
+        self.key_cb[Gdk.KEY_Return] = self.validate_cb
+        self.key_cb[Gdk.KEY_Escape] = self.close_cb
 
         self.callback=callback
         if hasattr(self.element, 'isImported') and self.element.isImported():
@@ -380,13 +384,13 @@ class EditElementPopup (AdhocView):
         elif hasattr(self.element, 'schema') and self.element.schema.isImported():
             self.editable=False
 
-        tb=gtk.Toolbar()
+        tb=Gtk.Toolbar()
         self.extend_toolbar(tb)
         if tb.get_children():
             # There are some items. Display them
-            tb.props.icon_size=gtk.ICON_SIZE_SMALL_TOOLBAR
-            tb.set_style(gtk.TOOLBAR_ICONS)
-            self.vbox.pack_start(tb, expand=False)
+            tb.props.icon_size=Gtk.IconSize.SMALL_TOOLBAR
+            tb.set_style(Gtk.ToolbarStyle.ICONS)
+            self.vbox.pack_start(tb, False, True, 0)
         else:
             tb.destroy()
         w=self.make_widget (editable=self.editable, compact=True)
@@ -447,13 +451,13 @@ class EditAnnotationPopup (EditElementPopup):
 
     def extend_toolbar(self, tb):
         if tb.get_children():
-            tb.insert(gtk.SeparatorToolItem(), -1)
+            tb.insert(Gtk.SeparatorToolItem(), -1)
 
-        b=get_pixmap_toolbutton(gtk.STOCK_GO_BACK, self.goto, -1)
+        b=get_pixmap_toolbutton(Gtk.STOCK_GO_BACK, self.goto, -1)
         b.set_tooltip_text(_("Apply changes and edit previous annotation of same type"))
         tb.insert(b, -1)
 
-        b=get_pixmap_toolbutton(gtk.STOCK_GO_FORWARD, self.goto, +1)
+        b=get_pixmap_toolbutton(Gtk.STOCK_GO_FORWARD, self.goto, +1)
         b.set_tooltip_text(_("Apply changes and edit next annotation of same type"))
         tb.insert(b, -1)
 
@@ -476,13 +480,13 @@ class EditAnnotationPopup (EditElementPopup):
         return True
 
     def make_widget (self, editable=True, compact=False):
-        vbox = gtk.VBox ()
+        vbox = Gtk.VBox ()
 
-        nb=gtk.Notebook()
-        vbox.pack_start(nb, expand=False)
+        nb=Gtk.Notebook()
+        vbox.pack_start(nb, False, True, 0)
 
         def small_label(t):
-            l=gtk.Label()
+            l=Gtk.Label()
             l.set_markup('<span size="x-small">%s</span>' % t)
             return l
 
@@ -525,7 +529,7 @@ class EditAnnotationPopup (EditElementPopup):
         f.set_editable(editable)
         t = f.get_view(compact=compact)
         self.register_form(f)
-        vbox.pack_start(t, expand=True)
+        vbox.pack_start(t, True, True, 0)
 
 
         def select_default(widget):
@@ -545,7 +549,7 @@ class EditRelationPopup (EditElementPopup):
         return True
 
     def make_widget (self, editable=True, compact=False):
-        vbox = gtk.VBox ()
+        vbox = Gtk.VBox ()
 
         f = self.make_registered_form (element=self.element,
                                        fields=('id', 'uri', 'type',
@@ -560,31 +564,31 @@ class EditRelationPopup (EditElementPopup):
                                                'date':   _('Date')}
                                        )
         ex=self.expandable(f.get_view(), _("Metadata"), expanded=False)
-        vbox.pack_start(ex, expand=False)
+        vbox.pack_start(ex, False, True, 0)
 
         def button_press_handler(widget, event, annotation):
-            if event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS:
+            if event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
                 menu=advene.gui.popup.Menu(annotation, controller=self.controller)
                 menu.popup()
                 return True
-            if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+            if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
                 self.controller.gui.edit_element(annotation)
                 return True
             return False
 
         # FIXME: make it possible to edit the members list (drag and drop ?)
-        hb = gtk.HBox()
+        hb = Gtk.HBox()
         for a in self.element.members:
             b = AnnotationRepresentation(a, controller=self.controller)
             b.set_alignment(0, 0)
-            hb.pack_start(b, expand=False)
+            hb.pack_start(b, False, True, 0)
         hb.show_all()
-        vbox.pack_start(self.framed(hb, _("Members")), expand=False)
+        vbox.pack_start(self.framed(hb, _("Members")), False, False, 0)
 
         # Tags
         f = EditTagForm(element=self.element, controller=self.controller, editable=editable)
         self.register_form(f)
-        vbox.pack_start (f.get_view(), expand=False)
+        vbox.pack_start (f.get_view(), False, False, 0)
 
         # Relation content
         f = EditContentForm(self.element.content, controller=self.controller,
@@ -597,7 +601,7 @@ class EditRelationPopup (EditElementPopup):
             exp=True
         else:
             exp=False
-        vbox.pack_start(self.expandable(t, _("Content"), expanded=exp), expand=True)
+        vbox.pack_start(self.expandable(t, _("Content"), expanded=exp), True, True, 0)
 
         return vbox
 
@@ -616,16 +620,16 @@ class EditViewPopup (EditElementPopup):
             b = get_pixmap_toolbutton( 'web.png', self.apply_and_open)
             b.set_tooltip_text(_("Apply changes and visualise in web browser"))
             tb.insert(b, -1)
-            self.key_cb[gtk.keysyms.F5] = self.apply_and_open
+            self.key_cb[Gdk.KEY_F5] = self.apply_and_open
         elif t == 'dynamic':
-            b = get_pixmap_toolbutton( gtk.STOCK_MEDIA_PLAY, self.apply_and_activate)
+            b = get_pixmap_toolbutton( Gtk.STOCK_MEDIA_PLAY, self.apply_and_activate)
             b.set_tooltip_text(_("Apply changes and activate the view"))
             tb.insert(b, -1)
-            self.key_cb[gtk.keysyms.F5] = self.apply_and_activate
+            self.key_cb[Gdk.KEY_F5] = self.apply_and_activate
         return True
 
     def make_widget (self, editable=True, compact=False):
-        vbox = gtk.VBox ()
+        vbox = Gtk.VBox ()
 
         f = EditAttributeForm(title=_("Title (name)"),
                               element=self.element, name='title',
@@ -633,7 +637,7 @@ class EditViewPopup (EditElementPopup):
                               editable=editable,
                               tooltip=_("Name of the view"))
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = self.make_registered_form (element=self.element,
                                        fields=('id', 'uri',
@@ -647,7 +651,7 @@ class EditViewPopup (EditElementPopup):
                                                'date':   _('Date')}
                                        )
         vbox.pack_start (self.expandable(f.get_view (), _("Metadata"),
-                                         expanded=False), expand=False)
+                                         expanded=False), False, False, 0)
 
         if config.data.preferences['expert-mode']:
             # matchFilter
@@ -659,13 +663,13 @@ class EditViewPopup (EditElementPopup):
                                                    'type':  _('Type')}
                                            )
             vbox.pack_start (self.expandable(f.get_view (), _("Match Filter"), expanded=False),
-                             expand=False)
+                             False, False, 0)
 
         # Tags (not tags in view)
         #f = EditTagForm(element=self.element, controller=self.controller, editable=editable)
         #self.register_form(f)
         #ex=self.expandable(f.get_view(), _("Tags"), expanded=not compact)
-        #vbox.pack_start (ex, expand=False)
+        #vbox.pack_start (ex, False, False, 0)
 
         # View content
 
@@ -674,7 +678,7 @@ class EditViewPopup (EditElementPopup):
         f.set_editable (editable)
         t = f.get_view ()
         self.register_form (f)
-        vbox.pack_start (self.framed(t, _("Content")), expand=True)
+        vbox.pack_start (self.framed(t, _("Content")), True, True, 0)
 
         return vbox
 
@@ -706,7 +710,7 @@ class EditQueryPopup (EditElementPopup):
         return True
 
     def make_widget (self, editable=True, compact=False):
-        vbox = gtk.VBox ()
+        vbox = Gtk.VBox ()
 
         f = EditAttributeForm(title=_("Title (name)"),
                               element=self.element, name='title',
@@ -714,7 +718,7 @@ class EditQueryPopup (EditElementPopup):
                               editable=editable,
                               tooltip=_("Name of the query"))
         self.register_form(f)
-        vbox.pack_start(f.get_view (), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = self.make_registered_form (element=self.element,
                                        fields=('id', 'uri',
@@ -727,14 +731,14 @@ class EditQueryPopup (EditElementPopup):
                                                'date':   _('Date')}
                                        )
         vbox.pack_start (self.expandable(f.get_view (),  _("Metadata"), expanded=False),
-                         expand=False)
+                         False, False, 0)
 
         f = EditContentForm (self.element.content, controller=self.controller,
                              mimetypeeditable=editable, parent=self.element)
         f.set_editable (editable)
         t = f.get_view ()
         self.register_form (f)
-        vbox.pack_start (self.framed(t, _("Content")), expand=True)
+        vbox.pack_start (self.framed(t, _("Content")), True, True, 0)
 
         return vbox
 
@@ -761,9 +765,9 @@ class EditPackagePopup (EditElementPopup):
         return True
 
     def make_widget (self, editable=False, compact=False):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        sg=gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)
+        sg=Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL)
 
         f = EditAttributeForm(title=_("Title (name)"),
                               element=self.element, name='title',
@@ -772,7 +776,7 @@ class EditPackagePopup (EditElementPopup):
                               tooltip=_("Name of the package"),
                               sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = self.make_registered_form (element=self.element,
                                        fields=('uri',
@@ -785,7 +789,7 @@ class EditPackagePopup (EditElementPopup):
                                        )
 
         vbox.pack_start (self.expandable(f.get_view (),  _("Metadata"), expanded=False),
-                         expand=False)
+                         False, False, 0)
 
         f = EditMetaForm(title=_("Description"),
                          element=self.element, name='description',
@@ -794,7 +798,7 @@ class EditPackagePopup (EditElementPopup):
                          tooltip=_("Textual description of the package"),
                          sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Default dynamic view"),
                          element=self.element, name='default_stbv',
@@ -803,7 +807,7 @@ class EditPackagePopup (EditElementPopup):
                          tooltip=_("Dynamic view to activate on package load"),
                          sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Default static view"),
                          element=self.element, name='default_utbv',
@@ -812,7 +816,7 @@ class EditPackagePopup (EditElementPopup):
                          tooltip=_("Static view to open on package load"),
                          sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Default adhoc view"),
                          element=self.element, name='default_adhoc',
@@ -821,7 +825,7 @@ class EditPackagePopup (EditElementPopup):
                          tooltip=_("Adhoc view to open on package load"),
                          sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Cached duration"),
                          element=self.element, name='duration',
@@ -830,7 +834,7 @@ class EditPackagePopup (EditElementPopup):
                          tooltip=_("Cached duration in ms"),
                          sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Mediafile"),
                          element=self.element, name='mediafile',
@@ -839,7 +843,7 @@ class EditPackagePopup (EditElementPopup):
                          tooltip=_("Location of associated media file"),
                          sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         return vbox
 
@@ -853,9 +857,9 @@ class EditSchemaPopup (EditElementPopup):
         return True
 
     def make_widget (self, editable=True, compact=False):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        sg=gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)
+        sg=Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL)
         f = EditAttributeForm(title=_("Title (name)"),
                               element=self.element, name='title',
                               controller=self.controller,
@@ -863,7 +867,7 @@ class EditSchemaPopup (EditElementPopup):
                               tooltip=_("Name of the schema"),
                               sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = self.make_registered_form (element=self.element,
                                        fields=('id', 'uri',
@@ -876,7 +880,7 @@ class EditSchemaPopup (EditElementPopup):
                                                'date':   _('Date')}
                                        )
         vbox.pack_start (self.expandable(f.get_view (),  _("Metadata"), expanded=False),
-                         expand=False)
+                         False, False, 0)
 
         f = EditMetaForm(title=_("Description"),
                          element=self.element, name='description',
@@ -886,7 +890,7 @@ class EditSchemaPopup (EditElementPopup):
                          focus=True,
                          sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Color"),
                          element=self.element, name='color',
@@ -896,7 +900,7 @@ class EditSchemaPopup (EditElementPopup):
                          type='color',
                          sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         if config.data.preferences['expert-mode']:
             f = EditMetaForm(title=_("Item color"),
@@ -907,7 +911,7 @@ class EditSchemaPopup (EditElementPopup):
                              type='color',
                              sizegroup=sg)
             self.register_form(f)
-            vbox.pack_start(f.get_view(), expand=False)
+            vbox.pack_start(f.get_view(), False, False, 0)
 
         return vbox
 
@@ -921,9 +925,9 @@ class EditAnnotationTypePopup (EditElementPopup):
         return True
 
     def make_widget (self, editable=False, compact=False):
-        vbox = gtk.VBox()
+        vbox = Gtk.VBox()
 
-        sg=gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)
+        sg=Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL)
 
         f = EditAttributeForm(title=_("Title (name)"),
                               element=self.element, name='title',
@@ -932,7 +936,7 @@ class EditAnnotationTypePopup (EditElementPopup):
                               tooltip=_("Name of the type"),
                               sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = self.make_registered_form (element=self.element,
                                        fields=('id', 'uri',
@@ -945,7 +949,7 @@ class EditAnnotationTypePopup (EditElementPopup):
                                                'date':   _('Date'),
                                                }
                                        )
-        vbox.pack_start(self.expandable(f.get_view(),  _("Metadata"), expanded=False), expand=False)
+        vbox.pack_start(self.expandable(f.get_view(),  _("Metadata"), expanded=False), False, False, 0)
 
         f = EditAttributeForm(title=_("MIME Type"),
                               element=self.element, name='mimetype',
@@ -955,7 +959,7 @@ class EditAnnotationTypePopup (EditElementPopup):
                               type='mimetype',
                               sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Description"),
                          element=self.element, name='description',
@@ -966,7 +970,7 @@ class EditAnnotationTypePopup (EditElementPopup):
                          sizegroup=sg)
 
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Color"),
                          element=self.element, name='color',
@@ -976,9 +980,9 @@ class EditAnnotationTypePopup (EditElementPopup):
                          type='color',
                          sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
-        abox=gtk.VBox()
+        abox=Gtk.VBox()
         f = EditMetaForm(title=_("Representation"),
                          element=self.element, name='representation',
                          controller=self.controller,
@@ -988,7 +992,7 @@ class EditAnnotationTypePopup (EditElementPopup):
                                     for name in getattr(self.element, '_fieldnames', []) ],
                          sizegroup=sg)
         self.register_form(f)
-        abox.pack_start(f.get_view(), expand=False)
+        abox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Item color"),
                          element=self.element, name='item_color',
@@ -998,7 +1002,7 @@ class EditAnnotationTypePopup (EditElementPopup):
                          type='color',
                          sizegroup=sg)
         self.register_form(f)
-        abox.pack_start(f.get_view(), expand=False)
+        abox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Completions"),
                          element=self.element, name='completions',
@@ -1007,10 +1011,10 @@ class EditAnnotationTypePopup (EditElementPopup):
                          tooltip=_("Space-separated list of words used for content completion"),
                          sizegroup=sg)
         self.register_form(f)
-        abox.pack_start(f.get_view(), expand=False)
+        abox.pack_start(f.get_view(), False, False, 0)
 
 
-        vbox.pack_start(self.expandable(abox, label=_("Advanced"), expanded=False), expand=False)
+        vbox.pack_start(self.expandable(abox, label=_("Advanced"), expanded=False), False, False, 0)
 
         return vbox
 
@@ -1024,9 +1028,9 @@ class EditRelationTypePopup (EditElementPopup):
         return True
 
     def make_widget (self, editable=False, compact=False):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        sg=gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)
+        sg=Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL)
         f = EditAttributeForm(title=_("Title (name)"),
                               element=self.element, name='title',
                               controller=self.controller,
@@ -1034,7 +1038,7 @@ class EditRelationTypePopup (EditElementPopup):
                               tooltip=_("Name of the type"),
                               sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = EditAttributeForm(title=_("MIME Type"),
                               element=self.element, name='mimetype',
@@ -1044,7 +1048,7 @@ class EditRelationTypePopup (EditElementPopup):
                               type='mimetype',
                               sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = self.make_registered_form (element=self.element,
                                        fields=('id', 'uri',
@@ -1069,7 +1073,7 @@ class EditRelationTypePopup (EditElementPopup):
             controller=self.controller,
             editable=editable)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Description"),
                          element=self.element, name='description',
@@ -1080,7 +1084,7 @@ class EditRelationTypePopup (EditElementPopup):
                          sizegroup=sg)
 
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         f = EditMetaForm(title=_("Color"),
                          element=self.element, name='color',
@@ -1090,7 +1094,7 @@ class EditRelationTypePopup (EditElementPopup):
                          type='color',
                          sizegroup=sg)
         self.register_form(f)
-        vbox.pack_start(f.get_view(), expand=False)
+        vbox.pack_start(f.get_view(), False, False, 0)
 
         return vbox
 
@@ -1104,7 +1108,7 @@ class EditResourcePopup (EditElementPopup):
         return True
 
     def make_widget (self, editable=True, compact=False):
-        vbox = gtk.VBox ()
+        vbox = Gtk.VBox ()
 
         # Resource data
         f = self.make_registered_form (element=self.element,
@@ -1118,14 +1122,14 @@ class EditResourcePopup (EditElementPopup):
                                                'author': _('Author'),
                                                'date':   _('Date')}
                                        )
-        vbox.pack_start (f.get_view (), expand=False)
+        vbox.pack_start (f.get_view (), False, False, 0)
 
         f = EditContentForm(self.element, controller=self.controller,
                             mimetypeeditable=False, parent=self.element)
         f.set_editable(editable)
         t = f.get_view()
         self.register_form(f)
-        vbox.pack_start(self.framed(t, _("Content")), expand=True)
+        vbox.pack_start(self.framed(t, _("Content")), True, True, 0)
 
         return vbox
 
@@ -1242,7 +1246,7 @@ class EditContentForm(EditForm):
         # self.contentform will be an appropriate EditForm
         # (EditTextForm,EditRuleSetForm,...)
         self.contentform = None
-        # self.mimetype is a gtk.Entry
+        # self.mimetype is a Gtk.Entry
         self.mimetype = None
 
         # Allow the edition of mimetype for contents
@@ -1298,15 +1302,15 @@ class EditContentForm(EditForm):
 
     def get_view (self, compact=False):
         """Generate a view widget for editing content."""
-        vbox = gtk.VBox()
+        vbox = Gtk.VBox()
 
         if self.element.mimetype == 'application/x-advene-ruleset':
             compact=True
 
         if not compact and config.data.preferences['expert-mode']:
-            hbox = gtk.HBox()
-            l=gtk.Label(_("MIME Type"))
-            hbox.pack_start(l, expand=False)
+            hbox = Gtk.HBox()
+            l=Gtk.Label(label=_("MIME Type"))
+            hbox.pack_start(l, False, True, 0)
 
             mt=self.element.mimetype
             # Is the current value in the predefined list?
@@ -1329,16 +1333,16 @@ class EditContentForm(EditForm):
                                                       preselect=mt,
                                                       entry=self.mimetypeeditable)
 
-            hbox.pack_start(self.mimetype)
+            hbox.pack_start(self.mimetype, True, True, 0)
 
-            vbox.pack_start(hbox, expand=False)
+            vbox.pack_start(hbox, False, True, 0)
         else:
             self.mimetype=None
 
         handler = config.data.get_content_handler(self.element.mimetype)
         if handler is None:
             self.contentform=None
-            vbox.add(gtk.Label(_("Error: cannot find a content handler for %s")
+            vbox.add(Gtk.Label(label=_("Error: cannot find a content handler for %s")
                                % self.element.mimetype))
         else:
             self.contentform=handler(self.element,
@@ -1396,7 +1400,7 @@ class TextContentHandler (ContentHandler):
             return False
         buf = self.view.get_buffer()
         start_iter, end_iter = buf.get_bounds ()
-        text = unicode(buf.get_text (start_iter, end_iter))
+        text = buf.get_text(start_iter, end_iter, False).decode('utf-8')
         self.element.data = text
         self.set_modified(False)
         return True
@@ -1407,17 +1411,17 @@ class TextContentHandler (ContentHandler):
         # insertion is common in text editing.
         #if self.controller.gui and self.controller.gui.process_player_shortcuts(win, event):
         #    return True
-        if event.state & gtk.gdk.CONTROL_MASK:
-            if event.keyval == gtk.keysyms.s:
+        if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
+            if event.keyval == Gdk.KEY_s:
                 self.content_save()
                 return True
-            elif event.keyval == gtk.keysyms.o:
+            elif event.keyval == Gdk.KEY_o:
                 self.content_open()
                 return True
-            elif event.keyval == gtk.keysyms.r:
+            elif event.keyval == Gdk.KEY_r:
                 self.content_reload()
                 return True
-            elif event.keyval == gtk.keysyms.i:
+            elif event.keyval == Gdk.KEY_i:
                 self.browser_open()
                 return True
         return False
@@ -1455,7 +1459,7 @@ class TextContentHandler (ContentHandler):
             except IOError, e:
                 dialog.message_dialog(
                     _("Cannot read the data:\n%s") % unicode(e),
-                    icon=gtk.MESSAGE_ERROR)
+                    icon=Gtk.MessageType.ERROR)
                 return True
             lines="".join(f.readlines())
             f.close()
@@ -1479,8 +1483,8 @@ class TextContentHandler (ContentHandler):
                 except AttributeError:
                     pass
             fname=dialog.get_filename(title=_("Save content to..."),
-                                               action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                               button=gtk.STOCK_SAVE,
+                                               action=Gtk.FileChooserAction.SAVE,
+                                               button=Gtk.STOCK_SAVE,
                                                default_file=default)
         if fname is not None:
             if os.path.exists(fname):
@@ -1490,34 +1494,34 @@ class TextContentHandler (ContentHandler):
             except IOError, e:
                 dialog.message_dialog(
                     _("Cannot save the data:\n%s") % unicode(e),
-                    icon=gtk.MESSAGE_ERROR)
+                    icon=Gtk.MessageType.ERROR)
                 return True
             b=self.view.get_buffer()
-            f.write(unicode(b.get_text(*b.get_bounds())))
+            f.write(b.get_text(*b.get_bounds() + [ False ]).encode('utf-8'))
             f.close()
             self.fname=fname
         return True
 
     def get_view (self, compact=False):
         """Generate a view widget for editing text attribute."""
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
         if not compact:
-            tb = self.toolbar = gtk.Toolbar()
+            tb = self.toolbar = Gtk.Toolbar()
             vbox.toolbar=tb
-            tb.set_style(gtk.TOOLBAR_ICONS)
+            tb.set_style(Gtk.ToolbarStyle.ICONS)
 
-            b=gtk.ToolButton(gtk.STOCK_OPEN)
+            b=Gtk.ToolButton(Gtk.STOCK_OPEN)
             b.set_tooltip_text(_("Open a file (C-o)"))
             b.connect('clicked', self.content_open)
             tb.insert(b, -1)
 
-            b=gtk.ToolButton(gtk.STOCK_SAVE)
+            b=Gtk.ToolButton(Gtk.STOCK_SAVE)
             b.set_tooltip_text(_("Save to a file (C-s)"))
             b.connect('clicked', self.content_save)
             tb.insert(b, -1)
 
-            b=gtk.ToolButton(gtk.STOCK_REFRESH)
+            b=Gtk.ToolButton(Gtk.STOCK_REFRESH)
             b.set_tooltip_text(_("Reload the file (C-r)"))
             b.connect('clicked', self.content_reload)
             tb.insert(b, -1)
@@ -1527,17 +1531,17 @@ class TextContentHandler (ContentHandler):
                 b.set_tooltip_text(_("Insert a value from the browser (C-i)"))
                 tb.insert(b, -1)
 
-            vbox.pack_start(tb, expand=False)
+            vbox.pack_start(tb, False, True, 0)
 
-        if gtksourceview2 is not None:
-            textview=gtksourceview2.View(gtksourceview2.Buffer())
+        if GtkSource is not None:
+            textview=GtkSource.View.new_with_buffer(GtkSource.Buffer())
             b=textview.get_buffer()
-            m=gtksourceview2.language_manager_get_default()
+            m=GtkSource.LanguageManager.get_default()
             if m:
                 b.set_language(m.guess_language(content_type=self.element.mimetype))
                 b.set_highlight_syntax(True)
             textview.set_editable (self.editable)
-            textview.set_wrap_mode (gtk.WRAP_CHAR)
+            textview.set_wrap_mode (Gtk.WrapMode.CHAR)
             textview.set_auto_indent(True)
             b.begin_not_undoable_action()
             b.set_text (self.element.data)
@@ -1545,10 +1549,10 @@ class TextContentHandler (ContentHandler):
             textview.connect('key-press-event', self.key_pressed_cb)
 
             if not compact:
-                b_undo = gtk.ToolButton(gtk.STOCK_UNDO)
+                b_undo = Gtk.ToolButton(Gtk.STOCK_UNDO)
                 tb.insert(b_undo, -1)
 
-                b_redo = gtk.ToolButton(gtk.STOCK_REDO)
+                b_redo = Gtk.ToolButton(Gtk.STOCK_REDO)
                 tb.insert(b_redo, -1)
 
                 def undo_cb(buf):
@@ -1575,9 +1579,9 @@ class TextContentHandler (ContentHandler):
                 b_redo.connect('clicked', redo)
                 undo_cb(textview.get_buffer())
         else:
-            textview = gtk.TextView ()
+            textview = Gtk.TextView ()
             textview.set_editable (self.editable)
-            textview.set_wrap_mode (gtk.WRAP_CHAR)
+            textview.set_wrap_mode (Gtk.WrapMode.CHAR)
             textview.get_buffer().set_text(self.element.data)
             textview.connect('key-press-event', self.key_pressed_cb)
         self.view = textview
@@ -1586,7 +1590,7 @@ class TextContentHandler (ContentHandler):
         col=self.controller.get_element_color(self.parent)
         if col is not None:
             color=name2color(col)
-            self.view.modify_base(gtk.STATE_NORMAL, color)
+            self.view.modify_base(Gtk.StateType.NORMAL, color)
 
         # Hook the completer component
         if hasattr(self.parent.rootPackage, '_indexer'):
@@ -1595,8 +1599,8 @@ class TextContentHandler (ContentHandler):
                                 element=self.parent,
                                 indexer=self.parent.rootPackage._indexer)
 
-        scroll_win = gtk.ScrolledWindow ()
-        scroll_win.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        scroll_win = Gtk.ScrolledWindow ()
+        scroll_win.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         scroll_win.add(textview)
 
         vbox.add(scroll_win)
@@ -1633,19 +1637,19 @@ class GenericContentHandler (ContentHandler):
     def update_preview(self):
         self.preview.foreach(self.preview.remove)
         if self.element.mimetype.startswith('image/'):
-            i=gtk.Image()
+            i=Gtk.Image()
             if self.fname is None:
                 # Load the element content
-                loader = gtk.gdk.PixbufLoader()
+                loader = GdkPixbuf.PixbufLoader()
                 try:
-                    loader.write (self.data, len (self.data))
+                    loader.write (self.data)
                     loader.close ()
                     pixbuf = loader.get_pixbuf ()
-                except gobject.GError:
+                except GObject.GError:
                     # The PNG data was invalid.
-                    pixbuf=gtk.gdk.pixbuf_new_from_file(config.data.advenefile( ( 'pixmaps', 'notavailable.png' ) ))
+                    pixbuf=GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile( ( 'pixmaps', 'notavailable.png' ) ))
             else:
-                pixbuf=gtk.gdk.pixbuf_new_from_file(self.fname)
+                pixbuf=GdkPixbuf.Pixbuf.new_from_file(self.fname)
             i.set_from_pixbuf(pixbuf)
             self.preview.add(i)
             i.show()
@@ -1659,14 +1663,14 @@ class GenericContentHandler (ContentHandler):
         return True
 
     def key_pressed_cb (self, win, event):
-        if event.state & gtk.gdk.CONTROL_MASK:
-            if event.keyval == gtk.keysyms.s:
+        if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
+            if event.keyval == Gdk.KEY_s:
                 self.content_save()
                 return True
-            elif event.keyval == gtk.keysyms.o:
+            elif event.keyval == Gdk.KEY_o:
                 self.content_open()
                 return True
-            elif event.keyval == gtk.keysyms.r:
+            elif event.keyval == Gdk.KEY_r:
                 self.content_reload()
                 return True
         return False
@@ -1680,7 +1684,7 @@ class GenericContentHandler (ContentHandler):
             except IOError, e:
                 dialog.message_dialog(
                     _("Cannot read the data:\n%s") % unicode(e),
-                    icon=gtk.MESSAGE_ERROR)
+                    icon=Gtk.MessageType.ERROR)
                 return True
             self.set_filename(fname)
 
@@ -1705,8 +1709,8 @@ class GenericContentHandler (ContentHandler):
                 except AttributeError:
                     pass
             fname=dialog.get_filename(title=_("Save content to..."),
-                                               action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                               button=gtk.STOCK_SAVE,
+                                               action=Gtk.FileChooserAction.SAVE,
+                                               button=Gtk.STOCK_SAVE,
                                                default_file=default)
         if fname is not None:
             if os.path.exists(fname):
@@ -1718,43 +1722,43 @@ class GenericContentHandler (ContentHandler):
             except IOError, e:
                 dialog.message_dialog(
                     _("Cannot save the data:\n%s") % unicode(e),
-                    icon=gtk.MESSAGE_ERROR)
+                    icon=Gtk.MessageType.ERROR)
                 return True
             self.set_filename(fname)
         return True
 
     def get_view (self, compact=False):
         """Generate a view widget for editing any content (by saving/loading to/from a file)."""
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        tb=gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
+        tb=Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
 
-        b=gtk.ToolButton(gtk.STOCK_OPEN)
+        b=Gtk.ToolButton(Gtk.STOCK_OPEN)
         b.set_tooltip_text(_("Open a file (C-o)"))
         b.connect('clicked', self.content_open)
         tb.insert(b, -1)
 
-        b=gtk.ToolButton(gtk.STOCK_SAVE)
+        b=Gtk.ToolButton(Gtk.STOCK_SAVE)
         b.set_tooltip_text(_('Save to a file (C-s)'))
         b.connect('clicked', self.content_save)
         tb.insert(b, -1)
 
-        b=gtk.ToolButton(gtk.STOCK_REFRESH)
+        b=Gtk.ToolButton(Gtk.STOCK_REFRESH)
         b.set_tooltip_text(_('Reload the file (C-r)'))
         b.connect('clicked', self.content_reload)
         tb.insert(b, -1)
 
         tb.show_all()
-        vbox.pack_start(tb, expand=False)
+        vbox.pack_start(tb, False, True, 0)
 
-        self.filename_entry = gtk.Entry()
+        self.filename_entry = Gtk.Entry()
         self.filename_entry.set_editable (self.editable)
         vbox.connect('key-press-event', self.key_pressed_cb)
 
-        vbox.pack_start(self.filename_entry, expand=False)
-        self.preview=gtk.VBox()
-        vbox.pack_start(self.preview, expand=True)
+        vbox.pack_start(self.filename_entry, False, True, 0)
+        self.preview=Gtk.VBox()
+        vbox.pack_start(self.preview, True, True, 0)
         self.update_preview()
         return vbox
 config.data.register_content_handler(GenericContentHandler)
@@ -1771,7 +1775,7 @@ class EditFragmentForm(EditForm):
     def check_validity(self):
         if self.begin.value >= self.end.value:
             dialog.message_dialog(_("Begin time is greater than end time"),
-                                           icon=gtk.MESSAGE_ERROR)
+                                           icon=Gtk.MessageType.ERROR)
             return False
         else:
             return True
@@ -1792,26 +1796,26 @@ class EditFragmentForm(EditForm):
         return True
 
     def get_view(self, compact=False):
-        hbox=gtk.HBox()
+        hbox=Gtk.HBox()
 
         self.begin=TimeAdjustment(value=self.element.begin,
                                   controller=self.controller,
                                   editable=self.editable,
                                   compact=compact,
                                   callback=self.begin_callback)
-        f=gtk.Frame()
+        f=Gtk.Frame()
         f.set_label(_("Begin"))
         f.add(self.begin.get_widget())
-        hbox.pack_start(f, expand=False)
+        hbox.pack_start(f, False, True, 0)
 
         self.end=TimeAdjustment(value=self.element.end,
                                 controller=self.controller,
                                 editable=self.editable,
                                 compact=compact)
-        f=gtk.Frame()
+        f=Gtk.Frame()
         f.set_label(_("End"))
         f.add(self.end.get_widget())
-        hbox.pack_start(f, expand=False)
+        hbox.pack_start(f, False, True, 0)
 
         return hbox
 
@@ -1841,10 +1845,10 @@ class EditGenericForm(EditForm):
             return False
 
     def get_view(self, compact=False):
-        hbox = gtk.HBox()
+        hbox = Gtk.HBox()
 
-        l=gtk.Label(self.title)
-        hbox.pack_start(l, expand=False)
+        l=Gtk.Label(label=self.title)
+        hbox.pack_start(l, False, True, 0)
         if self.sizegroup is not None:
             self.sizegroup.add_widget(l)
 
@@ -1875,14 +1879,14 @@ class EditGenericForm(EditForm):
                                                    preselect=v,
                                                    entry=self.editable)
         else:
-            self.entry=gtk.Entry()
+            self.entry=Gtk.Entry()
             self.entry.set_text(v)
             self.entry.set_editable(self.editable)
 
         if self.tooltip:
             self.entry.set_tooltip_text(self.tooltip)
 
-        hbox.pack_start(self.entry)
+        hbox.pack_start(self.entry, True, True, 0)
 
         if self.type == 'color':
             if not config.data.preferences['expert-mode'] and (not v or v.startswith('string:')):
@@ -1890,14 +1894,14 @@ class EditGenericForm(EditForm):
                 # current color is statically defined or empty
                 self.entry.hide()
                 self.entry.set_no_show_all(True)
-            b=gtk.ColorButton()
+            b=Gtk.ColorButton()
             b.set_use_alpha(False)
 
             if v:
                 c=self.controller.build_context()
                 try:
                     color=c.evaluateValue(v)
-                    gtk_color=gtk.gdk.color_parse(color)
+                    gtk_color=Gdk.color_parse(color)
                     b.set_color(gtk_color)
                 except:
                     pass
@@ -1908,23 +1912,24 @@ class EditGenericForm(EditForm):
                 return True
 
             b.connect('color-set', handle_color)
-            hbox.pack_start(b, expand=False)
+            hbox.pack_start(b, False, True, 0)
 
             def drag_received(widget, context, x, y, selection, targetType, time):
                 """Handle the drop of a color.
                 """
                 if targetType == config.data.target_type['color']:
                     # The structure consists in 4 unsigned shorts: r, g, b, opacity
-                    (r, g, b, opacity)=struct.unpack('HHHH', selection.data)
+                    (r, g, b, opacity)=struct.unpack('HHHH', selection.get_data())
                     self.entry.set_text("string:#%04x%04x%04x" % (r, g, b))
                 return False
 
             # Allow the entry to get drops of type application/x-color
             self.entry.connect('drag-data-received', drag_received)
-            self.entry.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                  gtk.DEST_DEFAULT_HIGHLIGHT |
-                                  gtk.DEST_DEFAULT_ALL,
-                                  config.data.drag_type['color'], gtk.gdk.ACTION_COPY)
+            self.entry.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                     Gtk.DestDefaults.HIGHLIGHT |
+                                     Gtk.DestDefaults.ALL,
+                                     config.data.get_target_types('color'),
+                                     Gdk.DragAction.COPY)
 
 
         hbox.show_all()
@@ -1945,7 +1950,7 @@ class EditGenericForm(EditForm):
         if hasattr(self.entry, 'get_current_element'):
             v=self.entry.get_current_element()
         else:
-            v=unicode(self.entry.get_text())
+            v=self.entry.get_text().decode('utf-8')
         self.setter(v)
         return True
 
@@ -2075,7 +2080,7 @@ class EditAttributesForm (EditForm):
             dialog.message_dialog(
                 _("The %(attribute)s attribute could not be updated:\n\n%(error)s\n\nResetting to the original value.")
                 % {'attribute': at, 'error': unicode(e)},
-                icon=gtk.MESSAGE_WARNING)
+                icon=Gtk.MessageType.WARNING)
             # Invalid value -> we take the original value
             val = getattr(self.element, at)
 
@@ -2101,8 +2106,8 @@ class EditAttributesForm (EditForm):
         if invalid:
             dialog.message_dialog(
                 _("The following attributes cannot be updated:\n\n%s")
-                % "\n".join ([ "%s: %s" % (at, str(e)) for (at, e) in invalid ]),
-                icon=gtk.MESSAGE_ERROR)
+                % "\n".join ([ "%s: %s" % (attr, str(err)) for (attr, err) in invalid ]),
+                icon=Gtk.MessageType.ERROR)
             return False
         else:
             return True
@@ -2141,8 +2146,8 @@ class EditAttributesForm (EditForm):
         if invalid:
             dialog.message_dialog(
                 _("The following attributes could not be updated:\n\n%s")
-                % "\n".join ([ "%s: %s" % (at, str(e)) for (at, e) in invalid ]),
-                icon=gtk.MESSAGE_ERROR)
+                % "\n".join ([ "%s: %s" % (attr, str(err)) for (attr, err) in invalid ]),
+                icon=Gtk.MessageType.ERROR)
         return True
 
     def get_view (self, compact=False):
@@ -2150,32 +2155,32 @@ class EditAttributesForm (EditForm):
 
         Return the view widget.
         """
-        model = gtk.ListStore (gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, gobject.TYPE_INT)
+        model = Gtk.ListStore (GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_BOOLEAN, GObject.TYPE_INT)
 
         el = self.element
 
-        treeview = gtk.TreeView(model)
+        treeview = Gtk.TreeView(model)
 
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_('Attribute'), renderer,
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_('Attribute'), renderer,
                                     text=self.COLUMN_LABEL,
                                     weight=self.COLUMN_WEIGHT)
 
         treeview.append_column(column)
 
-        renderer = gtk.CellRendererText()
+        renderer = Gtk.CellRendererText()
         renderer.connect('edited', self.cell_edited, (model, 1))
-        column = gtk.TreeViewColumn(_('Value'), renderer,
+        column = Gtk.TreeViewColumn(_('Value'), renderer,
                                     text=self.COLUMN_VALUE,
                                     editable=self.COLUMN_EDITABLE,
                                     weight=self.COLUMN_WEIGHT)
-        column.set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+        column.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
         column.set_resizable(True)
         column.set_clickable(False)
         treeview.append_column(column)
 
-        weight = {False: pango.WEIGHT_BOLD,
-                  True:  pango.WEIGHT_NORMAL}
+        weight = {False: Pango.Weight.BOLD,
+                  True:  Pango.Weight.NORMAL}
 
         for at in self.attributes:
             editable = at in self.editable
@@ -2225,7 +2230,7 @@ class EditElementListForm(EditForm):
         y = int(event.y)
 
         if button == 3:
-            if event.window is widget.get_bin_window():
+            if event.get_window() is widget.get_bin_window():
                 model = widget.get_model()
                 t = widget.get_path_at_pos(x, y)
                 if t is not None:
@@ -2246,9 +2251,9 @@ class EditElementListForm(EditForm):
         return r
 
     def create_store(self):
-        store=gtk.ListStore(
-            gobject.TYPE_PYOBJECT,
-            gobject.TYPE_STRING
+        store=Gtk.ListStore(
+            GObject.TYPE_PYOBJECT,
+            GObject.TYPE_STRING
             )
         for el in getattr(self.model, self.field):
             store.append( [ el,
@@ -2272,27 +2277,27 @@ class EditElementListForm(EditForm):
         return True
 
     def get_view(self, compact=False):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
         self.store=self.create_store()
 
-        treeview=gtk.TreeView(model=self.store)
+        treeview=Gtk.TreeView(model=self.store)
         treeview.set_reorderable(True)
         treeview.connect('button-press-event', self.tree_view_button_cb)
         self.treeview=treeview
 
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(self.title, renderer,
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(self.title, renderer,
                                     text=self.COLUMN_LABEL)
         treeview.append_column(column)
 
         vbox.add(treeview)
 
-        hbox=gtk.HButtonBox()
-        b=gtk.Button(stock=gtk.STOCK_ADD)
+        hbox=Gtk.HButtonBox()
+        b=Gtk.Button(stock=Gtk.STOCK_ADD)
         b.connect('clicked', self.insert_new, treeview)
         hbox.add(b)
 
-        b=gtk.Button(stock=gtk.STOCK_REMOVE)
+        b=Gtk.Button(stock=Gtk.STOCK_REMOVE)
         b.connect('clicked', self.delete_current, treeview)
         hbox.add(b)
 
@@ -2328,7 +2333,7 @@ class EditTagForm(EditForm):
                   if not re.match('^[\w\d_]+$', t) ]
         if invalid:
             dialog.message_dialog(_("Some tags contain invalid characters: %s") % ", ".join(invalid),
-                                           icon=gtk.MESSAGE_ERROR)
+                                           icon=Gtk.MessageType.ERROR)
             return False
         else:
             return True
@@ -2349,8 +2354,8 @@ class EditTagForm(EditForm):
         return True
 
     def get_view(self, compact=False):
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Tags:") + " "), expand=False)
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Tags:") + " "), False, False, 0)
         self.view=TagBag(controller=self.controller, tags=self.element.tags, vertical=False)
         self.view.register_callback(controller=self.controller)
         self.view.widget.connect('destroy', lambda w: self.view.unregister_callback(self.controller))
@@ -2371,15 +2376,15 @@ class EditRelationsForm(EditForm):
         invalid=[]
         if invalid:
             dialog.message_dialog(_("Some tags contain invalid characters: %s") % ", ".join(invalid),
-                                           icon=gtk.MESSAGE_ERROR)
+                                           icon=Gtk.MessageType.ERROR)
             return False
         else:
             return True
 
     def refresh(self):
         self.view.foreach(self.view.remove)
-        col1=gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)
-        col2=gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL)
+        col1=Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL)
+        col2=Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL)
         for i, r in enumerate(self.element.relations):
             # Determine the direction
             if r.members[0] == self.element:
@@ -2388,19 +2393,19 @@ class EditRelationsForm(EditForm):
             else:
                 direction="from"
                 other=r.members[0]
-            hb=gtk.HBox()
+            hb=Gtk.HBox()
 
             b=RelationRepresentation(r, controller=self.controller, direction=direction)
             b.set_alignment(0, 0)
             col1.add_widget(b)
-            hb.pack_start(b, expand=False)
+            hb.pack_start(b, False, True, 0)
 
             a=AnnotationRepresentation(other, controller=self.controller)
             a.set_alignment(0, 0)
             col2.add_widget(a)
-            hb.pack_start(a, expand=False)
+            hb.pack_start(a, False, True, 0)
 
-            self.view.pack_start(hb, expand=False)
+            self.view.pack_start(hb, False, True, 0)
         self.view.show_all()
         return
 
@@ -2413,6 +2418,6 @@ class EditRelationsForm(EditForm):
         return True
 
     def get_view(self, compact=False):
-        self.view=gtk.VBox()
+        self.view=Gtk.VBox()
         self.refresh()
         return self.view
diff --git a/lib/advene/gui/edit/frameselector.py b/lib/advene/gui/edit/frameselector.py
index 720ce27..e57db69 100644
--- a/lib/advene/gui/edit/frameselector.py
+++ b/lib/advene/gui/edit/frameselector.py
@@ -1,6 +1,6 @@
 
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,10 +21,11 @@
 It depends on a Controller instance to be able to interact with the video player.
 """
 
-import gtk
+from gi.repository import Gdk
+from gi.repository import Gtk
 import advene.core.config as config
 from advene.gui.widget import TimestampRepresentation, GenericColorButtonWidget
-from advene.gui.util import dialog, get_color_style
+from advene.gui.util import dialog
 from gettext import gettext as _
 
 class FrameSelector(object):
@@ -49,9 +50,9 @@ class FrameSelector(object):
         self.count = 8
         self.frame_length = 1000 / config.data.preferences['default-fps']
 
-        self.black_color = gtk.gdk.color_parse('black')
-        self.red_color = gtk.gdk.color_parse('#ff6666')
-        self.mouseover_color = gtk.gdk.color_parse('#ff0000')
+        self.black_color = Gdk.color_parse('black')
+        self.red_color = Gdk.color_parse('#ff6666')
+        self.mouseover_color = Gdk.color_parse('#ff0000')
 
         # List of TimestampRepresentation widgets.
         # It is initialized in build_widget()
@@ -95,15 +96,18 @@ class FrameSelector(object):
             f.right_border.set_color(self.black_color)
 
             if t < self.timestamp:
-                f.bgcolor = '#666666'
+                f.remove_class('frameselector_after')
+                f.add_class('frameselector_before')
             else:
                 if matching_index < 0:
                     matching_index = i
 
                 if t == self.timestamp and self.border_mode == 'right':
-                    f.bgcolor = '#666666'
+                    f.remove_class('frameselector_after')
+                    f.add_class('frameselector_before')
                 else:
-                    f.bgcolor = 'black'
+                    f.remove_class('frameselector_before')
+                    f.add_class('frameselector_after')
 
             t += self.frame_length
 
@@ -143,9 +147,9 @@ class FrameSelector(object):
         return True
 
     def handle_scroll_event(self, widget, event):
-        if event.direction == gtk.gdk.SCROLL_UP or event.direction == gtk.gdk.SCROLL_LEFT:
+        if event.direction == Gdk.ScrollDirection.UP or event.direction == Gdk.ScrollDirection.LEFT:
             offset=-1
-        elif event.direction == gtk.gdk.SCROLL_DOWN or event.direction == gtk.gdk.SCROLL_RIGHT:
+        elif event.direction == Gdk.ScrollDirection.DOWN or event.direction == Gdk.ScrollDirection.RIGHT:
             offset=+1
         self.update_offset(offset)
         return True
@@ -156,14 +160,14 @@ class FrameSelector(object):
         return self.frames.index(self.frames[0].get_parent().get_focus_child())
 
     def handle_key_press(self, widget, event):
-        if event.keyval == gtk.keysyms.Left:
+        if event.keyval == Gdk.KEY_Left:
             i = self.focus_index()
             if i == 0:
                 self.update_offset(-1, focus_index = 0)
             else:
                 self.frames[i - 1].grab_focus()
             return True
-        elif event.keyval == gtk.keysyms.Right:
+        elif event.keyval == Gdk.KEY_Right:
             i = self.focus_index()
             if i == len(self.frames) -1:
                 self.update_offset(+1, focus_index = -1)
@@ -175,33 +179,33 @@ class FrameSelector(object):
     def get_value(self, title=None):
         if title is None:
             title = _("Select the appropriate snapshot")
-        d = gtk.Dialog(title=title,
-                       parent=None,
-                       flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-                                 gtk.STOCK_OK, gtk.RESPONSE_OK,
+        d = Gtk.Dialog(title=title,
+                       parent=self.controller.gui.gui.win,
+                       flags=Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+                                 Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                  ))
 
         def callback(v):
-            d.response(gtk.RESPONSE_OK)
+            d.response(Gtk.ResponseType.OK)
             return True
         self.callback = callback
 
         d.vbox.add(self.widget)
 
-        buttons = gtk.HBox()
-        b=gtk.Button(_("Refresh snapshots"))
+        buttons = Gtk.HBox()
+        b=Gtk.Button(_("Refresh snapshots"))
         b.set_tooltip_text(_("Refresh missing snapshots"))
         b.connect("clicked", lambda b: self.refresh_snapshots())
-        buttons.pack_start(b, expand=False)
-        d.vbox.pack_start(buttons, expand=False)
+        buttons.pack_start(b, False, True, 0)
+        d.vbox.pack_start(buttons, False, True, 0)
 
         d.show_all()
         dialog.center_on_mouse(d)
 
         res = d.run()
         timestamp = self.timestamp
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             timestamp = self.selected_value
         d.destroy()
         return timestamp
@@ -218,19 +222,19 @@ class FrameSelector(object):
         return True
 
     def build_widget(self):
-        vb=gtk.VBox()
+        vb=Gtk.VBox()
 
-        l = gtk.Label(self.label)
-        vb.pack_start(l, expand=False)
+        l = Gtk.Label(label=self.label)
+        vb.pack_start(l, False, True, 0)
 
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
 
-        eb = gtk.EventBox()
-        ar = gtk.Arrow(gtk.ARROW_LEFT, gtk.SHADOW_IN)
+        eb = Gtk.EventBox()
+        ar = Gtk.Arrow(Gtk.ArrowType.LEFT, Gtk.ShadowType.IN)
         ar.set_tooltip_text(_("Click to see more frames or scroll with the mouse wheel"))
         eb.connect('button-press-event', lambda b,e: self.update_offset(-1))
         eb.add(ar)
-        hb.pack_start(eb, expand=False)
+        hb.pack_start(eb, False, True, 0)
 
         r = None
         for i in xrange(self.count):
@@ -244,7 +248,7 @@ class FrameSelector(object):
                 r.right_border = border
 
             r = TimestampRepresentation(0, self.controller, width=100, visible_label=True,
-                                        epsilon=(1000 / config.data.preferences['default-fps'] - 10))
+                                        epsilon=(1000 / 2 / config.data.preferences['default-fps'] - 10))
             self.frames.append(r)
             r.connect("clicked", self.select_time)
             r.left_border = border
@@ -268,24 +272,23 @@ class FrameSelector(object):
                 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)
+            hb.pack_start(border, False, True, 0)
+            hb.pack_start(r, False, True, 0)
 
         # Last right border
         border = GenericColorButtonWidget('border')
         border.default_size=(3, 110)
         border.local_color=self.black_color
         r.right_border = border
-        hb.pack_start(border, expand=False)
+        hb.pack_start(border, False, True, 0)
 
-        eb = gtk.EventBox()
-        ar = gtk.Arrow(gtk.ARROW_RIGHT, gtk.SHADOW_IN)
+        eb = Gtk.EventBox()
+        ar = Gtk.Arrow(Gtk.ArrowType.RIGHT, Gtk.ShadowType.IN)
         ar.set_tooltip_text(_("Click to see more frames or scroll with the mouse wheel"))
         eb.connect('button-press-event', lambda b,e: self.update_offset(+1))
         eb.add(ar)
-        hb.pack_start(eb, expand=False)
+        hb.pack_start(eb, False, True, 0)
 
-        hb.set_style(get_color_style(hb, 'black', 'black'))
         hb.connect('scroll-event', self.handle_scroll_event)
         hb.connect('key-press-event', self.handle_key_press)
         vb.add(hb)
diff --git a/lib/advene/gui/edit/htmleditor.py b/lib/advene/gui/edit/htmleditor.py
index 0854a32..dbf361d 100755
--- a/lib/advene/gui/edit/htmleditor.py
+++ b/lib/advene/gui/edit/htmleditor.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -27,11 +27,9 @@
 # - Insert bullets in list items
 # - Handle list item insertion
 
-import gobject
-import pygtk
-pygtk.require('2.0')
-import gtk
-import pango
+from gi.repository import GObject
+from gi.repository import Gtk
+from gi.repository import Pango
 import sys
 import urllib2
 import socket
@@ -39,14 +37,14 @@ import StringIO
 import re
 from HTMLParser import HTMLParser
 try:
-    import gtksourceview2
+    from gi.repository import GtkSource
 except ImportError:
-    gtksourceview2=None
+    GtkSource=None
 
-if gtksourceview2 is None:
-    textview_class=gtk.TextView
+if GtkSource is None:
+    textview_class=Gtk.TextView
 else:
-    textview_class=gtksourceview2.View
+    textview_class=GtkSource.View
 
 broken_xpm="""20 22 5 1
   c black
@@ -98,11 +96,11 @@ class HTMLEditor(textview_class, HTMLParser):
     # FIXME: we should parse at least a subset of CSS to get some things right
     __formats = {
          'h1': { 'font': "sans bold 16",
-                 #'justification': gtk.JUSTIFY_CENTER,
+                 #'justification': Gtk.Justification.CENTER,
                  'pixels-above-lines': 8,
                  'pixels-below-lines': 4 },
          'h2': { 'font': "sans bold 12",
-                 #'justification': gtk.JUSTIFY_CENTER,
+                 #'justification': Gtk.Justification.CENTER,
                  'pixels-above-lines': 6,
                  'pixels-below-lines': 3 },
          'h3': { 'font': "sans bold italic 10",
@@ -126,7 +124,7 @@ class HTMLEditor(textview_class, HTMLParser):
          'strong': { 'font': "sans bold italic 10" },
          'code': { 'font': "monospace 10" },
          'a': { 'font': "sans 10",
-                'underline': pango.UNDERLINE_SINGLE,
+                'underline': Pango.Underline.SINGLE,
                 'foreground': 'blue' },
          'head': { 'invisible': True },
          'table': {},
@@ -148,12 +146,12 @@ class HTMLEditor(textview_class, HTMLParser):
          __tags as a list of tags in the text and present their
          positions so we can allocate the formatting.
         """
-        gtk.TextView.__init__(self, *cnf, **kw)
+        GObject.GObject.__init__(self, *cnf, **kw)
         HTMLParser.__init__(self)
-        if gtksourceview2 is not None:
-            self.set_buffer(gtksourceview2.Buffer())
+        if GtkSource is not None:
+            self.set_buffer(GtkSource.Buffer())
         self.set_editable(True)
-        self.set_wrap_mode(gtk.WRAP_WORD)
+        self.set_wrap_mode(Gtk.WrapMode.WORD)
 
         # Callers can override this with a custom method to load URLs.
         # The method takes a URL as parameter, and returns the
@@ -394,7 +392,7 @@ class HTMLEditor(textview_class, HTMLParser):
             # Caveat: GdkPixbuf is known not to be safe to load images
             # from network... this program is now potentially hackable
             # ;)
-            loader = gtk.gdk.PixbufLoader()
+            loader = GdkPixbuf.PixbufLoader()
 
             def set_size(pixbuf, width, height):
                 if attrwidth and attrheight:
@@ -414,13 +412,13 @@ class HTMLEditor(textview_class, HTMLParser):
                 loader.write(data)
                 loader.close()
                 pixbuf = loader.get_pixbuf()
-            except gobject.GError:
+            except GObject.GError:
                 pixbuf=None
         else:
             pixbuf=None
 
         if pixbuf is None:
-            pixbuf=gtk.gdk.pixbuf_new_from_xpm_data(broken_xpm)
+            pixbuf=GdkPixbuf.Pixbuf.new_from_xpm_data(broken_xpm)
         pixbuf._tag=tag
         pixbuf._attr=attr
         self.insert_pixbuf(pixbuf)
@@ -446,9 +444,9 @@ class HTMLEditor(textview_class, HTMLParser):
             for p in self._class_parsers:
                 widget, self.enclosed_processor = p(tag, dattr)
                 if widget is not None:
-                    if isinstance(widget, gtk.gdk.Pixbuf):
+                    if isinstance(widget, GdkPixbuf.Pixbuf):
                         self.insert_pixbuf(widget)
-                    elif isinstance(widget, gtk.Widget):
+                    elif isinstance(widget, Gtk.Widget):
                         self.insert_widget(widget)
                     else:
                         self.log("Unknown element type")
@@ -829,10 +827,10 @@ class HTMLEditor(textview_class, HTMLParser):
             endmark._startmark=mark
             mark._endmark=endmark
 
-class ContextDisplay(gtk.TreeView):
+class ContextDisplay(Gtk.TreeView):
     def __init__(self):
         super(ContextDisplay, self).__init__()
-        self.set_model(gtk.TreeStore(object, str, str))
+        self.set_model(Gtk.TreeStore(object, str, str))
 
         def edited_cell(renderer, path, newtext, col):
             model=self.get_model()
@@ -859,15 +857,15 @@ class ContextDisplay(gtk.TreeView):
             print "Edited", mark._tag, mark._attr
             return False
 
-        cell=gtk.CellRendererText()
+        cell=Gtk.CellRendererText()
         cell.set_property('editable', True)
         cell.connect('edited', edited_cell, 1)
-        self.append_column(gtk.TreeViewColumn("Name", cell, text=1))
+        self.append_column(Gtk.TreeViewColumn("Name", cell, text=1))
 
-        cell=gtk.CellRendererText()
+        cell=Gtk.CellRendererText()
         cell.set_property('editable', True)
         cell.connect('edited', edited_cell, 2)
-        self.append_column(gtk.TreeViewColumn("Value", cell, text=2))
+        self.append_column(Gtk.TreeViewColumn("Value", cell, text=2))
 
     def set_context(self, context):
         model=self.get_model()
@@ -887,7 +885,7 @@ if __name__ == "__main__":
     if source is not None:
         t.set_text(open(source).read())
     t.show()
-    sb = gtk.ScrolledWindow()
+    sb = Gtk.ScrolledWindow()
     sb.add(t)
     sb.show()
 
@@ -907,8 +905,8 @@ if __name__ == "__main__":
     t.get_buffer().connect('mark-set', cursor_moved)
     context_data.show()
 
-    p=gtk.HPaned()
-    sw=gtk.ScrolledWindow()
+    p=Gtk.HPaned()
+    sw=Gtk.ScrolledWindow()
     sw.add(context_data)
     p.add1(sw)
     p.add2(sb)
@@ -917,37 +915,37 @@ if __name__ == "__main__":
     ev.widget.add(p)
 
     for (icon, action) in (
-        (gtk.STOCK_CONVERT, lambda i: t.dump_html()),
-        (gtk.STOCK_REFRESH, lambda i: t.refresh()),
-        (gtk.STOCK_BOLD, lambda i: t.apply_html_tag('b')),
-        (gtk.STOCK_ITALIC, lambda i: t.apply_html_tag('i')),
+        (Gtk.STOCK_CONVERT, lambda i: t.dump_html()),
+        (Gtk.STOCK_REFRESH, lambda i: t.refresh()),
+        (Gtk.STOCK_BOLD, lambda i: t.apply_html_tag('b')),
+        (Gtk.STOCK_ITALIC, lambda i: t.apply_html_tag('i')),
         ):
-        b=gtk.ToolButton(icon)
+        b=Gtk.ToolButton(icon)
         b.connect('clicked', action)
         ev.toolbar.insert(b, -1)
         b.show()
 
-    if gtksourceview2 is not None:
-        b=gtk.ToolButton(gtk.STOCK_UNDO)
+    if GtkSource is not None:
+        b=Gtk.ToolButton(Gtk.STOCK_UNDO)
         b.connect('clicked', lambda i: t.undo())
         ev.toolbar.insert(b, -1)
         b.show()
 
     actions={
-        gtk.keysyms.b: lambda: t.apply_html_tag('b'),
-        gtk.keysyms.i: lambda: t.apply_html_tag('i'),
-        gtk.keysyms.z: lambda: t.dump_html(),
+        Gdk.KEY_b: lambda: t.apply_html_tag('b'),
+        Gdk.KEY_i: lambda: t.apply_html_tag('i'),
+        Gdk.KEY_z: lambda: t.dump_html(),
         }
 
     w=ev.popup(embedded=False)
 
     def key_press(win, event):
         # Control-shortcuts
-        if event.state & gtk.gdk.CONTROL_MASK and event.keyval in actions:
+        if event.get_state() & Gdk.ModifierType.CONTROL_MASK and event.keyval in actions:
             actions[event.keyval]()
             return True
         return False
     w.connect('key-press-event', key_press)
 
     t.grab_focus()
-    gtk.main()
+    Gtk.main()
diff --git a/lib/advene/gui/edit/importer.py b/lib/advene/gui/edit/importer.py
index c3ca9bf..ed56df1 100644
--- a/lib/advene/gui/edit/importer.py
+++ b/lib/advene/gui/edit/importer.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,12 +16,13 @@
 # along with Advene; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
-"""GUI to import external file formats.
+"""GUI to apply importers to files or internal data
 """
 import os
 import thread
-import gobject
-import gtk
+from gi.repository import GObject
+from gi.repository import Gdk
+from gi.repository import Gtk
 
 from gettext import gettext as _
 
@@ -36,17 +37,17 @@ from advene.gui.views import AdhocView
 
 dummy_advene_importer = object()
 
-name="FileImporter view plugin"
+name="AnnotationImporter view plugin"
 
 def register(controller):
-    controller.register_viewclass(FileImporter)
+    controller.register_viewclass(AnnotationImporter)
 
-class FileImporter(AdhocView):
+class AnnotationImporter(AdhocView):
     view_name = _("Importer")
     view_id = 'importerview'
 
-    def __init__(self, controller=None, filename=None, message=None, display_unlikely=True, parameters=None):
-        super(FileImporter, self).__init__(controller=controller)
+    def __init__(self, controller=None, filename=None, message=None, display_unlikely=True, parameters=None, importerclass=None, annotation_type=None):
+        super(AnnotationImporter, self).__init__(controller=controller)
         self.controller=controller
         self.parameters=parameters
         self.message = message
@@ -66,8 +67,10 @@ class FileImporter(AdhocView):
         # act accordingly.
         self.main_thread_id = thread.get_ident()
         self.importer = None
+        if importerclass is not None:
+            self.importer = importerclass(controller=self.controller, callback=self.progress_callback, annotation_type=annotation_type)
+        self.annotation_type = annotation_type
         self.filename = filename
-
         self.widget=self.build_widget()
 
         if filename:
@@ -85,13 +88,13 @@ class FileImporter(AdhocView):
             # 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 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)
@@ -134,7 +137,8 @@ class FileImporter(AdhocView):
         self.controller.notify("PackageActivate", package=self.controller.package)
         self.close()
         if msg is None:
-            msg = _('Completed conversion: %(statistics)s') % {
+            msg = _('Completed conversion: %(message)s\n%(statistics)s') % {
+                'message': self.importer.output_message,
                 'statistics': self.importer.statistics_formatted() }
         dialog.message_dialog(msg, modal=False)
         self.log(msg)
@@ -150,27 +154,32 @@ class FileImporter(AdhocView):
         b.set_label(stop_label)
         self.importers.set_sensitive(False)
         self.fb.set_sensitive(False)
-        ic = self.importers.get_current_element()
-        fname = unicode(self.filename or self.fb.get_filename() or self.fb.get_uri())
 
-        if fname.startswith('file://'):
-            fname = fname.replace('file://', '')
-        if ic == dummy_advene_importer:
-            # Invoke the package merge functionality.
-            try:
-                source=Package(uri=fname)
-            except Exception, e:
-                self.log("Cannot load %s file: %s" % (fname, unicode(e)))
+        if self.importer is None:
+            ic = self.importers.get_current_element()
+            fname = unicode(self.filename or self.fb.get_filename() or self.fb.get_uri())
+
+            if fname.startswith('file://'):
+                fname = fname.replace('file://', '')
+            if ic == dummy_advene_importer:
+                # Invoke the package merge functionality.
+                try:
+                    source=Package(uri=fname)
+                except Exception, e:
+                    self.log("Cannot load %s file: %s" % (fname, unicode(e)))
+                    return True
+                m=Merger(self.controller, sourcepackage=source, destpackage=self.controller.package)
+                m.popup()
+                self.close()
                 return True
-            m=Merger(self.controller, sourcepackage=source, destpackage=self.controller.package)
-            m.popup()
-            self.close()
-            return True
 
-        if ic is None:
-            return True
-        i = ic(controller=self.controller, callback=self.progress_callback)
-        self.importer = i
+            if ic is None:
+                return True
+            i = ic(controller=self.controller, callback=self.progress_callback)
+            self.importer = i
+        else:
+            i = self.importer
+            fname = self.filename
         i.set_options(self.optionform.options)
         i.package=self.controller.package
 
@@ -201,13 +210,13 @@ class FileImporter(AdhocView):
         Ensure that we execute all Gtk operations in the mainloop.
         """
         def idle_func():
-            gtk.gdk.threads_enter()
+            Gdk.threads_enter()
             try:
                 func(*args, **kw)
             finally:
-                gtk.gdk.threads_leave()
+                Gdk.threads_leave()
             return False
-        gobject.idle_add(idle_func)
+        GObject.idle_add(idle_func)
 
     def progress_callback(self, value=None, label=None):
         if thread.get_ident() != self.main_thread_id:
@@ -220,79 +229,94 @@ class FileImporter(AdhocView):
             self.progressbar.set_fraction(value)
         if label is not None:
             self.progressbar.set_text(label)
-        # We could do a "while gtk.events_pending()" but we want to
+        # 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()
+            if Gtk.events_pending():
+                Gtk.main_iteration()
             else:
                 break
         return self.should_continue
 
-    def update_options(self, combo):
-        # Instanciate a dummy importer, to get its options.
-        ic = combo.get_current_element()
+    def update_options(self, combo, forced=None):
+        if forced:
+            ic = forced.__class__
+        else:
+            # Instanciate a dummy importer, to get its options.
+            ic = combo.get_current_element()
         self.options_frame.foreach(self.options_frame.remove)
         if ic is not None and ic != dummy_advene_importer:
-            i = ic(controller=self.controller)
+            if forced:
+                i = forced
+            else:
+                i = ic(controller=self.controller)
             self.optionform = OptionParserGUI(i.optionparser, i)
             self.options_frame.add(self.optionform)
         return True
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
         def updated_filename(entry):
             self.update_importers()
             return True
 
-        line=gtk.HBox()
-        vbox.pack_start(line, expand=False)
+        line=Gtk.HBox()
+        vbox.pack_start(line, False, True, 0)
 
-        self.fb = gtk.FileChooserButton(_("Choose the file to import"))
+        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_action(Gtk.FileChooserAction.OPEN)
         self.fb.set_current_folder(config.data.path['data'])
         self.fb.connect('file-set', updated_filename)
 
-        line.pack_start(self.fb)
+        line.pack_start(self.fb, True, True, 0)
+        # We pass a message, assume that the source is already specified and hide FileChooser
         if self.message is not None:
-            line.pack_start(gtk.Label(self.message))
+            line.pack_start(Gtk.Label(self.message), True, True, 0)
             self.fb.set_no_show_all(True)
             self.fb.hide()
 
-        self.progressbar=gtk.ProgressBar()
-        vbox.pack_start(self.progressbar, expand=False)
+        self.progressbar=Gtk.ProgressBar()
+        vbox.pack_start(self.progressbar, False, True, 0)
 
         # Importer choice list
-        line=gtk.HBox()
-        vbox.pack_start(line, expand=False)
+        line=Gtk.HBox()
+        vbox.pack_start(line, False, True, 0)
 
-        line.pack_start(gtk.Label(_("Filter")), expand=False)
+        line.pack_start(Gtk.Label(_("Filter") + " "), False, False, 0)
         self.importers = dialog.list_selector_widget([], None, callback=self.update_options)
-        line.pack_start(self.importers, expand=False)
-
-        exp = gtk.Expander(_("Options"))
-        exp.set_expanded(True)
-        self.options_frame = gtk.VBox()
-        sw = gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        line.pack_start(self.importers, False, True, 0)
+        # An importer was specified. Do no display the importer list
+        if self.importer is not None:
+            self.importers.set_no_show_all(True)
+            self.importers.hide()
+            line.pack_start(Gtk.Label(self.importer.name), False, True, 0)
+
+        exp = Gtk.Frame.new(_("Options"))
+        self.options_frame = Gtk.VBox()
+        sw = Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         sw.add_with_viewport(self.options_frame)
         exp.add(sw)
-        vbox.pack_start(exp, expand=True)
+        vbox.pack_start(exp, True, True, 0)
 
-        bb=gtk.HButtonBox()
+        bb=Gtk.HButtonBox()
 
-        b=gtk.Button(_("Start"))
+        b=Gtk.Button(_("Start"))
         b.connect('clicked', self.convert_file)
-        b.set_sensitive(False)
-        bb.pack_start(b, expand=False)
+        bb.pack_start(b, False, True, 0)
         self.convert_button=b
 
-        vbox.pack_start(bb, expand=False)
+        vbox.pack_start(bb, False, True, 0)
 
-        self.update_importers()
+        if self.importer is None:
+            self.convert_button.set_sensitive(False)
+            self.update_importers()
+        else:
+            self.update_options(self.importers, forced=self.importer)
+            self.convert_button.set_sensitive(True)
 
         vbox.show_all()
 
diff --git a/lib/advene/gui/edit/imports.py b/lib/advene/gui/edit/imports.py
index 92a20e0..73eee63 100644
--- a/lib/advene/gui/edit/imports.py
+++ b/lib/advene/gui/edit/imports.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -20,8 +20,8 @@
 """
 import sys
 
-import gtk
-import gobject
+from gi.repository import Gtk
+from gi.repository import GObject
 
 from gettext import gettext as _
 
@@ -74,7 +74,7 @@ class TreeViewImporter:
         y = int(event.y)
 
         if button == 3:
-            if event.window is widget.get_bin_window():
+            if event.get_window() is widget.get_bin_window():
                 model = widget.get_model()
                 t = widget.get_path_at_pos(x, y)
                 if t is not None:
@@ -223,12 +223,12 @@ class TreeViewImporter:
     def build_liststore(self):
         # Store reference to the element, string representation (title and id)
         # and boolean indicating wether it is imported or not
-        store=gtk.TreeStore(
-            gobject.TYPE_PYOBJECT,
-            gobject.TYPE_STRING,
-            gobject.TYPE_STRING,
-            gobject.TYPE_BOOLEAN,
-            gobject.TYPE_STRING,
+        store=Gtk.TreeStore(
+            GObject.TYPE_PYOBJECT,
+            GObject.TYPE_STRING,
+            GObject.TYPE_STRING,
+            GObject.TYPE_BOOLEAN,
+            GObject.TYPE_STRING,
             )
 
         for i in self.controller.package.imports:
@@ -304,37 +304,37 @@ class TreeViewImporter:
         return False
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
         # FIXME: implement package removal from the list
         self.store=self.build_liststore()
 
-        treeview=gtk.TreeView(model=self.store)
+        treeview=Gtk.TreeView(model=self.store)
         treeview.connect('button-press-event', self.tree_view_button_cb)
         treeview.connect('row-activated', self.row_activated_cb)
 
-        renderer = gtk.CellRendererToggle()
+        renderer = Gtk.CellRendererToggle()
         renderer.set_property('activatable', True)
         renderer.connect('toggled', self.toggled_cb, self.store, self.COLUMN_IMPORTED)
 
-        column = gtk.TreeViewColumn(_('Imported?'), renderer,
+        column = Gtk.TreeViewColumn(_('Imported?'), renderer,
                                     active=self.COLUMN_IMPORTED)
         treeview.append_column(column)
 
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_('Id'), renderer,
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_('Id'), renderer,
                                     text=self.COLUMN_ID)
         column.set_resizable(True)
         treeview.append_column(column)
 
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_('Title'), renderer,
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_('Title'), renderer,
                                     text=self.COLUMN_LABEL)
         column.set_resizable(True)
         treeview.append_column(column)
 
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_('URI'), renderer,
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_('URI'), renderer,
                                     text=self.COLUMN_URI)
         column.set_resizable(True)
         treeview.append_column(column)
@@ -357,8 +357,8 @@ class Importer:
         else:
             d=None
         filename, alias=dialog.get_filename(title=_("Choose the package to import, and its alias"),
-                                                     action=gtk.FILE_CHOOSER_ACTION_OPEN,
-                                                     button=gtk.STOCK_OPEN,
+                                                     action=Gtk.FileChooserAction.OPEN,
+                                                     button=Gtk.STOCK_OPEN,
                                                      default_dir=d,
                                                      alias=True,
                                                      filter='advene')
@@ -377,34 +377,33 @@ class Importer:
         return True
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        vbox.pack_start(gtk.Label("Elements imported into %s" % self.controller.package.title),
-                        expand=False)
+        vbox.pack_start(Gtk.Label("Elements imported into %s" % self.controller.package.title), False, False, 0)
 
-        scroll_win = gtk.ScrolledWindow ()
-        scroll_win.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        scroll_win = Gtk.ScrolledWindow ()
+        scroll_win.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         vbox.add(scroll_win)
 
         self.ti=TreeViewImporter(controller=self.controller)
         scroll_win.add_with_viewport(self.ti.widget)
 
-        hb=gtk.HButtonBox()
+        hb=Gtk.HButtonBox()
 
-        b=gtk.Button(stock=gtk.STOCK_ADD)
+        b=Gtk.Button(stock=Gtk.STOCK_ADD)
         b.connect('clicked', self.add_package)
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
-        vbox.pack_start(hb, expand=False)
+        vbox.pack_start(hb, False, True, 0)
 
         hb.show_all()
 
         return vbox
 
     def popup(self):
-        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+        window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
         window.set_title (_("Package %s") % (self.controller.package.title or _("No title")))
-        vbox = gtk.VBox()
+        vbox = Gtk.VBox()
         window.add (vbox)
 
         vbox.add (self.widget)
@@ -414,15 +413,15 @@ 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()
+        self.buttonbox = Gtk.HButtonBox()
 
-        b = gtk.Button(stock=gtk.STOCK_CLOSE)
+        b = Gtk.Button(stock=Gtk.STOCK_CLOSE)
         b.connect('clicked', lambda w: window.destroy ())
         self.buttonbox.add (b)
 
-        vbox.pack_start(self.buttonbox, expand=False)
+        vbox.pack_start(self.buttonbox, False, True, 0)
 
         window.show_all()
 
@@ -447,7 +446,7 @@ if __name__ == "__main__":
     i=Importer(controller=controller)
     window=i.popup()
 
-    window.connect('destroy', lambda e: gtk.main_quit())
+    window.connect('destroy', lambda e: Gtk.main_quit())
 
-    gtk.main ()
+    Gtk.main ()
 
diff --git a/lib/advene/gui/edit/merge.py b/lib/advene/gui/edit/merge.py
index 0fc776f..56b61de 100644
--- a/lib/advene/gui/edit/merge.py
+++ b/lib/advene/gui/edit/merge.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,10 +18,10 @@
 #
 """GUI to merge packages.
 """
-import gtk
-import gobject
+from gi.repository import Gtk
+from gi.repository import GObject
 import difflib
-import pango
+from gi.repository import Pango
 
 from gettext import gettext as _
 
@@ -61,11 +61,11 @@ class TreeViewMerger:
     def build_liststore(self):
         # Store reference to the element, string representation (title and id)
         # and boolean indicating wether it is imported or not
-        store=gtk.ListStore(
-            gobject.TYPE_PYOBJECT,
-            gobject.TYPE_STRING,
-            gobject.TYPE_STRING,
-            gobject.TYPE_BOOLEAN,
+        store=Gtk.ListStore(
+            GObject.TYPE_PYOBJECT,
+            GObject.TYPE_STRING,
+            GObject.TYPE_STRING,
+            GObject.TYPE_BOOLEAN,
             )
 
         for l in self.differ.diff():
@@ -86,17 +86,17 @@ class TreeViewMerger:
 
             diff=difflib.Differ()
 
-            w=gtk.Window()
+            w=Gtk.Window()
             w.set_title(_("Difference between original and merged elements"))
 
-            v=gtk.VBox()
+            v=Gtk.VBox()
 
-            sw = gtk.ScrolledWindow()
-            sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+            sw = Gtk.ScrolledWindow()
+            sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
             v.add(sw)
 
-            tv=gtk.TextView()
-            f=pango.FontDescription("courier 12")
+            tv=Gtk.TextView()
+            f=Pango.FontDescription("courier 12")
             tv.modify_font(f)
 
             b=tv.get_buffer()
@@ -115,12 +115,12 @@ class TreeViewMerger:
                     b.insert_at_cursor(l)
             sw.add(tv)
 
-            hb=gtk.HButtonBox()
-            b=gtk.Button(stock=gtk.STOCK_CLOSE)
+            hb=Gtk.HButtonBox()
+            b=Gtk.Button(stock=Gtk.STOCK_CLOSE)
             b.connect('clicked', lambda b: w.destroy())
             hb.add(b)
 
-            v.pack_start(hb, expand=False)
+            v.pack_start(hb, False, True, 0)
             w.add(v)
 
             w.show_all()
@@ -128,23 +128,23 @@ class TreeViewMerger:
             return True
 
         def build_popup_menu(l):
-            menu=gtk.Menu()
+            menu=Gtk.Menu()
 
             name, s, d, action = l
 
             if name != 'new':
-                i=gtk.MenuItem(_("Current element"))
+                i=Gtk.MenuItem(_("Current element"))
                 m = advene.gui.popup.Menu(d, controller=self.controller, readonly=False)
                 i.set_submenu(m.menu)
                 menu.append(i)
 
-            i=gtk.MenuItem(_("Updated element"))
+            i=Gtk.MenuItem(_("Updated element"))
             m = advene.gui.popup.Menu(s, controller=self.controller, readonly=True)
             i.set_submenu(m.menu)
             menu.append(i)
 
             if name == 'update_content':
-                i=gtk.MenuItem(_("Show diff"))
+                i=Gtk.MenuItem(_("Show diff"))
                 i.connect('activate', show_diff, l)
                 menu.append(i)
 
@@ -158,7 +158,7 @@ class TreeViewMerger:
             y = int(event.y)
 
             if button == 3:
-                if event.window is widget.get_bin_window():
+                if event.get_window() is widget.get_bin_window():
                     model = widget.get_model()
                     t = widget.get_path_at_pos(x, y)
                     if t is not None:
@@ -167,17 +167,17 @@ class TreeViewMerger:
                         node = model.get_value(it, self.COLUMN_ELEMENT)
                         widget.get_selection().select_path (path)
                         menu=build_popup_menu(node)
-                        menu.popup(None, None, None, 0, gtk.get_current_event_time())
+                        menu.popup_at_pointer(None)
                         retval = True
             return retval
 
 
-        treeview=gtk.TreeView(model=self.store)
+        treeview=Gtk.TreeView(model=self.store)
         treeview.connect('button-press-event', tree_view_button_cb)
 
-        renderer = gtk.CellRendererToggle()
+        renderer = Gtk.CellRendererToggle()
         renderer.set_property('activatable', True)
-        column = gtk.TreeViewColumn(_('Merge?'), renderer,
+        column = Gtk.TreeViewColumn(_('Merge?'), renderer,
                                     active=self.COLUMN_APPLY)
 
         def toggled_cb(renderer, path, model, column):
@@ -187,14 +187,14 @@ class TreeViewMerger:
 
         treeview.append_column(column)
 
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_('Action'), renderer,
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_('Action'), renderer,
                                     text=self.COLUMN_ACTION)
         column.set_resizable(True)
         treeview.append_column(column)
 
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_('Element'), renderer,
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_('Element'), renderer,
                                     text=self.COLUMN_ELEMENT_NAME)
         column.set_resizable(True)
         treeview.append_column(column)
@@ -210,14 +210,14 @@ class Merger:
         self.widget=self.build_widget()
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        vbox.pack_start(gtk.Label("Merge elements from %s into %s" % (self.sourcepackage.uri,
-                                                                     self.destpackage.uri)),
-                                  expand=False)
+        vbox.pack_start(Gtk.Label(_("Merge elements from %s into %s") % (self.sourcepackage.uri,
+                                                                      self.destpackage.uri)),
+                                  False, False, 0)
 
-        scroll_win = gtk.ScrolledWindow ()
-        scroll_win.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        scroll_win = Gtk.ScrolledWindow ()
+        scroll_win.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         vbox.add(scroll_win)
 
         self.mergerview=TreeViewMerger(controller=self.controller, differ=self.differ)
@@ -226,18 +226,18 @@ class Merger:
         return vbox
 
     def popup(self):
-        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+        window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
         window.set_title (_("Package %s") % (self.destpackage.title or _("No title")))
 
-        vbox = gtk.VBox()
+        vbox = Gtk.VBox()
         window.add (vbox)
 
         vbox.add (self.widget)
         if self.controller.gui:
             self.controller.gui.init_window_size(window, 'merge')
-            window.set_icon_list(*self.controller.gui.get_icon_list())
+            window.set_icon_list(self.controller.gui.get_icon_list())
 
-        self.buttonbox = gtk.HButtonBox()
+        self.buttonbox = Gtk.HButtonBox()
 
         def validate(b):
             print "Validate"
@@ -264,24 +264,24 @@ class Merger:
             return True
 
 
-        b = gtk.Button(_("All"))
+        b = Gtk.Button(_("All"))
         b.connect('clicked', select_all)
         self.buttonbox.add (b)
 
 
-        b = gtk.Button(_('None'))
+        b = Gtk.Button(_('None'))
         b.connect('clicked', unselect_all)
         self.buttonbox.add (b)
 
-        b = gtk.Button(stock=gtk.STOCK_OK)
+        b = Gtk.Button(stock=Gtk.STOCK_OK)
         b.connect('clicked', validate)
         self.buttonbox.add (b)
 
-        b = gtk.Button(stock=gtk.STOCK_CANCEL)
+        b = Gtk.Button(stock=Gtk.STOCK_CANCEL)
         b.connect('clicked', lambda b: window.destroy())
         self.buttonbox.add (b)
 
-        vbox.pack_start(self.buttonbox, expand=False)
+        vbox.pack_start(self.buttonbox, False, True, 0)
 
         window.show_all()
 
diff --git a/lib/advene/gui/edit/montage.py b/lib/advene/gui/edit/montage.py
index 5fdaf5c..69209d7 100644
--- a/lib/advene/gui/edit/montage.py
+++ b/lib/advene/gui/edit/montage.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -23,6 +23,9 @@ FIXME: loop option
 FIXME: replace button dropzone by EventBox 1pixel wide, with visual feedback
 """
 
+import logging
+logger = logging.getLogger(__name__)
+
 # Advene part
 import advene.core.config as config
 import advene.util.helper as helper
@@ -35,7 +38,8 @@ import advene.gui.popup
 
 from gettext import gettext as _
 
-import gtk
+from gi.repository import Gdk
+from gi.repository import Gtk
 import re
 
 name="Montage view plugin"
@@ -66,13 +70,14 @@ class Montage(AdhocView):
 
         # How many units (ms) does a pixel represent ?
         # How many units does a pixel represent ?
-        # self.scale.value = unit by pixel
+        # self.scale.get_value() = unit by pixel
         # Unit = ms
-        self.scale = gtk.Adjustment (value=(self.controller.package.cached_duration or 60*60*1000) / gtk.gdk.get_default_root_window().get_size()[0],
-                                     lower=5,
-                                     upper=36000,
-                                     step_incr=5,
-                                     page_incr=1000)
+        self.scale = Gtk.Adjustment.new((self.controller.package.cached_duration or 60*60*1000) / Gdk.get_default_root_window().get_width(),
+                                        5,
+                                        36000,
+                                        5,
+                                        1000,
+                                        100)
         self.scale.connect('value-changed', scale_event)
 
         opt, arg = self.load_parameters(parameters)
@@ -116,13 +121,13 @@ class Montage(AdhocView):
 
     def set_master_view(self, master):
         def master_value_changed(sc):
-            self.scale.value=sc.value
+            self.scale.set_value(sc.get_value())
             return False
         def master_changed(sc):
-            self.scale.set_all(self.scale.value,
-                               sc.lower, sc.upper,
-                               sc.step_increment, sc.page_increment,
-                               sc.page_size)
+            self.scale.set_all(self.scale.get_value(),
+                               sc.get_lower(), sc.get_upper(),
+                               sc.get_step_increment(), sc.get_page_increment(),
+                               sc.get_page_size())
             return False
 
         self.safe_connect(master.scale, 'value-changed', master_value_changed)
@@ -153,7 +158,7 @@ class Montage(AdhocView):
             if targetType == config.data.target_type['uri-list']:
                 uri="advene:/adhoc/%d/%d" % (hash(self),
                                                   hash(widget))
-                selection.set(selection.target, 8, uri.encode('utf8'))
+                selection.set(selection.get_target(), 8, uri.encode('utf8'))
                 return True
             return False
 
@@ -165,7 +170,7 @@ class Montage(AdhocView):
         def button_press(widget, event):
             """Handle button presses on annotation widgets.
             """
-            if event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS:
+            if event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
                 # Display the popup menu when clicking on annotation.
                 menu=advene.gui.popup.Menu(widget.annotation, controller=self.controller)
                 menu.add_menuitem(menu.menu, _("Remove from montage"), remove_cb, widget)
@@ -187,10 +192,10 @@ class Montage(AdhocView):
         return True
 
     def unit2pixel(self, u):
-        return long(u / self.scale.value)
+        return long(u / self.scale.get_value())
 
     def pixel2unit(self, p):
-        return long(p * self.scale.value)
+        return long(p * self.scale.get_value())
 
     def refresh(self, *p):
         self.mainbox.foreach(self.mainbox.remove)
@@ -263,35 +268,36 @@ class Montage(AdhocView):
         """
         def drag_received(widget, context, x, y, selection, targetType, time):
             if targetType == config.data.target_type['annotation']:
-                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
                 for ann in sources:
                     self.insert(ann, i)
                     # If the origin is from the same montage, then
                     # consider it is a move and remove the origin
                     # annotation
-                    w=context.get_source_widget()
+                    w=Gtk.drag_get_source_widget(context)
                     if w in self.contents:
                         self.contents.remove(w)
                 self.refresh()
                 return True
             else:
-                print "Unknown target type for drag: %d" % targetType
+                logger.warn("Unknown target type for drag: %d" % targetType)
             return False
 
-        b = gtk.Button()
+        b = Gtk.Button()
         b.set_size_request(4, self.button_height)
         b.index=i
-        b.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                        gtk.DEST_DEFAULT_HIGHLIGHT |
-                        gtk.DEST_DEFAULT_ALL,
-                        config.data.drag_type['annotation'], gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK)
+        b.drag_dest_set(Gtk.DestDefaults.MOTION |
+                        Gtk.DestDefaults.HIGHLIGHT |
+                        Gtk.DestDefaults.ALL,
+                        config.data.get_target_types('annotation'),
+                        Gdk.DragAction.COPY | Gdk.DragAction.LINK)
         b.connect('drag-data-received', drag_received)
 
-        self.mainbox.pack_start(b, expand=False, fill=False)
+        self.mainbox.pack_start(b, False, False, 0)
         return b
 
     def append_repr(self, w):
-        self.mainbox.pack_start(w, expand=False, fill=False)
+        self.mainbox.pack_start(w, False, False, 0)
         w.update_widget()
         return w
 
@@ -351,27 +357,27 @@ class Montage(AdhocView):
         return True
 
     def build_widget(self):
-        self.zoom_adjustment=gtk.Adjustment(value=1.0, lower=0.01, upper=2.0)
+        self.zoom_adjustment=Gtk.Adjustment.new(value=1.0, lower=0.01, upper=2.0)
 
         def zoom_adj_change(adj):
             # Update the value of self.scale accordingly
             # Get the window size
-            if not self.mainbox.window:
+            if not self.mainbox.get_window():
                 # The widget is not yet realized
                 return True
-            display_size=self.mainbox.parent.window.get_size()[0]
+            display_size=self.mainbox.get_parent().get_window().get_width()
             # Dropzones are approximately 10 pixels wide, and should
             # be taken into account, but it enforces handling the corner cases
-            self.scale.value = 1.0 * self.duration / (display_size / adj.value )
+            self.scale.set_value(1.0 * self.duration / (display_size / adj.get_value() ))
 
             # Update the zoom combobox value
-            self.zoom_combobox.child.set_text('%d%%' % long(100 * adj.value))
+            self.zoom_combobox.get_child().set_text('%d%%' % long(100 * adj.get_value()))
             return True
 
         def remove_drag_received(widget, context, x, y, selection, targetType, time):
             if targetType == config.data.target_type['uri-list']:
                 m=re.match('advene:/adhoc/%d/(.+)' % hash(self),
-                           selection.data)
+                           selection.get_data())
                 if m:
                     h=long(m.group(1))
                     l=[ w for w in self.contents if hash(w) == h ]
@@ -381,65 +387,66 @@ class Montage(AdhocView):
                         self.refresh()
                 return True
             else:
-                print "Unknown target type for drop: %d" % targetType
+                logger.warn("Unknown target type for drop: %d" % targetType)
             return False
 
         self.zoom_adjustment.connect('value-changed', zoom_adj_change)
 
-        v=gtk.VBox()
+        v=Gtk.VBox()
 
         # Toolbar
-        tb=gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
+        tb=Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
 
-        b=get_small_stock_button(gtk.STOCK_DELETE)
+        b=get_small_stock_button(Gtk.STOCK_DELETE)
         b.set_tooltip_text(_("Drop an annotation here to remove it from the list"))
-        b.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                        gtk.DEST_DEFAULT_HIGHLIGHT |
-                        gtk.DEST_DEFAULT_ALL,
-                        config.data.drag_type['uri-list'], gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK)
+        b.drag_dest_set(Gtk.DestDefaults.MOTION |
+                        Gtk.DestDefaults.HIGHLIGHT |
+                        Gtk.DestDefaults.ALL,
+                        config.data.get_target_types('uri-list'),
+                        Gdk.DragAction.COPY | Gdk.DragAction.LINK)
         b.connect('drag-data-received', remove_drag_received)
-        ti=gtk.ToolItem()
+        ti=Gtk.ToolItem()
         ti.add(b)
         tb.insert(ti, -1)
 
-        b=gtk.ToolButton(gtk.STOCK_MEDIA_PLAY)
+        b=Gtk.ToolButton(Gtk.STOCK_MEDIA_PLAY)
         b.set_tooltip_text(_("Play the montage"))
         b.connect('clicked', self.play)
         tb.insert(b, -1)
 
-        b = gtk.ToolButton(gtk.STOCK_SAVE)
+        b = Gtk.ToolButton(Gtk.STOCK_SAVE)
         b.set_tooltip_text(_("Save the view in the package"))
         b.connect('clicked', self.save_view)
         tb.insert(b, -1)
 
         def zoom_entry(entry):
-            f=unicode(entry.get_text())
+            f=entry.get_text().decode('utf-8')
 
             i=re.findall(r'\d+', f)
             if i:
                 f=int(i[0])/100.0
             else:
                 return True
-            self.zoom_adjustment.value=f
+            self.zoom_adjustment.set_value(f)
             return True
 
         def zoom_change(combo):
             v=combo.get_current_element()
             if isinstance(v, float):
-                self.zoom_adjustment.value=v
+                self.zoom_adjustment.set_value(v)
             return True
 
         def zoom(i, factor):
-            self.zoom_adjustment.value=self.zoom_adjustment.value * factor
+            self.zoom_adjustment.set_value(self.zoom_adjustment.get_value() * factor)
             return True
 
-        b=gtk.ToolButton(gtk.STOCK_ZOOM_OUT)
+        b=Gtk.ToolButton(Gtk.STOCK_ZOOM_OUT)
         b.connect('clicked', zoom, 1.3)
         b.set_tooltip_text(_("Zoom out"))
         tb.insert(b, -1)
 
-        b=gtk.ToolButton(gtk.STOCK_ZOOM_IN)
+        b=Gtk.ToolButton(Gtk.STOCK_ZOOM_IN)
         b.connect('clicked', zoom, .7)
         b.set_tooltip_text(_("Zoom in"))
         tb.insert(b, -1)
@@ -452,15 +459,15 @@ class Montage(AdhocView):
                 ],
                                                        entry=True,
                                                        callback=zoom_change)
-        self.zoom_combobox.child.connect('activate', zoom_entry)
-        self.zoom_combobox.child.set_width_chars(4)
+        self.zoom_combobox.get_child().connect('activate', zoom_entry)
+        self.zoom_combobox.get_child().set_width_chars(4)
 
-        ti=gtk.ToolItem()
+        ti=Gtk.ToolItem()
         ti.add(self.zoom_combobox)
         ti.set_tooltip_text(_("Set zoom level"))
         tb.insert(ti, -1)
 
-        b=gtk.ToolButton(gtk.STOCK_ZOOM_100)
+        b=Gtk.ToolButton(Gtk.STOCK_ZOOM_100)
         b.connect('clicked', lambda i: self.zoom_adjustment.set_value(1.0))
         b.set_tooltip_text(_("Set 100% zoom"))
         tb.insert(b, -1)
@@ -478,22 +485,22 @@ class Montage(AdhocView):
             for a in set( [ w.annotation for w in self.contents ] ):
                 self.controller.notify(event, annotation=a)
             return True
-        i=gtk.Image()
+        i=Gtk.Image()
         i.set_from_file(config.data.advenefile( ( 'pixmaps', 'highlight.png') ))
-        b=gtk.ToggleToolButton()
+        b=Gtk.ToggleToolButton()
         b.set_tooltip_text(_("Highlight annotations"))
         b.set_icon_widget(i)
         b.highlight=True
         b.connect('clicked', toggle_highlight)
         tb.insert(b, -1)
 
-        v.pack_start(tb, expand=False)
+        v.pack_start(tb, False, True, 0)
 
-        self.mainbox=gtk.HBox()
+        self.mainbox=Gtk.HBox()
 
         def mainbox_drag_received(widget, context, x, y, selection, targetType, time):
             if targetType == config.data.target_type['annotation']:
-                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
                 for ann in sources:
                     if ann is None:
                         self.log("Problem when getting annotation from DND")
@@ -502,50 +509,49 @@ class Montage(AdhocView):
                     # If the origin is from the same montage, then
                     # consider it is a move and remove the origin
                     # annotation
-                    w=context.get_source_widget()
+                    w=Gtk.drag_get_source_widget(context)
                     if w in self.contents:
                         self.contents.remove(w)
                 self.refresh()
                 return True
             elif targetType == config.data.target_type['annotation-type']:
-                at=self.controller.package.annotationTypes.get(unicode(selection.data, 'utf8'))
+                at=self.controller.package.annotationTypes.get(unicode(selection.get_data(), 'utf8'))
                 for a in at.annotations:
                     self.insert(a)
                 self.refresh()
                 return True
             else:
-                print "Unknown target type for drag: %d" % targetType
+                logger.warn("Unknown target type for drag: %d" % targetType)
             return False
-        v.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'],
-                                   gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE)
+        v.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                   Gtk.DestDefaults.HIGHLIGHT |
+                                   Gtk.DestDefaults.ALL,
+                                   config.data.get_target_types('annotation', 'annotation-type'),
+                                   Gdk.DragAction.COPY | Gdk.DragAction.LINK | Gdk.DragAction.MOVE)
         v.connect('drag-data-received', mainbox_drag_received)
 
-        sw=gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER)
+        sw=Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER)
         sw.add_with_viewport(self.mainbox)
         self.scrollwindow=sw
 
-        v.pack_start(sw, expand=False)
+        v.pack_start(sw, False, True, 0)
 
         a=AnnotationDisplay(controller=self.controller)
-        f=gtk.Frame(_("Inspector"))
+        f=Gtk.Frame.new(_("Inspector"))
         f.add(a.widget)
         v.add(f)
         self.controller.gui.register_view (a)
         a.set_master_view(self)
         a.widget.show_all()
 
-        v.pack_start(gtk.VBox(), expand=True)
+        v.pack_start(Gtk.VBox(), True, True, 0)
 
-        hb=gtk.HBox()
-        l=gtk.Label(_("Total duration:"))
-        hb.pack_start(l, expand=False)
-        self.duration_label=gtk.Label('??')
-        hb.pack_start(self.duration_label, expand=False)
-        v.pack_start(hb, expand=False)
+        hb=Gtk.HBox()
+        l=Gtk.Label(label=_("Total duration:"))
+        hb.pack_start(l, False, True, 0)
+        self.duration_label=Gtk.Label(label='??')
+        hb.pack_start(self.duration_label, False, True, 0)
+        v.pack_start(hb, False, True, 0)
 
         return v
diff --git a/lib/advene/gui/edit/properties.py b/lib/advene/gui/edit/properties.py
index a25663e..2518e24 100644
--- a/lib/advene/gui/edit/properties.py
+++ b/lib/advene/gui/edit/properties.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,7 +21,12 @@
 Code adapted from gDesklets.
 """
 
-import gtk
+import logging
+logger = logging.getLogger(__name__)
+
+from gi.repository import GObject
+from gi.repository import Gdk
+from gi.repository import Gtk
 import os
 import sys
 
@@ -32,7 +37,7 @@ class EditNotebook(object):
         self.__name = _("Properties")
         self._set_config = set_config
         self._get_config = get_config
-        self.book = gtk.Notebook()
+        self.book = Gtk.Notebook()
         self.current_widget = None
 
     def __getattribute__ (self, name):
@@ -55,26 +60,26 @@ class EditNotebook(object):
     def add_title(self, title):
         self.current_widget = EditWidget(self._set_config, self._get_config)
         self.current_widget.set_name(title)
-        self.book.append_page(self.current_widget, gtk.Label(title))
+        self.book.append_page(self.current_widget, Gtk.Label(label=title))
         return
 
     def popup(self):
-        d = gtk.Dialog(title=self.get_name(),
+        d = Gtk.Dialog(title=self.get_name(),
                        parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_OK, gtk.RESPONSE_OK,
-                                 gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL ))
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_OK, Gtk.ResponseType.OK,
+                                 Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL ))
         d.vbox.add(self.book)
         self.book.show_all()
         res=d.run()
         d.destroy()
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             return True
         else:
             return False
 
 
-class EditWidget(gtk.VBox):
+class EditWidget(Gtk.VBox):
     """Configuration edit widget.
 
     Adapted from (GPL) gdesklets code.
@@ -99,11 +104,11 @@ class EditWidget(gtk.VBox):
         self.__lines = 0
 
 
-        gtk.VBox.__init__(self)
+        GObject.GObject.__init__(self)
         self.set_border_width(12)
         self.show()
 
-        self.__table = gtk.Table(1, 2)
+        self.__table = Gtk.Table(1, 2)
         self.__table.show()
         self.add(self.__table)
 
@@ -120,13 +125,13 @@ class EditWidget(gtk.VBox):
 
         if (w2):
             self.__table.attach(w1, 0, 1, self.__lines - 1, self.__lines,
-                                gtk.FILL, 0, x, y)
+                                Gtk.AttachOptions.FILL, 0, x, y)
             self.__table.attach(w2, 1, 2, self.__lines - 1, self.__lines,
-                                gtk.EXPAND | gtk.FILL, 0, 0, y)
+                                Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, 0, 0, y)
 
         else:
             self.__table.attach(w1, 0, 2, self.__lines - 1, self.__lines,
-                                gtk.EXPAND | gtk.FILL, 0, x, y)
+                                Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, 0, x, y)
 
 
 
@@ -140,7 +145,7 @@ class EditWidget(gtk.VBox):
         value = None
 
         if (mode == self.CHANGE_ENTRY):
-            value = unicode(src.get_text())
+            value = src.get_text().decode('utf-8')
 
         elif (mode == self.CHANGE_OPTION):
             value = src.get_model()[src.get_active()][1]
@@ -155,10 +160,10 @@ class EditWidget(gtk.VBox):
             value = src.get_value()
 
         elif (mode == self.CHANGE_TEXT):
-            value = unicode(src.get_text(*src.get_bounds()))
+            value = src.get_text(*src.get_bounds() + [ False ]).decode('utf-8')
 
         else:
-            print "Unknown type", str(mode)
+            logger.info("Unknown type %s", str(mode))
 
         if value is not None:
             self.__set_config(property, value)
@@ -172,11 +177,11 @@ class EditWidget(gtk.VBox):
 
     def add_label(self, label):
 
-        lbl = gtk.Label("")
+        lbl = Gtk.Label(label="")
         lbl.set_markup(label)
         lbl.set_line_wrap(True)
         lbl.show()
-        align = gtk.Alignment()
+        align = Gtk.Alignment()
         align.show()
         align.add(lbl)
 
@@ -188,7 +193,7 @@ class EditWidget(gtk.VBox):
 
     def add_checkbox(self, label, property, help):
 
-        check = gtk.CheckButton(label)
+        check = Gtk.CheckButton(label)
         check.show()
 
         check.set_tooltip_text(help)
@@ -203,15 +208,15 @@ class EditWidget(gtk.VBox):
 
     def add_entry(self, label, property, help, passwd = 0, entries=None):
 
-        lbl = gtk.Label(label)
+        lbl = Gtk.Label(label=label)
         lbl.show()
-        align = gtk.Alignment()
+        align = Gtk.Alignment()
         align.show()
         align.add(lbl)
 
         if entries:
-            combo = gtk.combo_box_entry_new_text()
-            entry = combo.child
+            combo = Gtk.ComboBoxText.new_with_entry()
+            entry = combo.get_child()
             combo.show()
             for e in entries:
                 combo.append_text(e)
@@ -219,7 +224,7 @@ class EditWidget(gtk.VBox):
             self.__add_line(1, align, combo)
         else:
             combo = None
-            entry = gtk.Entry()
+            entry = Gtk.Entry()
             entry.show()
             entry.set_tooltip_text(help)
             self.__add_line(1, align, entry)
@@ -239,20 +244,20 @@ class EditWidget(gtk.VBox):
         The callback function has the following signature:
         callback(button, entry)
         """
-        lbl = gtk.Label(label)
+        lbl = Gtk.Label(label=label)
         lbl.show()
-        entry = gtk.Entry()
+        entry = Gtk.Entry()
         entry.show()
-        align = gtk.Alignment()
+        align = Gtk.Alignment()
         align.show()
         align.add(lbl)
 
-        hbox = gtk.HBox()
+        hbox = Gtk.HBox()
         hbox.show()
         hbox.add(entry)
-        b = gtk.Button(button_label)
+        b = Gtk.Button(button_label)
         b.connect('clicked', callback, entry)
-        hbox.pack_start(b, expand=False)
+        hbox.pack_start(b, False, True, 0)
 
         entry.set_tooltip_text(help)
         self.__add_line(1, align, hbox)
@@ -265,14 +270,14 @@ class EditWidget(gtk.VBox):
 
     def add_text(self, label, property, help):
 
-        lbl = gtk.Label(label)
+        lbl = Gtk.Label(label=label)
         lbl.show()
-        sw = gtk.ScrolledWindow()
-        entry = gtk.TextView()
+        sw = Gtk.ScrolledWindow()
+        entry = Gtk.TextView()
         sw.add(entry)
         entry.show()
         sw.show()
-        align = gtk.Alignment()
+        align = Gtk.Alignment()
         align.show()
         align.add(lbl)
 
@@ -287,15 +292,15 @@ class EditWidget(gtk.VBox):
 
     def add_spin(self, label, property, help, low, up):
 
-        lbl = gtk.Label(label)
+        lbl = Gtk.Label(label=label)
         lbl.show()
 
-        align = gtk.Alignment()
+        align = Gtk.Alignment()
         align.show()
         align.add(lbl)
 
-        adjustment = gtk.Adjustment(0, low, up, 1, 1, 0)
-        spin_button = gtk.SpinButton(adjustment, 1, 0)
+        adjustment = Gtk.Adjustment.new(0, low, up, 1, 1, 0)
+        spin_button = Gtk.SpinButton.new(adjustment, 1, 0)
         spin_button.set_numeric(True)
         spin_button.show()
 
@@ -310,17 +315,17 @@ class EditWidget(gtk.VBox):
 
     def add_float_spin(self, label, property, help, low, up, digits=2):
 
-        lbl = gtk.Label(label)
+        lbl = Gtk.Label(label=label)
         lbl.show()
 
-        align = gtk.Alignment()
+        align = Gtk.Alignment()
         align.show()
         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)
+        adjustment = Gtk.Adjustment.new(value, low, up, 10 ** -digits, 1, 0)
+        spin_button = Gtk.SpinButton.new(adjustment, 1, digits)
         spin_button.set_numeric(True)
         spin_button.show()
 
@@ -334,16 +339,16 @@ class EditWidget(gtk.VBox):
 
     def add_option(self, label, property, help, options):
 
-        lbl = gtk.Label(label)
+        lbl = Gtk.Label(label=label)
         lbl.show()
 
-        align = gtk.Alignment()
+        align = Gtk.Alignment()
         align.show()
         align.add(lbl)
 
         value = self.__get_config(property)
 
-        store=gtk.ListStore(str, object)
+        store=Gtk.ListStore(str, object)
         active_iter=None
         for k, v in options.iteritems():
             i=store.append( ( k, v ) )
@@ -353,8 +358,8 @@ class EditWidget(gtk.VBox):
         if active_iter is None:
             active_iter = store.get_iter_first()
 
-        combo = gtk.ComboBox(store)
-        cell = gtk.CellRendererText()
+        combo = Gtk.ComboBox.new_with_model(store)
+        cell = Gtk.CellRendererText()
         combo.pack_start(cell, True)
         combo.add_attribute(cell, 'text', 0)
         combo.set_active_iter(active_iter)
@@ -368,35 +373,35 @@ class EditWidget(gtk.VBox):
     def add_file_selector(self, label, property, help):
 
         def open_filedialog(self, default_file, entry):
-            fs=gtk.FileChooserDialog(title=_("Choose a file"),
+            fs=Gtk.FileChooserDialog(title=_("Choose a file"),
                                      parent=None,
-                                     action=gtk.FILE_CHOOSER_ACTION_OPEN,
-                                     buttons=( gtk.STOCK_OPEN,
-                                               gtk.RESPONSE_OK,
-                                               gtk.STOCK_CANCEL,
-                                               gtk.RESPONSE_CANCEL ))
+                                     action=Gtk.FileChooserAction.OPEN,
+                                     buttons=( Gtk.STOCK_OPEN,
+                                               Gtk.ResponseType.OK,
+                                               Gtk.STOCK_CANCEL,
+                                               Gtk.ResponseType.CANCEL ))
             if default_file and os.path.exists(default_file):
                 fs.set_filename(default_file)
             res=fs.run()
             filename=None
-            if res == gtk.RESPONSE_OK:
+            if res == Gtk.ResponseType.OK:
                 filename=fs.get_filename()
                 entry.set_text(filename)
             fs.destroy()
 
-        lbl = gtk.Label(label)
+        lbl = Gtk.Label(label=label)
         lbl.show()
-        align = gtk.Alignment()
+        align = Gtk.Alignment()
         align.show()
         align.add(lbl)
 
-        hbox = gtk.HBox()
+        hbox = Gtk.HBox()
         hbox.show()
-        entry = gtk.Entry()
+        entry = Gtk.Entry()
         entry.show()
         hbox.pack_start(entry, True, True, 0)
 
-        btn = gtk.Button(stock = gtk.STOCK_OPEN)
+        btn = Gtk.Button(stock = Gtk.STOCK_OPEN)
         btn.show()
         hbox.pack_end(btn, True, True, 4)
 
@@ -415,35 +420,35 @@ class EditWidget(gtk.VBox):
     def add_dir_selector(self, label, property, help):
 
         def open_filedialog(self, default_file, entry):
-            fs=gtk.FileChooserDialog(title=_("Choose a directory"),
+            fs=Gtk.FileChooserDialog(title=_("Choose a directory"),
                                      parent=None,
-                                     action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
-                                     buttons=( gtk.STOCK_OPEN,
-                                               gtk.RESPONSE_OK,
-                                               gtk.STOCK_CANCEL,
-                                               gtk.RESPONSE_CANCEL ))
+                                     action=Gtk.FileChooserAction.SELECT_FOLDER,
+                                     buttons=( Gtk.STOCK_OPEN,
+                                               Gtk.ResponseType.OK,
+                                               Gtk.STOCK_CANCEL,
+                                               Gtk.ResponseType.CANCEL ))
             if default_file:
                 fs.set_filename(default_file)
             res=fs.run()
             filename=None
-            if res == gtk.RESPONSE_OK:
+            if res == Gtk.ResponseType.OK:
                 filename=fs.get_filename()
                 entry.set_text(filename)
             fs.destroy()
 
-        lbl = gtk.Label(label)
+        lbl = Gtk.Label(label=label)
         lbl.show()
-        align = gtk.Alignment()
+        align = Gtk.Alignment()
         align.show()
         align.add(lbl)
 
-        hbox = gtk.HBox()
+        hbox = Gtk.HBox()
         hbox.show()
-        entry = gtk.Entry()
+        entry = Gtk.Entry()
         entry.show()
         hbox.pack_start(entry, True, True, 0)
 
-        btn = gtk.Button(stock = gtk.STOCK_OPEN)
+        btn = Gtk.Button(stock = Gtk.STOCK_OPEN)
         btn.show()
         hbox.pack_end(btn, True, True, 4)
 
@@ -460,21 +465,21 @@ class EditWidget(gtk.VBox):
         self.__add_line(1, align, hbox)
 
     def popup(self):
-        d = gtk.Dialog(title=self.get_name(),
+        d = Gtk.Dialog(title=self.get_name(),
                        parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_OK, gtk.RESPONSE_OK,
-                                 gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL ))
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_OK, Gtk.ResponseType.OK,
+                                 Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL ))
         d.vbox.add(self)
 
         def dialog_keypressed_cb(widget=None, event=None):
             """Generic dialog keypress handler.
             """
-            if event.keyval == gtk.keysyms.Return:
-                widget.response(gtk.RESPONSE_OK)
+            if event.keyval == Gdk.KEY_Return:
+                widget.response(Gtk.ResponseType.OK)
                 return True
-            elif event.keyval == gtk.keysyms.Escape:
-                widget.response(gtk.RESPONSE_CANCEL)
+            elif event.keyval == Gdk.KEY_Escape:
+                widget.response(Gtk.ResponseType.CANCEL)
                 return True
             return False
         d.connect('key-press-event', dialog_keypressed_cb)
@@ -482,7 +487,7 @@ class EditWidget(gtk.VBox):
         self.show_all()
         res=d.run()
         d.destroy()
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             return True
         else:
             return False
@@ -535,7 +540,8 @@ class OptionParserGUI(EditWidget):
                     self.options[o.dest] = val
                     self.add_option(name, o.dest, o.help, dict( (c, c) for c in o.choices) )
             else:
-                print "Ignoring option", name
+                if name != 'help':
+                    logger.info("Ignoring option %s", name)
                 continue
 
 def test():
@@ -562,11 +568,11 @@ def test():
 
     res=ew.popup()
     if res:
-        print "Modified: " + str(val)
+        logger.info("Modified: %s" + str(val))
     else:
-        print "Cancel"
+        logger.info("Cancel")
 
-    gtk.main()
+    Gtk.main()
 
 if __name__ == '__main__':
     test()
diff --git a/lib/advene/gui/edit/rules.py b/lib/advene/gui/edit/rules.py
index 77d73a4..22264dd 100755
--- a/lib/advene/gui/edit/rules.py
+++ b/lib/advene/gui/edit/rules.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,7 +18,11 @@
 #
 """Display and edit a Rule."""
 
-import gtk
+import logging
+logger = logging.getLogger(__name__)
+
+from gi.repository import Gdk
+from gi.repository import Gtk
 
 import re
 
@@ -68,7 +72,7 @@ class EditRuleSet(EditGeneric):
 
     def get_packed_widget(self):
         """Return an enriched widget (with rules add and remove buttons)."""
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
         vbox.set_homogeneous (False)
 
         def add_rule_cb(button=None):
@@ -114,29 +118,29 @@ class EditRuleSet(EditGeneric):
                 print "Error in remove_rule"
             return True
 
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
 
-        b=gtk.Button(stock=gtk.STOCK_ADD)
+        b=Gtk.Button(stock=Gtk.STOCK_ADD)
         b.connect('clicked', add_rule_cb)
         b.set_sensitive(self.editable)
         b.set_tooltip_text(_("Add a new rule"))
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
-        b=gtk.Button(stock=gtk.STOCK_SELECT_COLOR)
+        b=Gtk.Button(stock=Gtk.STOCK_SELECT_COLOR)
         b.set_label(_("Subview"))
         b.connect('clicked', add_subview_cb)
         b.set_sensitive(self.editable)
         b.set_tooltip_text(_("Add a subview list"))
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
-        b=gtk.Button(stock=gtk.STOCK_REMOVE)
+        b=Gtk.Button(stock=Gtk.STOCK_REMOVE)
         b.connect('clicked', remove_rule_cb)
         b.set_sensitive(self.editable)
         b.set_tooltip_text(_("Remove the current rule"))
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
 
-        vbox.pack_start(hb, expand=False)
+        vbox.pack_start(hb, False, True, 0)
 
         vbox.add(self.get_widget())
 
@@ -151,15 +155,15 @@ class EditRuleSet(EditGeneric):
         elif isinstance(rule, SubviewList):
             edit=EditSubviewList(rule, controller=self.controller)
 
-        eb=gtk.EventBox()
-        l=gtk.Label(rule.name)
+        eb=Gtk.EventBox()
+        l=Gtk.Label(label=rule.name)
         edit.set_update_label(l)
         eb.add(l)
 
         eb.connect('drag-data-get', self.drag_sent)
-        eb.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                           config.data.drag_type['rule'],
-                           gtk.gdk.ACTION_COPY )
+        eb.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                           config.data.get_target_types('rule'),
+                           Gdk.DragAction.COPY )
         eb.show_all()
 
         self.editlist.append(edit)
@@ -185,7 +189,7 @@ class EditRuleSet(EditGeneric):
             dialog.message_dialog(
                 _("The following items seem to be\ninvalid TALES expressions:\n\n%s") %
                 "\n".join(iv),
-                icon=gtk.MESSAGE_ERROR)
+                icon=Gtk.MessageType.ERROR)
             return False
         for e in self.editlist:
             e.update_value()
@@ -204,19 +208,19 @@ class EditRuleSet(EditGeneric):
             if len(l) == 1:
                 edit=l[0]
                 # We have the model. Convert it to XML
-                selection.set(selection.target, 8, edit.model.xml_repr().encode('utf8'))
+                selection.set(selection.get_target(), 8, edit.model.xml_repr().encode('utf8'))
             elif len(l) > 1:
                 print "Error in drag"
             return True
 
         else:
-            print "Unknown target type for drag: %d" % targetType
+            logger.warn("Unknown target type for drag: %d" % targetType)
         return True
 
     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['rule']:
-            xml=unicode(selection.data, 'utf8')
+            xml=unicode(selection.get_data(), 'utf8')
             if 'subviewlist' in xml:
                 rule=SubviewList()
             else:
@@ -231,24 +235,24 @@ class EditRuleSet(EditGeneric):
             rule.name = name
             self.add_rule(rule)
         else:
-            print "Unknown target type for drop: %d" % targetType
+            logger.warn("Unknown target type for drop: %d" % targetType)
         return True
 
 
     def build_widget(self):
         # Create a notebook:
-        notebook=gtk.Notebook()
-        notebook.set_tab_pos(gtk.POS_LEFT)
+        notebook=Gtk.Notebook()
+        notebook.set_tab_pos(Gtk.PositionType.LEFT)
         notebook.popup_enable()
         notebook.set_scrollable(True)
 
         notebook.connect('drag-data-received', self.drag_received)
-        notebook.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                               gtk.DEST_DEFAULT_HIGHLIGHT |
-                               gtk.DEST_DEFAULT_ALL,
-                               config.data.drag_type['rule'],
-                               gtk.gdk.ACTION_COPY)
-        #b=gtk.Button(rule.name)
+        notebook.drag_dest_set(Gtk.DestDefaults.MOTION |
+                               Gtk.DestDefaults.HIGHLIGHT |
+                               Gtk.DestDefaults.ALL,
+                               config.data.get_target_types('rule'),
+                               Gdk.DragAction.COPY)
+        #b=Gtk.Button(rule.name)
         #b.connect('clicked', popup_edit, rule, catalog)
         #b.show()
         #vbox.add(b)
@@ -288,7 +292,7 @@ class EditQuery(EditGeneric):
         if self.valueentry is None:
             v='element'
         else:
-            v=unicode(self.valueentry.get_text())
+            v=self.valueentry.get_text().decode('utf-8')
         if v == '' or v == 'element':
             self.model.rvalue=None
         else:
@@ -318,7 +322,7 @@ class EditQuery(EditGeneric):
         return True
 
     def add_condition_widget(self, cond, conditionsbox):
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
         conditionsbox.add(hb)
 
         w=EditCondition(cond, editable=self.editable,
@@ -330,25 +334,25 @@ class EditQuery(EditGeneric):
         hb.add(w.get_widget())
         w.get_widget().show()
 
-        b=gtk.Button(stock=gtk.STOCK_REMOVE)
+        b=Gtk.Button(stock=Gtk.STOCK_REMOVE)
         b.set_sensitive(self.editable)
         b.connect('clicked', self.remove_condition, w, hb)
         b.show()
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
         hb.show()
 
         return True
 
     def build_widget(self):
-        frame=gtk.Frame()
+        frame=Gtk.Frame()
 
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
         frame.add(vbox)
         vbox.show()
 
         # Event
-        ef=gtk.Frame(_("For all elements in "))
+        ef=Gtk.Frame.new(_("For all elements in "))
         predef=[ ('package/annotations', _("All annotations of the package")),
                  ('package/views', _("All views of the package")),
                  ('here/annotations', _("The context annotations")),
@@ -363,11 +367,11 @@ class EditQuery(EditGeneric):
         self.sourceentry.set_editable(self.editable)
         ef.add(self.sourceentry.widget)
         ef.show_all()
-        vbox.pack_start(ef, expand=False)
+        vbox.pack_start(ef, False, True, 0)
 
         if config.data.preferences['expert-mode']:
             # Return value
-            vf=gtk.Frame(_("Return "))
+            vf=Gtk.Frame.new(_("Return "))
             self.valueentry=TALESEntry(context=self.model,
                                        predefined=[ ('element', _("The element")),
                                                     ('element/content/data', _("The element's content")) ],
@@ -379,27 +383,27 @@ class EditQuery(EditGeneric):
             self.valueentry.set_editable(self.editable)
             vf.add(self.valueentry.widget)
             vf.show_all()
-            vbox.pack_start(vf, expand=False)
+            vbox.pack_start(vf, False, True, 0)
         else:
             self.valueentry=None
 
         # Conditions
         if config.data.preferences['expert-mode']:
-            cf=gtk.Frame(_("If the element matches "))
+            cf=Gtk.Frame.new(_("If the element matches "))
         else:
-            cf=gtk.Frame(_("Return the element if it matches "))
-        conditionsbox=gtk.VBox()
+            cf=Gtk.Frame.new(_("Return the element if it matches "))
+        conditionsbox=Gtk.VBox()
         cf.add(conditionsbox)
 
         # "Add condition" button
-        hb=gtk.HBox()
-        b=gtk.Button(stock=gtk.STOCK_ADD)
+        hb=Gtk.HBox()
+        b=Gtk.Button(stock=Gtk.STOCK_ADD)
         b.connect('clicked', self.add_condition, conditionsbox)
         b.set_sensitive(self.editable)
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
         hb.set_homogeneous(False)
 
-        hb.add(gtk.HBox())
+        hb.add(Gtk.HBox())
 
         def change_composition(combo):
             self.composition=combo.get_current_element()
@@ -409,9 +413,9 @@ class EditQuery(EditGeneric):
                                          ('or', _("Any condition can be met") ) ],
                                        preselect=self.composition,
                                        callback=change_composition)
-        hb.pack_start(c, expand=False)
+        hb.pack_start(c, False, True, 0)
 
-        conditionsbox.pack_start(hb, expand=False, fill=False)
+        conditionsbox.pack_start(hb, False, False, 0)
 
         cf.show_all()
 
@@ -419,7 +423,7 @@ class EditQuery(EditGeneric):
             for c in self.model.condition:
                 self.add_condition_widget(c, conditionsbox)
 
-        vbox.pack_start(cf, expand=False)
+        vbox.pack_start(cf, False, True, 0)
 
         frame.show()
 
@@ -449,9 +453,9 @@ class EditRule(EditGeneric):
 
     def drag_sent(self, widget, context, selection, targetType, eventTime):
         if targetType == config.data.target_type['rule']:
-            selection.set(selection.target, 8, self.model.xml_repr().encode('utf8'))
+            selection.set(selection.get_target(), 8, self.model.xml_repr().encode('utf8'))
         else:
-            print "Unknown target type for drag: %d" % targetType
+            logger.warn("Unknown target type for drag: %d" % targetType)
         return True
 
     def invalid_items(self):
@@ -472,7 +476,7 @@ class EditRule(EditGeneric):
         for w in self.editconditionlist:
             w.update_value()
 
-        self.model.name=unicode(self.name_entry.get_text())
+        self.model.name=self.name_entry.get_text().decode('utf-8')
 
         self.model.event=Event(self.editevent.current_event)
 
@@ -489,8 +493,8 @@ class EditRule(EditGeneric):
 
     def update_name(self, entry):
         if self.namelabel:
-            self.namelabel.set_label(unicode(entry.get_text()))
-        self.framelabel.set_markup(_("Rule <b>%s</b>") % unicode(entry.get_text()).replace('<', '<'))
+            self.namelabel.set_label(entry.get_text().decode('utf-8'))
+        self.framelabel.set_markup(_("Rule <b>%s</b>") % entry.get_text().decode('utf-8').replace('<', '<'))
         return True
 
     def remove_condition(self, widget, conditionwidget, hbox):
@@ -511,7 +515,7 @@ class EditRule(EditGeneric):
         return True
 
     def add_condition_widget(self, cond, conditionsbox):
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
         conditionsbox.add(hb)
 
         w=EditCondition(cond, editable=self.editable, controller=self.controller, parent=self)
@@ -521,11 +525,11 @@ class EditRule(EditGeneric):
         hb.add(w.get_widget())
         w.get_widget().show()
 
-        b=gtk.Button(stock=gtk.STOCK_REMOVE)
+        b=Gtk.Button(stock=Gtk.STOCK_REMOVE)
         b.set_sensitive(self.editable)
         b.connect('clicked', self.remove_condition, w, hb)
         b.show()
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
         hb.show()
 
@@ -540,7 +544,7 @@ class EditRule(EditGeneric):
     def add_action_widget(self, action, actionsbox):
         """Add an action widget to the given actionsbox."""
 
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
         actionsbox.add(hb)
 
         w=EditAction(action, self.catalog, editable=self.editable,
@@ -548,67 +552,67 @@ class EditRule(EditGeneric):
         self.editactionlist.append(w)
         hb.add(w.get_widget())
         w.get_widget().show()
-        b=gtk.Button(stock=gtk.STOCK_REMOVE)
+        b=Gtk.Button(stock=Gtk.STOCK_REMOVE)
         b.connect('clicked', self.remove_action, w, hb)
         b.set_sensitive(self.editable)
         b.show()
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
         hb.show()
         return True
 
     def build_widget(self):
-        frame=gtk.Frame()
-        self.framelabel=gtk.Label()
+        frame=Gtk.Frame()
+        self.framelabel=Gtk.Label()
         self.framelabel.set_markup(_("Rule <b>%s</b>") % self.model.name.replace('<', '<'))
         self.framelabel.show()
         frame.set_label_widget(self.framelabel)
 
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
         frame.add(vbox)
         vbox.show()
 
         # Rule name
-        hbox=gtk.HBox()
+        hbox=Gtk.HBox()
 
-        hbox.pack_start(gtk.Label(_("Rule name")), expand=False)
-        self.name_entry=gtk.Entry()
+        hbox.pack_start(Gtk.Label(_("Rule name")), False, False, 0)
+        self.name_entry=Gtk.Entry()
         self.name_entry.set_text(self.model.name)
         self.name_entry.set_editable(self.editable)
         self.name_entry.connect('changed', self.update_name)
         hbox.add(self.name_entry)
 
-        b=gtk.Button(stock=gtk.STOCK_COPY)
+        b=Gtk.Button(stock=Gtk.STOCK_COPY)
         b.connect('drag-data-get', self.drag_sent)
-        b.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                          config.data.drag_type['rule'], gtk.gdk.ACTION_COPY)
-        hbox.pack_start(b, expand=False)
+        b.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                          config.data.get_target_types('rule'), Gdk.DragAction.COPY)
+        hbox.pack_start(b, False, True, 0)
 
         hbox.show_all()
-        vbox.pack_start(hbox, expand=False)
+        vbox.pack_start(hbox, False, True, 0)
 
         # Event
-        ef=gtk.Frame(_("Event"))
+        ef=Gtk.Frame.new(_("Event"))
         self.editevent=EditEvent(self.model.event, catalog=self.catalog,
                                  editable=self.editable, controller=self.controller)
         ef.add(self.editevent.get_widget())
         ef.show_all()
-        vbox.pack_start(ef, expand=False)
+        vbox.pack_start(ef, False, True, 0)
 
         # Conditions
-        cf=gtk.Frame(_("If"))
-        conditionsbox=gtk.VBox()
+        cf=Gtk.Frame.new(_("If"))
+        conditionsbox=Gtk.VBox()
         cf.add(conditionsbox)
 
         # "Add condition" button
-        hb=gtk.HBox()
-        b=gtk.Button(stock=gtk.STOCK_ADD)
+        hb=Gtk.HBox()
+        b=Gtk.Button(stock=Gtk.STOCK_ADD)
         b.connect('clicked', self.add_condition, conditionsbox)
         b.set_sensitive(self.editable)
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
         hb.set_homogeneous(False)
 
-        hb.add(gtk.HBox())
+        hb.add(Gtk.HBox())
 
         def change_composition(combo):
             self.composition=combo.get_current_element()
@@ -618,9 +622,9 @@ class EditRule(EditGeneric):
                                          ('or', _("Any condition can be met") ) ],
                                        preselect=self.composition,
                                        callback=change_composition)
-        hb.pack_start(c, expand=False)
+        hb.pack_start(c, False, True, 0)
 
-        conditionsbox.pack_start(hb, expand=False, fill=False)
+        conditionsbox.pack_start(hb, False, False, 0)
 
         cf.show_all()
 
@@ -632,25 +636,25 @@ class EditRule(EditGeneric):
                 # Should not happen
                 raise Exception("condition should be a conditionlist")
 
-        vbox.pack_start(cf, expand=False)
+        vbox.pack_start(cf, False, True, 0)
 
         # Actions
-        af=gtk.Frame(_("Then"))
-        actionsbox=gtk.VBox()
+        af=Gtk.Frame.new(_("Then"))
+        actionsbox=Gtk.VBox()
         af.add(actionsbox)
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
         # Add Action button
-        b=gtk.Button(stock=gtk.STOCK_ADD)
+        b=Gtk.Button(stock=Gtk.STOCK_ADD)
         b.connect('clicked', self.add_action, actionsbox)
         b.set_sensitive(self.editable)
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
         hb.set_homogeneous(False)
-        actionsbox.pack_start(hb, expand=False, fill=False)
+        actionsbox.pack_start(hb, False, False, 0)
 
         for a in self.model.action:
             self.add_action_widget(a, actionsbox)
 
-        vbox.pack_start(af, expand=False)
+        vbox.pack_start(af, False, True, 0)
         af.show_all()
 
         frame.show()
@@ -677,11 +681,11 @@ class EditEvent(EditGeneric):
             self.current_event=event
 
     def build_widget(self):
-        hbox=gtk.HBox()
+        hbox=Gtk.HBox()
         hbox.set_homogeneous(False)
 
-        label=gtk.Label(_("When the "))
-        hbox.pack_start(label)
+        label=Gtk.Label(label=_("When the "))
+        hbox.pack_start(label, True, True, 0)
 
         eventlist=self.catalog.get_described_events(expert=self.expert)
         if self.current_event not in eventlist:
@@ -693,7 +697,7 @@ class EditEvent(EditGeneric):
                                           editable=self.editable)
         hbox.add(eventname)
 
-        label=gtk.Label(_(" occurs,"))
+        label=Gtk.Label(_(" occurs,"))
         hbox.add(label)
 
         hbox.show_all()
@@ -720,10 +724,10 @@ class EditCondition(EditGeneric):
     def invalid_items(self):
         iv=[]
         if not self.lhs.is_valid():
-            iv.append(_("Condition expression: %s") % unicode(self.lhs.get_text()))
+            iv.append(_("Condition expression: %s") % self.lhs.get_text().decode('utf-8'))
         if (self.current_operator in Condition.binary_operators
             and not self.rhs.is_valid()):
-            iv.append(_("Condition expression: %s") % unicode(self.lhs.get_text()))
+            iv.append(_("Condition expression: %s") % self.lhs.get_text().decode('utf-8'))
         return iv
 
     def update_value(self):
@@ -731,9 +735,9 @@ class EditCondition(EditGeneric):
             return False
         c=self.model
         c.operator=self.current_operator
-        c.lhs=unicode(self.lhs.get_text())
+        c.lhs=self.lhs.get_text().decode('utf-8')
         if c.operator in Condition.binary_operators:
-            c.rhs=unicode(self.rhs.get_text())
+            c.rhs=self.rhs.get_text().decode('utf-8')
         return True
 
     def update_widget(self):
@@ -758,7 +762,7 @@ class EditCondition(EditGeneric):
         return True
 
     def build_widget(self):
-        hbox=gtk.HBox()
+        hbox=Gtk.HBox()
 
         if self.parent is None or isinstance(self.parent, EditRule):
             predefined=[
@@ -933,14 +937,14 @@ class EditAction(EditGeneric):
         return True
 
     def on_change_parameter(self, entry, talesentry, name):
-        value=unicode(talesentry.get_text())
+        value=talesentry.get_text().decode('utf-8')
         self.current_parameters[name]=value
         return True
 
     def build_parameter_widget(self, name, value, description):
-        hbox=gtk.HBox()
-        label=gtk.Label(name)
-        hbox.pack_start(label, expand=False)
+        hbox=Gtk.HBox()
+        label=Gtk.Label(label=name)
+        hbox.pack_start(label, False, True, 0)
 
         ra=self.registeredaction
         if ra:
@@ -961,14 +965,14 @@ class EditAction(EditGeneric):
 
         hbox.entry=entry
 
-        hbox.pack_start(entry.widget)
+        hbox.pack_start(entry.widget, True, True, 0)
         hbox.show_all()
         return hbox
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        vbox.add(gtk.HSeparator())
+        vbox.add(Gtk.HSeparator())
 
         def description_getter(element):
             if hasattr(element, 'description'):
@@ -1022,7 +1026,7 @@ class EditAction(EditGeneric):
                 self.paramlist[name]=p
                 vbox.add(p)
 
-        vbox.add(gtk.HSeparator())
+        vbox.add(Gtk.HSeparator())
 
         vbox.show_all()
         return vbox
@@ -1050,7 +1054,7 @@ class EditSubviewList(EditGeneric):
 
     def update_name(self, entry):
         if self.namelabel:
-            self.namelabel.set_label(unicode(entry.get_text()))
+            self.namelabel.set_label(entry.get_text().decode('utf-8'))
         return True
 
     def refresh(self):
@@ -1070,32 +1074,32 @@ class EditSubviewList(EditGeneric):
         return True
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        self.store=gtk.ListStore( object, str, str, bool )
+        self.store=Gtk.ListStore( object, str, str, bool )
         self.refresh()
 
-        self.treeview=gtk.TreeView(model=self.store)
+        self.treeview=Gtk.TreeView(model=self.store)
 
-        renderer = gtk.CellRendererToggle()
+        renderer = Gtk.CellRendererToggle()
         renderer.set_property('activatable', True)
         renderer.connect('toggled', self.toggled_cb, self.store, self.COLUMN_STATUS)
-        column = gtk.TreeViewColumn(_('Activate?'), renderer, active=self.COLUMN_STATUS)
+        column = Gtk.TreeViewColumn(_('Activate?'), renderer, active=self.COLUMN_STATUS)
         self.treeview.append_column(column)
 
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_('View'), renderer, text=self.COLUMN_LABEL)
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_('View'), renderer, text=self.COLUMN_LABEL)
         column.set_resizable(True)
         self.treeview.append_column(column)
 
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_('Id'), renderer, text=self.COLUMN_ID)
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_('Id'), renderer, text=self.COLUMN_ID)
         column.set_resizable(True)
         self.treeview.append_column(column)
 
-        sw=gtk.ScrolledWindow()
+        sw=Gtk.ScrolledWindow()
         sw.add(self.treeview)
-        vbox.pack_start(sw, expand=True)
+        vbox.pack_start(sw, True, True, 0)
 
         vbox.show_all()
         return vbox
diff --git a/lib/advene/gui/edit/schemaeditor.py b/lib/advene/gui/edit/schemaeditor.py
deleted file mode 100644
index 89e3457..0000000
--- a/lib/advene/gui/edit/schemaeditor.py
+++ /dev/null
@@ -1,1589 +0,0 @@
-#
-# Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2009-2012 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
-# 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 Foobar; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#
-"""SchemaEditor GUI classes and methods.
-
-This module provides a schema editor form
-
-"""
-
-import advene.core.config as config
-from gettext import gettext as _
-
-import gtk
-try:
-    import goocanvas
-    from goocanvas import Group
-except ImportError:
-    # Goocanvas is not available. Define some globals in order not to
-    # fail the module loading, and use them as a guard in register()
-    goocanvas=None
-    Group=object
-import cairo
-from advene.model.schema import Schema, AnnotationType, RelationType
-from advene.gui.views import AdhocView
-from advene.gui.util import dialog, name2color, get_pixmap_button
-from advene.gui.edit.create import CreateElementPopup
-import advene.util.helper as helper
-from math import sqrt
-import advene.gui.popup
-
-
-name="Schema editor view"
-
-def register(controller):
-    #print "Registering plugin SchemaEditor"
-    if goocanvas is None:
-        controller.log("Cannot register SchemaEditor: the goocanvas python module does not seem to be available.")
-    else:
-        controller.register_viewclass(SchemaEditor)
-
-class SchemaEditor (AdhocView):
-    view_name = _("Schema Editor")
-    view_id = 'schemaeditor'
-    tooltip=("Graphical editor of Advene schemas")
-    def __init__ (self, controller=None, parameters=None, package=None):
-        super(SchemaEditor, self).__init__(controller=controller)
-        self.close_on_package_load = False
-        self.contextual_actions = (
-            (_("Refresh"), self.refresh),
-            )
-        self.listeSchemas = None
-        self.controller=controller
-        self.TE=None
-        self.hboxEspaceSchema=None
-        self.schemaArea = None
-        self.canvas = None
-        self.hboxButton = None
-        self.canvasX = 1200
-        self.canvasY = 1000
-        self.swX = 0
-        self.swY = 0
-        self.sepV = None
-        self.sepH = None
-        self.openedschemas = {}
-        self.dragging = False
-        self.drag_x = 0
-        self.drag_y = 0
-        self.timer_motion_max=3
-        self.timer_motion=self.timer_motion_max
-        self.drag_coordinates=None
-        self.dfont = 22
-
-        if package is None and controller is not None:
-            package=controller.package
-        self.__package=package
-        self.widget = self.build_widget()
-
-    def build_widget(self):
-        #HPaned containing schema area and Type explorer and Constraint explorer
-        self.hboxEspaceSchema = gtk.HPaned()
-        #   schema area
-        self.schemaArea = self.createSchemaArea()
-        self.openedschemas = []
-        self.hboxEspaceSchema.pack1(self.schemaArea, resize=True)
-
-        vbox=gtk.VBox()
-        #   type explorer
-        self.TE= TypeExplorer(self.controller, self.controller.package)
-
-        # Store (schema, schema title, is_displayed?)
-        store=gtk.ListStore( object, str, bool )
-
-        self.listeSchemas = gtk.TreeView(store)
-
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_('Schema'), renderer, text=1)
-        column.set_resizable(True)
-
-        self.listeSchemas.append_column(column)
-        renderer = gtk.CellRendererToggle()
-        renderer.set_property('activatable', True)
-
-        def toggled_schema(rend, path, model, col):
-            schema=model[path][0]
-            if schema in self.openedschemas:
-                # Undisplay
-                self.removeSchemaFromArea(schema)
-                model[path][col]=False
-            else:
-                if len(self.openedschemas) >= 4:
-                    self.log("Too many opened schemas")
-                    return True
-                self.openSchema(schema)
-                model[path][col]=True
-            return True
-        renderer.connect('toggled', toggled_schema, store, 2)
-        column = gtk.TreeViewColumn(_('Display'), renderer, active=2)
-        self.listeSchemas.append_column(column)
-        self.listeSchemas.show_all()
-        self.update_list_schemas()
-        vbox.pack_start(self.listeSchemas, expand=False)
-
-        def popup_menu(widget, event):
-            retval = False
-            button = event.button
-            x = int(event.x)
-            y = int(event.y)
-
-            if button == 3:
-                if event.window is widget.get_bin_window():
-                    model = widget.get_model()
-                    t = widget.get_path_at_pos(x, y)
-                    if t is not None:
-                        path, col, cx, cy = t
-                        schema=model[path][0]
-                        widget.get_selection().select_path(path)
-
-                        menu=gtk.Menu()
-
-                        i=gtk.MenuItem(_("Delete"))
-                        i.connect("activate", lambda e: self.delSchema(schema))
-                        menu.append(i)
-
-                        menu.show_all()
-                        menu.popup(None, None, None, button, event.time)
-                        retval = True
-            return retval
-
-        self.listeSchemas.connect('button-press-event', popup_menu)
-
-        vbox.add(self.TE)
-        self.hboxEspaceSchema.pack2(vbox)
-        #self.hboxEspaceSchema.set_position(150)
-        self.hboxEspaceSchema.show_all()
-
-        return self.hboxEspaceSchema
-
-    def createSchemaArea(self):
-        #Constraint explorer
-        hboxConExplorer = gtk.HBox()
-        labelConExplorer = gtk.Label("Constraint Explorer")
-        hboxConExplorer.pack_start(labelConExplorer, expand=False)
-
-        bg_color = gtk.gdk.Color (55000, 55000, 65535, 0)
-        hbox = gtk.HBox (False, 4)
-        #Create the canvas
-        canvas = goocanvas.Canvas()
-        canvas.modify_base (gtk.STATE_NORMAL, bg_color)
-        canvas.set_bounds (0, 0, self.canvasX, self.canvasY)
-        scrolled_win = gtk.ScrolledWindow ()
-        scrolled_win.add(canvas)
-
-        def on_background_scroll(widget, event):
-            zoom=event.state & gtk.gdk.CONTROL_MASK
-            if zoom:
-                # Control+scroll: zoom in/out
-                a = self.zoom_adj
-                incr = -a.step_increment
-            elif (event.state & gtk.gdk.SHIFT_MASK or event.direction in (gtk.gdk.SCROLL_LEFT, gtk.gdk.SCROLL_RIGHT)):
-                # Horizontal scroll
-                a = scrolled_win.get_hadjustment()
-                incr = a.step_increment
-            else:
-                # Vertical scroll
-                a = scrolled_win.get_vadjustment()
-                incr = a.step_increment
-
-            if event.direction == gtk.gdk.SCROLL_DOWN or event.direction == gtk.gdk.SCROLL_RIGHT:
-                val = a.value + incr
-                if val > a.upper - a.page_size:
-                    val = a.upper - a.page_size
-                elif val < a.lower:
-                    val = a.lower
-                if val != a.value:
-                    a.value = val
-            elif event.direction == gtk.gdk.SCROLL_UP or event.direction == gtk.gdk.SCROLL_LEFT:
-                val = a.value - incr
-                if val < a.lower:
-                    val = a.lower
-                elif val > a.upper - a.page_size:
-                    val = a.upper - a.page_size
-                if val != a.value:
-                    a.value = val
-
-            return True
-        canvas.connect('scroll-event', on_background_scroll)
-
-        def on_background_motion(widget, event):
-            if not event.state & gtk.gdk.BUTTON1_MASK:
-                return False
-            if self.dragging:
-                return False
-            if not self.drag_coordinates:
-                self.drag_coordinates=(event.x_root, event.y_root)
-                return False
-            x, y = self.drag_coordinates
-            wa = widget.get_allocation()
-            a=scrolled_win.get_hadjustment()
-            v=a.value + x - event.x_root
-            if v > a.lower and v+wa.width < a.upper:
-                a.value=v
-            a=scrolled_win.get_vadjustment()
-            v=a.value + y - event.y_root
-            if v > a.lower and v+wa.height < a.upper:
-                a.value=v
-
-            self.drag_coordinates= (event.x_root, event.y_root)
-            return False
-        canvas.connect('motion-notify-event', on_background_motion)
-
-        self.canvas = canvas
-
-        #Zoom
-        w = gtk.Label ("Zoom:")
-        hbox.pack_start (w, False, False, 0)
-        self.zoom_adj = gtk.Adjustment(1, 0.2, 2, 0.1, 0.5)
-        self.zoom_adj.connect('value-changed', self.zoom_changed, canvas)
-        w = gtk.SpinButton (self.zoom_adj, 0.0, 2)
-        w.set_size_request (50, -1)
-        hbox.pack_start (w, False, False, 0)
-        w = gtk.Button('A+')
-        w.connect('clicked', self.font_up_clicked, canvas)
-        hbox.pack_start (w, False, False, 0)
-        w = gtk.Button('A-')
-        w.connect('clicked', self.font_down_clicked, canvas)
-        hbox.pack_start (w, False, False, 0)
-
-        rotButton=get_pixmap_button('rotate.png', self.rotateSchemaAreas)
-        rotButton.set_no_show_all(True)
-        exchButton=get_pixmap_button('exchange.png', self.exchangeSchemaAreas)
-        exchButton.set_no_show_all(True)
-        hbox.pack_start(rotButton, False, False, 4)
-        hbox.pack_start(exchButton, False, False, 4)
-        self.hboxButton = hbox
-
-        canvas.connect('size-allocate', self.sw_resize, self.zoom_adj)
-
-        #schemaArea
-        schemaArea = gtk.VBox(False, 4)
-        schemaArea.set_border_width(4)
-        schemaArea.pack_start (hbox, False, False, 0)
-        schemaArea.pack_start (gtk.VSeparator(), expand=False)
-        schemaArea.pack_start(scrolled_win, True, True, 0)
-        schemaArea.pack_start(gtk.HSeparator(), expand=False)
-        schemaArea.pack_start(hboxConExplorer, expand=False)
-
-        return schemaArea
-
-    def font_up_clicked(self, w, canvas):
-        root = canvas.get_root_item ()
-        for i in range(0, root.get_n_children()):
-            if hasattr(root.get_child(i), 'type') and root.get_child(i).text:
-                fontsize = root.get_child(i).fontsize
-                self.dfont = root.get_child(i).fontsize = fontsize+3
-                root.get_child(i).text.props.font="Sans Bold %s" % str(self.dfont)
-        for i in self.findSchemaTitles(canvas):
-            i.props.font = "Sans Bold %s" % str(self.dfont)
-        return
-
-    def font_down_clicked(self, w, canvas):
-        root = canvas.get_root_item ()
-        for i in range(0, root.get_n_children()):
-            if hasattr(root.get_child(i), 'type') and root.get_child(i).text:
-                fontsize = root.get_child(i).fontsize
-                self.dfont = root.get_child(i).fontsize = fontsize-3
-                if fontsize >3:
-                    root.get_child(i).text.props.font="Sans Bold %s" % str(self.dfont)
-        for i in self.findSchemaTitles(canvas):
-            i.props.font = "Sans Bold %s" % str(self.dfont)
-        return
-
-    def sw_resize(self, w, size, adj):
-        #print adj.get_value()
-        self.swX = size.width
-        self.swY = size.height
-        self.canvasX=size.width*4
-        self.canvasY=size.height*4
-        self.canvas.set_bounds(0, 0, self.canvasX, self.canvasY)
-        self.setup_canvas()
-        #print self.canvas.get_bounds()
-        #print "%s %s" % (size.width, size.height)
-
-###
-#
-# Functions to update the gui when an event occurs
-#
-###
-
-    def update_model(self, package):
-        self.update_list_schemas()
-        self.openedschemas=[]
-        self.setup_canvas()
-        return True
-
-    def update_schema(self, schema=None, event=None):
-        self.update_list_schemas()
-        if schema in self.openedschemas:
-            self.setup_canvas()
-        return True
-
-    def update_relation(self, relation=None, event=None):
-        if event == 'RelationCreate' or event == 'RelationDelete':
-            rt = relation.getType()
-            sc = rt.getSchema()
-            if sc in self.openedschemas:
-                rtg = self.findRelationTypeGroup(rt.getId(),self.canvas)
-                rtg.update()
-        return True
-
-    def update_annotation (self, annotation=None, event=None):
-        if event == 'AnnotationCreate' or event == 'AnnotationDelete':
-            at = annotation.getType()
-            sc = at.getSchema()
-            if sc in self.openedschemas:
-                atg = self.findAnnotationTypeGroup(at.getId(),self.canvas)
-                atg.update()
-        return True
-
-    def update_annotationtype(self, annotationtype=None, event=None):
-        schema = annotationtype.getSchema()
-        if schema in self.openedschemas:
-            if event == 'AnnotationTypeCreate':
-                atg = self.findAnnotationTypeGroup(annotationtype.getId(),self.canvas)
-                if atg is None:
-                    self.addAnnotationTypeGroup(canvas=self.canvas, schema=schema, type=annotationtype)
-            elif event == 'AnnotationTypeDelete':
-                atg = self.findAnnotationTypeGroup(annotationtype.getId(),self.canvas)
-                if atg is not None:
-                    atg.remove_drawing_only()
-                if self.TE is not None and self.TE.type == annotationtype:
-                    self.TE.initWithType(None)
-            elif event == 'AnnotationTypeEditEnd':
-                atg = self.findAnnotationTypeGroup(annotationtype.getId(),self.canvas)
-                if atg is not None:
-                    atg.update()
-                if self.TE is not None and self.TE.type == annotationtype:
-                    self.TE.initWithType(annotationtype)
-        return True
-
-    def update_relationtype(self, relationtype=None, event=None):
-        schema = relationtype.getSchema()
-        if schema in self.openedschemas:
-            if event == 'RelationTypeCreate':
-                rtg = self.findRelationTypeGroup(relationtype.getId(),self.canvas)
-                if rtg is None:
-                    self.addRelationTypeGroup(canvas=self.canvas, schema=schema, type=relationtype)
-            elif event == 'RelationTypeDelete':
-                rtg = self.findRelationTypeGroup(relationtype.getId(),self.canvas)
-                if rtg is not None:
-                    rtg.remove_drawing_only()
-                if self.TE is not None and self.TE.type == relationtype:
-                    self.TE.initWithType(None)
-            elif event == 'RelationTypeEditEnd':
-                rtg = self.findRelationTypeGroup(relationtype.getId(),self.canvas)
-                if rtg is not None:
-                    rtg.update()
-                if self.TE is not None and self.TE.type == relationtype:
-                    self.TE.initWithType(relationtype)
-        return True
-
-    def refresh(self, *p):
-        self.update_model(None)
-        return True
-
-    def update_list_schemas(self):
-        store=self.listeSchemas.get_model()
-        store.clear()
-        for s in self.controller.package.schemas:
-            store.append( [ s, self.controller.get_title(s), s in self.openedschemas ] )
-
-##
-#
-#   Functions to create and delete elements
-#
-##
-
-    def newSchema(self, w):
-        cr = CreateElementPopup(type_=Schema,
-                                    parent=self.controller.package,
-                                    controller=self.controller)
-        schema=cr.popup(modal=True)
-        if schema:
-            self.update_list_schemas()
-            self.openSchema(schema)
-
-    def delSchema(self, sc):
-        tsc = sc.title
-        if (sc is None):
-            return False
-        if dialog.message_dialog(label="Voulez-vous effacer le schema %s ?" % tsc, icon=gtk.MESSAGE_QUESTION, callback=None):
-            if sc in self.openedschemas:
-                self.removeSchemaFromArea(sc)
-            self.controller.delete_element(sc)
-            self.update_list_schemas()
-            return True
-        else:
-            return False
-
-    def openSchema(self, schema):
-        if (schema is None):
-            print "Error opening schema : None"
-            return
-        if len(self.openedschemas)>=4:
-            print "too many schemas opened, 4 max."
-            return
-        if schema not in self.openedschemas:
-            self.addSchemaToArea(schema)
-        else:
-            print "schema already opened"
-        return
-
-    def addSchemaToArea(self, schema):
-        self.openedschemas.append(schema)
-        self.setup_canvas()
-        return
-
-    def removeSchemaFromArea(self, schema):
-        self.openedschemas.remove(schema)
-        self.setup_canvas()
-        return
-
-    def rotateSchemaAreas(self, w):
-        temp=self.openedschemas.pop()
-        self.openedschemas.insert(0,temp)
-        self.setup_canvas()
-
-    def exchangeSchemaAreas(self, w):
-        t1 =self.openedschemas[0]
-        self.openedschemas[0]=self.openedschemas[1]
-        self.openedschemas[1]=t1
-        self.setup_canvas()
-        #print "Exchanged %s and %s" % (self.openedschemas[0].title, self.openedschemas[1].title)
-
-    def addTransformButtons(self, nb_schemas):
-        if nb_schemas < 3:
-            self.hboxButton.foreach(lambda w: w.hide())
-            self.hboxButton.show_all()
-        else:
-            self.hboxButton.foreach(lambda w: w.show())
-
-    def setup_canvas (self):
-        root = self.canvas.get_root_item ()
-        root.connect('button-press-event', self.on_background_button_press)
-        root.connect('button-release-event', self.on_background_button_release)
-        #deleting old drawing
-        while root.get_n_children()>0:
-            root.remove_child (0)
-
-        size = len(self.openedschemas)
-        self.sepV = None
-        self.sepH = None
-        # add buttons to rotate and change schemas place
-        self.addTransformButtons(size)
-        if size<=0:
-            #print "No schema to draw"
-            return
-        if size>4:
-            print "More than 4 schema, fixme!!!"
-            return
-        if size==1:
-            schema = self.openedschemas[0]
-            self.draw_schema_annots(self.canvas, schema, 20, 60, self.canvasX, self.canvasY)
-        if size==2:
-            # vertical separation between the 2 schemas
-            self.draw_schema_annots(self.canvas, self.openedschemas[0], 20, 60, self.canvasX/2, self.canvasY)
-            p = goocanvas.Points ([(self.canvasX/2, 0), (self.canvasX/2, self.canvasY)])
-            self.sepV = goocanvas.Polyline (parent = root,
-                                        close_path = False,
-                                        points = p,
-                                        stroke_color = "black",
-                                        line_width = 6.0,
-                                        start_arrow = False,
-                                        end_arrow = False
-                                        )
-            self.draw_schema_annots(self.canvas, self.openedschemas[1], 20+self.canvasX/2, 60, self.canvasX, self.canvasY)
-        if size==3:
-            # 1+1/1
-            self.draw_schema_annots(self.canvas, self.openedschemas[0], 20, 60, self.canvasX/2, self.canvasY/2)
-            p = goocanvas.Points ([(self.canvasX/2, 0), (self.canvasX/2, self.canvasY/2)])
-            self.sepV = goocanvas.Polyline (parent = root,
-                                        close_path = False,
-                                        points = p,
-                                        stroke_color = "black",
-                                        line_width = 6.0,
-                                        start_arrow = False,
-                                        end_arrow = False
-                                        )
-            self.draw_schema_annots(self.canvas, self.openedschemas[1], 20+self.canvasX/2, 60, self.canvasX, self.canvasY/2)
-            p = goocanvas.Points ([(0, self.canvasY/2), (self.canvasX, self.canvasY/2)])
-            self.sepH = goocanvas.Polyline (parent = root,
-                                        close_path = False,
-                                        points = p,
-                                        stroke_color = "black",
-                                        line_width = 6.0,
-                                        start_arrow = False,
-                                        end_arrow = False
-                                        )
-            self.draw_schema_annots(self.canvas, self.openedschemas[2], 20, 60+self.canvasY/2, self.canvasX, self.canvasY)
-        if size==4:
-            self.draw_schema_annots(self.canvas, self.openedschemas[0], 20, 60, self.canvasX/2, self.canvasY/2)
-            p = goocanvas.Points ([(self.canvasX/2, 0), (self.canvasX/2, self.canvasY)])
-            self.sepV = goocanvas.Polyline (parent = root,
-                                        close_path = False,
-                                        points = p,
-                                        stroke_color = "black",
-                                        line_width = 6.0,
-                                        start_arrow = False,
-                                        end_arrow = False
-                                        )
-            self.draw_schema_annots(self.canvas, self.openedschemas[1], 20+self.canvasX/2, 60, self.canvasX, self.canvasY/2)
-            self.draw_schema_annots(self.canvas, self.openedschemas[3], 20, 60+self.canvasY/2, self.canvasX/2, self.canvasY)
-            p = goocanvas.Points ([(0, self.canvasY/2), (self.canvasX, self.canvasY/2)])
-            self.sepH = goocanvas.Polyline (parent = root,
-                                        close_path = False,
-                                        points = p,
-                                        stroke_color = "black",
-                                        line_width = 6.0,
-                                        start_arrow = False,
-                                        end_arrow = False
-                                        )
-            self.draw_schema_annots(self.canvas, self.openedschemas[2], 20+self.canvasX/2, 60+self.canvasY/2, self.canvasX, self.canvasY)
-        self.draw_schemas_rels(self.canvas, self.openedschemas)
-
-
-    def draw_schemas_rels(self, canvas, schemas):
-        r=0
-        for sc in schemas:
-            relTypes = sc.getRelationTypes()
-            for j in relTypes:
-                self.addRelationTypeGroup(canvas, sc, j.getTitle(), j)
-                r=r+1
-        #print "%s RelationTypes drawn" % r
-
-    def draw_schema_annots(self, canvas, schema, xoffset, yoffset, xmax, ymax):
-        self.addSchemaTitle(canvas, schema, xoffset+(xmax-xoffset)/2, yoffset+(ymax-yoffset)/2)
-        annotTypes = schema.getAnnotationTypes()
-        a=0
-        b=0
-        an=0
-        for i in annotTypes:
-            x = xoffset+b*300
-            y = yoffset+a*80
-            self.addAnnotationTypeGroup(canvas, schema, i.getTitle(), i, x, y)
-            an=an+1
-            if x+600<xmax:
-                b=b+1
-            elif y+160<ymax:
-                b=0
-                a=a+1
-        #print "%s AnnotationTypes drawn" % an
-        return
-
-    def addSchemaTitle(self, canvas, schema, xx, yy):
-        color = self.controller.get_element_color(schema)
-        goocanvas.Text (parent = canvas.get_root_item (),
-                                        text = schema.title,
-                                        x = xx,
-                                        y = yy,
-                                        fill_color = color,
-                                        width = -1,
-                                        anchor = gtk.ANCHOR_CENTER,
-                                        font = "Sans Bold %s" % str(self.dfont))
-
-    def findSchemaTitles(self, canvas, schema=None):
-        res = []
-        root = canvas.get_root_item ()
-        for i in range(0, root.get_n_children()):
-            if isinstance(root.get_child(i), goocanvas.Text):
-                if schema is None or schema.title == root.get_child(i).props.text:
-                    res.append(root.get_child(i))
-        return res
-
-###
-#
-#  Functions to add remove modify RelationTypesGroup and redraw them when moving AnnotationTypeGroup
-#
-###
-    def addRelationTypeGroup(self, canvas, schema, name=" ", type=None, members=[]):
-        if schema is None:
-            return
-        cvgroup = RelationTypeGroup(self.controller, canvas, schema, name, type, members, self.dfont)
-        if cvgroup is not None:
-            self.setup_rel_signals (cvgroup)
-            #self.drawFocusOn(cvgroup)
-            #self.TE.initWithType(cvgroup.type)
-        return cvgroup
-
-    def findRelationTypeGroup(self, typeId, canvas):
-        #Find relationGroup from type id
-        root = canvas.get_root_item ()
-        for i in range(0, root.get_n_children()):
-            if hasattr(root.get_child(i), 'type') and root.get_child(i).type.id== typeId:
-                return root.get_child(i)
-        return None
-
-    def findAnnotationTypeGroup(self, typeId, canvas):
-        root = canvas.get_root_item ()
-        for i in range(0, root.get_n_children()):
-            if hasattr(root.get_child(i), 'type') and root.get_child(i).type.id == typeId:
-                return root.get_child(i)
-        return None
-
-    def rel_redraw(self, rtg):
-        rtg.redraw()
-
-    def removeRelationTypeGroup(self, group):
-        group.remove()
-
-###
-#
-#  Functions to add remove modify AnnotationTypesGroup
-#
-###
-
-    def addAnnotationTypeGroup(self, canvas, schema, name=" ", type=None, rx =None, ry=None):
-        if schema is None:
-            return
-        part = self.openedschemas.index(schema)
-        if rx is None or ry is None:
-            if part == 0:
-                rx = 20
-                ry = 60
-            if part == 1:
-                rx = self.sepV.get_bounds().x2 + 20
-                ry = 60
-            if (part == 2 and len(self.openedschemas)==3) or part == 3:
-                rx = 20
-                ry = self.sepH.get_bounds().y2 + 60
-            if part == 2 and len(self.openedschemas)==4:
-                rx = self.sepV.get_bounds().x2 + 20
-                ry = self.sepH.get_bounds().y2 + 60
-        cvgroup = AnnotationTypeGroup(self.controller, canvas, schema, name, type, rx, ry, self.dfont)
-        if cvgroup is not None:
-            self.setup_annot_signals(cvgroup, schema)
-            self.drawFocusOn(cvgroup.rect)
-            self.TE.initWithType(cvgroup.type)
-            #self.widget.set_focus(self.TE.TName)
-        return cvgroup
-
-
-    def removeAnnotationTypeGroup(self, group, schema):
-        group.remove()
-        ### FIXME : delete relation types based on this annotation type in other schemas
-
-    def create_view_based_on(self, model_obj):
-        id_= model_obj.id+'_view'
-        title_= model_obj.title+' view'
-        if self.controller.package._idgenerator.exists(id_):
-            #on remplace le contenu
-            print 'pas encore fait'
-        else:
-            self.controller.package._idgenerator.add(id_)
-            el=self.controller.package.createView(
-                ident=id_,
-                author=config.data.userid,
-                date=self.controller.get_timestamp(),
-                clazz=self.controller.package.viewableClass,
-                content_mimetype='text/html',
-                )
-            el.title=title_
-            # contenu a adapter
-            el.content.data=u'<h1>test</h1>'
-            if isinstance(model_obj, Schema):
-                el.content.data=u'<h1>Schema %s</h1>\n' % model_obj.title
-                el.content.data += u'<p>Containing the following Annotation Types:</p>\n<ul>\n'
-                for at in model_obj.annotationTypes:
-                    el.content.data += u'<li>%s (%s)</li>\n' % (at, len(at.annotations))
-                el.content.data += u'</ul><p>And the following Relation Types:</p>\n<ul>\n'
-                for rt in model_obj.relationTypes:
-                    el.content.data += u'<li>%s (%s)</li>\n' % (rt, len(rt.relations))
-                el.content.data += u'</ul>\n'
-            # elif isinstance(model_obj, AnnotationType):
-            # elif isinstance(model_obj, RelationType):
-            self.controller.package.views.append(el)
-            self.controller.notify('ViewCreate', view=el)
-
-        print id_
-###
-#
-#  Functions to handle notification signals
-#
-###
-
-    def setup_rel_signals (self, item):
-        #pour capter les events sur les relations du dessin
-        #item.connect ("motion_notify_event", self.rel_on_motion_notify)
-        item.connect ('button-press-event', self.rel_on_button_press)
-        item.connect ('button-release-event', self.rel_on_button_release)
-
-
-    def setup_annot_signals (self, item, schema):
-        #pour capter les events sur les annotations du dessin
-        item.connect ('motion-notify-event', self.annot_on_motion_notify)
-        item.connect ('button-press-event', self.annot_on_button_press, schema)
-        item.connect ('button-release-event', self.annot_on_button_release)
-
-
-    def rel_on_button_press (self, item, target, event):
-        self.TE.initWithType(item.type)
-        self.drawFocusOn(item.line)
-        if event.button == 1:
-            if event.type == gtk.gdk._2BUTTON_PRESS:
-                self.controller.gui.open_adhoc_view('generictable', elements=item.type.relations)
-                canvas = item.get_canvas ()
-                canvas.pointer_ungrab (item, event.time)
-                self.dragging = False
-                return True
-            self.drag_x = event.x
-            self.drag_y = event.y
-            fleur = gtk.gdk.Cursor (gtk.gdk.FLEUR)
-            canvas = item.get_canvas ()
-            canvas.pointer_grab (item,
-                                gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.BUTTON_RELEASE_MASK,
-                                fleur,
-                                event.time)
-            self.dragging = True
-        elif event.button == 3:
-            def menuRem(w, item):
-                self.removeRelationTypeGroup(item)
-                return True
-            def menuView(w, item):
-                self.create_view_based_on(item.type)
-
-            m=advene.gui.popup.Menu(element=item.type, controller=self.controller)
-            menu=m.menu
-
-            itemM = gtk.MenuItem(_("Remove relation type"))
-            itemM.connect('activate', menuRem, item )
-            menu.insert(itemM, 1)
-            itemM = gtk.MenuItem(_("Create HTML view"))
-            itemM.connect('activate', menuView, item )
-            menu.insert(itemM, 1)
-            menu.show_all()
-            m.popup()
-        return True
-
-    def rel_on_button_release (self, item, target, event):
-        canvas = item.get_canvas ()
-        canvas.pointer_ungrab (item, event.time)
-        self.dragging = False
-
-###
-#
-#  events on annotationTypeGroup
-#
-###
-
-    def annot_on_motion_notify (self, item, target, event):
-        if (self.dragging == True) and (event.state & gtk.gdk.BUTTON1_MASK):
-            new_x = event.x
-            new_y = event.y
-            item.translate (new_x - self.drag_x, new_y - self.drag_y)
-            # Hack not to redraw at every step
-            self.timer_motion= self.timer_motion-1
-            if self.timer_motion<=0:
-                self.timer_motion=self.timer_motion_max
-                for rtg in item.rels:
-                    self.rel_redraw(rtg)
-        return True
-
-    def annot_on_button_press (self, item, target, event, schema):
-        self.TE.initWithType(item.type)
-        self.drawFocusOn(item.rect)
-        if event.button == 1:
-            if event.type == gtk.gdk._2BUTTON_PRESS:
-                self.controller.gui.open_adhoc_view('table', elements=item.type.annotations)
-                canvas = item.get_canvas ()
-                canvas.pointer_ungrab (item, event.time)
-                self.dragging = False
-                return True
-            self.drag_x = event.x
-            self.drag_y = event.y
-            self.orig_x = item.rect.get_bounds().x1
-            self.orig_y = item.rect.get_bounds().y1
-            self.timer_motion=self.timer_motion_max
-            fleur = gtk.gdk.Cursor (gtk.gdk.FLEUR)
-            canvas = item.get_canvas ()
-            canvas.pointer_grab (item,
-                                    gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.BUTTON_RELEASE_MASK,
-                                    fleur,
-                                    event.time)
-            self.dragging = True
-        elif event.button == 3:
-            def menuRem(w, item, schema):
-                self.removeAnnotationTypeGroup(item, schema)
-                return True
-            def menuNew(w, item, schema, member2):
-                mem = []
-                mem.append(item.type)
-                mem.append(member2)
-                self.addRelationTypeGroup(item.get_canvas(), schema, members=mem)
-                return True
-            m=advene.gui.popup.Menu(element=item.type, controller=self.controller)
-            menu=m.menu
-            menu.insert(gtk.SeparatorMenuItem(), 1)
-            itemM = gtk.MenuItem(_("Remove annotation type"))
-            itemM.connect('activate', menuRem, item, schema )
-            menu.insert(itemM, 2)
-            itemM = gtk.MenuItem(_("Create relation type between this one and..."))
-            ssmenu = gtk.Menu()
-            itemM.set_submenu(ssmenu)
-            for s in self.controller.package.getSchemas():
-                sssmenu = gtk.Menu()
-                itemSM = gtk.MenuItem(s.title)
-                itemSM.set_submenu(sssmenu)
-                for a in s.getAnnotationTypes():
-                    itemSSM = gtk.MenuItem(a.title)
-                    itemSSM.connect('activate', menuNew, item, schema, a )
-                    sssmenu.append(itemSSM)
-                ssmenu.append(itemSM)
-            menu.insert(itemM, 3)
-            menu.show_all()
-            m.popup()
-        return True
-
-    def findGroupFromXY(self,x,y):
-        root = self.canvas.get_root_item ()
-        for i in range(0, root.get_n_children()):
-            if hasattr(root.get_child(i), 'rect'):
-                x1 = root.get_child(i).get_bounds().x1
-                x2 = root.get_child(i).get_bounds().x2
-                y1 = root.get_child(i).get_bounds().y1
-                y2 = root.get_child(i).get_bounds().y2
-                if x>x1 and x<x2 and y>y1 and y<y2:
-                    return root.get_child(i)
-        return None
-
-    def annot_on_button_release (self, item, target, event):
-        canvas = item.get_canvas ()
-        canvas.pointer_ungrab (item, event.time)
-        self.dragging = False
-        if (event.state & gtk.gdk.CONTROL_MASK):
-            dropObj = self.findGroupFromXY(item.get_bounds().x1,
-                                            item.get_bounds().y1)
-            x = item.rect.get_bounds().x1
-            y = item.rect.get_bounds().y1
-            item.translate (self.orig_x - x, self.orig_y - y)
-            # HACK : to avoid to redraw relations before the item goes back to origin
-            while item.get_bounds().x1 != self.orig_x and item.get_bounds().y1 != self.orig_y:
-                pass
-            if dropObj is not None and dropObj.type is not None:
-                #print "creating relation between %s and %s" % (item.type, dropObj.type)
-                self.addRelationTypeGroup(self.canvas, item.type.getSchema(), name="New Relation", type=None, members=[item.type,dropObj.type])
-
-        # TODO
-        # events drag & drop non implemantes pour goocanvas.group
-        # drag-motion : on arrive dessus
-        # drag-leave : on en part
-        # drag-data-received quand on lache sur un objet
-        # ...
-        else:
-            x = item.rect.get_bounds().x1
-            y = item.rect.get_bounds().y1
-            newsc = self.findSchemaFromXY(x, y)
-            oldsc = item.type.getSchema()
-            if oldsc != newsc:
-                #if (dialog.message_dialog(label="Do you want to move %s to the %s schema ?" % (item.type.title, newsc.title), icon=gtk.MESSAGE_QUESTION, callback=None)):
-                # gerer si des types de relation sont accroches
-                #    print "todo"
-                #    oldsc.annotationTypes.remove(item.type)
-                #    newsc.annotationTypes.append(item.type)
-                #    item.type.setSchema(newsc)
-                #    self.controller.notify("SchemaEditEnd",schema=oldsc,comment="AnnotationType removed")
-                #    self.controller.notify("SchemaEditEnd",schema=newsc,comment="AnnotationType added")
-                #    self.controller.notify("AnnotationTypeEditEnd",annotationtype=item.type,comment="Schema changed")
-                # notify
-                # __parent apparemment en lecture seule,
-                # si on ne peut pas, oblige de supprimer le type
-                # et en creer un nouveau
-                #else:
-                item.translate (self.orig_x - x, self.orig_y - y)
-                    # HACK : to avoid to redraw relations before the item goes back to origin
-                while item.get_bounds().x1 != self.orig_x and item.get_bounds().y1 != self.orig_y:
-                    pass
-        # Relations redraw
-        for rtg in item.rels:
-            self.rel_redraw(rtg)
-
-###
-#
-#  events on background
-#
-###
-
-    def findSchemaFromXY(self, x, y):
-        size=len(self.openedschemas)
-        if size<=0 or size>4:
-            return None
-        if size==1:
-            return self.openedschemas[0]
-        if size==2:
-            if x>self.sepV.get_bounds().x2:
-                return self.openedschemas[1]
-            return self.openedschemas[0]
-        if size==3:
-            if y>self.sepH.get_bounds().y2:
-                return self.openedschemas[2]
-            if x>self.sepV.get_bounds().x2:
-                return self.openedschemas[1]
-            return self.openedschemas[0]
-        if size==4:
-            #
-            #       1  |  2
-            #       ___|___
-            #          |
-            #       4  |  3
-            #
-            if x>self.sepV.get_bounds().x2 and y>self.sepH.get_bounds().y2:
-                return self.openedschemas[2]
-            if x>self.sepV.get_bounds().x2 and y<self.sepH.get_bounds().y1:
-                return self.openedschemas[1]
-            if x<self.sepV.get_bounds().x1 and y >self.sepH.get_bounds().y2:
-                return self.openedschemas[3]
-            return self.openedschemas[0]
-        return None
-
-    def on_background_button_release(self, item, widget, event):
-        if event.button == 1:
-            self.drag_coordinates=None
-        return False
-
-    def on_background_button_press (self, item, target, event):
-        if event.button != 3:
-            return False
-
-        self.TE.initWithType(None)
-        openedschema = True
-        if len(self.openedschemas)<=0:
-            openedschema=False
-        canvas = item.get_canvas()
-        self.drawFocusOn(canvas)
-        schema = self.findSchemaFromXY(event.x, event.y)
-        menu = gtk.Menu()
-        itemM = gtk.MenuItem(_("New schema"))
-        itemM.connect("activate", self.newSchema )
-        menu.append(itemM)
-        if openedschema:
-            def newRel(w, canvas, schema):
-                self.addRelationTypeGroup(canvas, schema)
-                return True
-            def newAnn(w, canvas, schema, x, y):
-                self.addAnnotationTypeGroup(canvas, schema, rx=x, ry=y)
-                return True
-            def pick_color(w, schema):
-                self.controller.gui.update_color(schema)
-            def hide(w, schema):
-                self.removeSchemaFromArea(schema)
-            def menuView(w, schema):
-                self.create_view_based_on(schema)
-            itemM = gtk.MenuItem(_("Select a color"))
-            itemM.connect('activate', pick_color, schema)
-            menu.append(itemM)
-            itemM = gtk.MenuItem(_("New annotation type"))
-            itemM.connect('activate', newAnn, canvas, schema, event.x, event.y )
-            menu.append(itemM)
-            itemM = gtk.MenuItem(_("New relation type"))
-            itemM.connect('activate', newRel, canvas, schema )
-            menu.append(itemM)
-            itemM = gtk.MenuItem(_("Hide this schema"))
-            itemM.connect('activate', hide, schema )
-            menu.append(itemM)
-            itemM = gtk.MenuItem(_("Create HTML view"))
-            itemM.connect('activate', menuView, schema )
-            menu.append(itemM)
-            itemM = gtk.MenuItem(_("Export drawing to pdf"))
-            itemM.connect('activate', self.export_to_pdf, canvas)
-            menu.append(itemM)
-        #itemM = gtk.MenuItem(_("Move annotation type from Schema..."))
-        #itemM.connect("activate", menuMove, canvas )
-        #menu.append(itemM)
-        menu.show_all()
-        menu.popup(None, None, None, 0, gtk.get_current_event_time())
-        return True
-
-    def drawFocusOn(self, item):
-        #print "focus on %s" % item
-        canvas=None
-        if isinstance(item, goocanvas.Canvas):
-            canvas=item
-        else:
-            canvas = item.get_canvas()
-            item.props.line_width = 4.0
-
-        root = canvas.get_root_item()
-
-        for i in range(root.get_n_children()):
-            if hasattr(root.get_child(i), 'rect'):
-                ite=root.get_child(i).rect
-            elif hasattr(root.get_child(i), 'line'):
-                ite=root.get_child(i).line
-            else:
-                ite=None
-            if ite is not None and ite != item:
-                ite.props.line_width = 2.0
-
-    def zoom_changed (self, adj, canvas):
-        canvas.set_scale (adj.get_value()/4)
-
-
-
-    def export_to_pdf (self, w, canvas):
-
-        nompdf = config.data.path['settings']
-        for sc in self.openedschemas:
-            nompdf += sc.id + '_'
-        nompdf += u'.pdf'
-        name=dialog.get_filename(title=_("Choose a filename to export the schema as PDF"),
-                                 action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                 button=gtk.STOCK_SAVE,
-                                 default_file=nompdf,
-                                 filter='any')
-        if name is None:
-            return
-        surface = cairo.PDFSurface (name, self.canvasX, self.canvasY)
-        cr = cairo.Context (surface)
-        #cr.translate (20, 130)
-        #if we want to export only 1/4 schema, we need to change X, Y and translate the frame to the middle of the screen
-        canvas.render (cr, None, 1.0)
-        cr.show_page ()
-        dialog.message_dialog(u"%s exported" % name)
-
-### Type Explorer class
-class TypeExplorer (gtk.ScrolledWindow):
-    def __init__ (self, controller=None, package=None):
-        gtk.ScrolledWindow.__init__(self)
-        self.controller=controller
-        self.type=None
-        if package is None and controller is not None:
-            package=controller.package
-        vbox=gtk.VBox()
-        hboxNom = gtk.HBox()
-        labelNom = gtk.Label("Title : ")
-        entryNom = gtk.Entry()
-        self.TName = entryNom
-        hboxNom.pack_start(labelNom)
-        hboxNom.pack_start(entryNom)
-        hboxAddAtt = gtk.HBox()
-        labelAddAtt = gtk.Label("Add attribute")
-        boutonAddAtt = gtk.Button("Add")
-        boutonAddAtt.connect('clicked', self.addAttributeSpace )
-        hboxAddAtt.pack_start(labelAddAtt)
-        hboxAddAtt.pack_start(boutonAddAtt)
-        hboxMime = gtk.HBox()
-        labelMime = gtk.Label("Mime Type : ")
-        self.TMimeType = dialog.list_selector_widget(
-            members=[ ('text/plain', _("Plain text content")),
-                              ('application/x-advene-structured', _("Simple-structured content")),
-                              ('image/svg+xml', _("SVG graphics content")),
-                              ])
-        # a remplacer par la selection de type Mime
-        hboxMime.pack_start(labelMime)
-        hboxMime.pack_start(self.TMimeType)
-        hboxColor = gtk.HBox()
-        self.bcol = gtk.ColorButton()
-        self.bcol.set_use_alpha(False)
-        self.bcol.connect('color-set', self.colorChange)
-        self.entryCol = gtk.Entry()
-        self.entryCol.connect('changed', self.colorTextChange)
-        hboxColor.pack_start(self.bcol)
-        hboxColor.pack_start(self.entryCol)
-        hboxDesc = gtk.HBox()
-        labelDesc = gtk.Label("Description : ")
-        entryDesc = gtk.Entry()
-        self.TDesc = entryDesc
-        hboxDesc. pack_start(labelDesc)
-        hboxDesc. pack_start(entryDesc)
-        hboxId = gtk.HBox()
-        labelId1 = gtk.Label("Id :")
-        labelId2 = gtk.Label("")
-        self.TId = labelId2
-        hboxId.pack_start(labelId1)
-        hboxId.pack_start(labelId2)
-        labelAtt = gtk.Label("Attributes : ")
-        labelTypeExplorer = gtk.Label("Type Explorer")
-        espaceAtt = gtk.VBox()
-        self.TAttsSpace = espaceAtt
-        self.TAtts = []
-        espaceBoutons = gtk.HBox()
-        self.boutonSave = gtk.Button("Save")
-        self.boutonSave.connect('clicked', self.saveType)
-        self.boutonCancel = gtk.Button("Cancel")
-        self.boutonCancel.connect('clicked', self.cancelType )
-        espaceBoutons.pack_end(self.boutonCancel, expand=False, fill=False)
-        espaceBoutons.pack_end(self.boutonSave, expand=False, fill=False)
-        vbox.pack_start(labelTypeExplorer, expand=False)
-        vbox.pack_start(gtk.HSeparator(), expand=False)
-        vbox.pack_start(hboxId, expand=False)
-        vbox.pack_start(gtk.HSeparator(), expand=False)
-        vbox.pack_start(hboxNom, expand=False)
-        vbox.pack_start(gtk.HSeparator(), expand=False)
-        vbox.pack_start(hboxMime, expand=False, fill=False)
-        vbox.pack_start(gtk.HSeparator(), expand=False)
-        vbox.pack_start(hboxColor, expand=False, fill=False)
-        vbox.pack_start(gtk.HSeparator(), expand=False)
-        #vbox.pack_start(hboxAddAtt, expand=False, fill=False)
-        #vbox.pack_start(gtk.HSeparator(), expand=False)
-        #vbox.pack_start(labelAtt, expand=False, fill=False)
-        #vbox.pack_start(espaceAtt, expand=False, fill=False)
-        #vbox.pack_start(gtk.HSeparator(), expand=False)
-        vbox.pack_start(espaceBoutons, expand=False, fill=False)
-        self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-        self.add_with_viewport(vbox)
-        self.initWithType(None)
-
-
-    def colorTextChange(self, w):
-        col = unicode(self.entryCol.get_text())
-        color=name2color(col)
-        if color is not None:
-            self.bcol.set_color(color)
-
-    def colorChange(self, but):
-        col=self.bcol.get_color()
-        self.entryCol.set_text("#%04x%04x%04x" % (col.red, col.green, col.blue))
-
-    def refresh(self, *p):
-        return True
-
-    def setTypeDesc(self, desc=""):
-        if desc is None:
-            return False
-        self.TDesc.set_text(desc)
-        return True
-
-    def getTypeDesc(self):
-        return unicode(self.TDesc.get_text())
-
-    def setTypeColor(self, v):
-        if v is None :
-            v="#000000000000"
-        try:
-            gtk_color=name2color(v)
-            self.bcol.set_color(gtk_color)
-        except:
-            print "exception in color change"
-            pass
-        col=self.bcol.get_color()
-        self.entryCol.set_text("#%04x%04x%04x" % (col.red, col.green, col.blue))
-        return True
-
-    def getTypeColor(self):
-        return self.bcol.get_color()
-
-    def getTypeId(self):
-        return unicode(self.TId.get_text())
-
-    def setTypeId(self, name=""):
-        if (name is None):
-            return False
-        self.TId.set_text(name)
-        return True
-
-    def getTypeName(self):
-        return unicode(self.TName.get_text())
-
-    def setTypeName(self, name=""):
-        if (name is None):
-            return False
-        self.TName.set_text(name)
-        return True
-
-    def getMimeType(self):
-        m = self.TMimeType.get_current_element()
-        return m
-
-    def setMimeType(self, mimetype):
-        store, i = dialog.generate_list_model( elements = [ ('text/plain', _("Plain text content")),
-                              ('application/x-advene-structured', _("Simple-structured content")),
-                              ('image/svg+xml', _("SVG graphics content")),
-                              ],active_element=mimetype)
-        self.TMimeType.set_model(store)
-        if i is None:
-            i = store.get_iter_first()
-        if i is not None:
-            self.TMimeType.set_active_iter(i)
-        return True
-
-    def addAttributeSpace(self, w, nom="New Attribute", type="None", con=""):
-        #ajouter eventuellement un contenu directement avec x params
-        #print "%s" % len(self.get_children()[0].get_children()[0].get_children())
-        boxAtt = gtk.HBox()
-        eNom = gtk.Entry()
-        eNom.set_text(nom)
-        eNom.set_size_request(100, 20)
-        eType = gtk.combo_box_new_text()
-        eType.append_text("None") # ajouter tous les types et focus sur le type type
-        eContrainte = gtk.Entry() # liste + entry ? bouton + fenetre pour creer ?
-        eContrainte.set_text(con)
-        eContrainte.set_size_request(50, 20)
-        bSuppr = gtk.Button("Remove")
-        bSuppr.set_size_request(50, 20)
-        boxAtt.pack_start(eNom)
-        boxAtt.pack_start(eType)
-        boxAtt.pack_start(eContrainte)
-        boxAtt.pack_start(bSuppr)
-        self.TAtts.append(boxAtt)
-        self.TAttsSpace.pack_start(boxAtt)
-        self.TAttsSpace.show_all()
-        return True
-
-    def initWithType(self, type):
-        if type is None:
-            # tout remettre a vide
-            self.type=None
-            self.setTypeName("")
-            self.setTypeId("")
-            self.setMimeType("")
-            self.setTypeColor(None)
-            self.setTypeDesc("")
-            self.TName.set_sensitive(False)
-            self.bcol.set_sensitive(False)
-            self.entryCol.set_sensitive(False)
-            self.TMimeType.set_sensitive(False)
-            return True
-        self.TName.set_sensitive(True)
-        self.bcol.set_sensitive(True)
-        self.entryCol.set_sensitive(True)
-        self.TMimeType.set_sensitive(True)
-        self.type = type
-        self.setTypeName(self.type.title)
-        self.setTypeId(self.type.id)
-        self.setMimeType(self.type.mimetype)
-        self.setTypeDesc("Non dipsonible actuellement")
-        self.setTypeColor(self.controller.get_element_color(self.type))
-        #boucle sur les attributs pour creer et remplir les lignes
-        #if (self.type.mimetype=='application/x-advene-relaxNG'):
-            # appel de la fonction qui parse l'arbre
-            # pour chaque element attribut, appel de la fonction qui ajoute une case aux attributs.
-        #    pass
-        self.TName.grab_focus()
-        return True
-
-    def saveType(self, button):
-        if self.type is None:
-            return
-        self.type.title=self.getTypeName()
-        self.type.mimetype=self.getMimeType()
-        col = self.getTypeColor()
-        try:
-            self.type.setMetaData(config.data.namespace, 'color', u"string:#%04x%04x%04x" % (col.red,col.green,col.blue))
-        except:
-            print "Error saving color for %s" % self.type
-
-        if isinstance(self.type, AnnotationType):
-            self.controller.notify('AnnotationTypeEditEnd', annotationtype=self.type)
-        elif isinstance(self.type, RelationType):
-            self.controller.notify('RelationTypeEditEnd', relationtype=self.type)
-        #save attributes
-        # send controller an event
-
-    def cancelType(self, button):
-        self.initWithType(self.type)
-
-class AnnotationTypeGroup (Group):
-    def __init__(self, controller=None, canvas=None, schema=None, name=" ", type=None, rx =0, ry=0, fontsize=22):
-        Group.__init__(self, parent = canvas.get_root_item ())
-        self.controller=controller
-        self.schema=schema
-        self.name=name
-        self.type=type
-        self.rect = None
-        self.text = None
-        self.color = "black"
-        self.fontsize=fontsize
-        self.rels=[] # rel groups
-        if type is None:
-            id_ = self.controller.package._idgenerator.get_id(AnnotationType)
-            self.controller.package._idgenerator.add(id_)
-            el=self.schema.createAnnotationType(
-                    ident=id_)
-            el.author=config.data.userid
-            el.date=self.controller.get_timestamp()
-            el.title=id_
-            el.mimetype='text/plain'
-            el.setMetaData(config.data.namespace, 'color', self.schema.rootPackage._color_palette.next())
-            el.setMetaData(config.data.namespace, 'item_color', 'here/tag_color')
-            self.schema.annotationTypes.append(el)
-            self.controller.notify('AnnotationTypeCreate', annotationtype=el)
-            if el is None:
-                return None
-            self.type=el
-        self.name=self.type.title
-        nbannot = len(self.type.getAnnotations())
-        if (self.controller.get_element_color(self.type) is not None):
-            self.color = self.controller.get_element_color(self.type)
-
-        self.rect = self.newRect (rx,ry,self.color)
-        self.text = self.newText (self.formattedName(),rx+5,ry+30)
-
-    def formattedName(self):
-        nbann = str(len(self.type.getAnnotations()))
-        if len(self.name)+len(nbann)>17:
-            e = 16-len(nbann)
-            return self.name[0:e] + ".. ("+nbann+")"
-        return self.name + " ("+nbann+")"
-
-    def newRect(self, xx, yy, color):
-        return goocanvas.Rect (parent = self,
-                                    x = xx,
-                                    y = yy,
-                                    width = 280,
-                                    height = 60,
-                                    fill_color_rgba = 0x3cb37150,
-                                    stroke_color = color,
-                                    line_width = 2.0)
-
-    def newText(self, txt, xx, yy):
-        return goocanvas.Text (parent = self,
-                                        text = txt,
-                                        x = xx,
-                                        y = yy,
-                                        width = -1,
-                                        anchor = gtk.ANCHOR_W,
-                                        font = "Sans Bold %s" % str(self.fontsize))
-
-    def remove(self):
-        while (len(self.rels)>0):
-            self.rels[0].remove()
-        self.controller.delete_element(self.type)
-        self.remove_drawing_only()
-
-    def remove_drawing_only(self):
-        for rel in self.rels:
-            rel.remove_drawing_only()
-        parent = self.get_parent()
-        child_num = parent.find_child (self)
-        parent.remove_child (child_num)
-
-    def update(self):
-        self.name=self.type.title
-        self.color = "black"
-        if (self.controller.get_element_color(self.type) is not None):
-            self.color = self.controller.get_element_color(self.type)
-            if self.rect is not None:
-                self.rect.props.stroke_color = self.color
-        if self.text is not None:
-            self.text.props.text = self.formattedName()
-
-class RelationTypeGroup (Group):
-    def __init__(self, controller=None, canvas=None, schema=None, name=" ", type=None, members=[], fontsize=22):
-        Group.__init__(self, parent = canvas.get_root_item ())
-        self.controller=controller
-        self.schema=schema
-        self.name=name
-        self.type=type
-        self.line=None
-        self.text=None
-        self.fontsize=fontsize
-        self.color = "black"
-        self.members=members
-        if self.type is None:
-            cr=CreateElementPopup(type_=RelationType,
-                                    parent=schema,
-                                    controller=self.controller)
-            rt=cr.popup(modal=True)
-            if rt is None:
-                return None
-            self.type=rt
-            if not self.members:
-                self.controller.gui.edit_element(self.type)
-            else:
-                # FIXME if more than 2 members
-                self.type.hackedMemberTypes=( '#' + self.members[0].id, '#' + self.members[1].id )
-                #need to propagate edition event
-        linked = self.type.getHackedMemberTypes()
-        #print "%s %s %s %s %s" % (self.type, self.name, self.schema, self.members, linked)
-        #print "%s" % self.members
-        self.members=[]
-        for i in linked:
-            # Add annotations types to members
-            typeA = self.getIdFromURI(i)
-            typ = helper.get_id(self.controller.package.getAnnotationTypes(), typeA)
-            #print "%s" % typ
-            if typ is not None:
-                self.members.append(typ)
-                #print "%s %s %s %s" % (i, typeA, typ, self.members)
-        #print "%s" % self.members
-        self.name=self.type.title
-        self.color = "black"
-        if (self.controller.get_element_color(self.type) is not None):
-            self.color = self.controller.get_element_color(self.type)
-        temp=[]
-        for i in self.members:
-            gr = self.findAnnotationTypeGroup(i.id, canvas)
-            #print "%s %s" % i.id, gr
-            x=1
-            y=1
-            w=0
-            h=0
-            if gr is not None:
-                x = gr.rect.get_bounds().x1
-                y = gr.rect.get_bounds().y1
-                w = gr.rect.props.width
-                h = gr.rect.props.height
-                if self not in gr.rels:
-                    gr.rels.append(self)
-            # 8 points of rect
-            temp.append([[x+w/2,y],[x+w/2,y+h],[x,y+h/2],[x+w,y+h/2],[x,y],[x+w,y],[x+w,y+h],[x,y+h]])
-        if len(temp)<2:
-            self.line=None
-            self.text=None
-            return None
-        # FIXME if more than 2 linked types
-        it=0
-        x1,y1,x2,y2,d = self.distMin(temp[it],temp[it+1])
-
-        if d==0:
-            # verify slot to attach the relation on annotation type before doing that
-            p = goocanvas.Points ([(x1, y1), (x1,y1-40), (x1+30, y1-40), (x2+30, y2)])
-        else:
-            p = goocanvas.Points ([(x1, y1), (x2, y2)])
-        #ligne
-        self.line = self.newLine (p,self.color)
-        if (d==0):
-            self.text = self.newText (self.formattedName(),x1+15,y1-40)	
-        else:
-            self.text = self.newText (self.formattedName(),(x1+x2)/2, (y1+y2)/2)
-
-
-    def formattedName(self):
-        nbrel = str(len(self.type.getRelations()))
-        #if len(self.name)+len(nbrel)>17:
-        #    e = 16-len(nbrel)
-        #    return self.name[0:e] + ".. ("+nbrel+")"
-        return self.name + " ("+str(nbrel)+")"
-
-    def newText(self, txt, xx, yy):
-        return goocanvas.Text (parent = self,
-                                        text = txt,
-                                        x = xx,
-                                        y = yy,
-                                        width = -1,
-                                        anchor = gtk.ANCHOR_CENTER,
-                                        font = "Sans Bold %s" % str(self.fontsize))
-    def newLine(self, p, color):
-        return goocanvas.Polyline (parent = self,
-                                        close_path = False,
-                                        points = p,
-                                        stroke_color = color,
-                                        line_width = 3.0,
-                                        start_arrow = False,
-                                        end_arrow = True,
-                                        arrow_tip_length =3.0,
-                                        arrow_length = 4.0,
-                                        arrow_width = 3.0
-                                        )
-
-    #FIXME : hack to find id from type's uri
-    def getIdFromURI(self, uri):
-        return uri[1:]
-
-    def findAnnotationTypeGroup(self, typeId, canvas):
-        root = canvas.get_root_item ()
-        for i in range(0, root.get_n_children()):
-            if hasattr(root.get_child(i), 'type') and root.get_child(i).type.id == typeId:
-                return root.get_child(i)
-        return None
-
-    # function to calculate min distance between x points
-    def distMin(self,l1,l2):
-        d=-1
-        xd1=xd2=yd1=yd2=0
-        for i in range(len(l1)):
-            x1 = l1[i][0]
-            y1 = l1[i][1]
-            for j in range(len(l2)):
-                x2 = l2[j][0]
-                y2 = l2[j][1]
-                nd=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
-                if ((d==-1) or (nd < d)):
-                    d = nd
-                    xd1 = x1
-                    xd2 = x2
-                    yd1 = y1
-                    yd2 = y2
-        return xd1,yd1,xd2,yd2,d
-
-    def redraw(self):
-        #print self.members
-        temp=[]
-        for i in self.members:
-            gr = self.findAnnotationTypeGroup(i.id, self.get_canvas())
-            x=1
-            y=1
-            w=0
-            h=0
-            if gr is not None:
-                x = gr.rect.get_bounds().x1
-                y = gr.rect.get_bounds().y1
-                w = gr.rect.props.width
-                h = gr.rect.props.height
-                if self not in gr.rels:
-                    gr.rels.append(self)
-            # 8 points
-            temp.append([[x+w/2,y],[x+w/2,y+h],[x,y+h/2],[x+w,y+h/2],[x,y],[x+w,y],[x+w,y+h],[x,y+h]])
-        if len(temp)<2:
-            self.line=None
-            self.text=None
-            return None
-        x1,y1,x2,y2,d = self.distMin(temp[0],temp[1])
-        nbrel = len(self.type.getRelations())
-        if d==0:
-            # modifier en fonction du slot
-            p = goocanvas.Points ([(x1, y1), (x1,y1-40), (x1+30, y1-40), (x2+30, y2)])
-            if self.text is None:
-                self.text = self.newText (self.formattedName(),x1,y1)	
-            self.text.translate(x1-130-self.text.get_bounds().x1, y1-60-self.text.get_bounds().y1)
-        else:
-            p = goocanvas.Points ([(x1, y1), (x2, y2)])
-            if self.text is None:
-                self.text = self.newText (self.formattedName(),(x1+x2)/2, (y1+y2)/2)
-            self.text.translate((x1+x2)/2-self.text.get_bounds().x1, (y1+y2)/2-self.text.get_bounds().y1)
-        if self.line  is None:
-            self.line = self.newLine (p,self.color)
-        self.line.props.points=p
-
-    def remove(self):
-        self.controller.delete_element(self.type)
-        self.remove_drawing_only()
-
-    def remove_drawing_only(self):
-        for i in self.members:
-            gr = self.findAnnotationTypeGroup(i.id, self.get_canvas())
-            if gr is not None and self in gr.rels:
-                gr.rels.remove(self)
-            else:
-                #Annotation group outside schema
-                #we don't remove the link because it doesn't have one
-                print "%s n'est pas dans ce schema ou a deja ete traite" % i.id
-        parent = self.get_parent()
-        child_num = parent.find_child (self)
-        parent.remove_child(child_num)
-
-    def update(self):
-        linked = self.type.getHackedMemberTypes()
-        self.members=[]
-        for i in linked:
-            # Add annotations types to members
-            typeA = self.getIdFromURI(i)
-            typ = helper.get_id(self.controller.package.getAnnotationTypes(), typeA)
-            if typ is not None:
-                self.members.append(typ)
-        self.name=self.type.title
-        self.color = "black"
-        if (self.controller.get_element_color(self.type) is not None):
-            self.color = self.controller.get_element_color(self.type)
-            if self.line is not None:
-                self.line.props.stroke_color = self.color
-        if self.text is not None:
-            nbrel = len(self.type.getRelations())
-            self.text.props.text = self.formattedName()
-        self.redraw()
-
-
diff --git a/lib/advene/gui/edit/shapewidget.py b/lib/advene/gui/edit/shapewidget.py
index e957475..cfd3bff 100755
--- a/lib/advene/gui/edit/shapewidget.py
+++ b/lib/advene/gui/edit/shapewidget.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -39,8 +39,14 @@ FIXME: find a way to pass the background path
 
 import os
 import sys
-import gtk
+import gi
+gi.require_version('Gdk', '3.0')
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gdk
+from gi.repository import GdkPixbuf
+from gi.repository import Gtk
 import cairo
+import math
 import urllib
 import re
 import types
@@ -88,8 +94,8 @@ class Shape(object):
     # created. This implies a different interaction.
     MULTIPOINT = False
 
-    def __init__(self, name=SHAPENAME, color="green", dimensions=None):
-        self.name=name
+    def __init__(self, name=None, color="green", dimensions=None):
+        self.name=name or self.SHAPENAME
         self.color=color
         self.linewidth=2
         self.opacity = 1.0
@@ -125,16 +131,30 @@ class Shape(object):
         """
         return ( (0, 0), (10, 10) )
 
-    def render(self, pixmap, invert=False):
-        """Render the shape on the given pixmap.
+    def render(self, context, invert=False):
+        """Render the shape on the given context
 
-        @param pixmap: the destination pixmap
-        @type pixmap: gtk.gdk.Pixmap
+        @param context: the destination context
+        @type context: cairo.Context
         @param invert: should the rendering inverse the selection ?
         @type invert: boolean
         """
         return
 
+    def render_setup(self, context, invert=False):
+        """Setup context for common attributes.
+        """
+        context.set_line_width(self.linewidth)
+        col = Gdk.RGBA()
+        col.parse(self.color)
+        col.alpha = self.opacity
+        Gdk.cairo_set_source_rgba(context, col)
+
+        if invert:
+            context.set_operator(cairo.OPERATOR_XOR)
+        else:
+            context.set_operator(cairo.OPERATOR_OVER)
+
     def translate(self, vector):
         """Translate the shape.
 
@@ -307,31 +327,31 @@ class Shape(object):
     def edit_properties_widget(self):
         """Build a widget to edit the shape properties.
         """
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
         def label_widget(label, widget, expand=False):
-            hb=gtk.HBox()
-            hb.add(gtk.Label(label))
-            hb.pack_start(widget, expand=expand)
+            hb=Gtk.HBox()
+            hb.add(Gtk.Label(label=label))
+            hb.pack_start(widget, expand, True, 0)
             return hb
 
         # Name
-        namesel = gtk.Entry()
+        namesel = Gtk.Entry()
         namesel.set_text(self.name)
-        vbox.pack_start(label_widget(_("Name"), namesel), expand=False)
+        vbox.pack_start(label_widget(_("Name"), namesel), False, False, 0)
 
         # Link
-        linksel = gtk.Entry()
+        linksel = Gtk.Entry()
         linksel.set_text(self.link or '')
-        vbox.pack_start(label_widget(_("Link"), linksel), expand=False)
+        vbox.pack_start(label_widget(_("Link"), linksel), False, False, 0)
 
         # Linklabel
-        linklabelsel = gtk.Entry()
+        linklabelsel = Gtk.Entry()
         linklabelsel.set_text(self.link_label or '')
-        vbox.pack_start(label_widget(_("Link label"), linklabelsel), expand=False)
+        vbox.pack_start(label_widget(_("Link label"), linklabelsel), False, False, 0)
 
         # Color
-        colorsel = gtk.combo_box_new_text()
+        colorsel = Gtk.ComboBoxText()
         for s in COLORS:
             colorsel.append_text(s)
         try:
@@ -339,47 +359,47 @@ class Shape(object):
         except IndexError:
             i=0
         colorsel.set_active(i)
-        vbox.pack_start(label_widget(_("Color"), colorsel), expand=False)
+        vbox.pack_start(label_widget(_("Color"), colorsel), False, False, 0)
 
         # Linewidth
-        linewidthsel = gtk.HScale()
+        linewidthsel = Gtk.HScale()
         linewidthsel.set_range(1, 15)
         linewidthsel.set_increments(1, 1)
         linewidthsel.set_value(self.linewidth)
-        vbox.pack_start(label_widget(_("Linewidth"), linewidthsel, True), expand=True)
+        vbox.pack_start(label_widget(_("Linewidth"), linewidthsel, True), True, True, 0)
 
         # Filled
-        filledsel = gtk.ToggleButton()
+        filledsel = Gtk.ToggleButton()
         filledsel.set_active(self.filled)
-        vbox.pack_start(label_widget(_("Filled"), filledsel), expand=False)
+        vbox.pack_start(label_widget(_("Filled"), filledsel), False, False, 0)
 
         # Linewidth
-        opacitysel = gtk.HScale()
+        opacitysel = Gtk.HScale()
         opacitysel.set_range(0, 1)
         opacitysel.set_digits(1)
         opacitysel.set_increments(.1, .2)
         opacitysel.set_value(self.opacity)
-        vbox.pack_start(label_widget(_("Opacity"), opacitysel, True), expand=True)
+        vbox.pack_start(label_widget(_("Opacity"), opacitysel, True), True, True, 0)
 
         # svg_attrib
-        store=gtk.ListStore(str, str)
+        store=Gtk.ListStore(str, str)
         for k, v in self.svg_attrib.iteritems():
             store.append([k, v])
-        treeview=gtk.TreeView(model=store)
+        treeview=Gtk.TreeView(model=store)
 
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn("Attribute", renderer, text=0)
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn("Attribute", renderer, text=0)
         column.set_resizable(True)
         treeview.append_column(column)
 
-        renderer = gtk.CellRendererText()
+        renderer = Gtk.CellRendererText()
         renderer.set_property('editable', True)
-        column = gtk.TreeViewColumn("Value", renderer, text=1)
+        column = Gtk.TreeViewColumn("Value", renderer, text=1)
         column.set_resizable(True)
         treeview.append_column(column)
 
         treeview.show_all()
-        e=gtk.Expander('SVG attributes')
+        e=Gtk.Expander.new('SVG attributes')
         e.add(treeview)
         e.set_expanded(False)
         vbox.add(e)
@@ -401,31 +421,31 @@ class Shape(object):
         """
         edit=self.edit_properties_widget()
 
-        d = gtk.Dialog(title=_("Properties of %s") % self.name,
+        d = Gtk.Dialog(title=_("Properties of %s") % self.name,
                        parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_OK, gtk.RESPONSE_OK,
-                                 gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL ) )
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_OK, Gtk.ResponseType.OK,
+                                 Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL ) )
 
         d.vbox.add(edit)
 
         def keypressed_cb(widget=None, event=None):
-            if event.keyval == gtk.keysyms.Return:
-                d.response(gtk.RESPONSE_OK)
+            if event.keyval == Gdk.KEY_Return:
+                d.response(Gtk.ResponseType.OK)
                 return True
-            elif event.keyval == gtk.keysyms.Escape:
-                d.response(gtk.RESPONSE_CANCEL)
+            elif event.keyval == Gdk.KEY_Escape:
+                d.response(Gtk.ResponseType.CANCEL)
                 return True
             return False
         d.connect('key-press-event', keypressed_cb)
 
         edit.show_all()
         res=d.run()
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             # Get new values
             for n in ('name', 'link', 'link_label', 'uri', 'text'):
                 if n in edit.widgets:
-                    setattr(self, n, unicode(edit.widgets[n].get_text()))
+                    setattr(self, n, edit.widgets[n].get_text().decode('utf-8'))
             self.color = COLORS[edit.widgets['color'].get_active()]
             for n in ('linewidth', 'textsize', 'arrowwidth'):
                 if n in edit.widgets:
@@ -468,17 +488,16 @@ class Rectangle(Shape):
     def get_bounds(self):
         return ( (self.x, self.y), (self.x + self.width, self.y + self.height) )
 
-    def render(self, pixmap, invert=False):
-        col=pixmap.get_colormap().alloc_color(self.color)
-        gc=pixmap.new_gc(foreground=col, line_width=self.linewidth)
-        if invert:
-            gc.set_function(gtk.gdk.INVERT)
-        pixmap.draw_rectangle(gc,
-                  self.filled,
-                  self.x,
-                  self.y,
-                  self.width,
-                  self.height)
+    def render(self, context, invert=False):
+        self.render_setup(context, invert)
+        context.rectangle(self.x,
+                      self.y,
+                      self.width,
+                      self.height)
+        if self.filled:
+            context.fill()
+        else:
+            context.stroke()
         return
 
     def translate(self, vector):
@@ -543,27 +562,20 @@ class Text(Rectangle):
         # FIXME: maybe we should consider a relative size (wrt. canvas size)
         self.textsize=20
 
-    def render(self, pixmap, invert=False):
-        width, height=pixmap.get_size()
-        context=pixmap.cairo_create()
+    def get_bounds(self):
+        return ( (self.x, self.y - self.height), (self.x + self.width, self.y) )
 
+    def render(self, context, invert=False):
+        self.render_setup(context, invert)
         context.select_font_face("Helvetica", cairo.FONT_SLANT_NORMAL,
                                  cairo.FONT_WEIGHT_NORMAL)
         context.set_font_size(self.textsize)
 
-        extents=context.text_extents(self.text)
+        extents = context.text_extents(self.text)
 
         # Fix width, height attributes
         self.width = extents[2]
         self.height = extents[3]
-
-        # FIXME: does not work correctly...
-        if invert:
-            context.set_operator(cairo.OPERATOR_ADD)
-        color=gtk.gdk.color_parse(self.color)
-        rgba=(color.red / 65536.0, color.green / 65536.0, color.blue / 65536.0, 1.0)
-        context.set_source_rgba(*rgba)
-
         context.move_to(self.x, self.y)
         try:
             context.show_text(self.text)
@@ -641,27 +653,27 @@ class Text(Rectangle):
         vbox=super(Text, self).edit_properties_widget()
 
         def label_widget(label, widget):
-            hb=gtk.HBox()
-            hb.add(gtk.Label(label))
-            hb.pack_start(widget, expand=False)
+            hb=Gtk.HBox()
+            hb.add(Gtk.Label(label=label))
+            hb.pack_start(widget, False, True, 0)
             return hb
 
         # Text
-        textsel = gtk.Entry()
+        textsel = Gtk.Entry()
         textsel.set_text(self.text)
         l=label_widget(_("Text"), textsel)
-        vbox.pack_start(l, expand=False)
+        vbox.pack_start(l, False, True, 0)
         # Put the text at the beginning
         vbox.reorder_child(l, 0)
         vbox.widgets['text']=textsel
 
         # Text size
-        textsizesel = gtk.SpinButton()
+        textsizesel = Gtk.SpinButton()
         textsizesel.set_range(4, 80)
         textsizesel.set_increments(1, 4)
         textsizesel.set_value(self.textsize)
         l=label_widget(_("Textsize"), textsizesel)
-        vbox.pack_start(l, expand=False)
+        vbox.pack_start(l, False, True, 0)
         vbox.reorder_child(l, 1)
         vbox.widgets['textsize']=textsizesel
 
@@ -689,7 +701,7 @@ class Image(Rectangle):
         super(Image, self).__init__(name, color, dimensions)
         self.uri=uri
 
-    def render(self, pixmap, invert=False):
+    def render(self, context, invert=False):
         # FIXME
         return
 
@@ -750,15 +762,15 @@ class Image(Rectangle):
         vbox=super(Image, self).edit_properties_widget()
 
         def label_widget(label, widget):
-            hb=gtk.HBox()
-            hb.add(gtk.Label(label))
-            hb.pack_start(widget, expand=False)
+            hb=Gtk.HBox()
+            hb.add(Gtk.Label(label=label))
+            hb.pack_start(widget, False, True, 0)
             return hb
 
         # URI
-        urisel = gtk.Entry()
+        urisel = Gtk.Entry()
         urisel.set_text(self.uri)
-        vbox.pack_start(label_widget(_("Href"), urisel), expand=False)
+        vbox.pack_start(label_widget(_("Href"), urisel), False, False, 0)
         vbox.widgets['uri']=urisel
         return vbox
 
@@ -790,31 +802,26 @@ class Line(Rectangle):
     def get_bounds(self):
         return ( (self.x1, self.y1), (self.x2, self.y2 ) )
 
-    def render(self, pixmap, invert=False):
-        col=pixmap.get_colormap().alloc_color(self.color)
-        gc=pixmap.new_gc(foreground=col, line_width=self.linewidth)
-        if invert:
-            gc.set_function(gtk.gdk.INVERT)
-        if self.filled:
-            gc.set_fill(gtk.gdk.SOLID)
-        pixmap.draw_line(gc,
-                  self.x1,
-                  self.y1,
-                  self.x2,
-                  self.y2)
+    def render(self, context, invert=False):
+        self.render_setup(context, invert)
+        context.move_to(self.x1, self.y1)
+        context.line_to(self.x2, self.y2)
         if self.arrow:
             theta=atan2( self.width, self.height )
             ox=self.arrowwidth / 2 + 1
             oy=self.arrowwidth
-            pixmap.draw_polygon(gc,
-                                True,
-                                ( (self.x2, self.y2),
-                                  (int(self.x2 - ox * cos(theta) - oy * sin(theta)),
-                                   int(self.y2 + ox * sin(theta) - oy * cos(theta)) ),
-                                  (int(self.x2 + ox * cos(theta) - oy * sin(theta)),
-                                   int(self.y2 - ox * sin(theta) - oy * cos(theta)) ),
-                                  )
-                                )
+            context.stroke()
+            context.new_path()
+            context.move_to(self.x2, self.y2)
+            context.line_to(int(self.x2 - ox * cos(theta) - oy * sin(theta)),
+                            int(self.y2 + ox * sin(theta) - oy * cos(theta)))
+            context.line_to(int(self.x2 + ox * cos(theta) - oy * sin(theta)),
+                            int(self.y2 - ox * sin(theta) - oy * cos(theta)))
+            context.close_path()
+        if self.filled:
+            context.fill()
+        else:
+            context.stroke()
         return
 
     def translate(self, vector):
@@ -864,24 +871,24 @@ class Line(Rectangle):
         vbox=super(Line, self).edit_properties_widget()
 
         def label_widget(label, widget):
-            hb=gtk.HBox()
-            hb.add(gtk.Label(label))
-            hb.pack_start(widget, expand=False)
+            hb=Gtk.HBox()
+            hb.add(Gtk.Label(label=label))
+            hb.pack_start(widget, False, True, 0)
             return hb
 
-        draw_arrow = gtk.CheckButton(_("Draw an arrow"))
+        draw_arrow = Gtk.CheckButton(_("Draw an arrow"))
         draw_arrow.set_active(self.arrow)
-        vbox.pack_start(draw_arrow)
+        vbox.pack_start(draw_arrow, True, True, 0)
         vbox.reorder_child(draw_arrow, 0)
         vbox.widgets['arrow']=draw_arrow
 
         # Arrow size
-        arrowsize = gtk.SpinButton()
+        arrowsize = Gtk.SpinButton()
         arrowsize.set_range(1, 40)
         arrowsize.set_increments(1, 4)
         arrowsize.set_value(self.arrowwidth)
         l=label_widget(_("Arrow size"), arrowsize)
-        vbox.pack_start(l, expand=False)
+        vbox.pack_start(l, False, True, 0)
         vbox.reorder_child(l, 1)
         vbox.widgets['arrowwidth']=arrowsize
         return vbox
@@ -1005,26 +1012,22 @@ class Path(Shape):
                  (max(x for x, y in self.path),
                   max(y for x, y in self.path)) )
 
-    def render(self, pixmap, invert=False, partial=False):
-        col = pixmap.get_colormap().alloc_color(self.color)
-        gc = pixmap.new_gc(foreground=col, line_width=self.linewidth)
-        if invert:
-            gc.set_function(gtk.gdk.INVERT)
+    def render(self, context, invert=False, partial=False):
+        self.render_setup(context, invert)
         if partial:
             # Only redraw last line
             for (x1, y1), (x2, y2) in self.pathlines[-1:]:
-                pixmap.draw_line(gc,
-                                 x1,
-                                 y1,
-                                 x2,
-                                 y2)
+                context.move_to(x1, y1)
+                context.line_to(x2, y2)
         else:
             for (x1, y1), (x2, y2) in self.pathlines:
-                pixmap.draw_line(gc,
-                                 x1,
-                                 y1,
-                                 x2,
-                                 y2)
+                context.move_to(x1, y1)
+                context.line_to(x2, y2)
+        if self.filled:
+            context.close_path()
+            context.fill()
+        else:
+            context.stroke()
         return
 
     def translate(self, vector):
@@ -1099,9 +1102,9 @@ class Path(Shape):
         """
         vbox=super(Path, self).edit_properties_widget()
 
-        closed_path = gtk.CheckButton(_("Close path"))
+        closed_path = Gtk.CheckButton(_("Close path"))
         closed_path.set_active(self.closed)
-        vbox.pack_start(closed_path)
+        vbox.pack_start(closed_path, True, True, 0)
         vbox.reorder_child(closed_path, 0)
         vbox.widgets['closed']=closed_path
 
@@ -1196,16 +1199,13 @@ class Circle(Rectangle):
         #self.r = int(sqrt( (self.width / 2) ** 2 + (self.height / 2) ** 2))
         self.r = self.width / 2
 
-    def render(self, pixmap, invert=False):
-        col=pixmap.get_colormap().alloc_color(self.color)
-        gc=pixmap.new_gc(foreground=col, line_width=self.linewidth)
-        if invert:
-            gc.set_function(gtk.gdk.INVERT)
-        pixmap.draw_arc(gc,
-                  self.filled,
-                  self.x, self.y,
-                  self.width, self.width,
-                  0, 360 * 64)
+    def render(self, context, invert=False):
+        self.render_setup(context, invert)
+        context.arc(self.x, self.y, self.width, 0, 2 * math.pi)
+        if self.filled:
+            context.fill()
+        else:
+            context.stroke()
         return
 
     def __contains__(self, point):
@@ -1255,16 +1255,18 @@ class Ellipse(Rectangle):
         self.rx = self.width / 2
         self.ry = self.height / 2
 
-    def render(self, pixmap, invert=False):
-        col=pixmap.get_colormap().alloc_color(self.color)
-        gc=pixmap.new_gc(foreground=col, line_width=self.linewidth)
-        if invert:
-            gc.set_function(gtk.gdk.INVERT)
-        pixmap.draw_arc(gc,
-                  self.filled,
-                  self.x, self.y,
-                  self.width, self.height,
-                  0, 360 * 64)
+    def render(self, context, invert=False):
+        self.render_setup(context, invert)
+        context.save()
+        context.translate(self.x + self.width / 2., self.y + self.height / 2.)
+        if self.width and self.height:
+            context.scale(self.width / 2., self.height / 2.)
+        context.arc(0., 0., 1., 0., 2 * math.pi)
+        context.restore()
+        if self.filled:
+            context.fill()
+        else:
+            context.stroke()
         return
 
     def __contains__(self, point):
@@ -1353,9 +1355,9 @@ class ShapeDrawer:
     @type callback: method taking an object (shape) as parameter
 
     @ivar background: the canvas background
-    @type background: gtk.Image
+    @type background: Gtk.Image
     @ivar objects: the list of defined objects
-    @type objects: gtk.ListStore
+    @type objects: Gtk.ListStore
     @ivar selection: the rectangular selection coordinates
     @type selection: a list of 2 lists
     @ivar feedback_shape: the currently edited shape, displayed as feedback
@@ -1367,25 +1369,26 @@ class ShapeDrawer:
     @ivar mode: the current editing mode ("", "create", "resize" or "translate")
     @type mode: string
 
-    @ivar pixmap: the edited pixmap
-    @type pixmap: gtk.gdk.Pixmap
+    @ivar surface: the cached surface
+    @type surface: cairo.Surface
+
     @ivar canvaswidth, canvasheight: the canvas dimensions
     @type canvaswidth, canvasheight: int
 
     @ivar widget: the gtk Widget for the component
-    @type widget: gtk.Widget
+    @type widget: Gtk.Widget
 
     """
     def __init__(self, callback=None, background=None):
         """
         @param callback: the callback method
         @param background: an optional background image
-        @type background: gtk.gdk.Pixbuf
+        @type background: GdkPixbuf.Pixbuf
         """
         self.callback = callback or self.default_callback
 
         # Couples object - name
-        self.objects = gtk.ListStore( object, str )
+        self.objects = Gtk.ListStore( object, str )
         def handle_reorder(*p):
             self.plot()
             return True
@@ -1400,24 +1403,24 @@ class ShapeDrawer:
         self.shape_class = Path
         self.default_color = 'green'
 
-        self.resize_cursor = gtk.gdk.Cursor(gtk.gdk.HAND2)
-        self.inside_cursor = gtk.gdk.Cursor(gtk.gdk.FLEUR)
+        self.resize_cursor = Gdk.Cursor.new(Gdk.CursorType.HAND2)
+        self.inside_cursor = Gdk.Cursor.new(Gdk.CursorType.FLEUR)
 
         self._svg_dimensions = None
 
         # mode: "create", "resize" or "translate"
         self.mode = ""
 
-        self.pixmap = None
+        self.surface = None
 
-        self.widget = gtk.DrawingArea()
-        self.widget.connect('expose-event', self.expose_event)
-        self.widget.connect('configure-event', self.configure_event)
+        self.widget = Gtk.DrawingArea()
+        self.widget.connect('configure-event', self.configure_cb)
+        self.widget.connect('draw', self.draw_cb)
         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
-                               | gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.KEY_PRESS_MASK | gtk.gdk.KEY_RELEASE_MASK )
+        self.widget.set_events(Gdk.EventMask.EXPOSURE_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK | Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK
+                               | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.POINTER_MOTION_HINT_MASK | Gdk.EventMask.KEY_PRESS_MASK | Gdk.EventMask.KEY_RELEASE_MASK )
 
         self.background=None
         # FIXME: Hardcoded dimensions are bad.
@@ -1448,7 +1451,7 @@ class ShapeDrawer:
                 self.widget.set_size_request(self.canvaswidth, self.canvasheight)
             else:
                 # Resize background pixbuf
-                pixbuf=pixbuf.scale_simple(self.canvaswidth, self.canvasheight, gtk.gdk.INTERP_BILINEAR)
+                pixbuf=pixbuf.scale_simple(self.canvaswidth, self.canvasheight, GdkPixbuf.InterpType.BILINEAR)
         self.background = pixbuf
         self.plot()
 
@@ -1464,7 +1467,7 @@ class ShapeDrawer:
 
         @param o: the searched object
         @return: the iterator
-        @rtype: gtk.Iterator
+        @rtype: Gtk.Iterator
         """
         i = self.objects.get_iter_first()
         while i is not None:
@@ -1513,24 +1516,32 @@ class ShapeDrawer:
         self._svg_dimensions = t
     svg_dimensions = property(get_svg_dimensions, set_svg_dimensions)
 
-    def configure_event(self, widget, event):
-        if self.background:
-            w=self.background.get_width()
-            h=self.background.get_height()
-        else:
-            x, y, w, h = widget.get_allocation()
-
-        self.pixmap = gtk.gdk.Pixmap(widget.window, w, h)
-        self.canvaswidth = w
-        self.canvasheight = h
+    def configure_cb(self, drawingarea, event=None):
+        allocation = drawingarea.get_allocation()
+        self.surface = drawingarea.get_window().create_similar_surface(cairo.CONTENT_COLOR,
+                                                                       allocation.width,
+                                                                       allocation.height)
         self.plot()
         return True
 
-    # Redraw the screen from the backing pixmap
-    def expose_event(self, widget, event):
-        x, y, w, h = event.area
-        widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL], self.pixmap, x, y, x, y, w, h)
-        return False
+    def draw_cb(self, drawingarea, context):
+        context.set_source_surface(self.surface, 0, 0)
+        context.paint()
+        if self.feedback_shape is not None:
+            self.feedback_shape.render(context)
+        return True
+
+    # Redraw the cached surface
+    def draw_objects(self, context):
+        if self.background:
+            Gdk.cairo_set_source_pixbuf(context, self.background, 0, 0)
+            context.paint()
+        for o in self.objects:
+            # o[0] may be None, if plot() is called from the callback
+            # of a ListStore signal
+            if o[0] is not None:
+                o[0].render(context)
+        return
 
     def clicked_shape(self, point):
         """Check if point is on a shape.
@@ -1553,15 +1564,15 @@ class ShapeDrawer:
 
     def add_menuitem(self, menu=None, item=None, action=None, *param, **kw):
         if item is None or item == "":
-            i = gtk.SeparatorMenuItem()
+            i = Gtk.SeparatorMenuItem()
         else:
-            i = gtk.MenuItem(item)
+            i = Gtk.MenuItem(item)
         if action is not None:
             i.connect('activate', action, *param, **kw)
         menu.append(i)
 
     def popup_menu(self, shape):
-        menu = gtk.Menu()
+        menu = Gtk.Menu()
 
         def add_item(*p, **kw):
             self.add_menuitem(menu, *p, **kw)
@@ -1589,14 +1600,14 @@ class ShapeDrawer:
         add_item(_("SVG"), dump_svg, shape)
 
         menu.show_all()
-        menu.popup(None, None, None, 0, gtk.get_current_event_time())
+        menu.popup_at_pointer(None)
 
         return True
 
     # Start marking selection
     def button_press_event(self, widget, event):
         point = (int(event.x), int(event.y))
-        if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+        if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
             if self.feedback_shape and self.feedback_shape.MULTIPOINT and self.mode == 'create':
                 # Validate the shape
                 self.feedback_shape.validate()
@@ -1646,7 +1657,7 @@ class ShapeDrawer:
                 self.feedback_shape.remove_controlled_point()
                 self.plot()
             else:
-                if event.state & gtk.gdk.SHIFT_MASK:
+                if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                     sel, c = self.controlled_shape( point )
                     if sel is not None:
                         # Right click on a control point - remove it
@@ -1662,10 +1673,6 @@ class ShapeDrawer:
 
     # End of selection
     def button_release_event(self, widget, event):
-        x = int(event.x)
-        y = int(event.y)
-
-        retval = ( self.selection[0][:], self.selection[1][:])
         if self.mode in ('resize', 'translate'):
             self.mode = ''
 
@@ -1691,19 +1698,18 @@ class ShapeDrawer:
     # Draw rectangle during mouse movement
     def motion_notify_event(self, widget, event):
         if event.is_hint:
-            x, y, state = event.window.get_pointer()
+            pointer = event.get_window().get_pointer()
+            x = pointer[1]
+            y = pointer[2]
         else:
             x = event.x
             y = event.y
-            state = event.state
 
         if self.feedback_shape is not None:
-            if self.selection[1][0] is not None:
-                # Remove previous feedback shape (with old dimensions)
-                self.feedback_shape.render(self.pixmap, invert=True)
-
             self.selection[1][0], self.selection[1][1] = int(x), int(y)
 
+            oldbounds = self.feedback_shape.get_bounds()
+
             if self.mode == "translate":
                 self.feedback_shape.translate( (x - self.selection[0][0],
                                                 y - self.selection[0][1] ) )
@@ -1712,11 +1718,17 @@ class ShapeDrawer:
             elif self.mode == "resize" or self.mode == "create":
                 self.feedback_shape.set_bounds( self.selection )
 
-            if self.feedback_shape.MULTIPOINT and self.mode == 'create':
-                self.feedback_shape.render(self.pixmap, invert=True, partial=True)
-            else:
-                self.feedback_shape.render(self.pixmap, invert=True)
-            self.draw_drawable()
+            bounds = self.feedback_shape.get_bounds()
+            minx = sys.maxint
+            miny = sys.maxint
+            maxx = 0
+            maxy = 0
+            for l in (oldbounds, bounds):
+                minx = min( (l[0][0], l[1][0], minx) )
+                miny = min( (l[0][1], l[1][1], miny) )
+                maxx = max( (l[0][0], l[1][0], maxx) )
+                maxy = max( (l[0][1], l[1][1], maxx) )
+            widget.queue_draw_area(minx - 1, miny - 1, maxx - minx + 2, maxy - miny + 2)
         else:
             # Check for control points
             cursor = None
@@ -1728,42 +1740,16 @@ class ShapeDrawer:
                 if point in o[0]:
                     cursor = self.inside_cursor
                     break
-            self.widget.window.set_cursor(cursor)
-
-    def draw_drawable(self):
-        """Render the pixmap in the drawingarea."""
-        if self.widget.window is None:
-            # The widget may not be realized, in which case simply return
-            return
-        x, y, w, h = self.widget.get_allocation()
-        self.widget.window.draw_drawable(self.widget.get_style().fg_gc[gtk.STATE_NORMAL], self.pixmap, 0, 0, 0, 0, w, h)
+            self.widget.get_window().set_cursor(cursor)
 
     def plot(self):
-        """Draw in the pixmap.
+        """Draw in the cached surface
         """
-        if self.pixmap is None:
-            return
-        gc=self.widget.get_style().white_gc
-        if gc is None:
-            return
-        self.pixmap.draw_rectangle(gc, True, 0, 0, self.canvaswidth, self.canvasheight)
-
-        if self.background:
-            self.pixmap.draw_pixbuf(gc,
-                                    self.background,
-                                    0, 0,
-                                    0, 0)
-
-        for o in self.objects:
-            # o[0] may be None, if plot() is called from the callback
-            # of a ListStore signal
-            if o[0] is not None:
-                o[0].render(self.pixmap)
-
-        if self.feedback_shape is not None:
-            self.feedback_shape.render(self.pixmap, invert=True)
-
-        self.draw_drawable()
+        if self.surface:
+            context = cairo.Context(self.surface)
+            self.draw_objects(context)
+        self.widget.queue_draw()
+        return
 
     def get_svg(self, relative=False):
         """Return a SVG representation.
@@ -1851,7 +1837,7 @@ class ShapeDrawer:
                         if o.uri.startswith('http:'):
                             # http url, download the file
                             (fname, header)=urllib.urlretrieve(o.uri)
-                            i=gtk.Image()
+                            i=Gtk.Image()
                             print "Loaded background from ", o.uri, " copy in", fname
                             i.set_from_file(fname)
                         else:
@@ -1862,10 +1848,10 @@ class ShapeDrawer:
                                 uri=os.path.join( current_path, o.uri)
                             else:
                                 uri=o.uri
-                            i=gtk.Image()
+                            i=Gtk.Image()
                             i.set_from_file(uri)
-                            if i.get_storage_type() != gtk.IMAGE_PIXBUF:
-                                p=gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,
+                            if i.get_storage_type() != Gtk.ImageType.PIXBUF:
+                                p=GdkPixbuf.Pixbuf(GdkPixbuf.Colorspace.RGB,
                                                  True, 8, o.width, o.height)
                                 p.fill(0xdeadbeaf)
                                 i.set_from_pixbuf(p)
@@ -1893,8 +1879,8 @@ class ShapeEditor(object):
 
     This component provides an example of using ShapeWidget.
     """
-    def __init__(self, background=None, pixmap_dir=None):
-        if isinstance(background, gtk.Image):
+    def __init__(self, background=None, icon_dir=None):
+        if isinstance(background, Gtk.Image):
             background = background.get_pixbuf()
         self.drawer = ShapeDrawer(background=background)
         self.shapes = [ Rectangle, Ellipse, Line, Text, Path ]
@@ -1903,15 +1889,15 @@ class ShapeEditor(object):
         self.drawer.default_color = self.colors[0]
 
         self.key_mapping={
-            gtk.keysyms.l: Line,
-            gtk.keysyms.r: Rectangle,
-            gtk.keysyms.t: Text,
-            gtk.keysyms.c: Ellipse,
-            gtk.keysyms.p: Path,
-            #gtk.keysyms.i: Image,
+            Gdk.KEY_l: Line,
+            Gdk.KEY_r: Rectangle,
+            Gdk.KEY_t: Text,
+            Gdk.KEY_c: Ellipse,
+            Gdk.KEY_p: Path,
+            #Gdk.KEY_i: Image,
             }
 
-        self.pixmap_name={
+        self.icon_name={
             Rectangle: 'shape_rectangle.png',
             Line: 'shape_arrow.png',
             Text: 'shape_text.png',
@@ -1919,7 +1905,7 @@ class ShapeEditor(object):
             Image: 'shape_image.png',
             Path: 'shape_path.png',
             }
-        self.widget=self.build_widget(pixmap_dir)
+        self.widget=self.build_widget(icon_dir)
         self.widget.connect('key-press-event', self.key_press_event)
 
     def key_press_event(self, widget, event):
@@ -1932,7 +1918,7 @@ class ShapeEditor(object):
         elif callable(cl):
             cl(widget, event)
             return True
-        elif event.keyval == gtk.keysyms.Delete:
+        elif event.keyval == Gdk.KEY_Delete:
             s = self.get_selected_node(self.treeview)
             if s is not None:
                 self.drawer.remove_object(s)
@@ -1946,7 +1932,7 @@ class ShapeEditor(object):
         return True
 
     def build_selector(self, l, callback):
-        sel = gtk.combo_box_new_text()
+        sel = Gtk.ComboBoxText()
         for s in l:
             sel.append_text(s)
         sel.connect('changed', callback)
@@ -1974,7 +1960,7 @@ class ShapeEditor(object):
         y = int(event.y)
 
         # On double-click, edit element
-        if event.type == gtk.gdk._2BUTTON_PRESS:
+        if event.type == Gdk.EventType._2BUTTON_PRESS:
             node = self.get_selected_node (widget)
             if node is not None:
                 if node.edit_properties():
@@ -1987,7 +1973,7 @@ class ShapeEditor(object):
             else:
                 retval=False
         elif button == 3:
-            if event.window is widget.get_bin_window():
+            if event.get_window() is widget.get_bin_window():
                 model = widget.get_model()
                 t = widget.get_path_at_pos(x, y)
                 if t is not None:
@@ -2002,33 +1988,33 @@ class ShapeEditor(object):
     def set_background(self, image):
         """Set the background image.
         """
-        if isinstance(image, gtk.Image):
+        if isinstance(image, Gtk.Image):
             self.drawer.set_background(image.get_pixbuf())
-        elif isinstance(image, gtk.gdk.Pixbuf):
+        elif isinstance(image, GdkPixbuf.Pixbuf):
             self.drawer.set_background(image)
         else:
-            raise Exception("set_background requires a gtk.Image or a gtk.gdk.Pixbuf")
+            raise Exception("set_background requires a Gtk.Image or a GdkPixbuf.Pixbuf")
 
-    def build_widget(self, pixmap_dir):
-        vbox=gtk.VBox()
+    def build_widget(self, icon_dir):
+        vbox=Gtk.VBox()
 
-        tb = self.toolbar = gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
+        tb = self.toolbar = Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
 
-        vbox.pack_start(tb, expand=False)
+        vbox.pack_start(tb, False, True, 0)
 
-        hbox=gtk.HBox()
+        hbox=Gtk.HBox()
 
         vbox.add(hbox)
 
         hbox.pack_start(self.drawer.widget, True, True, 0)
         self.drawer.widget.connect('key-press-event', self.key_press_event)
 
-        self.treeview = gtk.TreeView(self.drawer.objects)
+        self.treeview = Gtk.TreeView(self.drawer.objects)
         self.treeview.set_reorderable(True)
 
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn('Name', renderer,
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn('Name', renderer,
                                     text=1)
         self.treeview.append_column(column)
         self.treeview.connect('button-press-event', self.tree_view_button_cb)
@@ -2036,9 +2022,9 @@ class ShapeEditor(object):
         def set_shape(tb, shape):
             """Update the toolbutton with the appropriate shape information.
             """
-            if pixmap_dir is not None and self.pixmap_name.get(shape, None):
-                i=gtk.Image()
-                i.set_from_file( os.path.join( pixmap_dir, self.pixmap_name.get(shape, None)) )
+            if icon_dir is not None and self.icon_name.get(shape, None):
+                i=Gtk.Image()
+                i.set_from_file( os.path.join( icon_dir, self.icon_name.get(shape, None)) )
                 i.show()
                 tb.set_icon_widget(i)
             else:
@@ -2054,22 +2040,22 @@ class ShapeEditor(object):
             return True
 
         def display_shape_menu(tb):
-            bar=gtk.Toolbar()
-            bar.set_orientation(gtk.ORIENTATION_VERTICAL)
-            bar.set_style(gtk.TOOLBAR_ICONS)
+            bar=Gtk.Toolbar()
+            bar.set_orientation(Gtk.Orientation.VERTICAL)
+            bar.set_style(Gtk.ToolbarStyle.ICONS)
 
             for shape in self.shapes:
-                i=gtk.ToolButton()
+                i=Gtk.ToolButton()
                 i.set_visible_horizontal(True)
                 i.set_visible_vertical(True)
                 set_shape(i, shape)
                 i.connect('clicked', select_shape, shape)
                 bar.insert(i, -1)
 
-            w=gtk.Window(type=gtk.WINDOW_POPUP)
+            w=Gtk.Window(type=Gtk.WindowType.POPUP)
             w.add(bar)
             w.set_transient_for(tb.get_toplevel())
-            w.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR)
+            w.set_type_hint(Gdk.WindowTypeHint.TOOLBAR)
             w.set_modal(True)
             w.resize(20, 150)
             alloc = tb.get_allocation()
@@ -2083,7 +2069,7 @@ class ShapeEditor(object):
 
             return True
 
-        self.shape_icon=gtk.ToolButton()
+        self.shape_icon=Gtk.ToolButton()
         self.shape_icon.set_shape=set_shape.__get__(self.shape_icon)
         self.shape_icon.set_shape(self.drawer.shape_class)
         self.shape_icon.connect('clicked', display_shape_menu)
@@ -2105,22 +2091,22 @@ class ShapeEditor(object):
             return True
 
         def display_color_menu(tb):
-            bar=gtk.Toolbar()
-            bar.set_orientation(gtk.ORIENTATION_VERTICAL)
-            bar.set_style(gtk.TOOLBAR_ICONS)
+            bar=Gtk.Toolbar()
+            bar.set_orientation(Gtk.Orientation.VERTICAL)
+            bar.set_style(Gtk.ToolbarStyle.ICONS)
 
             for color in self.colors:
-                i=gtk.ToolButton(icon_widget=gtk.Label())
+                i=Gtk.ToolButton(icon_widget=Gtk.Label())
                 i.set_visible_horizontal(True)
                 i.set_visible_vertical(True)
                 set_color(i, color)
                 i.connect('clicked', select_color, color)
                 bar.insert(i, -1)
 
-            w=gtk.Window(type=gtk.WINDOW_POPUP)
+            w=Gtk.Window(type=Gtk.WindowType.POPUP)
             w.add(bar)
             w.set_transient_for(tb.get_toplevel())
-            w.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_TOOLBAR)
+            w.set_type_hint(Gdk.WindowTypeHint.TOOLBAR)
             w.set_modal(True)
             bar.show_all()
             w.resize(20, 200)
@@ -2135,17 +2121,17 @@ class ShapeEditor(object):
 
             return True
 
-        self.color_icon=gtk.ToolButton(icon_widget=gtk.Label())
+        self.color_icon=Gtk.ToolButton(icon_widget=Gtk.Label())
         self.color_icon.set_color=set_color.__get__(self.color_icon)
         self.color_icon.set_color('red')
         self.color_icon.connect('clicked', display_color_menu)
         tb.insert(self.color_icon, -1)
 
         def load_svg(b):
-            fs=gtk.FileChooserDialog(title='Select a svg file',
-                                     buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
+            fs=Gtk.FileChooserDialog(title='Select a svg file',
+                                     buttons=(Gtk.STOCK_OK, Gtk.ResponseType.OK, Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
             res=fs.run()
-            if res == gtk.RESPONSE_OK:
+            if res == Gtk.ResponseType.OK:
                 name=fs.get_filename()
                 root=ET.parse(name).getroot()
                 self.drawer.parse_svg(root)
@@ -2153,11 +2139,11 @@ class ShapeEditor(object):
             return True
 
         def save_svg(b):
-            fs=gtk.FileChooserDialog(title='Select a svg file to write to',
-                                     action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                     buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
+            fs=Gtk.FileChooserDialog(title='Select a svg file to write to',
+                                     action=Gtk.FileChooserAction.SAVE,
+                                     buttons=(Gtk.STOCK_OK, Gtk.ResponseType.OK, Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
             res=fs.run()
-            if res == gtk.RESPONSE_OK:
+            if res == Gtk.ResponseType.OK:
                 name = fs.get_filename()
                 tree = ET.ElementTree(self.drawer.get_svg(relative=False))
                 f = open(name, 'w')
@@ -2166,22 +2152,22 @@ class ShapeEditor(object):
             fs.destroy()
             return True
 
-        tb.insert(gtk.SeparatorToolItem(), -1)
+        tb.insert(Gtk.SeparatorToolItem(), -1)
 
-        b=gtk.ToolButton(gtk.STOCK_OPEN)
+        b=Gtk.ToolButton(Gtk.STOCK_OPEN)
         b.set_tooltip_text(_("Load SVG"))
         b.connect('clicked', load_svg)
         tb.insert(b, -1)
 
         if True:
-            b=gtk.ToolButton(gtk.STOCK_SAVE)
+            b=Gtk.ToolButton(Gtk.STOCK_SAVE)
             b.set_tooltip_text(_("Save SVG"))
             b.connect('clicked', save_svg)
             tb.insert(b, -1)
 
-        control = gtk.VBox()
-        control.pack_start(self.treeview, expand=False)
-        hbox.pack_start(control, expand=False)
+        control = Gtk.VBox()
+        control.pack_start(self.treeview, False, True, 0)
+        hbox.pack_start(control, False, True, 0)
 
         vbox.show_all()
 
@@ -2193,33 +2179,33 @@ def main():
     else:
         bg = 'atelier.jpg'
 
-    win = gtk.Window(gtk.WINDOW_TOPLEVEL)
+    win = Gtk.Window(Gtk.WindowType.TOPLEVEL)
     win.set_title("Shape Editor test")
     #win.set_default_size(800, 600)
-    win.connect('delete-event', lambda w, e: gtk.main_quit())
+    win.connect('delete-event', lambda w, e: Gtk.main_quit())
 
     if bg.endswith('.svg'):
         ed=ShapeEditor()
         root=ET.parse(bg).getroot()
         ed.drawer.parse_svg(root)
     else:
-        i=gtk.Image()
+        i=Gtk.Image()
         i.set_from_file(bg)
         ed=ShapeEditor(background=i)
         ed.drawer.add_object(Image(name='background', uri=os.path.basename(bg)))
     win.add(ed.widget)
 
-    ed.key_mapping[gtk.keysyms.q]=lambda w, e: gtk.main_quit()
-    ed.key_mapping[gtk.keysyms.d]=lambda w, e: ET.dump(ed.drawer.get_svg())
+    ed.key_mapping[Gdk.KEY_q]=lambda w, e: Gtk.main_quit()
+    ed.key_mapping[Gdk.KEY_d]=lambda w, e: ET.dump(ed.drawer.get_svg())
     try:
         from evaluator import Evaluator
-        ed.key_mapping[gtk.keysyms.e]=lambda w, e: Evaluator(locals_={'ed': ed}).popup()
+        ed.key_mapping[Gdk.KEY_e]=lambda w, e: Evaluator(locals_={'ed': ed}).popup()
     except ImportError:
         pass
 
     win.show_all()
 
-    gtk.main()
+    Gtk.main()
 
 # Element-tree indent function.
 # in-place prettyprint formatter
diff --git a/lib/advene/gui/edit/tales.py b/lib/advene/gui/edit/tales.py
index 2eedbe7..5361a25 100644
--- a/lib/advene/gui/edit/tales.py
+++ b/lib/advene/gui/edit/tales.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
 # along with Advene; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
-import gtk
+from gi.repository import Gtk
 import re
 
 import advene.core.config as config
@@ -96,7 +96,7 @@ class TALESEntry:
         self.default=t
 
     def get_text(self):
-        return self.text2tales(self.combo.get_current_element())
+        return self.text2tales(self.combo.get_current_element().decode('utf-8'))
 
     def set_no_show_all(self, b):
         self.widget.set_no_show_all(b)
@@ -124,7 +124,7 @@ class TALESEntry:
         return advene.util.helper.is_valid_tales(self.text2tales(expr))
 
     def build_widget(self):
-        hbox=gtk.HBox()
+        hbox=Gtk.HBox()
 
         if self.predefined:
             preselect=self.tales2text(self.predefined[0][0])
@@ -133,16 +133,16 @@ class TALESEntry:
         self.combo=dialog.list_selector_widget(members=[ (self.tales2text(e), d) for (e, d) in self.predefined ],
                                                preselect=preselect,
                                                entry=True)
-        self.entry=self.combo.child
+        self.entry=self.combo.get_child()
         self.entry.connect('changed', lambda e: self.entry.set_tooltip_text(self.combo.get_current_element()))
         self.entry.set_tooltip_text(self.combo.get_current_element())
 
-        hbox.pack_start(self.combo, expand=True)
+        hbox.pack_start(self.combo, True, True, 0)
 
         if config.data.preferences['expert-mode']:
-            b=gtk.Button(stock=gtk.STOCK_FIND)
+            b=Gtk.Button(stock=Gtk.STOCK_FIND)
             b.connect('clicked', self.browse_expression)
-            hbox.pack_start(b, expand=False)
+            hbox.pack_start(b, False, True, 0)
 
         hbox.show_all()
         return hbox
diff --git a/lib/advene/gui/edit/timeadjustment.py b/lib/advene/gui/edit/timeadjustment.py
index 6e8dfe7..9aa3539 100755
--- a/lib/advene/gui/edit/timeadjustment.py
+++ b/lib/advene/gui/edit/timeadjustment.py
@@ -1,6 +1,6 @@
 
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -20,10 +20,13 @@
 
 It depends on a Controller instance to be able to interact with the video player.
 """
+import logging
+logger = logging.getLogger(__name__)
 
 import advene.core.config as config
 
-import gtk
+from gi.repository import Gdk
+from gi.repository 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
@@ -59,8 +62,8 @@ class TimeAdjustment:
             return True
 
         def image_button_clicked(button):
-            event=gtk.get_current_event()
-            if event.state & gtk.gdk.CONTROL_MASK:
+            event=Gtk.get_current_event()
+            if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
                 self.use_current_position(button)
                 return True
             else:
@@ -68,31 +71,23 @@ class TimeAdjustment:
                 return True
 
         def image_button_press(button, event):
-            if event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS:
+            if event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
                 # Display the popup menu
-                menu = gtk.Menu()
-                item = gtk.MenuItem(_("Refresh snapshot"))
+                menu = Gtk.Menu()
+                item = Gtk.MenuItem(_("Refresh snapshot"))
                 item.connect('activate', refresh_snapshot)
                 menu.append(item)
                 menu.show_all()
-                menu.popup(None, None, None, 0, gtk.get_current_event_time())
+                menu.popup_at_pointer(None)
                 return True
             return False
 
         def make_button(incr_value, pixmap):
             """Helper function to build the buttons."""
-            b=gtk.Button()
-            i=gtk.Image()
+            b=Gtk.Button()
+            i=Gtk.Image()
             i.set_from_file(config.data.advenefile( ( 'pixmaps', pixmap) ))
-            # FIXME: to re-enable
-            # The proper way is to do
-            #b.set_image(i)
-            # but it works only on linux, gtk 2.10
-            # and is broken on windows and mac
-            al=gtk.Alignment()
-            al.set_padding(0, 0, 0, 0)
-            al.add(i)
-            b.add(al)
+            b.set_image(i)
 
             def increment_value_cb(widget, increment):
                 self.set_value(self.value + increment)
@@ -105,18 +100,18 @@ class TimeAdjustment:
             b.set_tooltip_text(tip)
             return b
 
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        hbox=gtk.HBox()
+        hbox=Gtk.HBox()
         hbox.set_homogeneous(False)
 
         if self.editable:
-            vb=gtk.VBox()
+            vb=Gtk.VBox()
             b=make_button(-self.large_increment, "2leftarrow.png")
-            vb.pack_start(b, expand=False)
+            vb.pack_start(b, False, True, 0)
             b=make_button(-self.small_increment, "1leftarrow.png")
-            vb.pack_start(b, expand=False)
-            hbox.pack_start(vb, expand=False)
+            vb.pack_start(b, False, True, 0)
+            hbox.pack_start(vb, False, True, 0)
 
         if self.compact:
             width=50
@@ -128,41 +123,41 @@ class TimeAdjustment:
         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\nScroll to modify value (with control/shift)\nRight-click to invalidate screenshot"))
-        hbox.pack_start(self.image, expand=False)
+        hbox.pack_start(self.image, False, True, 0)
 
         if self.editable:
-            vb=gtk.VBox()
+            vb=Gtk.VBox()
             b=make_button(self.large_increment, "2rightarrow.png")
-            vb.pack_start(b, expand=False)
+            vb.pack_start(b, False, True, 0)
             b=make_button(self.small_increment, "1rightarrow.png")
-            vb.pack_start(b, expand=False)
-            hbox.pack_start(vb, expand=False)
+            vb.pack_start(b, False, True, 0)
+            hbox.pack_start(vb, False, True, 0)
 
-        hb = gtk.HBox()
+        hb = Gtk.HBox()
 
         if self.editable:
-            self.entry=gtk.Entry()
+            self.entry=Gtk.Entry()
             self.entry.set_tooltip_text(_("Enter a timecode.\nAn integer value will be considered as milliseconds.\nA float value (12.2) will be considered as seconds.\nHH:MM:SS.sss values are possible."))
             # Default width of the entry field
             self.entry.set_width_chars(len(helper.format_time(0.0)))
             self.entry.connect('activate', self.convert_entered_value)
             self.entry.connect('focus-out-event', self.convert_entered_value)
             self.entry.set_editable(self.editable)
-            hb.pack_start(self.entry, expand=False)
+            hb.pack_start(self.entry, False, True, 0)
         else:
             self.entry=None
 
         if self.editable:
-            current_pos=gtk.Button()
-            i=gtk.Image()
+            current_pos=Gtk.Button()
+            i=Gtk.Image()
             i.set_from_file(config.data.advenefile( ( 'pixmaps', 'set-to-now.png') ))
             current_pos.set_tooltip_text(_("Set to current player position"))
             current_pos.add(i)
             current_pos.connect('clicked', self.use_current_position)
-            hb.pack_start(current_pos, expand=False)
+            hb.pack_start(current_pos, False, True, 0)
 
-        vbox.pack_start(hbox, expand=False)
-        vbox.pack_start(hb, expand=False)
+        vbox.pack_start(hbox, False, True, 0)
+        vbox.pack_start(hb, False, True, 0)
         hb.set_style(self.image.box.get_style())
         #self.entry.set_style(self.image.box.get_style())
         vbox.set_style(self.image.box.get_style())
@@ -174,17 +169,17 @@ class TimeAdjustment:
         hb.show()
 
         def handle_scroll_event(button, event):
-            if event.state & gtk.gdk.CONTROL_MASK:
+            if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
                 i=config.data.preferences['scroll-increment']
-            elif event.state & gtk.gdk.SHIFT_MASK:
+            elif event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                 i=config.data.preferences['second-scroll-increment']
             else:
                 # 1 frame
                 i=1000 / config.data.preferences['default-fps']
 
-            if event.direction == gtk.gdk.SCROLL_DOWN or event.direction == gtk.gdk.SCROLL_LEFT:
+            if event.direction == Gdk.ScrollDirection.DOWN or event.direction == Gdk.ScrollDirection.LEFT:
                 incr=-i
-            elif event.direction == gtk.gdk.SCROLL_UP or event.direction == gtk.gdk.SCROLL_RIGHT:
+            elif event.direction == Gdk.ScrollDirection.UP or event.direction == Gdk.ScrollDirection.RIGHT:
                 incr=i
 
             if not self.set_value(self.value + incr):
@@ -194,12 +189,11 @@ class TimeAdjustment:
         if self.editable:
             # The widget can receive drops from annotations
             vbox.connect('drag-data-received', self.drag_received)
-            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_LINK)
+            vbox.drag_dest_set(Gtk.DestDefaults.MOTION |
+                               Gtk.DestDefaults.HIGHLIGHT |
+                               Gtk.DestDefaults.ALL,
+                               config.data.get_target_types('annotation', 'timestamp'),
+                               Gdk.DragAction.LINK)
 
             vbox.connect('scroll-event', handle_scroll_event)
 
@@ -208,27 +202,27 @@ class TimeAdjustment:
 
     def drag_received(self, widget, context, x, y, selection, targetType, time):
         if targetType == config.data.target_type['annotation']:
-            source_uri=unicode(selection.data, 'utf8').split('\n')[0]
+            source_uri=unicode(selection.get_data(), 'utf8').split('\n')[0]
             source=self.controller.package.annotations.get(source_uri)
             self.set_value(source.fragment.begin)
         elif targetType == config.data.target_type['timestamp']:
-            data=decode_drop_parameters(selection.data)
+            data=decode_drop_parameters(selection.get_data())
             v=long(float(data['timestamp']))
             self.set_value(v)
         else:
-            print "Unknown target type for drop: %d" % targetType
+            logger.warn("Unknown target type for drop: %d" % targetType)
         return True
 
     def drag_sent(self, widget, context, selection, targetType, eventTime):
         """Handle the drag-sent event.
         """
         if targetType == config.data.target_type['timestamp']:
-            selection.set(selection.target, 8, encode_drop_parameters(timestamp=self.value))
+            selection.set(selection.get_target(), 8, encode_drop_parameters(timestamp=self.value))
             return True
         elif targetType in ( config.data.target_type['text-plain'],
                              config.data.target_type['TEXT'],
                              config.data.target_type['STRING'] ):
-            selection.set(selection.target, 8, helper.format_time(self.value))
+            selection.set(selection.get_target(), 8, helper.format_time(self.value))
             return True
         return False
 
@@ -246,7 +240,7 @@ class TimeAdjustment:
         pass
 
     def convert_entered_value(self, *p):
-        t=unicode(self.entry.get_text())
+        t=self.entry.get_text().decode('utf-8')
         v=helper.parse_time(t)
         if v is not None and v != self.value:
             if not self.set_value(v):
diff --git a/lib/advene/gui/edit/transcribe.py b/lib/advene/gui/edit/transcribe.py
index 0fc3aed..e62989f 100644
--- a/lib/advene/gui/edit/transcribe.py
+++ b/lib/advene/gui/edit/transcribe.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -24,13 +24,14 @@ import re
 import os
 import operator
 
-import gtk
-import pango
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import Pango
 
 try:
-    import gtksourceview2
+    from gi.repository import GtkSource
 except ImportError:
-    gtksourceview2=None
+    GtkSource=None
 
 import urllib
 
@@ -136,7 +137,6 @@ class TranscriptionEdit(AdhocView):
                 self.load_transcription(buffer=v)
 
     def get_save_arguments(self):
-        b=self.textview.get_buffer()
         arguments = [ ('text', "".join(self.generate_transcription())) ]
         return self.options, arguments
 
@@ -167,11 +167,11 @@ class TranscriptionEdit(AdhocView):
             size=self.options['font-size']
         if size == 0:
             # Get the default value from a temporary textview
-            t=gtk.TextView()
-            size=t.get_pango_context().get_font_description().get_size() / pango.SCALE
+            t=Gtk.TextView()
+            size=t.get_pango_context().get_font_description().get_size() / Pango.SCALE
             del t
         f=self.textview.get_pango_context().get_font_description()
-        f.set_size(size * pango.SCALE)
+        f.set_size(size * Pango.SCALE)
         self.textview.modify_font(f)
 
     def show_searchbox(self, *p):
@@ -191,7 +191,7 @@ class TranscriptionEdit(AdhocView):
         finished=False
 
         while not finished:
-            res=begin.forward_search(searched, gtk.TEXT_SEARCH_TEXT_ONLY)
+            res=begin.forward_search(searched, Gtk.TextSearchFlags.TEXT_ONLY)
             if not res:
                 finished=True
             else:
@@ -201,28 +201,28 @@ class TranscriptionEdit(AdhocView):
 
     def textview_drag_received(self, widget, context, x, y, selection, targetType, time):
         if targetType == config.data.target_type['timestamp']:
-            data=decode_drop_parameters(selection.data)
+            data=decode_drop_parameters(selection.get_data())
             position=long(data['timestamp'])
-            #(x, y) = self.textview.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT,
+            #(x, y) = self.textview.get_window()_to_buffer_coords(Gtk.TextWindowType.TEXT,
             #                                               int(x),
             #                                               int(y))
             it=self.textview.get_iter_at_location(x, y)
             if it is None:
                 return False
             # Check that preceding mark.value is lower
-            m, i=self.find_preceding_mark(it)
+            m, i=self.find_preceding_mark(it.iter)
             if m is not None and m.value > position:
                 self.message(_("Invalid timestamp mark"))
                 return False
-            m, i=self.find_following_mark(it)
+            m, i=self.find_following_mark(it.iter)
             if m is not None and m.value < position:
                 self.message(_("Invalid timestamp mark"))
                 return False
             # Create the timestamp
-            self.create_timestamp_mark(position, it)
+            self.create_timestamp_mark(position, it.iter)
 
             # If the drag originated from our own widgets, remove it.
-            source=context.get_source_widget()
+            source=Gtk.drag_get_source_widget(context)
             if source in self.marks:
                 self.remove_timestamp_mark(source)
             return True
@@ -231,7 +231,7 @@ class TranscriptionEdit(AdhocView):
     def can_undo(self):
         try:
             return hasattr(self.textview.get_buffer(), 'can_undo')
-        except AttributeError, e:
+        except AttributeError:
             return False
 
     def undo(self, *p):
@@ -241,27 +241,27 @@ class TranscriptionEdit(AdhocView):
         return True
 
     def build_widget(self):
-        vbox = gtk.VBox()
+        vbox = Gtk.VBox()
 
-        if gtksourceview2 is not None:
-            self.textview=gtksourceview2.View()
-            self.textview.set_buffer(gtksourceview2.Buffer())
+        if GtkSource is not None:
+            self.textview=GtkSource.View()
+            self.textview.set_buffer(GtkSource.Buffer())
         else:
-            self.textview = gtk.TextView()
+            self.textview = Gtk.TextView()
 
         # We could make it editable and modify the annotation
         self.textview.set_editable(True)
-        self.textview.set_wrap_mode (gtk.WRAP_WORD)
+        self.textview.set_wrap_mode (Gtk.WrapMode.WORD)
 
-        hb=gtk.HBox()
-        vbox.pack_start(hb, expand=False)
+        hb=Gtk.HBox()
+        vbox.pack_start(hb, False, True, 0)
         if self.controller.gui:
             self.player_toolbar=self.controller.gui.get_player_control_toolbar()
             hb.add(self.player_toolbar)
         hb.add(self.get_toolbar())
 
-        sw = gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        sw = Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         vbox.add (sw)
 
 
@@ -277,12 +277,11 @@ class TranscriptionEdit(AdhocView):
         self.textview.get_buffer().create_tag("past", background="#dddddd")
         self.textview.get_buffer().create_tag("ignored", strikethrough=True)
 
-        self.textview.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                    gtk.DEST_DEFAULT_HIGHLIGHT |
-                                    gtk.DEST_DEFAULT_ALL,
-                                    config.data.drag_type['timestamp']
-                                    ,
-                                    gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
+        self.textview.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                    Gtk.DestDefaults.HIGHLIGHT |
+                                    Gtk.DestDefaults.ALL,
+                                    config.data.get_target_types('timestamp'),
+                                    Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
         self.textview.connect('drag-data-received', self.textview_drag_received)
 
         # Hook the completer component
@@ -301,7 +300,7 @@ class TranscriptionEdit(AdhocView):
         b.create_tag("current", background="lightblue")
         b.create_tag("searched_string", background="green")
 
-        self.searchbox=gtk.HBox()
+        self.searchbox=Gtk.HBox()
 
         def hide_searchbox(*p):
             # Clear the searched_string tags
@@ -311,39 +310,38 @@ class TranscriptionEdit(AdhocView):
             return True
 
         close_button=get_pixmap_button('small_close.png', hide_searchbox)
-        close_button.set_relief(gtk.RELIEF_NONE)
-        self.searchbox.pack_start(close_button, expand=False, fill=False)
+        close_button.set_relief(Gtk.ReliefStyle.NONE)
+        self.searchbox.pack_start(close_button, False, False, 0)
 
         def search_entry_cb(e):
-            self.highlight_search_forward(unicode(e.get_text()))
+            self.highlight_search_forward(e.get_text().decode('utf-8'))
             return True
 
         def search_entry_key_press_cb(e, event):
-            if event.keyval == gtk.keysyms.Escape:
+            if event.keyval == Gdk.KEY_Escape:
                 hide_searchbox()
                 return True
             return False
 
-        self.searchbox.entry=gtk.Entry()
+        self.searchbox.entry=Gtk.Entry()
         self.searchbox.entry.connect('activate', search_entry_cb)
-        self.searchbox.pack_start(self.searchbox.entry, expand=False, fill=False)
+        self.searchbox.pack_start(self.searchbox.entry, False, False, 0)
         self.searchbox.entry.connect('key-press-event', search_entry_key_press_cb)
 
-        b=get_small_stock_button(gtk.STOCK_FIND)
-        b.connect('clicked', lambda b: self.highlight_search_forward(unicode(self.searchbox.entry.get_text())))
-        self.searchbox.pack_start(b, expand=False)
+        b=get_small_stock_button(Gtk.STOCK_FIND)
+        b.connect('clicked', lambda b: self.highlight_search_forward(self.searchbox.entry.get_text().decode('utf-8')))
+        self.searchbox.pack_start(b, False, True, 0)
 
-        fill=gtk.HBox()
-        self.searchbox.pack_start(fill, expand=True, fill=True)
+        fill=Gtk.HBox()
+        self.searchbox.pack_start(fill, True, True, 0)
         self.searchbox.show_all()
         self.searchbox.hide()
 
         self.searchbox.set_no_show_all(True)
-        vbox.pack_start(self.searchbox, expand=False)
+        vbox.pack_start(self.searchbox, False, True, 0)
 
-        self.statusbar=gtk.Statusbar()
-        self.statusbar.set_has_resize_grip(False)
-        vbox.pack_start(self.statusbar, expand=False)
+        self.statusbar=Gtk.Statusbar()
+        vbox.pack_start(self.statusbar, False, True, 0)
         vbox.show_all()
 
         return vbox
@@ -388,23 +386,23 @@ class TranscriptionEdit(AdhocView):
     def button_press_event_cb(self, textview, event):
         if not self.options['timestamp']:
             return False
-        if event.state & gtk.gdk.CONTROL_MASK:
+        if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             return False
 
         if self.options['insert-on-single-click']:
-            t=gtk.gdk.BUTTON_PRESS
+            t=Gdk.EventType.BUTTON_PRESS
         else:
-            t=gtk.gdk._2BUTTON_PRESS
+            t=Gdk.EventType._2BUTTON_PRESS
         if not (event.button == 1 and event.type == t):
             return False
-        textwin=textview.get_window(gtk.TEXT_WINDOW_TEXT)
+        textwin=textview.get_window(Gtk.TextWindowType.TEXT)
 
-        if event.window != textwin:
-            print "Event.window: %s" % str(event.window)
+        if event.get_window() != textwin:
+            print "Event.get_window(): %s" % str(event.get_window())
             print "Textwin: %s" % str(textwin)
             return False
 
-        (x, y) = textview.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT,
+        (x, y) = textview.window_to_buffer_coords(Gtk.TextWindowType.TEXT,
                                                   int(event.x),
                                                   int(event.y))
         it=textview.get_iter_at_location(x, y)
@@ -420,7 +418,7 @@ class TranscriptionEdit(AdhocView):
 
     def buffer_is_empty(self):
         b=self.textview.get_buffer()
-        return len(b.get_text(*b.get_bounds())) == 0
+        return len(b.get_text(*b.get_bounds() + (False,))) == 0
 
     def toggle_ignore(self, button):
         button.ignore = not button.ignore
@@ -474,15 +472,15 @@ class TranscriptionEdit(AdhocView):
         def popup_modify(win, t):
             timestamp=child.value + t
             child.set_tooltip_text("%s" % helper.format_time(timestamp))
-            # FIXME: find a way to do this in the new gtk.Tooltip API?
+            # FIXME: find a way to do this in the new Gtk.Tooltip API?
             #if self.tooltips.active_tips_data is None:
-            #    button.emit('show-help', gtk.WIDGET_HELP_TOOLTIP)
+            #    button.emit('show-help', Gtk.WIDGET_HELP_TOOLTIP)
             child.value=timestamp
             if self.options['play-on-scroll']:
                 popup_goto(child, timestamp)
             return True
 
-        if event.button == 1 and event.state & gtk.gdk.CONTROL_MASK:
+        if event.button == 1 and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             # Set current video time
             popup_modify(None, self.controller.player.current_position_value - timestamp)
             return True
@@ -491,57 +489,57 @@ class TranscriptionEdit(AdhocView):
             return False
 
         # Create a popup menu for timestamp
-        menu = gtk.Menu()
+        menu = Gtk.Menu()
 
-        item = gtk.MenuItem(_("Position %s") % helper.format_time(timestamp))
+        item = Gtk.MenuItem(_("Position %s") % helper.format_time(timestamp))
         menu.append(item)
 
-        item = gtk.SeparatorMenuItem()
+        item = Gtk.SeparatorMenuItem()
         menu.append(item)
 
-        item = gtk.MenuItem(_("Go to..."))
+        item = Gtk.MenuItem(_("Go to..."))
         item.connect('activate', popup_goto, timestamp)
         menu.append(item)
 
-        item = gtk.MenuItem(_("Edit"))
+        item = Gtk.MenuItem(_("Edit"))
         item.connect('activate', popup_edit, button)
         menu.append(item)
 
-        item = gtk.MenuItem(_("Ignore the following text (toggle)"))
+        item = Gtk.MenuItem(_("Ignore the following text (toggle)"))
         item.connect('activate', popup_ignore, button)
         menu.append(item)
 
-        item = gtk.MenuItem(_("Remove mark"))
+        item = Gtk.MenuItem(_("Remove mark"))
         item.connect('activate', popup_remove)
         menu.append(item)
 
-        item = gtk.MenuItem(_("Reaction-time offset"))
+        item = Gtk.MenuItem(_("Reaction-time offset"))
         item.connect('activate', popup_modify, -self.options['delay'])
         menu.append(item)
 
-        item = gtk.MenuItem(_("-1 sec"))
+        item = Gtk.MenuItem(_("-1 sec"))
         item.connect('activate', popup_modify, -1000)
         menu.append(item)
-        item = gtk.MenuItem(_("-0.5 sec"))
+        item = Gtk.MenuItem(_("-0.5 sec"))
         item.connect('activate', popup_modify, -500)
         menu.append(item)
-        item = gtk.MenuItem(_("-0.1 sec"))
+        item = Gtk.MenuItem(_("-0.1 sec"))
         item.connect('activate', popup_modify, -100)
         menu.append(item)
 
-        item = gtk.MenuItem(_("+1 sec"))
+        item = Gtk.MenuItem(_("+1 sec"))
         item.connect('activate', popup_modify, 1000)
         menu.append(item)
-        item = gtk.MenuItem(_("+0.5 sec"))
+        item = Gtk.MenuItem(_("+0.5 sec"))
         item.connect('activate', popup_modify, 500)
         menu.append(item)
-        item = gtk.MenuItem(_("+0.1 sec"))
+        item = Gtk.MenuItem(_("+0.1 sec"))
         item.connect('activate', popup_modify, 100)
         menu.append(item)
 
         menu.show_all()
 
-        menu.popup(None, None, None, 0, gtk.get_current_event_time())
+        menu.popup_at_pointer(None)
         return True
 
     def create_timestamp_mark(self, timestamp, it):
@@ -565,22 +563,22 @@ class TranscriptionEdit(AdhocView):
         b.end_user_action()
 
         def handle_scroll_event(button, event):
-            if not (event.state & gtk.gdk.CONTROL_MASK):
+            if not (event.get_state() & Gdk.ModifierType.CONTROL_MASK):
                 return False
-            if event.state & gtk.gdk.SHIFT_MASK:
+            if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                 i='second-scroll-increment'
             else:
                 i='scroll-increment'
 
-            if event.direction == gtk.gdk.SCROLL_DOWN or event.direction == gtk.gdk.SCROLL_RIGHT:
+            if event.direction == Gdk.ScrollDirection.DOWN or event.direction == Gdk.ScrollDirection.RIGHT:
                 button.value -= config.data.preferences[i]
-            elif event.direction == gtk.gdk.SCROLL_UP or event.direction == gtk.gdk.SCROLL_LEFT:
+            elif event.direction == Gdk.ScrollDirection.UP or event.direction == Gdk.ScrollDirection.LEFT:
                 button.value += config.data.preferences[i]
 
                 button.set_tooltip_text("%s" % helper.format_time(button.value))
-            # FIXME: find a way to do this in the new gtk.Tooltip API?
+            # FIXME: find a way to do this in the new Gtk.Tooltip API?
             #if self.tooltips.active_tips_data is None:
-            #    button.emit('show-help', gtk.WIDGET_HELP_TOOLTIP)
+            #    button.emit('show-help', Gtk.WIDGET_HELP_TOOLTIP)
             self.timestamp_play = button.value
             button.grab_focus()
             return True
@@ -589,7 +587,7 @@ class TranscriptionEdit(AdhocView):
             """Handler for key release on timestamp mark.
             """
             # Control key released. Goto the position if we were scrolling a mark
-            if self.timestamp_play is not None and (event.state & gtk.gdk.CONTROL_MASK):
+            if self.timestamp_play is not None and (event.get_state() & Gdk.ModifierType.CONTROL_MASK):
                 # self.timestamp_play contains the new value, but child.timestamp
                 # as well. So we can use popup_goto
                 self.timestamp_play = None
@@ -714,7 +712,7 @@ class TranscriptionEdit(AdhocView):
                 if it is not None:
                     b.apply_tag_by_name('past', begin, it)
                     if self.options['autoscroll']:
-                        self.textview.scroll_to_iter(it, 0.3)
+                        self.textview.scroll_to_iter(it, 0.3, False, 0, 0)
                 self.current_mark = cm
         else:
             if self.current_mark is not None:
@@ -762,7 +760,7 @@ class TranscriptionEdit(AdhocView):
                     self.log(_('Invalid timestamp mark in conversion: %s') % helper.format_time_reference(timestamp))
                     t=timestamp
                     continue
-                text=unicode(b.get_text(begin, end, include_hidden_chars=False))
+                text=b.get_text(begin, end, include_hidden_chars=False).decode('utf-8')
                 if strip_blank:
                     text=text.rstrip().lstrip()
                 if self.empty_re.match(text) and not self.options['empty-annotations']:
@@ -783,7 +781,7 @@ class TranscriptionEdit(AdhocView):
                 begin=end.copy()
         # End of buffer. Create the last annotation
         timestamp=self.controller.cached_duration
-        text=unicode(b.get_text(begin, end, include_hidden_chars=False))
+        text=b.get_text(begin, end, include_hidden_chars=False).decode('utf-8')
         if self.empty_re.match(text) or ignore_next:
             # Last timestsamp mark
             pass
@@ -826,7 +824,7 @@ class TranscriptionEdit(AdhocView):
                 # Found a TextAnchor
                 child=a.get_widgets()[0]
 
-                text=unicode(b.get_text(begin, end, include_hidden_chars=False)).replace('\n', '<br />')
+                text=b.get_text(begin, end, include_hidden_chars=False).decode('utf-8').replace('\n', '<br />')
                 if ignore_next:
                     res.extend( ('<strike>', text, '</strike>') )
                 else:
@@ -837,7 +835,7 @@ class TranscriptionEdit(AdhocView):
                 begin=end.copy()
 
         # End of buffer.
-        text=unicode(b.get_text(begin, end, include_hidden_chars=False)).replace('\n', '<br />')
+        text=b.get_text(begin, end, include_hidden_chars=False).decode('utf-8').replace('\n', '<br />')
         if ignore_next:
             res.extend( ('<strike>', text, '</strike>') )
         else:
@@ -859,8 +857,8 @@ class TranscriptionEdit(AdhocView):
             if l:
                 default_name=os.path.splitext(os.path.basename(l[0]))[0] + ".txt"
             fname=dialog.get_filename(title= ("Save transcription to..."),
-                                               action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                               button=gtk.STOCK_SAVE,
+                                               action=Gtk.FileChooserAction.SAVE,
+                                               button=Gtk.STOCK_SAVE,
                                                default_dir=config.data.path['data'],
                                                default_file=default_name
                                                )
@@ -877,7 +875,7 @@ class TranscriptionEdit(AdhocView):
         except IOError, e:
             dialog.message_dialog(
                 _("Cannot save the file: %s") % unicode(e),
-                icon=gtk.MESSAGE_ERROR)
+                icon=Gtk.MessageType.ERROR)
             return True
         f.writelines(self.generate_transcription())
         f.close()
@@ -888,7 +886,7 @@ class TranscriptionEdit(AdhocView):
     def load_transcription_cb(self, button=None):
         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):
+                                                  icon=Gtk.MessageType.QUESTION):
                 return True
         fname=dialog.get_filename(title=_("Select transcription file to load"),
                                            default_dir=config.data.path['data'])
@@ -910,21 +908,15 @@ class TranscriptionEdit(AdhocView):
                 self.message(_("Cannot open %(filename)s: %(error)s") % {'filename': filename,
                                                                          'error': unicode(e) })
                 return
-            lines="".join(f.readlines())
+            data="".join(f.readlines())
             f.close()
         else:
-            lines=buffer
+            data=buffer
 
-        try:
-            data=unicode(lines)
-        except UnicodeDecodeError:
-            # Try UTF-16, which is used in quicktime text format
-            try:
-                data=unicode(lines, 'utf16')
-            except UnicodeDecodeError:
-                # Fallback on latin1, which is very common, but may
-                # sometimes fail
-                data=unicode(lines, 'latin1')
+        # We will need a utf-8 encoded str for insertion into the
+        # TextBuffer. Convert from unicode if necessary.
+        if isinstance(data, unicode):
+            data = data.encode('utf-8')
 
         b=self.textview.get_buffer()
         begin,end=b.get_bounds()
@@ -978,7 +970,7 @@ class TranscriptionEdit(AdhocView):
 
         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):
+                                                  icon=Gtk.MessageType.QUESTION):
                 return True
 
         b=self.textview.get_buffer()
@@ -1005,21 +997,21 @@ class TranscriptionEdit(AdhocView):
             self.message(_("Cannot convert the data: no associated package"))
             return True
 
-        d = gtk.Dialog(title=_("Converting transcription"),
-                       parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-                                 gtk.STOCK_OK, gtk.RESPONSE_OK,
+        d = Gtk.Dialog(title=_("Converting transcription"),
+                       parent=self.controller.gui.gui.win,
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+                                 Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                  ))
-        l=gtk.Label(_("Choose the annotation-type where to create annotations.\n"))
+        l=Gtk.Label(label=_("Choose the annotation-type where to create annotations.\n"))
         l.set_line_wrap(True)
         l.show()
-        d.vbox.pack_start(l, expand=False)
+        d.vbox.pack_start(l, False, True, 0)
 
         # Anticipated declaration of some widgets, which need to be
         # updated in the handle_new_type_selection callback.
-        new_type_dialog=gtk.VBox()
-        delete_existing_toggle=gtk.CheckButton(_("Delete existing annotations in this type"))
+        new_type_dialog=Gtk.VBox()
+        delete_existing_toggle=Gtk.CheckButton(_("Delete existing annotations in this type"))
         delete_existing_toggle.set_active(False)
 
         ats=list(self.controller.package.annotationTypes)
@@ -1041,44 +1033,44 @@ class TranscriptionEdit(AdhocView):
                                                    callback=handle_new_type_selection,
                                                    preselect=self.controller.package.get_element_by_id(self.options['annotation-type-id']))
 
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Select type") + " "), expand=False)
-        hb.pack_start(type_selection, expand=False)
-        d.vbox.pack_start(hb, expand=False)
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Select type") + " "), False, False, 0)
+        hb.pack_start(type_selection, False, True, 0)
+        d.vbox.pack_start(hb, False, True, 0)
 
-        l=gtk.Label(_("You want to create a new type. Please specify its schema and title."))
+        l=Gtk.Label(label=_("You want to create a new type. Please specify its schema and title."))
         l.set_line_wrap(True)
         l.show()
-        new_type_dialog.pack_start(l, expand=False)
+        new_type_dialog.pack_start(l, False, True, 0)
 
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Title") + " "), expand=False)
-        new_title=gtk.Entry()
-        hb.pack_start(new_title)
-        new_type_dialog.pack_start(hb, expand=False)
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Title") + " "), False, False, 0)
+        new_title=Gtk.Entry()
+        hb.pack_start(new_title, True, True, 0)
+        new_type_dialog.pack_start(hb, False, True, 0)
 
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Containing schema") + " "), expand=False)
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Containing schema") + " "), False, False, 0)
         schemas=list(self.controller.package.schemas)
         schema_selection=dialog.list_selector_widget(members=[ (s, self.controller.get_title(s)) for s in schemas])
-        hb.pack_start(schema_selection, expand=False)
-        new_type_dialog.pack_start(hb, expand=False)
+        hb.pack_start(schema_selection, False, True, 0)
+        new_type_dialog.pack_start(hb, False, True, 0)
 
         new_type_dialog.show_all()
         new_type_dialog.set_no_show_all(True)
         new_type_dialog.hide()
 
-        d.vbox.pack_start(new_type_dialog)
+        d.vbox.pack_start(new_type_dialog, True, True, 0)
 
-        l=gtk.Label()
+        l=Gtk.Label()
         l.set_markup("<b>" + _("Export options") + "</b>")
-        d.vbox.pack_start(l, expand=False)
+        d.vbox.pack_start(l, False, True, 0)
 
-        d.vbox.pack_start(delete_existing_toggle, expand=False)
+        d.vbox.pack_start(delete_existing_toggle, False, True, 0)
 
-        empty_contents_toggle=gtk.CheckButton(_("Generate annotations for empty contents"))
+        empty_contents_toggle=Gtk.CheckButton(_("Generate annotations for empty contents"))
         empty_contents_toggle.set_active(self.options['empty-annotations'])
-        d.vbox.pack_start(empty_contents_toggle, expand=False)
+        d.vbox.pack_start(empty_contents_toggle, False, True, 0)
 
         d.connect('key-press-event', dialog.dialog_keypressed_cb)
 
@@ -1088,10 +1080,10 @@ class TranscriptionEdit(AdhocView):
         finished=None
         while not finished:
             res=d.run()
-            if res == gtk.RESPONSE_OK:
+            if res == Gtk.ResponseType.OK:
                 at=type_selection.get_current_element()
                 if at == newat:
-                    new_type_title=unicode(new_title.get_text())
+                    new_type_title=new_title.get_text().decode('utf-8')
                     if new_type_title == '':
                         # Empty title. Generate one.
                         id_=self.controller.package._idgenerator.get_id(AnnotationType)
@@ -1102,7 +1094,7 @@ class TranscriptionEdit(AdhocView):
                         if self.controller.package._idgenerator.exists(id_):
                             dialog.message_dialog(
                                 _("The %s identifier already exists. Choose another one.") % id_,
-                                icon=gtk.MESSAGE_WARNING)
+                                icon=Gtk.MessageType.WARNING)
                             at=None
                             continue
                     # Creating a new type
@@ -1158,7 +1150,7 @@ class TranscriptionEdit(AdhocView):
             self.set_snapshot_scale(s)
             return True
 
-        m=gtk.Menu()
+        m=Gtk.Menu()
         for size, label in (
             ( 8, _("Smallish")),
             (16, _("Small")),
@@ -1167,46 +1159,46 @@ class TranscriptionEdit(AdhocView):
             (64, _("Larger")),
             (128, _("Huge")),
             ):
-            i=gtk.MenuItem(label)
+            i=Gtk.MenuItem(label)
             i.connect('activate', set_scale, size)
             m.append(i)
         m.show_all()
-        m.popup(None, None, None, 0, gtk.get_current_event_time())
+        m.popup(None, None, None, 0, Gtk.get_current_event_time())
         return True
 
     def get_toolbar(self):
-        tb=gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
+        tb=Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
 
         def center_on_current(*p):
             # Make sure that the current mark is visible
             if self.current_mark is not None:
                 it=self.textview.get_buffer().get_iter_at_child_anchor(self.current_mark.anchor)
                 if it:
-                    self.textview.scroll_to_iter(it, 0.2)
+                    self.textview.scroll_to_iter(it, 0.2, False, 0, 0)
             return True
 
         tb_list = (
-            (_("Open"),    _("Open"), gtk.STOCK_OPEN, self.load_transcription_cb),
-            (_("Save"),    _("Save"), gtk.STOCK_SAVE, self.save_transcription_cb),
-            (_("Save As"), _("Save As"), gtk.STOCK_SAVE_AS, self.save_as_cb),
-            (_("Import"), _("Import from annotations"), gtk.STOCK_EXECUTE, self.import_annotations_cb),
-            (_("Convert"), _("Convert to annotations"), gtk.STOCK_CONVERT, self.convert_transcription_cb),
-            (_("Preferences"), _("Preferences"), gtk.STOCK_PREFERENCES, self.edit_preferences),
-            (_("Center"), _("Center on the current mark"), gtk.STOCK_JUSTIFY_CENTER, center_on_current),
-            (_("Find"), _("Search a string"), gtk.STOCK_FIND, self.show_searchbox),
-            (_("Scale"), _("Set the size of snaphots"), gtk.STOCK_FULLSCREEN, self.scale_snaphots_menu),
+            (_("Open"),    _("Open"), Gtk.STOCK_OPEN, self.load_transcription_cb),
+            (_("Save"),    _("Save"), Gtk.STOCK_SAVE, self.save_transcription_cb),
+            (_("Save As"), _("Save As"), Gtk.STOCK_SAVE_AS, self.save_as_cb),
+            (_("Import"), _("Import from annotations"), Gtk.STOCK_EXECUTE, self.import_annotations_cb),
+            (_("Convert"), _("Convert to annotations"), Gtk.STOCK_CONVERT, self.convert_transcription_cb),
+            (_("Preferences"), _("Preferences"), Gtk.STOCK_PREFERENCES, self.edit_preferences),
+            (_("Center"), _("Center on the current mark"), Gtk.STOCK_JUSTIFY_CENTER, center_on_current),
+            (_("Find"), _("Search a string"), Gtk.STOCK_FIND, self.show_searchbox),
+            (_("Scale"), _("Set the size of snaphots"), Gtk.STOCK_FULLSCREEN, self.scale_snaphots_menu),
             )
 
         for text, tooltip, icon, callback in tb_list:
-            b=gtk.ToolButton(label=text)
+            b=Gtk.ToolButton(label=text)
             b.set_stock_id(icon)
             b.set_tooltip_text(tooltip)
             b.connect('clicked', callback)
             tb.insert(b, -1)
 
         if self.can_undo():
-            b=gtk.ToolButton(gtk.STOCK_UNDO)
+            b=Gtk.ToolButton(Gtk.STOCK_UNDO)
             b.connect('clicked', lambda i: self.undo())
             b.set_tooltip_text(_("Undo"))
             tb.insert(b, -1)
@@ -1216,16 +1208,16 @@ class TranscriptionEdit(AdhocView):
             self.options[option_name]=t.get_active()
             return True
 
-        b=gtk.ToggleToolButton(gtk.STOCK_JUMP_TO)
+        b=Gtk.ToggleToolButton(Gtk.STOCK_JUMP_TO)
         b.set_active(self.options['autoscroll'])
         b.set_tooltip_text(_("Automatically scroll to the mark position when playing"))
         b.connect('toggled', handle_toggle, 'autoscroll')
         b.set_label(_("Autoscroll"))
         tb.insert(b, -1)
 
-        i=gtk.Image()
+        i=Gtk.Image()
         i.set_from_file(config.data.advenefile( ( 'pixmaps', 'clock.png') ))
-        b=gtk.ToggleToolButton()
+        b=Gtk.ToggleToolButton()
         b.set_icon_widget(i)
         b.set_label(_("Autoinsert"))
         b.set_active(self.options['autoinsert'])
@@ -1245,27 +1237,27 @@ class TranscriptionEdit(AdhocView):
         if c.gui and c.gui.process_player_shortcuts(win, event):
             return True
 
-        if event.state & gtk.gdk.CONTROL_MASK:
-            if event.keyval == gtk.keysyms.Return:
+        if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
+            if event.keyval == Gdk.KEY_Return:
                 # Insert current timestamp mark
                 if p.status == p.PlayingStatus or p.status == p.PauseStatus:
-                    if event.state & gtk.gdk.SHIFT_MASK:
+                    if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                         # If Shift is held, pause/resume the video
                         c.update_status("pause")
                     self.insert_timestamp_mark()
                 return True
-            elif event.keyval == gtk.keysyms.Page_Down:
+            elif event.keyval == Gdk.KEY_Page_Down:
                 self.goto_next_mark()
                 return True
-            elif event.keyval == gtk.keysyms.Page_Up:
+            elif event.keyval == Gdk.KEY_Page_Up:
                 self.goto_previous_mark()
                 return True
-            elif event.keyval == gtk.keysyms.c:
+            elif event.keyval == Gdk.KEY_c and event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                 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
+            if (Gdk.keyval_to_unicode(event.keyval)
+                and event.keyval != Gdk.KEY_space
                 and (event.time - self.last_keypress_time >= self.options['automatic-mark-insertion-delay'])):
                 # Insert a mark if the user pressed a character key, except space
                 # Is there any text after the cursor ? If so, do not insert the mark
@@ -1321,7 +1313,7 @@ if __name__ == "__main__":
 
     window = transcription.popup()
 
-    window.connect('destroy', lambda e: gtk.main_quit())
+    window.connect('destroy', lambda e: Gtk.main_quit())
 
-    gtk.main ()
+    Gtk.main ()
 
diff --git a/lib/advene/gui/evaluator.py b/lib/advene/gui/evaluator.py
index fc8fc32..36f5283 100644
--- a/lib/advene/gui/evaluator.py
+++ b/lib/advene/gui/evaluator.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2017 Olivier Aubert <contact at olivieraubert>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,8 +26,12 @@ try:
 except ImportError:
     import io as StringIO
 import traceback
-import gtk
-import gobject
+import gi
+gi.require_version('Gtk', '3.0')
+gi.require_version('Gdk', '3.0')
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import GObject
 import re
 try:
     import builtins
@@ -85,20 +89,20 @@ class Evaluator:
         self.history_index = None
 
         self.control_shortcuts = {
-            gtk.keysyms.w: self.close,
-            gtk.keysyms.b: self.add_bookmark,
-            gtk.keysyms.space: self.display_bookmarks,
-            gtk.keysyms.l: self.clear_expression,
-            gtk.keysyms.f: lambda: self.fill_method_parameters(),
-            gtk.keysyms.d: lambda: self.display_completion(completeprefix=False),
-            gtk.keysyms.h: lambda: self.display_info(self.get_selection_or_cursor(), typ="doc"),
-            gtk.keysyms.H: lambda: self.display_info(self.get_selection_or_cursor(), typ="source"),
-            gtk.keysyms.Return: self.evaluate_expression,
-            gtk.keysyms.s: self.save_output_cb,
-            gtk.keysyms.n: self.next_entry,
-            gtk.keysyms.p: self.previous_entry,
-            gtk.keysyms.Page_Down: lambda: self.scroll_output(+1),
-            gtk.keysyms.Page_Up: lambda: self.scroll_output(-1),
+            Gdk.KEY_w: self.close,
+            Gdk.KEY_b: self.add_bookmark,
+            Gdk.KEY_space: self.display_bookmarks,
+            Gdk.KEY_l: self.clear_expression,
+            Gdk.KEY_f: lambda: self.fill_method_parameters(),
+            Gdk.KEY_d: lambda: self.display_completion(completeprefix=False),
+            Gdk.KEY_h: lambda: self.display_info(self.get_selection_or_cursor(), typ="doc"),
+            Gdk.KEY_H: lambda: self.display_info(self.get_selection_or_cursor(), typ="source"),
+            Gdk.KEY_Return: self.evaluate_expression,
+            Gdk.KEY_s: self.save_output_cb,
+            Gdk.KEY_n: self.next_entry,
+            Gdk.KEY_p: self.previous_entry,
+            Gdk.KEY_Page_Down: lambda: self.scroll_output(+1),
+            Gdk.KEY_Page_Up: lambda: self.scroll_output(-1),
             }
 
         self.widget=self.build_widget()
@@ -156,7 +160,7 @@ class Evaluator:
         except IOError:
             return []
         for l in data:
-            f.write(l + "\n")
+            f.write(l.encode('utf-8') + "\n")
         f.close()
         return
 
@@ -168,9 +172,9 @@ class Evaluator:
         """
         self.save_history()
 
-        if isinstance(self.widget.parent, gtk.Window):
+        if isinstance(self.widget.get_parent(), Gtk.Window):
             # Embedded in a toplevel window
-            self.widget.parent.destroy()
+            self.widget.get_parent().destroy()
         else:
             # Embedded in another component, just destroy the widget
             self.widget.destroy()
@@ -185,28 +189,26 @@ class Evaluator:
 
     def scroll_output(self, d):
         a=self.resultscroll.get_vadjustment()
-        new=a.value + d * a.page_increment
-        if  new >= 0 and new < a.upper:
-            a.value=new
+        new=a.get_property("value") + d * a.get_property("page_increment")
+        if new < 0:
+            new = 0
+        if new < a.get_property("upper"):
+            a.set_property("value", new)
         a.value_changed ()
         return True
 
     def save_output_cb(self, *p, **kw):
         """Callback for save output functionality.
         """
-        fs = gtk.FileSelection ("Save output to...")
-
-        def close_and_save(button, fs):
-            """Save the output and close the fileselector dialog.
-            """
+        fs = Gtk.FileChooserDialog ("Save output to...",
+                                    self.widget.get_toplevel(),
+                                    Gtk.FileChooserAction.SAVE,
+                                    ("_Cancel", Gtk.ResponseType.CANCEL,
+                                     "_Save", Gtk.ResponseType.ACCEPT))
+        ret = fs.run()
+        if ret == Gtk.ResponseType.ACCEPT:
             self.save_output(filename=fs.get_filename())
-            fs.destroy()
-            return True
-
-        fs.ok_button.connect_after ('clicked', close_and_save, fs)
-        fs.cancel_button.connect('clicked', lambda win: fs.destroy ())
-
-        fs.show ()
+        fs.destroy()
         return True
 
     def save_output(self, filename=None):
@@ -214,7 +216,8 @@ class Evaluator:
         """
         b=self.output.get_buffer()
         begin,end=b.get_bounds()
-        out=str(b.get_text(begin, end))
+        # out is a utf-8 encoded string
+        out=b.get_text(begin, end, False)
         f=open(filename, "w")
         f.write(out)
         f.close()
@@ -225,7 +228,12 @@ class Evaluator:
         """Return the content of the expression window.
         """
         b=self.source.get_buffer()
-        return str(b.get_text(*b.get_bounds()))
+        if b.get_selection_bounds():
+            begin, end = b.get_selection_bounds()
+            b.place_cursor(end)
+        else:
+            begin,end=b.get_bounds()
+        return b.get_text(begin, end, False).decode('utf-8')
 
     def set_expression(self, e, clear=True):
         """Set the content of the expression window.
@@ -253,6 +261,8 @@ class Evaluator:
         end=b.get_bounds()[1]
         b.place_cursor(end)
         for l in p:
+            if not isinstance(l, unicode):
+                l = unicode(l, 'utf-8')
             b.insert_at_cursor(l)
         return True
 
@@ -361,25 +371,26 @@ class Evaluator:
         If a part of the expression is selected, then evaluate only
         the selection.
         """
-        b=self.source.get_buffer()
-        if b.get_selection_bounds():
-            begin, end = b.get_selection_bounds()
-            b.place_cursor(end)
-        else:
-            begin,end=b.get_bounds()
-        expr=str(b.get_text(begin, end))
+        expr = self.get_expression()
         if (not self.history) or self.history[-1] != expr:
             self.history.append(expr)
         symbol=None
 
-        m=re.match('import\s+(\S+)', expr)
+        silent_mode = expr.startswith('@')
+        expr = expr.lstrip('@')
+
+        m=re.match('(from\s+(\S+)\s+)?import\s+(\S+)(\s+as\s+(\S+))?', expr)
         if m is not None:
-            modname=m.group(1)
+            modname = m.group(2)
+            symname = m.group(3)
+            alias = m.group(5) or symname or modname
+            if modname and symname:
+                modname = '.'.join((modname, symname))
             self.clear_output()
             try:
-                mod=__import__(modname)
-                self.globals_[modname]=mod
-                self.log("Successfully imported %s" % modname)
+                mod = __import__(modname or symname)
+                self.globals_[alias]=mod
+                self.log("Successfully imported %s as %s" % (modname or symname, alias))
             except ImportError:
                 self.log("Cannot import module %s:" % modname)
                 f=StringIO.StringIO()
@@ -400,11 +411,19 @@ class Evaluator:
             t0=time.time()
             res=eval(expr, self.globals_, self.locals_)
             self.status_message("Execution time: %f s" % (time.time() - t0))
-            self.clear_output()
-            try:
-                self.log(str(res))
-            except UnicodeDecodeError:
-                self.log(str(repr(res)))
+            if not silent_mode:
+                self.clear_output()
+                try:
+                    if isinstance(res, unicode):
+                        view = res.encode('utf-8')
+                    else:
+                        view = unicode(res).encode('utf-8')
+                except UnicodeDecodeError:
+                    view = str(repr(res))
+                try:
+                    self.log(view)
+                except Exception, e:
+                    self.log("Exception in result visualisation: ", unicode(e))
             if symbol is not None:
                 if not '.' in symbol and not symbol.endswith(']'):
                     self.log('\n\n[Value stored in %s]' % symbol)
@@ -461,15 +480,7 @@ class Evaluator:
     def display_completion(self, completeprefix=True):
         """Display the completion.
         """
-        b=self.source.get_buffer()
-        if b.get_selection_bounds():
-            begin, end = b.get_selection_bounds()
-            cursor=end
-            b.place_cursor(end)
-        else:
-            begin,end=b.get_bounds()
-            cursor=b.get_iter_at_mark(b.get_insert())
-        expr=str(b.get_text(begin, cursor))
+        expr = self.get_selection_or_cursor().lstrip('@')
         if expr.endswith('.'):
             expr=expr[:-1]
             trailingdot=True
@@ -555,6 +566,7 @@ class Evaluator:
                 element = self.commonprefix(completion)
 
             if element != "":
+                b = self.source.get_buffer()
                 # Got one completion. We can complete the buffer.
                 if attr is not None:
                     element=element.replace(attr, "", 1)
@@ -574,15 +586,7 @@ class Evaluator:
     def fill_method_parameters(self):
         """Fill the parameter names for the method before cursor.
         """
-        b=self.source.get_buffer()
-        if b.get_selection_bounds():
-            begin, end = b.get_selection_bounds()
-            cursor=end
-            b.place_cursor(end)
-        else:
-            begin,end=b.get_bounds()
-            cursor=b.get_iter_at_mark(b.get_insert())
-        expr=str(b.get_text(begin, cursor))
+        expr = self.get_selection_or_cursor().lstrip('@')
 
         m=re.match('.+[=\(\[\s](.+?)$', expr)
         if m:
@@ -615,6 +619,8 @@ class Evaluator:
             args=re.findall('\((.*?)\)', res.__doc__.splitlines()[0])
 
         if args is not None:
+            b = self.source.get_buffer()
+            cursor=b.get_iter_at_mark(b.get_insert())
             beginmark=b.create_mark(None, cursor, True)
             b.insert_at_cursor("(%s)" % ", ".join(args))
             it=b.get_iter_at_mark(beginmark)
@@ -637,54 +643,54 @@ class Evaluator:
         else:
             cursor=b.get_iter_at_mark(b.get_insert())
             begin=b.get_iter_at_line(cursor.get_line())
-        expr=str(b.get_text(begin, cursor))
+        expr=b.get_text(begin, cursor, False).decode('utf-8')
         return expr
 
     def make_window(self, widget=None):
         """Built the application window.
         """
-        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
-        vbox=gtk.VBox()
+        window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
+        vbox=Gtk.VBox()
         window.add(vbox)
 
-        window.vbox = gtk.VBox()
+        window.vbox = Gtk.VBox()
         vbox.add(window.vbox)
         if widget:
             window.vbox.add(widget)
 
-        hb=gtk.HButtonBox()
-        b=gtk.Button(stock=gtk.STOCK_CLOSE)
+        hb=Gtk.HButtonBox()
+        b=Gtk.Button("window-close")
         b.connect('clicked', lambda b: window.destroy())
         hb.add(b)
-        vbox.pack_start(hb, expand=False)
+        vbox.pack_start(hb, False, True, 0)
 
         return window
 
     def popup(self, embedded=True):
         """Popup the application window.
         """
-        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+        window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
         window.connect('key-press-event', self.key_pressed_cb)
         window.set_title ("Python evaluation")
 
-        b=gtk.SeparatorToolItem()
+        b=Gtk.SeparatorToolItem()
         b.set_expand(True)
         b.set_draw(False)
         self.toolbar.insert(b, -1)
 
         if embedded:
             # Add the Close button to the toolbar
-            b=gtk.ToolButton(gtk.STOCK_CLOSE)
+            b=Gtk.ToolButton("window-close")
             b.connect('clicked', self.close)
             self.toolbar.insert(b, -1)
-            self.control_shortcuts[gtk.keysyms.w] = self.close
+            self.control_shortcuts[Gdk.KEY_w] = self.close
         else:
             # Add the Quit button to the toolbar
-            b=gtk.ToolButton(gtk.STOCK_QUIT)
+            b=Gtk.ToolButton("window-quit")
             b.connect('clicked', lambda b: window.destroy())
             self.toolbar.insert(b, -1)
-            window.connect('destroy', lambda e: gtk.main_quit())
-            self.control_shortcuts[gtk.keysyms.q] = lambda: gtk.main_quit()
+            window.connect('destroy', lambda e: Gtk.main_quit())
+            self.control_shortcuts[Gdk.KEY_q] = lambda: Gtk.main_quit()
 
         window.add (self.widget)
         window.show_all()
@@ -693,29 +699,44 @@ class Evaluator:
         self.source.grab_focus()
         return window
 
+    def run(self):
+        self.locals_['self'] = self
+        window = self.popup(embedded=False)
+        center_on_mouse(window)
+        self.locals_['w'] = window
+        window.connect('destroy', lambda e: Gtk.main_quit())
+        Gtk.main ()
+        self.save_history()
+
     def status_message(self, m):
         cid=self.statusbar.get_context_id('info')
-        message_id=self.statusbar.push(cid, str(m))
+        self.statusbar.push(cid, str(m))
         # Display the message only 4 seconds
         def undisplay():
             self.statusbar.pop(cid)
             return False
-        gobject.timeout_add(4000, undisplay)
+        GObject.timeout_add(4000, undisplay)
 
     def key_pressed_cb(self, win, event):
         """Handle key press event.
         """
-        if event.keyval == gtk.keysyms.F1:
+        if event.keyval == Gdk.KEY_F1:
             self.help()
             return True
-        if event.keyval == gtk.keysyms.Tab:
+        if event.keyval == Gdk.KEY_Tab:
             self.display_completion()
             return True
 
-        if event.state & gtk.gdk.CONTROL_MASK:
+        if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             action=self.control_shortcuts.get(event.keyval)
             if action:
-                action()
+                try:
+                    action()
+                except Exception:
+                    f=StringIO.StringIO()
+                    traceback.print_exc(file=f)
+                    self.log(f.getvalue())
+                    f.close()
                 return True
 
         return False
@@ -748,13 +769,13 @@ class Evaluator:
             return True
         if not self.bookmarks:
             return True
-        m=gtk.Menu()
+        m=Gtk.Menu()
         for b in reversed(self.bookmarks):
-            i=gtk.MenuItem(b, use_underline=False)
+            i=Gtk.MenuItem(b, use_underline=False)
             i.connect('activate', set_expression, b)
             m.append(i)
         m.show_all()
-        m.popup(None, widget, None, 0, gtk.get_current_event_time())
+        m.popup(None, widget, None, 0, 1, Gtk.get_current_event_time())
         return True
 
     def info(self, *p):
@@ -763,63 +784,73 @@ class Evaluator:
                 self.logbuffer.insert_at_cursor(time.strftime("%H:%M:%S") + l + "\n")
         return True
 
+    def dump_tree(self, w, indent=0):
+        """Dump a tree representation of the widget and its children.
+        """
+        tree = "%s%s %s %s\n%s%s" % (" " * indent, w.get_name(), w.get_css_name(), repr(w),
+                                     " " * indent, " ".join(".%s" % cl for cl in w.get_style_context().list_classes()))
+        try:
+            tree = "\n\n".join((tree, "\n".join(self.dump_tree(c, indent + 8) for c in w.get_children())))
+        except AttributeError:
+            pass
+        return tree
+
     def build_widget(self):
         """Build the evaluator widget.
         """
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
+        self.vbox = vbox
 
-        tb=gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
-        # Use small toolbar button everywhere
-        gtk.settings_get_default().set_property('gtk_toolbar_icon_size', gtk.ICON_SIZE_SMALL_TOOLBAR)
+        tb=Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
 
         for (icon, tip, action) in (
-            (gtk.STOCK_SAVE, "Save output window (C-s)", self.save_output_cb),
-            (gtk.STOCK_CLEAR, "Clear output window", self.clear_output),
-            (gtk.STOCK_DELETE, "Clear expression (C-l)", self.clear_expression),
-            (gtk.STOCK_EXECUTE, "Evaluate expression (C-Return)", self.evaluate_expression),
-            (gtk.STOCK_ADD, "Add a bookmark (C-b)", self.add_bookmark),
-            (gtk.STOCK_REMOVE, "Remove a bookmark", self.remove_bookmark),
-            (gtk.STOCK_INDEX, "Display bookmarks (C-Space)", self.display_bookmarks),
+            (Gtk.STOCK_SAVE, "Save output window (C-s)", self.save_output_cb),
+            (Gtk.STOCK_CLEAR, "Clear output window", self.clear_output),
+            (Gtk.STOCK_DELETE, "Clear expression (C-l)", self.clear_expression),
+            (Gtk.STOCK_EXECUTE, "Evaluate expression (C-Return)", self.evaluate_expression),
+            (Gtk.STOCK_ADD, "Add a bookmark (C-b)", self.add_bookmark),
+            (Gtk.STOCK_REMOVE, "Remove a bookmark", self.remove_bookmark),
+            (Gtk.STOCK_INDEX, "Display bookmarks (C-Space)", self.display_bookmarks),
             ):
-            b=gtk.ToolButton(icon)
+            b=Gtk.ToolButton(icon)
             b.connect('clicked', action)
             b.set_tooltip_text(tip)
             tb.insert(b, -1)
 
         # So that applications can define their own buttons
         self.toolbar=tb
-        vbox.pack_start(tb, expand=False)
+        vbox.pack_start(tb, False, True, 0)
 
-        self.source=gtk.TextView ()
+        self.source=Gtk.TextView ()
         self.source.set_editable(True)
-        self.source.set_wrap_mode (gtk.WRAP_CHAR)
+        self.source.set_wrap_mode (Gtk.WrapMode.CHAR)
 
-        f=gtk.Frame("Expression")
-        s=gtk.ScrolledWindow()
-        s.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        f=Gtk.Frame.new(label="Expression")
+        s=Gtk.ScrolledWindow()
+        s.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         s.add(self.source)
         f.add(s)
-        vbox.pack_start(f, expand=False)
+        vbox.pack_start(f, True, True, 0)
 
-        self.output=gtk.TextView()
+        self.output=Gtk.TextView()
         self.output.set_editable(False)
-        self.output.set_wrap_mode (gtk.WRAP_CHAR)
+        self.output.set_wrap_mode (Gtk.WrapMode.CHAR)
 
-        f=gtk.Frame("Result")
-        self.resultscroll=gtk.ScrolledWindow()
-        self.resultscroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        f=Gtk.Frame.new(label="Result")
+        self.resultscroll=Gtk.ScrolledWindow()
+        self.resultscroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         self.resultscroll.add(self.output)
         self.resultscroll.set_size_request( -1, 200 )
         f.add(self.resultscroll)
 
         if self.display_info_widget:
-            self.logwidget = gtk.TextView()
+            self.logwidget = Gtk.TextView()
             self.logbuffer = self.logwidget.get_buffer()
-            sw=gtk.ScrolledWindow()
+            sw=Gtk.ScrolledWindow()
             sw.add(self.logwidget)
 
-            pane=gtk.VPaned()
+            pane=Gtk.VPaned()
             vbox.add(pane)
             pane.add1(f)
             pane.pack2(sw)
@@ -829,16 +860,16 @@ class Evaluator:
         self.source.connect('key-press-event', self.key_pressed_cb)
         self.output.connect('key-press-event', self.key_pressed_cb)
 
-        self.statusbar=gtk.Statusbar()
-        self.statusbar.set_has_resize_grip(False)
-        vbox.pack_start(self.statusbar, expand=False)
+        self.statusbar=Gtk.Statusbar()
+        #self.statusbar.set_has_resize_grip(False)
+        vbox.pack_start(self.statusbar, False, True, 0)
 
         vbox.show_all()
 
         return vbox
 
 def center_on_mouse(w):
-    """Center the given gtk.Window on the mouse position.
+    """Center the given Gtk.Window on the mouse position.
     """
     root=w.get_toplevel().get_root_window()
     (screen, x, y, mod) = root.get_display().get_pointer()
@@ -858,23 +889,10 @@ def center_on_mouse(w):
     w.move(posx, posy)
 
 def launch(globals_=None, locals_=None, historyfile=None):
-    if globals_ is None:
-        globals_={}
-    if locals_ is None:
-        locals_={}
     if historyfile is None:
         historyfile=os.path.join(os.getenv('HOME'), '.pyeval.log')
-    ev=Evaluator(globals_=globals_, locals_=locals_, historyfile=historyfile)
-
-    ev.locals_['self']=ev
-    window=ev.popup(embedded=False)
-    center_on_mouse(window)
-    ev.locals_['w']=window
-
-    window.connect('destroy', lambda e: gtk.main_quit())
-
-    gtk.main ()
-    ev.save_history()
+    ev = Evaluator(globals_=globals_, locals_=locals_, historyfile=historyfile)
+    ev.run()
 
 if __name__ == "__main__":
     launch(globals(), locals())
diff --git a/lib/advene/gui/main.py b/lib/advene/gui/main.py
index 3e5ac0c..0501c9a 100755
--- a/lib/advene/gui/main.py
+++ b/lib/advene/gui/main.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -23,43 +23,41 @@ important methods and the various GUI callbacks (generally all methods
 with the C{on_} prefix).
 """
 
+import logging
+logger = logging.getLogger(__name__)
+
 import sys
 import time
 import os
-import subprocess
-import signal
-import shutil
-import tempfile
 import StringIO
 import textwrap
 import re
 import urllib2
 import socket
-import threading
 import Queue
 
 import advene.core.config as config
 import advene.core.version
 
-if config.data.os == 'win32':
-    import win32process
-
-import gtk
-import gobject
-import pango
+import gi
+gi.require_version('Gdk', '3.0')
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gdk
+from gi.repository import GdkPixbuf
+from gi.repository import Gtk
+from gi.repository import GObject
+from gi.repository import Pango
 import pprint
 
-import gettext
+#Gdk.set_show_events(True)
 import locale
-
-print "Using localedir %s" % config.data.path['locale']
+logger.info("Using localedir %s" % config.data.path['locale'])
 
 # Locale initialisation
 try:
     locale.setlocale(locale.LC_ALL, '')
 except locale.Error:
-    print "Error in locale initialization. Interface translation may be incorrect."
-    pass
+    logger.error("Error in locale initialization. Interface translation may be incorrect.")
 config.init_gettext()
 # The following line is useless, since gettext.install defines _ as a
 # builtin. However, code checking applications need to be explicitly
@@ -91,7 +89,6 @@ from advene.gui.util import get_pixmap_button, get_small_stock_button, image_fro
 from advene.gui.util.playpausebutton import PlayPauseButton
 import advene.gui.plugins.actions
 import advene.gui.plugins.contenthandlers
-import advene.gui.views.tree
 from advene.gui.views import AdhocViewParametersParser
 import advene.gui.views.timeline
 import advene.gui.views.table
@@ -123,48 +120,47 @@ class DummyGlade:
     def __init__(self, menu_definition):
         """Main window definition.
         """
-        self.win=gtk.Window()
+        self.win=Gtk.Window()
 
-        v=gtk.VBox()
+        v=Gtk.VBox()
         self.win.add(v)
 
-        self.menubar=gtk.MenuBar()
+        self.menubar=Gtk.MenuBar()
         self.build_menubar(menu_definition, self.menubar)
-        v.pack_start(self.menubar, expand=False)
+        v.pack_start(self.menubar, False, True, 0)
 
-        self.toolbar_container=gtk.HBox()
+        self.toolbar_container=Gtk.HBox()
 
-        self.fileop_toolbar=gtk.Toolbar()
-        self.fileop_toolbar.set_style(gtk.TOOLBAR_ICONS)
+        self.fileop_toolbar=Gtk.Toolbar()
+        self.fileop_toolbar.set_style(Gtk.ToolbarStyle.ICONS)
         self.fileop_toolbar.set_show_arrow(False)
-        self.toolbar_container.pack_start(self.fileop_toolbar, expand=True)
+        self.toolbar_container.pack_start(self.fileop_toolbar, True, True, 0)
 
-        self.adhoc_hbox=gtk.HBox()
-        self.toolbar_container.pack_start(self.adhoc_hbox, expand=True)
+        self.adhoc_hbox=Gtk.HBox()
+        self.toolbar_container.pack_start(self.adhoc_hbox, True, True, 0)
 
-        self.traces_switch=gtk.HBox()
-        self.toolbar_container.pack_start(self.traces_switch, expand=False)
+        self.traces_switch=Gtk.HBox()
+        self.toolbar_container.pack_start(self.traces_switch, False, True, 0)
 
-        self.search_hbox=gtk.HBox()
-        self.toolbar_container.pack_start(self.search_hbox, expand=False)
-        v.pack_start(self.toolbar_container, expand=False)
+        self.search_hbox=Gtk.HBox()
+        self.toolbar_container.pack_start(self.search_hbox, False, True, 0)
+        v.pack_start(self.toolbar_container, False, True, 0)
 
-        self.application_space = gtk.VBox()
+        self.application_space = Gtk.VBox()
         v.add(self.application_space)
 
-        self.bottombar = gtk.HBox()
+        self.bottombar = Gtk.HBox()
 
-        self.statusbar = gtk.Statusbar()
+        self.statusbar = Gtk.Statusbar()
 
         # Modify font size. First find the embedded label
         w=self.statusbar
         while hasattr(w, 'get_children'):
             w=w.get_children()[0]
-        w.modify_font(pango.FontDescription("sans 9"))
+        w.modify_font(Pango.FontDescription("sans 9"))
 
-        self.statusbar.set_has_resize_grip(False)
-        self.bottombar.pack_start(self.statusbar, expand=True)
-        v.pack_start(self.bottombar, expand=False)
+        self.bottombar.pack_start(self.statusbar, True, True, 0)
+        v.pack_start(self.bottombar, False, True, 0)
 
         self.win.show_all()
 
@@ -172,14 +168,14 @@ class DummyGlade:
         """Populate the menu with data taken from items.
         """
         if menu is None:
-            menu=gtk.Menu()
+            menu=Gtk.Menu()
         for (name, action, tooltip) in items:
             if name.startswith('gtk-'):
-                i=gtk.ImageMenuItem(stock_id=name)
+                i=Gtk.ImageMenuItem(stock_id=name)
             elif not name:
-                i=gtk.SeparatorMenuItem()
+                i=Gtk.SeparatorMenuItem()
             else:
-                i=gtk.MenuItem(name)
+                i=Gtk.MenuItem.new_with_mnemonic(name)
             if isinstance(action, tuple):
                 # There is a submenu
                 m=self.build_menubar(action)
@@ -195,7 +191,7 @@ class DummyGlade:
             elif name == _("_View"):
                 self.adhoc_view_menuitem=i
             elif name == _("Packages"):
-                self.package_list_menu=gtk.Menu()
+                self.package_list_menu=Gtk.Menu()
                 i.set_submenu(self.package_list_menu)
             elif name == _("Open recent"):
                 self.recent_menuitem = i
@@ -229,8 +225,9 @@ class AdveneGUI(object):
     def __init__ (self):
         """Initializes the GUI and other attributes.
         """
-        self.logbuffer = gtk.TextBuffer()
-        self.busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH)
+        self.init_config()
+        self.logbuffer = Gtk.TextBuffer()
+        self.busy_cursor = Gdk.Cursor.new(Gdk.CursorType.WATCH)
 
         self.controller = advene.core.controller.AdveneController()
         self.controller.register_gui(self)
@@ -238,7 +235,6 @@ 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
         menu_definition=(
             (_("_File"), (
                     ( _("_New package"), self.on_new1_activate, _("Create a new package")),
@@ -298,9 +294,7 @@ class AdveneGUI(object):
                     ( _("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") ),
                     ( _("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") ),
                     ), "" ),
             (_("Packages"), (
@@ -311,7 +305,7 @@ class AdveneGUI(object):
                     ( _("Get support"), self.on_support1_activate, "" ),
                     ( _("Check for updates"), self.check_for_update, "" ),
                     ( _("Display shortcuts"), self.on_helpshortcuts_activate, "" ),
-                    ( _("Display logfile"), self.on_advene_log_display, _("Display log file")),
+                    ( _("Display logfile"), self.on_advene_log_display, _("Display log messages")),
                     ( _("Open logfile folder"), self.on_advene_log_folder_display, _("Display logfile folder. It can help when sending the advene.log file by e-mail.")),
                     ( _("_About"), self.on_about1_activate, "" ),
                     ), "" ),
@@ -319,12 +313,14 @@ class AdveneGUI(object):
 
         self.gui = DummyGlade(menu_definition)
 
-        f = gtk.RecentFilter()
-        f.add_application(gobject.get_application_name())
-        recent = gtk.RecentChooserMenu()
+        dialog.set_default_transient_parent(self.gui.win)
+
+        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)
+        recent.set_sort_type(Gtk.RecentSortType.MRU)
         self.gui.recent_menuitem.set_submenu(recent)
         def open_history_file(rec):
             fname = rec.get_current_uri()
@@ -335,42 +331,42 @@ class AdveneGUI(object):
                 self.set_busy_cursor(False)
                 dialog.message_dialog(_("Cannot load package %(filename)s:\n%(error)s") % {
                         'filename': fname,
-                        'error': unicode(e)}, gtk.MESSAGE_ERROR)
+                        'error': unicode(e)}, Gtk.MessageType.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")),
+            ('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")),
+            ('select_dvd', Gtk.STOCK_CDROM, self.on_b_selectdvd_clicked, _("Select DVD")),
             (None, None, None, None),
-            ('undo', gtk.STOCK_UNDO, self.undo, _("Undo")),
+            ('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 = 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()
+                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)
+                recent.set_sort_type(Gtk.RecentSortType.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:
@@ -384,24 +380,24 @@ class AdveneGUI(object):
         def display_snapshot_monitor_menu(v):
             s = getattr(self.controller.player, 'snapshotter', None)
 
-            m = gtk.Menu()
+            m = Gtk.Menu()
             if s:
-                m.append(gtk.MenuItem(_("Snapshotter activity")))
-                m.append(gtk.SeparatorMenuItem())
-                m.append(gtk.MenuItem(_("%d queued requests") % s.timestamp_queue.qsize()))
-                i = gtk.MenuItem(_("Cancel all requests"))
+                m.append(Gtk.MenuItem(_("Snapshotter activity")))
+                m.append(Gtk.SeparatorMenuItem())
+                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)
 
             else:
-                m.append(gtk.MenuItem(_("No snapshotter")))
+                m.append(Gtk.MenuItem(_("No snapshotter")))
             m.show_all()
-            m.popup(None, None, None, 0, gtk.get_current_event_time())
+            m.popup_at_pointer(None)
             return True
 
         self.snapshotter_image = {
-            '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') )),
+            '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):
@@ -426,20 +422,19 @@ class AdveneGUI(object):
 
         b = get_pixmap_button('snapshotter-idle.png', display_snapshot_monitor_menu)
         b._state = None
-        b.set_relief(gtk.RELIEF_NONE)
-        self.gui.bottombar.pack_start(b, expand=False)
+        b.set_relief(Gtk.ReliefStyle.NONE)
+        self.gui.bottombar.pack_start(b, False, True, 0)
         self.snapshotter_monitor_icon = b
         b.set_state=set_state.__get__(b)
 
         # Log messages button
         def display_log_messages(v):
-            v=self.open_adhoc_view('logmessages', destination='south')
-            v.autoscroll()
+            self.open_adhoc_view('logmessages', destination='south')
             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)
-        self.gui.bottombar.pack_start(b, expand=False)
+        b.set_relief(Gtk.ReliefStyle.NONE)
+        self.gui.bottombar.pack_start(b, False, True, 0)
         b.show()
 
         # Resize the main window
@@ -447,7 +442,7 @@ class AdveneGUI(object):
         window.connect('key-press-event', self.on_win_key_press_event)
         window.connect('destroy', self.on_exit)
         self.init_window_size(window, 'main')
-        window.set_icon_list(*self.get_icon_list())
+        window.set_icon_list(self.get_icon_list())
 
         # Last auto-save time (in ms)
         self.last_auto_save=time.time()*1000
@@ -473,34 +468,33 @@ class AdveneGUI(object):
                                                prefix="advene_gui_%s" % n)
                 self.gui_plugins.extend(l)
             except OSError:
-                print "OSerror"
-                pass
+                logger.error("OSerror while trying to load %s plugins" % n)
 
         def update_quicksearch_sources(mi):
             """Display a dialog allowing to edit quicksearch-sources setting.
             """
-            d = gtk.Dialog(title=_("Quicksearch lists"),
-                   parent=None,
-                   flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                   buttons=( gtk.STOCK_OK, gtk.RESPONSE_OK,
-                             gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL ))
+            d = Gtk.Dialog(title=_("Quicksearch lists"),
+                   parent=self.gui.win,
+                   flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                   buttons=( Gtk.STOCK_OK, Gtk.ResponseType.OK,
+                             Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL ))
 
-            d.vbox.pack_start(gtk.Label(_("Please specify the lists of elements to be searched.")), expand=False)
+            d.vbox.pack_start(Gtk.Label(_("Please specify the lists of elements to be searched.")), False, False, 0)
             for el in self.controller.defined_quicksearch_sources:
-                b=gtk.CheckButton(el.title, use_underline=False)
+                b=Gtk.CheckButton(el.title, use_underline=False)
                 b._element = el
                 b.set_active(el.value in config.data.preferences['quicksearch-sources'])
-                d.vbox.pack_start(b, expand=False)
+                d.vbox.pack_start(b, False, True, 0)
             d.vbox.show_all()
             d.connect('key-press-event', dialog.dialog_keypressed_cb)
             d.show()
             dialog.center_on_mouse(d)
             res=d.run()
-            if res == gtk.RESPONSE_OK:
+            if res == Gtk.ResponseType.OK:
                 # Update quicksearch-sources
-                elements=[ b._element
-                           for b in d.vbox.get_children()
-                           if hasattr(b, 'get_active') and b.get_active() ]
+                elements=[ but._element
+                           for but in d.vbox.get_children()
+                           if hasattr(but, 'get_active') and but.get_active() ]
                 config.data.preferences['quicksearch-sources']=[ el.value for el in elements ]
                 # Update tooltip
                 label="\n".join( el.title for el in elements )
@@ -511,10 +505,10 @@ class AdveneGUI(object):
 
         # Trace switch button
         tsb = self.gui.traces_switch
-        b=gtk.Button()
+        b=Gtk.Button()
 
         def trace_toggle(w):
-            i=gtk.Image()
+            i=Gtk.Image()
             if config.data.preferences['record-actions']:
                 config.data.preferences['record-actions']=False
                 i.set_from_file(config.data.advenefile( ( 'pixmaps', 'traces_off.png') ))
@@ -530,45 +524,44 @@ class AdveneGUI(object):
         config.data.preferences['record-actions']=not config.data.preferences['record-actions']
         trace_toggle(b)
         b.connect('clicked', trace_toggle)
-        tsb.pack_start(b, expand=False)
+        tsb.pack_start(b, False, True, 0)
         tsb.show_all()
-        self.quicksearch_button=get_small_stock_button(gtk.STOCK_FIND)
-        self.quicksearch_entry=gtk.Entry()
+        self.quicksearch_button=get_small_stock_button(Gtk.STOCK_FIND)
+        self.quicksearch_entry=Gtk.Entry()
         self.quicksearch_entry.set_tooltip_text(_('String to search'))
 
         def quicksearch_options(button, event):
             """Generate the quicksearch options menu.
             """
-            if event.type != gtk.gdk.BUTTON_PRESS:
+            if event.type != Gdk.EventType.BUTTON_PRESS:
                 return False
-            menu=gtk.Menu()
-            item=gtk.MenuItem(_("Launch search"))
+            menu=Gtk.Menu()
+            item=Gtk.MenuItem(_("Launch search"))
             item.connect('activate', self.do_quicksearch)
-            if not self.quicksearch_entry.get_text():
+            if not self.quicksearch_entry.get_text().decode('utf-8'):
                 item.set_sensitive(False)
             menu.append(item)
-            item=gtk.CheckMenuItem(_("Ignore case"))
+            item=Gtk.CheckMenuItem(_("Ignore case"))
             item.set_active(config.data.preferences['quicksearch-ignore-case'])
             item.connect('toggled', lambda i: config.data.preferences.__setitem__('quicksearch-ignore-case', i.get_active()))
             menu.append(item)
 
-            item=gtk.MenuItem(_("Searched elements"))
+            item=Gtk.MenuItem(_("Searched elements"))
             item.connect('activate', update_quicksearch_sources)
             menu.append(item)
 
             menu.show_all()
-            menu.popup(None, None, None, 0, gtk.get_current_event_time())
+            menu.popup_at_pointer(None)
             return True
 
         hb=self.gui.search_hbox
         self.quicksearch_entry.connect('activate', self.do_quicksearch)
-        hb.pack_start(self.quicksearch_entry, expand=False)
+        hb.pack_start(self.quicksearch_entry, False, True, 0)
         self.quicksearch_button.connect('button-press-event', quicksearch_options)
-        hb.pack_start(self.quicksearch_button, expand=False, fill=False)
+        hb.pack_start(self.quicksearch_button, False, False, 0)
         hb.show_all()
 
         # Player status
-        p=self.controller.player
         self.update_player_labels()
         self.oldstatus = "NotStarted"
         self.last_slow_position = 0
@@ -599,11 +592,26 @@ class AdveneGUI(object):
         """
         config.init_gettext()
 
+    def init_config(self):
+        """Enrich config module with Gtk-related elements.
+        """
+        def log_error(prov, section, error):
+            logger.error("Error while parsing advene.css file in %s: %s" % (section, error))
+        for name, item in config.data.drag_type.items():
+            config.data.target_entry[name] = Gtk.TargetEntry.new(item[0][0], 0, item[0][2])
+        # Load advene.css file
+        css_provider = Gtk.CssProvider()
+        css_provider.connect('parsing-error', log_error)
+        css_provider.load_from_path(config.data.advenefile('advene.css'))
+        context = Gtk.StyleContext()
+        context.add_provider_for_screen(Gdk.Screen.get_default(), css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
+
+
     def get_icon_list(self):
         """Return the list of icon pixbuf appropriate for Window.set_icon_list.
         """
         if not hasattr(self, '_icon_list'):
-            l=[ gtk.gdk.pixbuf_new_from_file(config.data.advenefile(
+            l=[ GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile(
                         ( 'pixmaps', 'icon_advene%d.png' % size ) ))
                               for size in (16, 32, 48, 64, 128) ]
             self._icon_list=[ i for i in l if i is not None ]
@@ -612,7 +620,7 @@ class AdveneGUI(object):
     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)
+        self.gui.win.get_window().set_cursor(self.busy_cursor if busy else None)
 
     def update_player_labels(self):
         """Update the representation of player status.
@@ -644,6 +652,11 @@ class AdveneGUI(object):
                 v.update_annotation(annotation=annotation, event=event)
             except AttributeError:
                 pass
+            except Exception:
+                import traceback
+                s=StringIO.StringIO()
+                traceback.print_exc (file = s)
+                self.log(_("Exception in update_annotation: %s.") % s.getvalue())
         # Update the content indexer
         if event.endswith('EditEnd') or event.endswith('Create'):
             # Update the type fieldnames
@@ -651,7 +664,7 @@ class AdveneGUI(object):
                 annotation.type._fieldnames.update(helper.common_fieldnames([ annotation ]))
 
         # Refresh the edit popup for the associated relations
-        for e in [ e for e in self.edit_popups if e.element in annotation.relations ]:
+        for e in [ el for el in self.edit_popups if el.element in annotation.relations ]:
             e.refresh()
         return True
 
@@ -670,8 +683,13 @@ class AdveneGUI(object):
                 v.update_relation(relation=relation, event=event)
             except AttributeError:
                 pass
+            except Exception:
+                import traceback
+                s=StringIO.StringIO()
+                traceback.print_exc (file = s)
+                self.log(_("Exception in update_relation: %s.") % s.getvalue())
         # Refresh the edit popup for the members
-        for e in [ e for e in self.edit_popups if e.element in relation.members ]:
+        for e in [ el for el in self.edit_popups if el.element in relation.members ]:
             e.refresh()
         return True
 
@@ -690,6 +708,11 @@ class AdveneGUI(object):
                 v.update_view(view=view, event=event)
             except AttributeError:
                 pass
+            except Exception:
+                import traceback
+                s=StringIO.StringIO()
+                traceback.print_exc (file = s)
+                self.log(_("Exception in update_view: %s.") % s.getvalue())
 
         if view.content.mimetype == 'application/x-advene-ruleset':
             # Update the combo box
@@ -716,6 +739,11 @@ class AdveneGUI(object):
                 v.update_query(query=query, event=event)
             except AttributeError:
                 pass
+            except Exception:
+                import traceback
+                s=StringIO.StringIO()
+                traceback.print_exc (file = s)
+                self.log(_("Exception in update_query: %s.") % s.getvalue())
         return True
 
     def resource_lifecycle(self, context, parameters):
@@ -734,6 +762,11 @@ class AdveneGUI(object):
                 v.update_resource(resource=resource, event=event)
             except AttributeError:
                 pass
+            except Exception:
+                import traceback
+                s=StringIO.StringIO()
+                traceback.print_exc (file = s)
+                self.log(_("Exception in update_resource: %s.") % s.getvalue())
         return True
 
     def schema_lifecycle(self, context, parameters):
@@ -752,6 +785,11 @@ class AdveneGUI(object):
                 v.update_schema(schema=schema, event=event)
             except AttributeError:
                 pass
+            except Exception:
+                import traceback
+                s=StringIO.StringIO()
+                traceback.print_exc (file = s)
+                self.log(_("Exception in update_schema: %s.") % s.getvalue())
         return True
 
     def annotationtype_lifecycle(self, context, parameters):
@@ -770,6 +808,11 @@ class AdveneGUI(object):
                 v.update_annotationtype(annotationtype=at, event=event)
             except AttributeError:
                 pass
+            except Exception:
+                import traceback
+                s=StringIO.StringIO()
+                traceback.print_exc (file = s)
+                self.log(_("Exception in update_annotationtype: %s.") % s.getvalue())
         # Update the current type menu
         self.update_gui()
         # Update the content indexer
@@ -793,6 +836,11 @@ class AdveneGUI(object):
                 v.update_relationtype(relationtype=rt, event=event)
             except AttributeError:
                 pass
+            except Exception:
+                import traceback
+                s=StringIO.StringIO()
+                traceback.print_exc (file = s)
+                self.log(_("Exception in update_relationtype: %s.") % s.getvalue())
         # Update the content indexer
         if event.endswith('Create'):
             self.controller.package._indexer.element_update(rt)
@@ -898,22 +946,22 @@ class AdveneGUI(object):
     def input_time_dialog(self, *p):
         """Display a dialog to enter a time value.
         """
-        d = gtk.Dialog(title=_("Enter the new time value"),
-                       parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_OK, gtk.RESPONSE_OK,
-                                 gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL ))
+        d = Gtk.Dialog(title=_("Enter the new time value"),
+                       parent=self.gui.win,
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_OK, Gtk.ResponseType.OK,
+                                 Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL ))
 
         ta=TimeAdjustment(value=self.gui.slider.get_value(), controller=self.controller, videosync=False, editable=True, compact=False)
-        ta.entry.connect("activate", lambda w: d.response(gtk.RESPONSE_OK))
-        d.vbox.pack_start(ta.widget, expand=False)
+        ta.entry.connect("activate", lambda w: d.response(Gtk.ResponseType.OK))
+        d.vbox.pack_start(ta.widget, False, True, 0)
         d.show_all()
         dialog.center_on_mouse(d)
         ta.entry.select_region(0, -1)
         ta.entry.grab_focus()
         res=d.run()
         retval=None
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             retval = ta.get_value()
         d.destroy()
         return retval
@@ -923,37 +971,37 @@ class AdveneGUI(object):
         """
         if title is None:
             title = _("Replace content in %d elements") % len(elements)
-        d = gtk.Dialog(title=title,
-                       parent=None,
-                       flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-                                 gtk.STOCK_OK, gtk.RESPONSE_OK,
+        d = Gtk.Dialog(title=title,
+                       parent=self.gui.win,
+                       flags=Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+                                 Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                  ))
-        l=gtk.Label(title)
+        l=Gtk.Label(label=title)
         l.set_line_wrap(True)
         l.show()
-        d.vbox.pack_start(l, expand=False)
+        d.vbox.pack_start(l, False, True, 0)
 
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Find word") + " "), expand=False)
-        search_entry=gtk.Entry()
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Find word") + " "), False, False, 0)
+        search_entry=Gtk.Entry()
         search_entry.set_text(default_search or "")
-        hb.pack_start(search_entry, expand=False)
-        d.vbox.pack_start(hb, expand=False)
+        hb.pack_start(search_entry, False, True, 0)
+        d.vbox.pack_start(hb, False, True, 0)
 
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Replace by") + " "), expand=False)
-        replace_entry=gtk.Entry()
-        hb.pack_start(replace_entry, expand=False)
-        d.vbox.pack_start(hb, expand=False)
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Replace by") + " "), False, False, 0)
+        replace_entry=Gtk.Entry()
+        hb.pack_start(replace_entry, False, True, 0)
+        d.vbox.pack_start(hb, False, True, 0)
 
         d.connect('key-press-event', dialog.dialog_keypressed_cb)
         d.show_all()
         dialog.center_on_mouse(d)
         res=d.run()
-        if res == gtk.RESPONSE_OK:
-            search=unicode(search_entry.get_text()).replace('\\n', '\n').replace('%n', '\n').replace('\\t', '\t').replace('%t', '\t')
-            replace=unicode(replace_entry.get_text()).replace('\\n', '\n').replace('%n', '\n').replace('\\t', '\t').replace('%t', '\t')
+        if res == Gtk.ResponseType.OK:
+            search=search_entry.get_text().decode('utf-8').replace('\\n', '\n').replace('%n', '\n').replace('\\t', '\t').replace('%t', '\t')
+            replace=replace_entry.get_text().decode('utf-8').replace('\\n', '\n').replace('%n', '\n').replace('\\t', '\t').replace('%t', '\t')
             count=0
             batch_id=object()
             for a in elements:
@@ -987,32 +1035,32 @@ class AdveneGUI(object):
             label = _("Exporting video montage/fragment to %%(filename)s")
 
         filename = dialog.get_filename(title=_("Please choose a destination filename"),
-                                       action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                       button=gtk.STOCK_SAVE,
+                                       action=Gtk.FileChooserAction.SAVE,
+                                       button=Gtk.STOCK_SAVE,
                                        default_file = basename,
                                        filter='video')
         if filename is None:
             return
         m = MontageRenderer(self.controller, elements)
 
-        w = gtk.Window()
+        w = Gtk.Window()
         w.set_title(title)
-        v = gtk.VBox()
-        l = gtk.Label(label % { 'filename': filename } )
+        v = Gtk.VBox()
+        l = Gtk.Label(label=label % { 'filename': filename } )
         v.add(l)
 
-        pg = gtk.ProgressBar()
-        v.pack_start(pg, expand=False)
+        pg = Gtk.ProgressBar()
+        v.pack_start(pg, False, True, 0)
 
-        hb = gtk.HButtonBox()
-        b = gtk.Button(stock=gtk.STOCK_CLOSE)
+        hb = Gtk.HButtonBox()
+        b = Gtk.Button(stock=Gtk.STOCK_CLOSE)
         def close_encoder(b):
             m.finalize()
             w.destroy()
             return True
         b.connect('clicked', close_encoder)
-        hb.pack_start(b, expand=False)
-        v.pack_start(hb, expand=False)
+        hb.pack_start(b, False, True, 0)
+        v.pack_start(hb, False, True, 0)
 
         w.add(v)
         w.show_all()
@@ -1044,9 +1092,9 @@ class AdveneGUI(object):
         if args is None:
             args=[]
         try:
-            gtk.gdk.threads_init ()
+            Gdk.threads_init ()
         except RuntimeError:
-            print "*** WARNING*** : gtk.threads_init not available.\nThis may lead to unexpected behaviour."
+            logger.warning("*** WARNING*** : Gtk.threads_init not available.\nThis may lead to unexpected behaviour.")
         # FIXME: We have to register LogWindow actions before we load the ruleset
         # but we should have an introspection method to do this automatically
         self.logwindow=advene.gui.views.logwindow.LogWindow(controller=self.controller)
@@ -1135,7 +1183,7 @@ class AdveneGUI(object):
                     ident="> %s" % ident
                 else:
                     ident="   %s" % ident
-                i=gtk.MenuItem(ident)
+                i=Gtk.MenuItem(ident)
                 i.connect('activate', select_player, p)
                 menu.append(i)
                 i.show()
@@ -1144,21 +1192,21 @@ class AdveneGUI(object):
         # 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))
+                selection.set(selection.get_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=Gtk.Window(Gtk.WindowType.POPUP)
             w.set_decorated(False)
-            hb=gtk.HBox()
-            i=gtk.Image()
+            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)
+            hb.pack_start(i, False, True, 0)
+            hb.pack_start(Gtk.Label(view_name), False, False, 0)
             w.add(hb)
             w.show_all()
-            context.set_icon_widget(w, 16, 16)
+            Gtk.drag_set_icon_widget(context, w, 16, 16)
             return True
 
         def open_view(widget, name, destination='default'):
@@ -1182,7 +1230,7 @@ class AdveneGUI(object):
                 open_view(widget, name)
                 return True
 
-            menu=gtk.Menu()
+            menu=Gtk.Menu()
 
             for (label, destination) in (
                 (_("Open this view..."), 'default'),
@@ -1191,25 +1239,25 @@ class AdveneGUI(object):
                 (_("...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 = 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())
+            menu.popup_at_pointer(None)
 
             return True
 
         # Populate the View submenu
         menu = self.gui.adhoc_view_menuitem.get_submenu()
-        it = gtk.MenuItem(_("_All available views"))
+        it = Gtk.MenuItem(_("_All available views"))
         menu.prepend(it)
         it.show()
-        m = gtk.Menu()
+        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=Gtk.MenuItem('_' + cl.view_name, use_underline=True)
             it.set_tooltip_text(cl.tooltip)
             it.connect('activate', open_view_menu, name)
             m.prepend(it)
@@ -1219,14 +1267,13 @@ class AdveneGUI(object):
         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'),
+            ('table', _('Annotation table'), 'table.png'),
 
             ('', '', ''),
             ('transcribe', _('Note-taking editor'), 'transcribe.png'),
             ('activebookmarks', _('Active bookmarks'), 'bookmarks.png'),
-            ('schemaeditor', _("Schema editor"), 'schemaeditor.png'),
             ('', '', ''),
 
             ('tagbag', _("Bag of tags"), 'tagbag.png'),
@@ -1241,15 +1288,13 @@ class AdveneGUI(object):
 
             ('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)
+                b=Gtk.VSeparator()
+                hb.pack_start(b, False, False, 5)
 
-                it = gtk.SeparatorMenuItem()
+                it = Gtk.SeparatorMenuItem()
                 menu.insert(it, item_index)
                 item_index = item_index + 1
                 continue
@@ -1258,22 +1303,22 @@ class AdveneGUI(object):
             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()
+            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)
+            b.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                              config.data.get_target_types('adhoc-view'), Gdk.DragAction.COPY)
+            hb.pack_start(b, False, True, 0)
             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 = 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)
@@ -1281,7 +1326,7 @@ class AdveneGUI(object):
         hb.show_all()
         menu.show_all()
 
-        menu=gtk.Menu()
+        menu=Gtk.Menu()
         self.gui.select_player_menuitem.set_submenu(menu)
         menu.connect('map', build_player_menu)
 
@@ -1303,14 +1348,14 @@ class AdveneGUI(object):
             self.open_adhoc_view('importerview', filename=uri)
 
         # Use small toolbar button everywhere
-        gtk.settings_get_default().set_property('gtk_toolbar_icon_size', gtk.ICON_SIZE_SMALL_TOOLBAR)
+        Gtk.Settings.get_default().set_property('gtk_toolbar_icon_size', Gtk.IconSize.SMALL_TOOLBAR)
         play=self.player_toolbar.get_children()[0]
-        play.set_flags(play.flags() | gtk.CAN_FOCUS)
+        play.set_can_focus(True)
         play.grab_focus()
         self.update_control_toolbar(self.player_toolbar)
 
-        self.event_source_update_display=gobject.timeout_add (100, self.update_display)
-        self.event_source_slow_update_display=gobject.timeout_add (1000, self.slow_update_display)
+        self.event_source_update_display=GObject.timeout_add (100, self.update_display)
+        self.event_source_slow_update_display=GObject.timeout_add (1000, self.slow_update_display)
         # Do we need to make an update check
         if (config.data.preferences['update-check']
             and time.time() - config.data.preferences['last-update'] >= 7 * 24 * 60 * 60):
@@ -1320,17 +1365,17 @@ class AdveneGUI(object):
         self.controller.notify ("ApplicationStart")
         if config.data.debug:
             self.controller._state=self.controller.event_handler.dump()
-        gtk.gdk.threads_enter()
-        gtk.main ()
-        gtk.gdk.threads_leave()
+        Gdk.threads_enter()
+        Gtk.main ()
+        Gdk.threads_leave()
         self.controller.notify ("ApplicationEnd")
 
     def check_for_update(self, *p):
         timeout=socket.getdefaulttimeout()
         try:
             socket.setdefaulttimeout(1)
-            u=urllib2.urlopen('http://liris.cnrs.fr/advene/version.txt')
-        except Exception, e:
+            u=urllib2.urlopen('http://www.advene.org/version.txt')
+        except Exception:
             socket.setdefaulttimeout(timeout)
             return
         socket.setdefaulttimeout(timeout)
@@ -1348,18 +1393,18 @@ class AdveneGUI(object):
         info['current']=advene.core.version.version
         if (1000 * major + minor) > (1000 * advene.core.version.major + advene.core.version.minor):
             # An update is available.
-            v=gtk.VBox()
-            msg=textwrap.fill(_("""<span background="#ff8888" size="large"><b>Advene %(version)s has been released</b> on %(date)s, but you are running version %(current)s.\nYou can download the latest version from the Advene website: http://liris.cnrs.fr/advene/</span>""") % info, 55)
-            l=gtk.Label()
+            v=Gtk.VBox()
+            msg=textwrap.fill(_("""<span background="#ff8888" size="large"><b>Advene %(version)s has been released</b> on %(date)s, but you are running version %(current)s.\nYou can download the latest version from the Advene website: http://advene.org/</span>""") % info, 55)
+            l=Gtk.Label()
             l.set_markup(msg)
             #l.set_line_wrap_mode(True)
             v.add(l)
-            b=gtk.Button(_("Go to the website"))
+            b=Gtk.Button(_("Go to the website"))
             def open_site(b):
-                self.controller.open_url('http://liris.cnrs.fr/advene/download.html')
+                self.controller.open_url('http://www.advene.org/download.html')
                 return True
             b.connect('clicked', open_site)
-            v.pack_start(b, expand=False)
+            v.pack_start(b, False, True, 0)
             self.popupwidget.display(v, title=_("Advene release"))
         elif p:
             # There were parameters, then we were called from a menu
@@ -1380,11 +1425,11 @@ class AdveneGUI(object):
             gtk_color=name2color(colname)
         except:
             gtk_color=None
-        d=gtk.ColorSelectionDialog(_("Choose a color"))
+        d=Gtk.ColorSelectionDialog(_("Choose a color"))
         if gtk_color:
             d.colorsel.set_current_color(gtk_color)
         res=d.run()
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             col=d.colorsel.get_current_color()
             element.setMetaData(config.data.namespace, 'color', u"string:#%04x%04x%04x" % (col.red,
                                                                                            col.green,
@@ -1430,7 +1475,7 @@ class AdveneGUI(object):
         self.pane={}
 
         # Video player socket
-        self.drawable=gtk.Socket()
+        self.drawable=Gtk.Socket()
 
         def handle_remove(socket):
             # Do not kill the widget if the application exits
@@ -1452,30 +1497,29 @@ class AdveneGUI(object):
             return True
         self.drawable.connect_after('realize', register_drawable)
 
-        black=gtk.gdk.Color(0, 0, 0)
-        for state in (gtk.STATE_ACTIVE, gtk.STATE_NORMAL,
-                      gtk.STATE_SELECTED, gtk.STATE_INSENSITIVE,
-                      gtk.STATE_PRELIGHT):
+        black=Gdk.Color(0, 0, 0)
+        for state in (Gtk.StateType.ACTIVE, Gtk.StateType.NORMAL,
+                      Gtk.StateType.SELECTED, Gtk.StateType.INSENSITIVE,
+                      Gtk.StateType.PRELIGHT):
             self.drawable.modify_bg (state, black)
 
-        self.drawable.set_size_request(320, 200)
-        self.drawable.add_events(gtk.gdk.BUTTON_PRESS)
+        self.drawable.add_events(Gdk.EventType.BUTTON_PRESS)
         self.drawable.connect_object('button-press-event', self.debug_cb, self.drawable)
 
         self.player_toolbar = self.get_player_control_toolbar()
         self.playpause_button = self.player_toolbar.buttons['playpause']
 
         # Dynamic view selection
-        hb=gtk.HBox()
-        #hb.pack_start(gtk.Label(_('D.view')), expand=False)
-        self.gui.stbv_combo = gtk.ComboBox()
-        cell = gtk.CellRendererText()
-        cell.props.ellipsize = pango.ELLIPSIZE_MIDDLE
+        hb=Gtk.HBox()
+        #hb.pack_start(Gtk.Label(_('D.view')), False, False, 0)
+        self.gui.stbv_combo = Gtk.ComboBox()
+        cell = Gtk.CellRendererText()
+        cell.props.ellipsize = Pango.EllipsizeMode.MIDDLE
         self.gui.stbv_combo.pack_start(cell, True)
         self.gui.stbv_combo.add_attribute(cell, 'text', 0)
         self.gui.stbv_combo.props.tooltip_text=_("No active dynamic view")
 
-        hb.pack_start(self.gui.stbv_combo, expand=True)
+        hb.pack_start(self.gui.stbv_combo, True, True, 0)
 
         def new_stbv(*p):
             cr = CreateElementPopup(type_=View,
@@ -1483,9 +1527,9 @@ class AdveneGUI(object):
                                     controller=self.controller)
             cr.popup()
             return True
-        b=get_small_stock_button(gtk.STOCK_ADD, new_stbv)
+        b=get_small_stock_button(Gtk.STOCK_ADD, new_stbv)
         b.set_tooltip_text(_("Create a new dynamic view."))
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
         def on_edit_current_stbv_clicked(button):
             """Handle current stbv edition.
@@ -1502,9 +1546,9 @@ class AdveneGUI(object):
             self.edit_element(stbv)
             return True
 
-        edit_stbv_button=get_small_stock_button(gtk.STOCK_EDIT, on_edit_current_stbv_clicked)
+        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)
+        hb.pack_start(edit_stbv_button, False, True, 0)
 
         def on_stbv_combo_changed (combo=None):
             """Callback used to select the current stbv.
@@ -1530,9 +1574,9 @@ class AdveneGUI(object):
                 self.controller.player.sound_set_volume(int(value * 100))
             return True
 
-        self.audio_volume = gtk.VolumeButton()
+        self.audio_volume = Gtk.VolumeButton()
         self.audio_volume.set_value(self.controller.player.sound_get_volume() / 100.0)
-        ti = gtk.ToolItem()
+        ti = Gtk.ToolItem()
         ti.add(self.audio_volume)
         self.audio_volume.connect('value-changed', volume_change)
         self.player_toolbar.insert(ti, -1)
@@ -1545,10 +1589,9 @@ class AdveneGUI(object):
                 self.controller.player.set_rate(v)
             return True
 
-        self.rate_control = gtk.SpinButton(gtk.Adjustment(1.0, 0.1, 100.0, 0.2, 0.5),
-                                           0.2, 1)
+        self.rate_control = Gtk.SpinButton.new(Gtk.Adjustment.new(1.0, 0.1, 100.0, 0.2, 0.5, 10), 0.2, 1)
         self.rate_control.set_tooltip_text(_("Playing rate"))
-        ti = gtk.ToolItem()
+        ti = Gtk.ToolItem()
         ti.add(self.rate_control)
         self.rate_control.connect('value-changed', rate_change)
         self.player_toolbar.insert(ti, -1)
@@ -1581,26 +1624,26 @@ class AdveneGUI(object):
                         self.controller.event_handler.remove_rule(self.annotation_loop_rule, type_="internal")
             return True
 
-        b = gtk.ToggleToolButton(gtk.STOCK_REFRESH)
+        b = Gtk.ToggleToolButton(Gtk.STOCK_REFRESH)
         self.player_toolbar.buttons['loop'] = b
         self.update_loop_button()
         b.connect('toggled', loop_toggle_cb)
         self.player_toolbar.insert(b, -1)
 
         # Append the player status label to the toolbar
-        ts=gtk.SeparatorToolItem()
+        ts=Gtk.SeparatorToolItem()
         ts.set_draw(False)
         ts.set_expand(True)
         self.player_toolbar.insert(ts, -1)
 
-        ti=gtk.ToolItem()
-        self.gui.player_status=gtk.Label('--')
+        ti=Gtk.ToolItem()
+        self.gui.player_status=Gtk.Label(label='--')
         ti.add(self.gui.player_status)
         self.player_toolbar.insert(ti, -1)
 
         # Create the slider
-        adj = gtk.Adjustment(0, 0, 100, 1, 1, 10)
-        self.gui.slider = gtk.HScale(adj)
+        adj = Gtk.Adjustment.new(0, 0, 100, 1, 1, 10)
+        self.gui.slider = Gtk.Scale.new(Gtk.Orientation.HORIZONTAL, adj)
         self.gui.slider.set_draw_value(False)
         self.gui.slider.connect('button-press-event', self.on_slider_button_press_event)
         self.gui.slider.connect('button-release-event', self.on_slider_button_release_event)
@@ -1611,30 +1654,30 @@ class AdveneGUI(object):
         self.gui.slider.connect('value-changed', update_timelabel)
 
         # Stack the video components
-        v=gtk.VBox()
-        v.pack_start(hb, expand=False)
-        eb=gtk.EventBox()
+        v=Gtk.VBox()
+        v.pack_start(hb, False, True, 0)
+        eb=Gtk.EventBox()
         eb.set_above_child(True)
         eb.set_visible_window(True)
         eb.add(self.drawable)
-        v.pack_start(eb, expand=True)
+        v.pack_start(eb, True, True, 0)
         eb.connect('scroll-event', self.on_slider_scroll_event)
         eb.connect('button-press-event', self.on_video_button_press_event)
         eb.connect('key-press-event', self.on_win_key_press_event)
 
         if config.data.preferences['display-scroller']:
             self.scroller=ScrollerView(controller=self.controller)
-            v.pack_start(self.scroller.widget, expand=False)
+            v.pack_start(self.scroller.widget, False, True, 0)
         if config.data.preferences['display-caption']:
             self.captionview=CaptionView(controller=self.controller)
             self.register_view(self.captionview)
-            v.pack_start(self.captionview.widget, expand=False)
+            v.pack_start(self.captionview.widget, False, True, 0)
         else:
             self.captionview=None
 
-        h=gtk.HBox()
-        eb=gtk.EventBox()
-        self.time_label = gtk.Label()
+        h=Gtk.HBox()
+        eb=Gtk.EventBox()
+        self.time_label = Gtk.Label()
         self.time_label.value = None
         def set_time(s, t):
             s.set_text(helper.format_time(t))
@@ -1644,33 +1687,33 @@ class AdveneGUI(object):
         # Make sure that we use a fixed-size font, so that the
         # time_label width is constant and does not constantly modify
         # the slider available width.
-        self.time_label.modify_font(pango.FontDescription("courier 10"))
+        self.time_label.modify_font(Pango.FontDescription("courier 10"))
         if config.data.os == 'darwin':
             self.time_label.set_size_request(90, -1)
         self.time_label.set_time(None)
         eb.add(self.time_label)
 
         def time_pressed(w, event):
-            if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+            if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
                 self.goto_time_dialog()
                 return True
             return True
 
         eb.connect('button-press-event', time_pressed)
-        h.pack_start(eb, expand=False)
-        h.pack_start(self.gui.slider, expand=True)
-        v.pack_start(h, expand=False)
+        h.pack_start(eb, False, True, 0)
+        h.pack_start(self.gui.slider, True, True, 0)
+        v.pack_start(h, False, True, 0)
 
-        v.pack_start(self.player_toolbar, expand=False)
+        v.pack_start(self.player_toolbar, False, True, 0)
 
         # create the viewbooks
         for pos in ('east', 'west', 'south', 'fareast'):
             self.viewbook[pos]=ViewBook(controller=self.controller, location=pos)
 
-        self.pane['west']=gtk.HPaned()
-        self.pane['east']=gtk.HPaned()
-        self.pane['south']=gtk.VPaned()
-        self.pane['fareast']=gtk.HPaned()
+        self.pane['west']=Gtk.HPaned()
+        self.pane['east']=Gtk.HPaned()
+        self.pane['south']=Gtk.VPaned()
+        self.pane['fareast']=Gtk.HPaned()
 
         # pack all together
         self.pane['west'].add1(self.viewbook['west'].widget)
@@ -1747,7 +1790,7 @@ class AdveneGUI(object):
                     return False
                 pane.set_position(pos)
                 return True
-            gobject.timeout_add(100, enlarge_view)
+            GObject.timeout_add(100, enlarge_view)
         return True
 
     def find_bookmark_view(self):
@@ -1803,27 +1846,27 @@ class AdveneGUI(object):
             self.controller.update_status('start')
 
     def player_forward(self, event):
-        if event.state & gtk.gdk.SHIFT_MASK:
+        if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
             i='second-time-increment'
         else:
             i='time-increment'
         self.controller.move_position (config.data.preferences[i], notify=False)
 
     def player_rewind(self, event):
-        if event.state & gtk.gdk.SHIFT_MASK:
+        if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
             i='second-time-increment'
         else:
             i='time-increment'
         self.controller.move_position (-config.data.preferences[i], notify=False)
 
     def player_forward_frame(self, event):
-        if config.data.preferences['custom-updown-keys'] or event.state & gtk.gdk.SHIFT_MASK:
+        if config.data.preferences['custom-updown-keys'] or event.get_state() & Gdk.ModifierType.SHIFT_MASK:
             self.controller.move_position(+config.data.preferences['third-time-increment'], notify=False)
         else:
             self.controller.move_frame(+1)
 
     def player_rewind_frame(self, event):
-        if config.data.preferences['custom-updown-keys'] or event.state & gtk.gdk.SHIFT_MASK:
+        if config.data.preferences['custom-updown-keys'] or event.get_state() & Gdk.ModifierType.SHIFT_MASK:
             self.controller.move_position(-config.data.preferences['third-time-increment'], notify=False)
         else:
             self.controller.move_frame(-1)
@@ -1832,7 +1875,7 @@ class AdveneGUI(object):
         p=self.controller.player
         if p.status in (p.PlayingStatus, p.PauseStatus):
             self.create_bookmark(p.current_position_value,
-                                 insert_after_current=(event.state & gtk.gdk.SHIFT_MASK))
+                                 insert_after_current=(event.get_state() & Gdk.ModifierType.SHIFT_MASK))
 
     def player_home(self, event):
         self.controller.update_status ("set", self.controller.create_position (0))
@@ -1848,92 +1891,92 @@ class AdveneGUI(object):
         self.controller.update_status("set", self.controller.create_position(long(self.controller.cached_duration * f)))
 
     def function_key(self, event):
-        if gtk.keysyms.F1 <= event.keyval <= gtk.keysyms.F12:
-            self.controller.notify('KeyboardInput', request={ 'keyname': gtk.gdk.keyval_name(event.keyval) })
+        if Gdk.KEY_F1 <= event.keyval <= Gdk.KEY_F12:
+            self.controller.notify('KeyboardInput', request={ 'keyname': Gdk.keyval_name(event.keyval) })
 
     control_key_shortcuts={
-        gtk.keysyms.Tab: player_play_pause,
-        gtk.keysyms.space: player_play_pause,
-        gtk.keysyms.Up: player_forward_frame,
-        gtk.keysyms.Down: player_rewind_frame,
-        gtk.keysyms.Right: player_forward,
-        gtk.keysyms.Left: player_rewind,
-        gtk.keysyms.Home: player_home,
-        gtk.keysyms.End: player_end,
-        gtk.keysyms.Insert: player_create_bookmark,
+        Gdk.KEY_Tab: player_play_pause,
+        Gdk.KEY_space: player_play_pause,
+        Gdk.KEY_Up: player_forward_frame,
+        Gdk.KEY_Down: player_rewind_frame,
+        Gdk.KEY_Right: player_forward,
+        Gdk.KEY_Left: player_rewind,
+        Gdk.KEY_Home: player_home,
+        Gdk.KEY_End: player_end,
+        Gdk.KEY_Insert: player_create_bookmark,
         }
 
     key_shortcuts={
-        gtk.keysyms.Insert: player_create_bookmark,
+        Gdk.KEY_Insert: player_create_bookmark,
 
         # Numeric keypad
-        gtk.keysyms.KP_5: player_play_pause,
-        gtk.keysyms.KP_8: player_forward_frame,
-        gtk.keysyms.KP_2: player_rewind_frame,
-        gtk.keysyms.KP_6: player_forward,
-        gtk.keysyms.KP_4: player_rewind,
-        gtk.keysyms.KP_7: player_home,
-        gtk.keysyms.KP_1: player_end,
-        gtk.keysyms.KP_0: player_create_bookmark,
+        Gdk.KEY_KP_5: player_play_pause,
+        Gdk.KEY_KP_8: player_forward_frame,
+        Gdk.KEY_KP_2: player_rewind_frame,
+        Gdk.KEY_KP_6: player_forward,
+        Gdk.KEY_KP_4: player_rewind,
+        Gdk.KEY_KP_7: player_home,
+        Gdk.KEY_KP_1: player_end,
+        Gdk.KEY_KP_0: player_create_bookmark,
 
         # Symbolic keypad
-        gtk.keysyms.KP_Begin: player_play_pause,
-        gtk.keysyms.KP_Up: player_forward_frame,
-        gtk.keysyms.KP_Down: player_rewind_frame,
-        gtk.keysyms.KP_Right: player_forward,
-        gtk.keysyms.KP_Left: player_rewind,
-        gtk.keysyms.KP_Home: player_home,
-        gtk.keysyms.KP_End: player_end,
-        gtk.keysyms.KP_Insert: player_create_bookmark,
+        Gdk.KEY_KP_Begin: player_play_pause,
+        Gdk.KEY_KP_Up: player_forward_frame,
+        Gdk.KEY_KP_Down: player_rewind_frame,
+        Gdk.KEY_KP_Right: player_forward,
+        Gdk.KEY_KP_Left: player_rewind,
+        Gdk.KEY_KP_Home: player_home,
+        Gdk.KEY_KP_End: player_end,
+        Gdk.KEY_KP_Insert: player_create_bookmark,
 
         # Function keys
-        gtk.keysyms.F1:   function_key,
-        gtk.keysyms.F2:   function_key,
-        gtk.keysyms.F3:   function_key,
-        gtk.keysyms.F4:   function_key,
-        gtk.keysyms.F5:   function_key,
-        gtk.keysyms.F6:   function_key,
-        gtk.keysyms.F7:   function_key,
-        gtk.keysyms.F8:   function_key,
-        gtk.keysyms.F9:   function_key,
-        gtk.keysyms.F10:  function_key,
-        gtk.keysyms.F11:  function_key,
-        gtk.keysyms.F12:  function_key,
+        Gdk.KEY_F1:   function_key,
+        Gdk.KEY_F2:   function_key,
+        Gdk.KEY_F3:   function_key,
+        Gdk.KEY_F4:   function_key,
+        Gdk.KEY_F5:   function_key,
+        Gdk.KEY_F6:   function_key,
+        Gdk.KEY_F7:   function_key,
+        Gdk.KEY_F8:   function_key,
+        Gdk.KEY_F9:   function_key,
+        Gdk.KEY_F10:  function_key,
+        Gdk.KEY_F11:  function_key,
+        Gdk.KEY_F12:  function_key,
         }
 
     fullscreen_key_shortcuts = {
-        gtk.keysyms.Tab: player_play_pause,
-        gtk.keysyms.space: player_play_pause,
-        gtk.keysyms.Up: player_forward_frame,
-        gtk.keysyms.Down: player_rewind_frame,
-        gtk.keysyms.Right: player_forward,
-        gtk.keysyms.Left: player_rewind,
-        gtk.keysyms.Home: player_home,
-        gtk.keysyms.Insert: player_create_bookmark,
+        Gdk.KEY_Tab: player_play_pause,
+        Gdk.KEY_space: player_play_pause,
+        Gdk.KEY_Up: player_forward_frame,
+        Gdk.KEY_Down: player_rewind_frame,
+        Gdk.KEY_Right: player_forward,
+        Gdk.KEY_Left: player_rewind,
+        Gdk.KEY_Home: player_home,
+        Gdk.KEY_Insert: player_create_bookmark,
 
         # AZERTY keyboard navigation
-        gtk.keysyms.ampersand:  lambda s, e: s.player_set_fraction(.0),
-        gtk.keysyms.eacute:     lambda s, e: s.player_set_fraction(.1),
-        gtk.keysyms.quotedbl:   lambda s, e: s.player_set_fraction(.2),
-        gtk.keysyms.apostrophe: lambda s, e: s.player_set_fraction(.3),
-        gtk.keysyms.parenleft:  lambda s, e: s.player_set_fraction(.4),
-        gtk.keysyms.minus:      lambda s, e: s.player_set_fraction(.5),
-        gtk.keysyms.egrave:     lambda s, e: s.player_set_fraction(.6),
-        gtk.keysyms.underscore: lambda s, e: s.player_set_fraction(.7),
-        gtk.keysyms.ccedilla:   lambda s, e: s.player_set_fraction(.8),
-        gtk.keysyms.agrave:     lambda s, e: s.player_set_fraction(.9),
+        Gdk.KEY_ampersand:  lambda s, e: s.player_set_fraction(.0),
+        Gdk.KEY_eacute:     lambda s, e: s.player_set_fraction(.1),
+        Gdk.KEY_quotedbl:   lambda s, e: s.player_set_fraction(.2),
+        Gdk.KEY_apostrophe: lambda s, e: s.player_set_fraction(.3),
+        Gdk.KEY_parenleft:  lambda s, e: s.player_set_fraction(.4),
+        Gdk.KEY_minus:      lambda s, e: s.player_set_fraction(.5),
+        Gdk.KEY_egrave:     lambda s, e: s.player_set_fraction(.6),
+        Gdk.KEY_underscore: lambda s, e: s.player_set_fraction(.7),
+        Gdk.KEY_ccedilla:   lambda s, e: s.player_set_fraction(.8),
+        Gdk.KEY_agrave:     lambda s, e: s.player_set_fraction(.9),
 
         # QWERTY keyboard navigation
-        gtk.keysyms._1:  lambda s, e: s.player_set_fraction(.0),
-        gtk.keysyms._2:  lambda s, e: s.player_set_fraction(.1),
-        gtk.keysyms._3:  lambda s, e: s.player_set_fraction(.2),
-        gtk.keysyms._4:  lambda s, e: s.player_set_fraction(.3),
-        gtk.keysyms._5:  lambda s, e: s.player_set_fraction(.4),
-        gtk.keysyms._6:  lambda s, e: s.player_set_fraction(.5),
-        gtk.keysyms._7:  lambda s, e: s.player_set_fraction(.6),
-        gtk.keysyms._8:  lambda s, e: s.player_set_fraction(.7),
-        gtk.keysyms._9:  lambda s, e: s.player_set_fraction(.8),
-        gtk.keysyms._0:  lambda s, e: s.player_set_fraction(.9),
+        Gdk.KEY_1:  lambda s, e: s.player_set_fraction(.0),
+        Gdk.KEY_2:  lambda s, e: s.player_set_fraction(.1),
+        Gdk.KEY_3:  lambda s, e: s.player_set_fraction(.2),
+        Gdk.KEY_4:  lambda s, e: s.player_set_fraction(.3),
+        Gdk.KEY_5:  lambda s, e: s.player_set_fraction(.4),
+        Gdk.KEY_6:  lambda s, e: s.player_set_fraction(.5),
+        Gdk.KEY_7:  lambda s, e: s.player_set_fraction(.6),
+        Gdk.KEY_8:  lambda s, e: s.player_set_fraction(.7),
+        Gdk.KEY_9:  lambda s, e: s.player_set_fraction(.8),
+        Gdk.KEY_0:  lambda s, e: s.player_set_fraction(.9),
 
         }
 
@@ -1944,7 +1987,7 @@ class AdveneGUI(object):
         """
         # For the moment, we only check if we are in full or simplified GUI state.
         # FIXME: it is not as simple as this:
-        #print "FOCUS", [ isinstance(w.get_focus(), gtk.Editable) for w in  gtk.window_list_toplevels() if w.get_focus() is not None ]
+        #print "FOCUS", [ isinstance(w.get_focus(), Gtk.Editable) for w in  Gtk.window_list_toplevels() if w.get_focus() is not None ]
         # since we can want to use the standard gtk keyboard navigation among widgets.
         return self.viewbook['east'].widget.get_visible()
 
@@ -1956,10 +1999,8 @@ class AdveneGUI(object):
         Control-home/-end: start/end of the stream
         """
 
-        p=self.controller.player
-
-        if (event.keyval == gtk.keysyms.nobreakspace
-            or (event.state & gtk.gdk.MOD1_MASK and event.keyval == gtk.keysyms.space)):
+        if (event.keyval == Gdk.KEY_nobreakspace
+            or (event.get_state() & Gdk.ModifierType.MOD1_MASK and event.keyval == Gdk.KEY_space)):
             # Alt-Space on MacOS X generates nobreakspace
             self.player_create_bookmark(event)
             return True
@@ -1967,7 +2008,7 @@ class AdveneGUI(object):
             self.key_shortcuts[event.keyval](self, event)
             return True
         elif event.keyval in self.control_key_shortcuts and (
-            event.state & gtk.gdk.CONTROL_MASK
+            event.get_state() & Gdk.ModifierType.CONTROL_MASK
             or not self.is_focus_on_editable()):
             self.control_key_shortcuts[event.keyval](self, event)
             return True
@@ -1978,7 +2019,7 @@ class AdveneGUI(object):
         """
         c=self.controller
         p=self.controller.player
-        if event.keyval == gtk.keysyms.Return:
+        if event.keyval == Gdk.KEY_Return:
             # FIXME: reset data (validate or abort?) when leaving fullscreen
             if self.edited_annotation_text is None:
                 # Not yet editing, entering edit mode
@@ -2024,8 +2065,8 @@ class AdveneGUI(object):
                 self.edited_annotation_begin = None
                 p.display_text(_('Annotation created'), p.current_position_value, p.current_position_value + 1000)
             return True
-        elif gtk.gdk.keyval_to_unicode(event.keyval):
-            c = unicode(gtk.gdk.keyval_name(event.keyval))
+        elif Gdk.keyval_to_unicode(event.keyval):
+            c = unicode(Gdk.keyval_name(event.keyval))
             if len(c) == 1 and (c.isalnum() or c.isspace()):
                 if self.edited_annotation_text is None:
                     # Not yet editing, entering edit mode
@@ -2035,7 +2076,7 @@ class AdveneGUI(object):
                 # Display feedback
                 p.display_text(self.edited_annotation_text + '_', p.current_position_value, p.current_position_value + 10000)
                 return True
-        elif event.keyval == gtk.keysyms.BackSpace and self.edited_annotation_text is not None:
+        elif event.keyval == Gdk.KEY_BackSpace and self.edited_annotation_text is not None:
             # Delete last char
             self.edited_annotation_text = self.edited_annotation_text[:-1]
             p.display_text(self.edited_annotation_text + '_', p.current_position_value, p.current_position_value + 10000)
@@ -2050,16 +2091,16 @@ class AdveneGUI(object):
 
         It has a buttons attribute, which holds references to the buttons according to an identifier.
         """
-        tb=gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
+        tb=Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
 
         tb_list = [
-            ('playpause', _("Play/Pause [Control-Tab / Control-Space]"), gtk.STOCK_MEDIA_PLAY, self.on_b_play_clicked),
-            ('rewind', _("Rewind (%.02f s) [Control-Left]") % (config.data.preferences['time-increment'] / 1000.0), gtk.STOCK_MEDIA_REWIND, lambda i: self.controller.move_position (-config.data.preferences['time-increment'])),
-            ('forward', _("Forward (%.02f s) [Control-Right]" % (config.data.preferences['time-increment'] / 1000.0)), gtk.STOCK_MEDIA_FORWARD, lambda i: self.controller.move_position (config.data.preferences['time-increment'])),
-            ('previous_frame', _("Previous frame [Control-Down]"), gtk.STOCK_MEDIA_PREVIOUS, lambda i: self.controller.move_frame(-1)),
-            ('next_frame', _("Next frame [Control-Up]"), gtk.STOCK_MEDIA_NEXT, lambda i: self.controller.move_frame(+1)),
-            ('fullscreen', _("Fullscreen"), gtk.STOCK_FULLSCREEN, lambda i: self.controller.player.fullscreen(self.connect_fullscreen_handlers) ),
+            ('playpause', _("Play/Pause [Control-Tab / Control-Space]"), Gtk.STOCK_MEDIA_PLAY, self.on_b_play_clicked),
+            ('rewind', _("Rewind (%.02f s) [Control-Left]") % (config.data.preferences['time-increment'] / 1000.0), Gtk.STOCK_MEDIA_REWIND, lambda i: self.controller.move_position (-config.data.preferences['time-increment'])),
+            ('forward', _("Forward (%.02f s) [Control-Right]" % (config.data.preferences['time-increment'] / 1000.0)), Gtk.STOCK_MEDIA_FORWARD, lambda i: self.controller.move_position (config.data.preferences['time-increment'])),
+            ('previous_frame', _("Previous frame [Control-Down]"), Gtk.STOCK_MEDIA_PREVIOUS, lambda i: self.controller.move_frame(-1)),
+            ('next_frame', _("Next frame [Control-Up]"), Gtk.STOCK_MEDIA_NEXT, lambda i: self.controller.move_frame(+1)),
+            ('fullscreen', _("Fullscreen"), Gtk.STOCK_FULLSCREEN, lambda i: self.controller.player.fullscreen(self.connect_fullscreen_handlers) ),
             ]
 
         tb.buttons = {}
@@ -2067,7 +2108,7 @@ class AdveneGUI(object):
             if name == 'playpause':
                 b = PlayPauseButton(stock)
             else:
-                b = gtk.ToolButton(stock)
+                b = Gtk.ToolButton(stock)
             b.set_tooltip_text(text)
             b.connect('clicked', callback)
             tb.insert(b, -1)
@@ -2088,13 +2129,13 @@ class AdveneGUI(object):
         p=self.controller.player
 
         if 'record' in p.player_capabilities:
-            tb.buttons['playpause'].set_stock_ids(gtk.STOCK_MEDIA_RECORD, gtk.STOCK_MEDIA_STOP)
+            tb.buttons['playpause'].set_stock_ids(Gtk.STOCK_MEDIA_RECORD, Gtk.STOCK_MEDIA_STOP)
             for name, b in tb.buttons.iteritems():
                 if name == 'playpause':
                     continue
                 b.set_sensitive(False)
         else:
-            tb.buttons['playpause'].set_stock_ids(gtk.STOCK_MEDIA_PLAY, gtk.STOCK_MEDIA_PAUSE)
+            tb.buttons['playpause'].set_stock_ids(Gtk.STOCK_MEDIA_PLAY, Gtk.STOCK_MEDIA_PAUSE)
             for b in tb.buttons.itervalues():
                 b.set_sensitive(True)
 
@@ -2128,10 +2169,10 @@ class AdveneGUI(object):
         return True
 
     def debug_cb(self, window, event, *p):
-        print "Got event %s (%d, %d) in window %s" % (str(event),
-                                                      event.x,
-                                                      event.y,
-                                                      str(window))
+        logger.debug("Got event %s (%d, %d) in window %s" % (str(event),
+                                                             event.x,
+                                                             event.y,
+                                                             str(window)))
         return False
 
     def init_window_size(self, window, name):
@@ -2141,15 +2182,21 @@ class AdveneGUI(object):
             # Do not update position/size for edit popups
             return True
         if config.data.preferences['remember-window-size']:
+            screen = window.get_screen()
+            w = screen.get_width()
+            h = screen.get_height()
             s=config.data.preferences['windowsize'].setdefault(name, (640,480))
+            s = (min(s[0], w), min(s[1], h))
             window.resize(*s)
             pos=config.data.preferences['windowposition'].get(name, None)
             if pos:
-                window.move(*pos)
+                if pos[0] < w and pos[1] < h:
+                    # Do not use if it would display the window out of the screen
+                    window.move(*pos)
             if name != 'main':
                 # The main GUI is regularly reallocated (at each update_display), so
                 # do not update continuously. Just do it on application exit.
-                window.connect('size-request', self.resize_cb, name)
+                window.connect_after('size-allocate', self.resize_cb, name)
         return True
 
     def resize_cb (self, widget, allocation, name):
@@ -2172,7 +2219,7 @@ class AdveneGUI(object):
             def process_overlay(queue=None):
                 queue.put(overlay_svg_as_png(png_data, svg_data))
                 return False
-            gobject.timeout_add(0, process_overlay, q)
+            GObject.timeout_add(0, process_overlay, q)
             try:
                 data=q.get(True, 2)
             except Queue.Empty:
@@ -2215,7 +2262,7 @@ class AdveneGUI(object):
                 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)
+                self.controller.queue_action(dialog.message_dialog, _("Could not save screenshot:\n %s") % unicode(e), icon=Gtk.MessageType.ERROR, modal=False)
 
         if filename is None:
             name = "%s-%010d.png" % (
@@ -2224,8 +2271,8 @@ class AdveneGUI(object):
                         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,
+                                           action=Gtk.FileChooserAction.SAVE,
+                                           button=Gtk.STOCK_SAVE,
                                            default_file=name)
 
         if filename is not None:
@@ -2284,11 +2331,11 @@ class AdveneGUI(object):
             title=_("Export annotation type %s") % self.controller.get_title(element)
         else:
             title=_("Export element %s") % self.controller.get_title(element)
-        fs = gtk.FileChooserDialog(title=title,
+        fs = Gtk.FileChooserDialog(title=title,
                                    parent=self.gui.win,
-                                   action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                   buttons=( gtk.STOCK_CONVERT, gtk.RESPONSE_OK,
-                                             gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL ))
+                                   action=Gtk.FileChooserAction.SAVE,
+                                   buttons=( Gtk.STOCK_CONVERT, Gtk.ResponseType.OK,
+                                             Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL ))
         def update_extension(sel):
             filter=sel.get_current_element()
             f=generate_default_filename(filter, os.path.basename(fs.get_filename() or ""))
@@ -2308,9 +2355,9 @@ class AdveneGUI(object):
         exporters=dialog.list_selector_widget( [ (v, v.title) for v in self.controller.get_export_filters()
                                                  if valid_filter(v) ],
                                                callback=update_extension )
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Export format")), expand=False)
-        hb.pack_start(exporters)
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Export format")), False, False, 0)
+        hb.pack_start(exporters, True, True, 0)
         fs.set_extra_widget(hb)
 
         fs.show_all()
@@ -2318,7 +2365,7 @@ class AdveneGUI(object):
         self.fs=fs
         res=fs.run()
 
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             self.controller.apply_export_filter(element,
                                                 exporters.get_current_element(),
                                                 fs.get_filename())
@@ -2347,7 +2394,7 @@ class AdveneGUI(object):
                 name = '  ' + a
             if p._modified:
                 name += _(' (modified)')
-            i=gtk.MenuItem(label=unicode(name), use_underline=False)
+            i=Gtk.MenuItem(label=unicode(name), use_underline=False)
             i.connect('activate', activate_package, a)
             i.set_tooltip_text(_("Activate %s") % self.controller.get_title(p))
             menu.append(i)
@@ -2388,9 +2435,9 @@ class AdveneGUI(object):
             action (u)
             return True
 
-        menu=gtk.Menu()
+        menu=Gtk.Menu()
         for title, url in self.controller.get_utbv_list():
-            i=gtk.MenuItem(label=title, use_underline=False)
+            i=Gtk.MenuItem(label=title, use_underline=False)
             i.connect('activate', open_utbv, url)
             menu.append(i)
         menu.show_all()
@@ -2411,7 +2458,6 @@ class AdveneGUI(object):
                 # because they are not opened through open_adhoc_view
                 pass
             if dest == 'popup':
-                print "Closing ", v
                 v.close()
 
     def workspace_serialize(self, with_arguments=True):
@@ -2451,7 +2497,7 @@ class AdveneGUI(object):
         w=self.gui.win
         d={}
         d['x'], d['y']=w.get_position()
-        d['width'], d['height']=w.get_size()
+        d['width'], d['height'] = w.get_size()
         for k, v in d.iteritems():
             d[k]=unicode(v)
         layout=ET.SubElement(workspace, 'layout', d)
@@ -2476,10 +2522,10 @@ class AdveneGUI(object):
             element.attrib['title']=v._label
             if v._destination == 'popup':
                 # Additional parameters
-                w=v.window
+                w=v.get_window()
                 d={}
                 d['x'], d['y']=w.get_position()
-                d['width'], d['height']=w.get_size()
+                d['width'], d['height'] = w.get_width(), w.get_height()
                 for k, v in d.iteritems():
                     element.attrib[k]=unicode(v)
             workspace.append(element)
@@ -2503,16 +2549,16 @@ class AdveneGUI(object):
                                        parameters=node)
                 if node.attrib['destination'] == 'popup':
                     # Restore popup windows positions
-                    v.window.move(long(node.attrib['x']), long(node.attrib['y']))
-                    v.window.resize(long(node.attrib['width']), long(node.attrib['height']))
+                    v.get_window().move(long(node.attrib['x']), long(node.attrib['y']))
+                    v.get_window().resize(long(node.attrib['width']), long(node.attrib['height']))
             elif node.tag == 'layout':
                 layout=node
         # Restore 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()),
-                     min(long(layout.attrib['height']), gtk.gdk.screen_height()))
+            w.resize(min(long(layout.attrib['width']), Gdk.Screen.width()),
+                     min(long(layout.attrib['height']), Gdk.Screen.height()))
             for pane in layout:
                 if pane.tag == 'pane' and pane.attrib['id'] in self.pane:
                     self.pane[pane.attrib['id']].set_position(long(pane.attrib['position']))
@@ -2537,7 +2583,7 @@ class AdveneGUI(object):
         stream=StringIO.StringIO()
         helper.indent(workspace)
         ET.ElementTree(workspace).write(stream, encoding='utf-8')
-        v.content.setData(stream.getvalue())
+        v.content.setData(stream.getvalue().decode('utf-8'))
         stream.close()
 
         if create:
@@ -2572,30 +2618,30 @@ class AdveneGUI(object):
                 tree=ET.parse(name.content.stream)
 
                 if kw.get('ask', True):
-                    d = gtk.Dialog(title=_("Restoring workspace..."),
-                                   parent=None,
-                                   flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                                   buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-                                             gtk.STOCK_OK, gtk.RESPONSE_OK,
+                    d = Gtk.Dialog(title=_("Restoring workspace..."),
+                                   parent=self.gui.win,
+                                   flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                                   buttons=( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+                                             Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                              ))
-                    l=gtk.Label(_("Do you wish to restore the %s workspace ?") % name.title)
+                    l=Gtk.Label(label=_("Do you wish to restore the %s workspace ?") % name.title)
                     l.set_line_wrap(True)
                     l.show()
-                    d.vbox.pack_start(l, expand=False)
+                    d.vbox.pack_start(l, False, True, 0)
 
-                    delete_existing_toggle=gtk.CheckButton(_("Clear the current workspace"))
+                    delete_existing_toggle=Gtk.CheckButton(_("Clear the current workspace"))
                     delete_existing_toggle.set_active(True)
                     delete_existing_toggle.show()
-                    d.vbox.pack_start(delete_existing_toggle, expand=False)
+                    d.vbox.pack_start(delete_existing_toggle, False, True, 0)
 
                     res=d.run()
                     clear=delete_existing_toggle.get_active()
                     d.destroy()
                 else:
-                    res=gtk.RESPONSE_OK
+                    res=Gtk.ResponseType.OK
                     clear=True
 
-                if res == gtk.RESPONSE_OK:
+                if res == Gtk.ResponseType.OK:
                     def restore(clr):
                         if clr:
                             self.workspace_clear()
@@ -2645,7 +2691,7 @@ class AdveneGUI(object):
                 view.open_url(self.controller.get_default_url(alias='advene'))
             elif self.controller.package is not None:
                 m=self.build_utbv_menu()
-                m.popup(None, None, None, 0, gtk.get_current_event_time())
+                m.popup_at_pointer(None)
             else:
                 self.log (("No current package"))
         elif name == 'transcribe':
@@ -2663,10 +2709,9 @@ class AdveneGUI(object):
                 return None
             try:
                 view=get_edit_popup(element, self.controller)
-            except TypeError, e:
-                print (_(u"Error: unable to find an edit popup for %(element)s:\n%(error)s") % {
-                        'element': unicode(element),
-                        'error': unicode(e)}).encode('latin1')
+            except TypeError:
+                logger.error(_(u"Error: unable to find an edit popup for %(element)s") % {
+                    'element': unicode(element) }, exc_info=True)
                 view=None
             if view is not None and view.widget.get_parent() is not None:
                 # Widget is already displayed. Present it.
@@ -2700,7 +2745,7 @@ class AdveneGUI(object):
 
         if destination == 'popup':
             w=view.popup(label=label)
-            if isinstance(w, gtk.Window):
+            if isinstance(w, Gtk.Window):
                 dialog.center_on_mouse(w)
         elif destination in ('south', 'east', 'west', 'fareast'):
             self.viewbook[destination].add_view(view, name=unicode(label))
@@ -2799,7 +2844,7 @@ class AdveneGUI(object):
                                                         len(p.relations))
                 })
         if not p.uri.endswith('new_pkg'):
-            gtk.recent_manager_get_default().add_item(p.uri)
+            Gtk.RecentManager.get_default().add_item(p.uri)
 
         # Create the content indexer
         p._indexer=Indexer(controller=self.controller,
@@ -2816,16 +2861,15 @@ class AdveneGUI(object):
         default_adhoc = package.getMetaData (config.data.namespace, "default_adhoc")
         view=helper.get_id(package.views, default_adhoc)
         if view:
-            load=False
             if config.data.preferences['restore-default-workspace'] == 'always':
                 self.controller.queue_action(self.open_adhoc_view, view, ask=False)
             elif config.data.preferences['restore-default-workspace'] == 'ask':
                 def open_view():
                     self.open_adhoc_view(view, ask=False)
                     return True
-                load=dialog.message_dialog(_("Do you want to restore the saved workspace ?"),
-                                           icon=gtk.MESSAGE_QUESTION,
-                                           callback=open_view)
+                dialog.message_dialog(_("Do you want to restore the saved workspace ?"),
+                                      icon=Gtk.MessageType.QUESTION,
+                                      callback=open_view)
         return False
 
     def update_window_title(self):
@@ -2848,14 +2892,14 @@ class AdveneGUI(object):
         @type level: int
         """
         def undisplay(ctxid, msgid):
-            self.gui.statusbar.remove_message(ctxid, msgid)
+            self.gui.statusbar.remove(ctxid, msgid)
             return False
 
         # Display in statusbar
         cid=self.gui.statusbar.get_context_id('info')
         message_id=self.gui.statusbar.push(cid, unicode(msg).replace("\n", " - "))
         # Display the message only 4 seconds
-        gobject.timeout_add(4000, undisplay, cid, message_id)
+        GObject.timeout_add(4000, undisplay, cid, message_id)
 
         # Store into logbuffer
         buf = self.logbuffer
@@ -2873,18 +2917,18 @@ class AdveneGUI(object):
         """Return a HBox with the given text and a snapshot corresponding to position.
         """
         if vertical:
-            box=gtk.VBox()
+            box=Gtk.VBox()
         else:
-            box=gtk.HBox()
+            box=Gtk.HBox()
         box.pack_start(image_from_position(self.controller,
                                            position=position,
-                                           height=height), expand=False)
-        l=gtk.Label()
+                                           height=height), False, False, 0)
+        l=Gtk.Label()
         if color:
             l.set_markup('<span background="%s">%s</span>' % (color, text))
         else:
             l.set_text(text)
-        box.pack_start(l, expand=False)
+        box.pack_start(l, False, True, 0)
         return box
 
     def register_viewclass(self, viewclass, name=None):
@@ -2999,12 +3043,12 @@ class AdveneGUI(object):
             ev.locals_[v.view_id]=v
 
         # Hook completer
-        completer=Completer(textview=ev.source,
-                            controller=self.controller,
-                            indexer=self.controller.package._indexer)
+        ev.completer=Completer(textview=ev.source,
+                               controller=self.controller,
+                               indexer=self.controller.package._indexer)
 
         w=ev.popup()
-        w.set_icon_list(*self.get_icon_list())
+        w.set_icon_list(self.get_icon_list())
         return True
 
     def update_display (self):
@@ -3020,25 +3064,25 @@ class AdveneGUI(object):
         # Synopsis:
         # Ask the controller to update its status
         # If we are moving the slider, don't update the display
-        #gtk.threads_enter()
+        #Gtk.threads_enter()
         try:
             pos=self.controller.update()
         except p.InternalException:
             # FIXME: something sensible to do here ?
-            print "Internal error on video player"
-            #gtk.threads_leave()
+            logger.error("Internal exception on video player")
+            #Gtk.threads_leave()
             return True
         except Exception, e:
             # Catch-all exception, in order to keep the mainloop
             # runnning
-            #gtk.threads_leave()
+            #Gtk.threads_leave()
             import traceback
             s=StringIO.StringIO()
             traceback.print_exc (file = s)
             self.log(_("Got exception %s. Trying to continue.") % str(e), s.getvalue())
             traceback.print_exc()
             return True
-        #gtk.threads_leave()
+        #Gtk.threads_leave()
 
         if self.slider_move:
             # FIXME: we could have a cache of key images (i.e. 50 equidistant
@@ -3050,7 +3094,7 @@ class AdveneGUI(object):
                 self.time_label.set_time(pos)
             # Update the display
             d = self.controller.cached_duration
-            if d > 0 and d != self.gui.slider.get_adjustment ().upper:
+            if d > 0 and d != self.gui.slider.get_adjustment ().get_upper():
                 self.gui.slider.set_range (0, d)
                 self.gui.slider.set_increments (d / 100, d / 10)
 
@@ -3142,16 +3186,16 @@ class AdveneGUI(object):
                     if c.tracers and config.data.preferences['record-actions']:
                         try:
                             fn = c.tracers[0].export()
-                            print "trace exported to %s" % fn
-                        except Exception, e:
-                            print "error exporting trace : %s" % unicode(e).encode('utf-8')
+                            logger.info(u"trace exported to %s" % fn)
+                        except Exception:
+                            logger.error(u"error exporting trace", exc_info=True)
                     if config.data.preferences['package-auto-save'] == 'always':
                         c.queue_action(do_save, l)
                     else:
                         # Ask before saving. Use the non-modal dialog
                         # to avoid locking the interface
                         dialog.message_dialog(label=_("""The package(s) %s are modified.\nSave them now?""") % ", ".join(l),
-                                              icon=gtk.MESSAGE_QUESTION,
+                                              icon=Gtk.MessageType.QUESTION,
                                               callback=lambda: do_save(l))
                 self.last_auto_save=t
 
@@ -3180,7 +3224,7 @@ class AdveneGUI(object):
                                              case_sensitive=not config.data.preferences['quicksearch-ignore-case'])
 
     def do_quicksearch(self, *p):
-        s=unicode(self.quicksearch_entry.get_text())
+        s=self.quicksearch_entry.get_text().decode('utf-8')
         if not s:
             self.log(_("Empty quicksearch string"))
             return True
@@ -3201,16 +3245,16 @@ class AdveneGUI(object):
         """
         if text is None:
             text=_("Choose an annotation type.")
-        d = gtk.Dialog(title=text,
-                       parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-                                 gtk.STOCK_OK, gtk.RESPONSE_OK,
+        d = Gtk.Dialog(title=text,
+                       parent=self.gui.win,
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+                                 Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                  ))
-        l=gtk.Label(text)
+        l=Gtk.Label(label=text)
         l.set_line_wrap(True)
         l.show()
-        d.vbox.pack_start(l, expand=False)
+        d.vbox.pack_start(l, False, True, 0)
 
         if create and force_create:
             ats=[]
@@ -3224,8 +3268,8 @@ class AdveneGUI(object):
 
         # Anticipated declaration of some widgets, which need to be
         # updated in the handle_new_type/schema_selection callback.
-        new_type_dialog=gtk.VBox()
-        new_schema_dialog=gtk.VBox()
+        new_type_dialog=Gtk.VBox()
+        new_schema_dialog=Gtk.VBox()
 
         def handle_new_type_selection(combo):
             el=combo.get_current_element()
@@ -3245,29 +3289,29 @@ class AdveneGUI(object):
                                                       callback=handle_new_type_selection)
         else:
             dialog.message_dialog(_("No annotation type is defined."),
-                                  icon=gtk.MESSAGE_ERROR)
+                                  icon=Gtk.MessageType.ERROR)
             return None
 
-        d.vbox.pack_start(type_selector, expand=False)
+        d.vbox.pack_start(type_selector, False, True, 0)
         type_selector.show_all()
 
         if create:
-            d.vbox.pack_start(new_type_dialog, expand=False)
-            new_type_dialog.pack_start(gtk.Label(_("Creating a new type.")))
+            d.vbox.pack_start(new_type_dialog, False, True, 0)
+            new_type_dialog.pack_start(Gtk.Label(_("Creating a new type.")), True, True, 0)
             ident=self.controller.package._idgenerator.get_id(AnnotationType)
             new_type_title_dialog=dialog.title_id_widget(element_title=ident,
                                                          element_id=ident)
             new_type_title_dialog.title_entry.set_tooltip_text(_("Title of the new type"))
             new_type_title_dialog.id_entry.set_tooltip_text(_("Id of the new type. It is generated from the title, but you may change it if necessary."))
-            new_type_dialog.pack_start(new_type_title_dialog, expand=False)
+            new_type_dialog.pack_start(new_type_title_dialog, False, True, 0)
 
             mimetype_selector = dialog.list_selector_widget(members=predefined_content_mimetypes, entry=True)
             mimetype_selector.set_tooltip_text(_("Specify the content-type for the annotation type"))
 
-            new_type_title_dialog.attach(gtk.Label(_("Content type")), 0, 1, 2, 3)
+            new_type_title_dialog.attach(Gtk.Label(label=_("Content type")), 0, 1, 2, 3)
             new_type_title_dialog.attach(mimetype_selector, 1, 2, 2, 3)
 
-            new_type_title_dialog.attach(gtk.Label(_("Schema")), 0, 1, 3, 4)
+            new_type_title_dialog.attach(Gtk.Label(label=_("Schema")), 0, 1, 3, 4)
 
             schemas=list(self.controller.package.schemas)
             newschema=helper.TitledElement(value=None,
@@ -3287,13 +3331,13 @@ class AdveneGUI(object):
             schema_selector.set_tooltip_text(_("Choose an existing schema for the new type, or create a new one"))
             new_type_title_dialog.attach(schema_selector, 1, 2, 3, 4)
             new_type_title_dialog.attach(new_schema_dialog, 1, 2, 4, 5)
-            new_schema_dialog.pack_start(gtk.Label(_("Specify the schema title")), expand=False)
+            new_schema_dialog.pack_start(Gtk.Label(_("Specify the schema title")), False, False, 0)
             ident=self.controller.package._idgenerator.get_id(Schema)
             new_schema_title_dialog=dialog.title_id_widget(element_title=ident,
                                                            element_id=ident)
             new_schema_title_dialog.title_entry.set_tooltip_text(_("Title of the new schema"))
             new_schema_title_dialog.id_entry.set_tooltip_text(_("Id of the new schema. It is generated from the title, but you may change it if necessary."))
-            new_schema_dialog.pack_start(new_schema_title_dialog, expand=False)
+            new_schema_dialog.pack_start(new_schema_title_dialog, False, True, 0)
 
         d.vbox.show_all()
         if force_create:
@@ -3307,12 +3351,12 @@ class AdveneGUI(object):
         d.connect('key-press-event', dialog.dialog_keypressed_cb)
         dialog.center_on_mouse(d)
         res=d.run()
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             at=type_selector.get_current_element()
             if at == newat:
                 # Creation of a new type.
-                attitle=unicode(new_type_title_dialog.title_entry.get_text())
-                atid=unicode(new_type_title_dialog.id_entry.get_text())
+                attitle=new_type_title_dialog.title_entry.get_text().decode('utf-8')
+                atid=new_type_title_dialog.id_entry.get_text().decode('utf-8')
                 at=self.controller.package.get_element_by_id(atid)
                 if at is not None:
                     dialog.message_dialog(_("You specified a annotation-type identifier that already exists. Aborting."))
@@ -3320,8 +3364,8 @@ class AdveneGUI(object):
                     return None
                 sc=schema_selector.get_current_element()
                 if sc == newschema:
-                    sctitle=unicode(new_schema_title_dialog.title_entry.get_text())
-                    scid=unicode(new_schema_title_dialog.id_entry.get_text())
+                    sctitle=new_schema_title_dialog.title_entry.get_text().decode('utf-8')
+                    scid=new_schema_title_dialog.id_entry.get_text().decode('utf-8')
                     sc=self.controller.package.get_element_by_id(scid)
                     if sc is None:
                         # Create the schema
@@ -3363,20 +3407,20 @@ class AdveneGUI(object):
         """
         if text is None:
             text=_("Choose a schema.")
-        d = gtk.Dialog(title=text,
-                       parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-                                 gtk.STOCK_OK, gtk.RESPONSE_OK,
+        d = Gtk.Dialog(title=text,
+                       parent=self.gui.win,
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+                                 Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                  ))
-        l=gtk.Label(text)
+        l=Gtk.Label(label=text)
         l.set_line_wrap(True)
         l.show()
-        d.vbox.pack_start(l, expand=False)
+        d.vbox.pack_start(l, False, True, 0)
 
         # Anticipated declaration of some widgets, which need to be
         # updated in the handle_new_type/schema_selection callback.
-        new_schema_dialog=gtk.VBox()
+        new_schema_dialog=Gtk.VBox()
 
         schemas=list(self.controller.package.schemas)
         newschema=helper.TitledElement(value=None,
@@ -3393,13 +3437,13 @@ class AdveneGUI(object):
 
         schema_selector=dialog.list_selector_widget(members=[ (a, self.controller.get_title(a), self.controller.get_element_color(a)) for a in schemas],
                                                     callback=handle_new_schema_selection)
-        d.vbox.pack_start(schema_selector, expand=False)
-        d.vbox.pack_start(new_schema_dialog, expand=False)
-        new_schema_dialog.pack_start(gtk.Label(_("Specify the schema title")), expand=False)
+        d.vbox.pack_start(schema_selector, False, True, 0)
+        d.vbox.pack_start(new_schema_dialog, False, True, 0)
+        new_schema_dialog.pack_start(Gtk.Label(_("Specify the schema title")), False, False, 0)
         ident=self.controller.package._idgenerator.get_id(Schema)
         new_schema_title_dialog=dialog.title_id_widget(element_title=ident,
                                                        element_id=ident)
-        new_schema_dialog.pack_start(new_schema_title_dialog, expand=False)
+        new_schema_dialog.pack_start(new_schema_title_dialog, False, True, 0)
 
         d.vbox.show_all()
         new_schema_dialog.hide()
@@ -3407,11 +3451,11 @@ class AdveneGUI(object):
         d.show()
         dialog.center_on_mouse(d)
         res=d.run()
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             sc=schema_selector.get_current_element()
             if sc == newschema:
-                sctitle=unicode(new_schema_title_dialog.title_entry.get_text())
-                scid=unicode(new_schema_title_dialog.id_entry.get_text())
+                sctitle=new_schema_title_dialog.title_entry.get_text().decode('utf-8')
+                scid=new_schema_title_dialog.id_entry.get_text().decode('utf-8')
                 sc=self.controller.package.get_element_by_id(scid)
                 if sc is None:
                     # Create the schema
@@ -3444,25 +3488,25 @@ class AdveneGUI(object):
                 t = self.controller.get_title(p)
                 response=dialog.yes_no_cancel_popup(title=_("Package %s modified") % t,
                                                              text=_("The package %s has been modified but not saved.\nSave it now?") % t)
-                if response == gtk.RESPONSE_CANCEL:
+                if response == Gtk.ResponseType.CANCEL:
                     return True
-                elif response == gtk.RESPONSE_YES:
+                elif response == Gtk.ResponseType.YES:
                     self.on_save1_activate(package=p)
-                elif response == gtk.RESPONSE_NO:
+                elif response == Gtk.ResponseType.NO:
                     p._modified=False
             if p.imagecache._modified and config.data.preferences['imagecache-save-on-exit'] != 'never':
                 if config.data.preferences['imagecache-save-on-exit'] == 'ask':
                     media=self.controller.get_default_media(package=p)
                     response=dialog.yes_no_cancel_popup(title=_("%s snapshots") % media,
                                                              text=_("Do you want to save the snapshots for media %s?") % media)
-                    if response == gtk.RESPONSE_CANCEL:
+                    if response == Gtk.ResponseType.CANCEL:
                         return True
-                    elif response == gtk.RESPONSE_YES:
+                    elif response == Gtk.ResponseType.YES:
                         try:
                             p.imagecache.save (helper.mediafile2id (media))
                         except OSError, e:
                             self.log(_("Cannot save imagecache for %(media)s: %(e)s") % locals())
-                    elif response == gtk.RESPONSE_NO:
+                    elif response == Gtk.ResponseType.NO:
                         p.imagecache._modified=False
                         pass
                 elif config.data.preferences['imagecache-save-on-exit'] == 'always':
@@ -3475,7 +3519,7 @@ class AdveneGUI(object):
         if self.controller.on_exit():
             # Memorize application window size/position
             self.resize_cb(self.gui.win, None, 'main')
-            gtk.main_quit()
+            Gtk.main_quit()
             return False
         else:
             return True
@@ -3529,10 +3573,10 @@ class AdveneGUI(object):
         return True
 
     def display_textfile(self, path, title=None, viewname=None):
-        w=gtk.Window()
+        w=Gtk.Window()
         if title is not None:
             w.set_title(title + " - " + path)
-        w.set_icon_list(*self.get_icon_list())
+        w.set_icon_list(self.get_icon_list())
 
         def refresh(b, t):
             b=t.get_buffer()
@@ -3550,29 +3594,29 @@ class AdveneGUI(object):
             w.destroy()
             return True
 
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        t=gtk.TextView()
+        t=Gtk.TextView()
         t.set_editable (False)
-        t.set_wrap_mode (gtk.WRAP_CHAR)
+        t.set_wrap_mode (Gtk.WrapMode.CHAR)
 
-        scroll_win = gtk.ScrolledWindow ()
-        scroll_win.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        scroll_win = Gtk.ScrolledWindow ()
+        scroll_win.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         scroll_win.add(t)
 
         vbox.add(scroll_win)
 
-        hbox=gtk.HButtonBox()
+        hbox=Gtk.HButtonBox()
 
-        b=gtk.Button(stock=gtk.STOCK_CLOSE)
+        b=Gtk.Button(stock=Gtk.STOCK_CLOSE)
         b.connect('clicked', close, w)
-        hbox.pack_start(b, expand=False)
+        hbox.pack_start(b, False, True, 0)
 
-        b=gtk.Button(stock=gtk.STOCK_REFRESH)
+        b=Gtk.Button(stock=Gtk.STOCK_REFRESH)
         b.connect('clicked', refresh, t)
-        hbox.pack_start(b, expand=False)
+        hbox.pack_start(b, False, True, 0)
 
-        vbox.pack_start(hbox, expand=False)
+        vbox.pack_start(hbox, False, True, 0)
 
         w.add(vbox)
         refresh(None, t)
@@ -3643,27 +3687,27 @@ class AdveneGUI(object):
             return True
 
         # Control-shortcuts
-        if event.state & gtk.gdk.CONTROL_MASK:
+        if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             # The Control-key is held. Special actions :
-            if event.keyval == gtk.keysyms.e:
+            if event.keyval == Gdk.KEY_e:
                 # Popup the evaluator window
                 self.popup_evaluator()
                 return True
-            elif event.keyval == gtk.keysyms.k:
+            elif event.keyval == Gdk.KEY_k:
                 # Get the cursor in the quicksearch entry
                 self.quicksearch_entry.grab_focus()
                 self.quicksearch_entry.select_region(0, -1)
                 return True
-            elif event.keyval == gtk.keysyms.q:
+            elif event.keyval == Gdk.KEY_q:
                 self.on_exit()
                 return True
-            elif event.keyval == gtk.keysyms.s:
-                if event.state & gtk.gdk.SHIFT_MASK:
+            elif event.keyval == Gdk.KEY_s:
+                if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                     self.on_save_as1_activate()
                 else:
                     self.on_save1_activate()
                 return True
-            elif event.keyval == gtk.keysyms.z:
+            elif event.keyval == Gdk.KEY_z:
                 self.undo()
                 return True
         return False
@@ -3685,13 +3729,13 @@ class AdveneGUI(object):
         if p._modified:
             response=dialog.yes_no_cancel_popup(title=_("Package modified"),
                                          text=_("The package that you want to close has been modified but not saved.\nSave it now?"))
-            if response == gtk.RESPONSE_CANCEL:
+            if response == Gtk.ResponseType.CANCEL:
                 return True
-            if response == gtk.RESPONSE_YES:
+            if response == Gtk.ResponseType.YES:
                 self.on_save1_activate()
                 self.controller.remove_package()
                 return True
-            if response == gtk.RESPONSE_NO:
+            if response == Gtk.ResponseType.NO:
                 self.controller.package._modified=False
                 self.controller.remove_package()
                 return True
@@ -3701,8 +3745,8 @@ class AdveneGUI(object):
         # Close all edit popups for this element
         for e in self.edit_popups:
             try:
-                if p == e.element.rootPackage and e.window:
-                    e.window.destroy()
+                if p == e.element.rootPackage and e.get_window():
+                    e.get_window().destroy()
             except KeyError:
                 pass
 
@@ -3716,8 +3760,8 @@ class AdveneGUI(object):
             d=None
 
         filename, alias=dialog.get_filename(title=_("Load a package"),
-                                            action=gtk.FILE_CHOOSER_ACTION_OPEN,
-                                            button=gtk.STOCK_OPEN,
+                                            action=Gtk.FileChooserAction.OPEN,
+                                            button=Gtk.STOCK_OPEN,
                                             default_dir=d,
                                             alias=True,
                                             filter='advene')
@@ -3730,7 +3774,7 @@ class AdveneGUI(object):
             if not ext in ('.xml', '.azp', '.apl'):
                 # Does not look like a valid package
                 if not dialog.message_dialog(_("The file %s does not look like a valid Advene package. It should have a .azp or .xml extension. Try to open anyway?") % filename,
-                                      icon=gtk.MESSAGE_QUESTION):
+                                      icon=Gtk.MessageType.QUESTION):
                     return True
             if ext == '.apl':
                 modif=[ (a, p)
@@ -3739,7 +3783,7 @@ class AdveneGUI(object):
                 if modif:
                     if not dialog.message_dialog(
                         _("You are trying to load a session file, but there are unsaved packages. Proceed anyway?"),
-                        icon=gtk.MESSAGE_QUESTION):
+                        icon=Gtk.MessageType.QUESTION):
                         return True
 
             try:
@@ -3749,7 +3793,7 @@ class AdveneGUI(object):
                 self.set_busy_cursor(False)
                 dialog.message_dialog(_("Cannot load package %(filename)s:\n%(error)s") % {
                         'filename': filename,
-                        'error': unicode(e)}, gtk.MESSAGE_ERROR)
+                        'error': unicode(e)}, Gtk.MessageType.ERROR)
         return True
 
     def on_save1_activate (self, button=None, package=None):
@@ -3767,8 +3811,8 @@ class AdveneGUI(object):
                 save=True
             elif config.data.preferences['save-default-workspace'] == 'ask':
                 save=dialog.message_dialog(_("Do you want to save the current workspace ?"),
-                                           icon=gtk.MESSAGE_QUESTION)
-            if save:
+                                           icon=Gtk.MessageType.QUESTION)
+            if save and package.title != "Export package":
                 self.workspace_save('_default_workspace')
                 default=self.controller.package.getMetaData (config.data.namespace, "default_adhoc")
                 if not default:
@@ -3782,7 +3826,7 @@ class AdveneGUI(object):
                 self.controller.save_package (alias=alias)
             except (OSError, IOError), e:
                 dialog.message_dialog(_("Could not save the package: %s") % unicode(e),
-                                               gtk.MESSAGE_ERROR)
+                                               Gtk.MessageType.ERROR)
         return True
 
     def on_save_as1_activate (self, button=None, package=None):
@@ -3795,8 +3839,8 @@ class AdveneGUI(object):
         else:
             d=None
         filename=dialog.get_filename(title=_("Save the package %s") % self.controller.get_title(package),
-                                              action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                              button=gtk.STOCK_SAVE,
+                                              action=Gtk.FileChooserAction.SAVE,
+                                              button=Gtk.STOCK_SAVE,
                                               default_dir=d,
                                               filter='advene')
         if filename:
@@ -3809,9 +3853,9 @@ class AdveneGUI(object):
                 and ext.lower() != '.azp'):
                 ret=dialog.yes_no_cancel_popup(title=_("Invalid file extension"),
                                                         text=_("Your package contains resources,\nthe filename (%s) should have a .azp extension.\nShould I put the correct extension?") % filename)
-                if ret == gtk.RESPONSE_YES:
+                if ret == Gtk.ResponseType.YES:
                     filename = p + '.azp'
-                elif ret == gtk.RESPONSE_NO:
+                elif ret == Gtk.ResponseType.NO:
                     dialog.message_dialog(_("OK, the resources will be lost."))
                 else:
                     self.log(_("Aborting package saving"))
@@ -3823,14 +3867,14 @@ class AdveneGUI(object):
                 save=True
             elif config.data.preferences['save-default-workspace'] == 'ask':
                 save=dialog.message_dialog(_("Do you want to save the current workspace ?"),
-                                           icon=gtk.MESSAGE_QUESTION)
-            if save:
+                                           icon=Gtk.MessageType.QUESTION)
+            if save and package.title != "Export package":
                 self.workspace_save('_default_workspace')
                 default=self.controller.package.getMetaData (config.data.namespace, "default_adhoc")
                 if not default:
                     self.controller.package.setMetaData (config.data.namespace, "default_adhoc", '_default_workspace')
             alias=self.controller.aliases[package]
-            modified = [ p for p in self.edit_popups if p.get_modified() ]
+            modified = [ pop for pop in self.edit_popups if pop.get_modified() ]
             if modified and config.data.preferences['apply-edited-elements-on-save']:
                 for p in modified:
                     p.apply_cb()
@@ -3838,7 +3882,7 @@ class AdveneGUI(object):
                 self.controller.save_package(name=filename, alias=alias)
             except (OSError, IOError), e:
                 dialog.message_dialog(_("Could not save the package: %s") % unicode(e),
-                                               gtk.MESSAGE_ERROR)
+                                               Gtk.MessageType.ERROR)
         return True
 
     def on_save_session1_activate (self, button=None, data=None):
@@ -3849,8 +3893,8 @@ class AdveneGUI(object):
         else:
             d=None
         filename=dialog.get_filename(title=_("Save the session in..."),
-                                              action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                              button=gtk.STOCK_SAVE,
+                                              action=Gtk.FileChooserAction.SAVE,
+                                              button=Gtk.STOCK_SAVE,
                                               default_dir=d,
                                               filter='session')
         if filename:
@@ -3869,13 +3913,13 @@ class AdveneGUI(object):
             or 'dvd' in self.controller.get_default_media()):
             if not dialog.message_dialog(
                 _("Do you confirm the creation of annotations matching the DVD chapters?"),
-                icon=gtk.MESSAGE_QUESTION):
+                icon=Gtk.MessageType.QUESTION):
                 return True
             try:
                 i=advene.util.importer.get_importer('lsdvd', controller=self.controller)
             except Exception:
                 dialog.message_dialog(_("Cannot import DVD chapters. Did you install the lsdvd software?"),
-                                        icon=gtk.MESSAGE_ERROR)
+                                        icon=Gtk.MessageType.ERROR)
                 return True
             i.package=self.controller.package
             i.process_file('lsdvd')
@@ -3883,7 +3927,7 @@ class AdveneGUI(object):
             self.controller.notify('PackageLoad', package=self.controller.package)
         else:
             dialog.message_dialog(_("The associated media is not a DVD."),
-                                           icon=gtk.MESSAGE_ERROR)
+                                           icon=Gtk.MessageType.ERROR)
         return True
 
     def on_import_file1_activate (self, button=None, data=None):
@@ -3897,7 +3941,7 @@ class AdveneGUI(object):
                                  display_unlikely=False)
         else:
             dialog.message_dialog(_("No associated video file"),
-                                  icon=gtk.MESSAGE_ERROR)
+                                  icon=Gtk.MessageType.ERROR)
         return False
 
     def on_find1_activate (self, button=None, data=None):
@@ -3905,29 +3949,29 @@ class AdveneGUI(object):
         return True
 
     def on_cut1_activate (self, button=None, data=None):
-        print "Cut: Not implemented yet."
+        logger.error("Cut: Not implemented yet.")
         return False
 
     def on_copy1_activate (self, button=None, data=None):
-        print "Copy: Not implemented yet."
+        logger.error("Copy: Not implemented yet.")
         return False
 
     def on_paste1_activate (self, button=None, data=None):
-        print "Paste: Not implemented yet."
+        logger.error("Paste: Not implemented yet.")
         return False
 
     def on_delete1_activate (self, button=None, data=None):
-        print "Delete: Not implemented yet (cf popup menu)."
+        logger.error("Delete: Not implemented yet (cf popup menu).")
         return False
 
     def on_edit_ruleset1_activate (self, button=None, data=None):
         """Default ruleset editing."""
-        w=gtk.Window(gtk.WINDOW_TOPLEVEL)
+        w=Gtk.Window(Gtk.WindowType.TOPLEVEL)
         w.set_title(_("Standard RuleSet"))
         w.connect('destroy', lambda e: w.destroy())
-        w.set_icon_list(*self.get_icon_list())
+        w.set_icon_list(self.get_icon_list())
 
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
         vbox.set_homogeneous (False)
         w.add(vbox)
 
@@ -3951,26 +3995,26 @@ class AdveneGUI(object):
             # edit.model has been edited
             self.controller.event_handler.set_ruleset(edit.model, type_=type_)
             # FIXME: implement ruleset save
-            print "Not implemented yet"
+            logger.error("Not implemented yet")
             return True
 
-        hb=gtk.HButtonBox()
+        hb=Gtk.HButtonBox()
 
-        b=gtk.Button(stock=gtk.STOCK_SAVE)
+        b=Gtk.Button(stock=Gtk.STOCK_SAVE)
         b.connect('clicked', save_ruleset, 'default')
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
-        b=gtk.Button(stock=gtk.STOCK_OK)
+        b=Gtk.Button(stock=Gtk.STOCK_OK)
         b.connect('clicked', validate_ruleset, 'default')
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
-        b=gtk.Button(stock=gtk.STOCK_CANCEL)
+        b=Gtk.Button(stock=Gtk.STOCK_CANCEL)
         b.connect('clicked', lambda e: w.destroy())
-        hb.pack_end(b, expand=False)
+        hb.pack_end(b, False, True, 0)
 
         hb.show_all()
 
-        vbox.pack_start(hb, expand=False)
+        vbox.pack_start(hb, False, True, 0)
 
         vbox.show()
 
@@ -4046,16 +4090,17 @@ class AdveneGUI(object):
 
     def on_about1_activate (self, button=None, data=None):
         """Activate the About window."""
-        gtk.about_dialog_set_url_hook(lambda dialog, link: self.controller.open_url(link))
-        d=gtk.AboutDialog()
+        d=Gtk.AboutDialog()
+        d.set_transient_for(self.gui.win)
+        d.set_activate_link = lambda dialog, link: self.controller.open_url(link)
         d.set_name('Advene')
         d.set_version(config.data.version_string.replace('Advene ', ''))
-        d.set_copyright("Copyright 2002-2012 Olivier Aubert, Pierre-Antoine Champin")
-        d.set_license(_('GNU General Public License v. 2\nSee http://www.gnu.org/copyleft/gpl.html for more details'))
+        d.set_copyright("Copyright 2002-2017 Olivier Aubert, Pierre-Antoine Champin")
+        d.set_license_type(Gtk.License.GPL_3_0)
         d.set_website('http://www.advene.org/')
         d.set_website_label(_('Visit the Advene web site for examples and documentation.'))
         d.set_authors( [ 'Olivier Aubert', 'Pierre-Antoine Champin', 'Yannick Prie', 'Bertrand Richard', 'Frank Wagner' ] )
-        d.set_logo(gtk.gdk.pixbuf_new_from_file(config.data.advenefile( ( 'pixmaps', 'logo_advene.png') )))
+        d.set_logo(GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile( ( 'pixmaps', 'logo_advene.png') )))
         d.connect('response', lambda w, r: w.destroy())
         d.run()
 
@@ -4087,8 +4132,8 @@ class AdveneGUI(object):
         else:
             default=None
         filename=dialog.get_filename(title=_("Select a movie file"),
-                                     action=gtk.FILE_CHOOSER_ACTION_OPEN,
-                                     button=gtk.STOCK_OPEN,
+                                     action=Gtk.FileChooserAction.OPEN,
+                                     button=Gtk.STOCK_OPEN,
                                      default_dir=default,
                                      filter='video')
         if filename:
@@ -4097,18 +4142,18 @@ class AdveneGUI(object):
 
     def on_b_selectdvd_clicked (self, button=None, data=None):
         """Play a DVD."""
-        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+        window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
         window.set_title(_("Title/Chapter selection"))
 
         window.connect('destroy', lambda e: window.destroy())
 
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
         sel=DVDSelect(controller=self.controller,
                       current=self.controller.get_default_media())
         vbox.add(sel.get_widget())
 
-        hbox=gtk.HButtonBox()
+        hbox=Gtk.HButtonBox()
 
         def validate(button=None, sel=None, window=None):
             self.controller.update_status("stop")
@@ -4125,11 +4170,11 @@ class AdveneGUI(object):
             window.destroy()
             return True
 
-        b=gtk.Button(stock=gtk.STOCK_OK)
+        b=Gtk.Button(stock=Gtk.STOCK_OK)
         b.connect('clicked', validate, sel, window)
         hbox.add(b)
 
-        b=gtk.Button(stock=gtk.STOCK_CANCEL)
+        b=Gtk.Button(stock=Gtk.STOCK_CANCEL)
         b.connect('clicked', cancel, window)
         hbox.add(b)
 
@@ -4190,8 +4235,8 @@ class AdveneGUI(object):
                 if d != self.controller.package.cached_duration:
                     self.controller.package.cached_duration = d
                     self.controller.notify('DurationUpdate', duration=d)
-            except ValueError, e:
-                print "Cannot convert duration", str(e)
+            except ValueError:
+                logger.error(u"Cannot convert duration", exc_info=True)
                 pass
         return True
 
@@ -4210,10 +4255,10 @@ class AdveneGUI(object):
                         'tts-language', 'tts-encoding', 'tts-engine',
                         'record-actions', 'popup-destination',
                         'timestamp-format', 'default-fps',
-                        'abbreviation-mode', 'text-abbreviations', 'completion-mode',
+                        'abbreviation-mode', 'text-abbreviations', 'completion-mode', 'completion-predefined-only',
                         'prefer-wysiwyg', 'player-shortcuts-in-edit-windows', 'apply-edited-elements-on-save' )
         # Direct options needing a restart to be taken into account.
-        restart_needed_options = ('tts-engine', 'language')
+        restart_needed_options = ('tts-engine', 'language', 'timestamp-format')
 
         path_options=('data', 'plugins', 'advene', 'imagecache', 'moviepath', 'shotdetect')
         cache={
@@ -4371,6 +4416,7 @@ class AdveneGUI(object):
 
         ew.add_title(_("Text content"))
         ew.add_checkbox(_("Completion mode"), 'completion-mode', _("Enable dynamic completion mode"))
+        ew.add_checkbox(_("Predefined terms only"), 'completion-predefined-only', _("If completion is enabled, complete only with predefined terms."))
         ew.add_checkbox(_("Abbreviation mode"), 'abbreviation-mode', _("Enable abbreviation mode"))
         ew.add_text(_("Abbreviations"), 'text-abbreviations', _("Text abbreviations. 1 entry per line. Each line consists of the abbreviation followed by its replacement."))
 
@@ -4463,40 +4509,44 @@ class AdveneGUI(object):
 
     def on_slider_button_press_event (self, button=None, event=None):
         self.slider_move = True
-        if event.button == 1:
-            event.button = 2
-        return False
+        return
 
     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
+        return
 
     def on_slider_scroll_event (self, widget=None, event=None):
-        if event.direction == gtk.gdk.SCROLL_DOWN or event.direction == gtk.gdk.SCROLL_RIGHT:
+        incr = 0
+        if event.direction == Gdk.ScrollDirection.DOWN or event.direction == Gdk.ScrollDirection.RIGHT:
             incr=+1
-        if event.direction == gtk.gdk.SCROLL_UP or event.direction == gtk.gdk.SCROLL_LEFT:
+        if event.direction == Gdk.ScrollDirection.UP or event.direction == Gdk.ScrollDirection.LEFT:
             incr=-1
-        self.controller.move_frame(incr)
-        return False
+        if event.direction == Gdk.ScrollDirection.SMOOTH:
+            deltax = event.get_scroll_deltas()[1]
+            if deltax > 0:
+                incr = +1
+            else:
+                incr = -1
+        if incr:
+            self.controller.move_frame(incr)
+        return
 
     def on_video_button_press_event (self, button=None, event=None):
-        if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+        if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
             self.controller.player.fullscreen(self.connect_fullscreen_handlers)
         elif event.button == 3:
             self.player_create_bookmark(event)
         return False
 
     def on_help1_activate (self, button=None, data=None):
-        self.controller.open_url ('http://liris.cnrs.fr/advene/wiki/index.php/AdveneUserGuide')
+        self.controller.open_url ('http://www.advene.org/wiki/index.php/AdveneUserGuide')
         return True
 
     def on_support1_activate (self, button=None, data=None):
-        self.controller.open_url ('http://liris.cnrs.fr/advene/forum/')
+        self.controller.open_url ('http://github.com/oaubert/advene/')
         return True
 
     def on_helpshortcuts_activate (self, button=None, data=None):
@@ -4504,13 +4554,11 @@ class AdveneGUI(object):
         if os.access(helpfile, os.R_OK):
             self.controller.open_url ('file:///' + helpfile)
         else:
-            self.controller.open_url ('http://liris.cnrs.fr/advene/wiki/index.php/AdveneShortcuts')
+            self.controller.open_url ('http://www.advene.org/wiki/index.php/AdveneShortcuts')
         return True
 
     def on_advene_log_display(self, button=None, data=None):
-        self.display_textfile(config.data.advenefile('advene.log', 'settings'),
-                              title=_("Advene log"),
-                              viewname='advenelogview')
+        self.open_adhoc_view('logmessages', destination='south')
         return True
 
     def on_advene_log_folder_display(self, button=None, data=None):
@@ -4579,8 +4627,8 @@ class AdveneGUI(object):
         else:
             d=None
         filename=dialog.get_filename(title=_("Select the package to merge"),
-                                              action=gtk.FILE_CHOOSER_ACTION_OPEN,
-                                              button=gtk.STOCK_OPEN,
+                                              action=Gtk.FileChooserAction.OPEN,
+                                              button=Gtk.STOCK_OPEN,
                                               default_dir=d,
                                               filter='advene')
         if not filename:
@@ -4590,7 +4638,7 @@ class AdveneGUI(object):
         except Exception, e:
             msg = "Cannot load %s file: %s" % (filename, unicode(e))
             self.log(msg)
-            dialog.message_dialog(msg, icon=gtk.MESSAGE_ERROR)
+            dialog.message_dialog(msg, icon=Gtk.MessageType.ERROR)
             return True
         m=Merger(self.controller, sourcepackage=source, destpackage=self.controller.package)
         m.popup()
@@ -4603,9 +4651,9 @@ class AdveneGUI(object):
                                    element_title=name,
                                    element_id=name,
                                    text=_("Enter a view name to save the workspace"))
-        d.default=gtk.CheckButton(_("Default workspace"))
+        d.default=Gtk.CheckButton(_("Default workspace"))
         d.default.set_tooltip_text(_("Open this workspace when opening the package"))
-        d.vbox.pack_start(d.default)
+        d.vbox.pack_start(d.default, True, True, 0)
         d.show_all()
         dialog.center_on_mouse(d)
 
@@ -4614,10 +4662,10 @@ class AdveneGUI(object):
         default=False
 
         res=d.run()
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             try:
-                title=unicode(d.title_entry.get_text())
-                ident=unicode(d.id_entry.get_text())
+                title=d.title_entry.get_text().decode('utf-8')
+                ident=d.id_entry.get_text().decode('utf-8')
                 default=d.default.get_active()
             except ValueError:
                 pass
@@ -4627,7 +4675,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, icon=gtk.MESSAGE_ERROR)
+            dialog.message_dialog(_("Error: the identifier %s contains invalid characters.") % ident, icon=Gtk.MessageType.ERROR)
             return True
 
         v=helper.get_id(self.controller.package.views, ident)
@@ -4638,7 +4686,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, icon=gtk.MESSAGE_ERROR)
+                dialog.message_dialog(_("Error: the view %s exists and is not a workspace view.") % ident, icon=Gtk.MessageType.ERROR)
                 return True
             create=False
         v.title=title
@@ -4683,40 +4731,40 @@ class AdveneGUI(object):
         return True
 
     def on_website_export_activate(self, button=None, data=None):
-        w=gtk.Window()
+        w=Gtk.Window()
 
-        v=gtk.VBox()
+        v=Gtk.VBox()
         w.set_title(_("Website export"))
-        v.add(gtk.Label(_("Exporting views to a website")))
+        v.add(Gtk.Label(label=_("Exporting views to a website")))
 
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Output directory")), expand=False)
-        dirname_entry=gtk.Entry()
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Output directory")), False, False, 0)
+        dirname_entry=Gtk.Entry()
         d=self.controller.package.getMetaData(config.data.namespace, 'website-export-directory')
         if d is not None:
             dirname_entry.set_text(d)
         hb.add(dirname_entry)
 
-        d=gtk.Button(stock=gtk.STOCK_OPEN)
+        d=Gtk.Button(stock=Gtk.STOCK_OPEN)
         def select_dir(*p):
             d=dialog.get_dirname(_("Specify the output directory"))
             if d is not None:
                 dirname_entry.set_text(d)
             return True
         d.connect('clicked', select_dir)
-        hb.pack_start(d, expand=False)
-        v.pack_start(hb, expand=False)
-
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Maximum recursion depth")), expand=False)
-        adj=gtk.Adjustment(3, 1, 9, 1)
-        max_depth=gtk.SpinButton(adj)
-        hb.pack_start(max_depth, expand=False)
-        v.pack_start(hb, expand=False)
-
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Video URL")), expand=False)
-        video_entry=gtk.Entry()
+        hb.pack_start(d, False, True, 0)
+        v.pack_start(hb, False, True, 0)
+
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Maximum recursion depth")), False, False, 0)
+        adj=Gtk.Adjustment.new(3, 1, 9, 1)
+        max_depth=Gtk.SpinButton.new(adj)
+        hb.pack_start(max_depth, False, True, 0)
+        v.pack_start(hb, False, True, 0)
+
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Video URL")), False, False, 0)
+        video_entry=Gtk.Entry()
         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:
@@ -4727,10 +4775,10 @@ class AdveneGUI(object):
             video_entry.set_text(u)
 
         hb.add(video_entry)
-        v.pack_start(hb, expand=False)
+        v.pack_start(hb, False, True, 0)
 
-        pb=gtk.ProgressBar()
-        v.pack_start(pb, expand=False)
+        pb=Gtk.ProgressBar()
+        v.pack_start(pb, False, True, 0)
 
         w.should_continue = False
 
@@ -4740,16 +4788,16 @@ class AdveneGUI(object):
             if len(msg) > 80:
                 msg = msg[:36] + "(...)" + msg[-36:]
             pb.set_text(msg)
-            while gtk.events_pending():
-                gtk.main_iteration()
+            while Gtk.events_pending():
+                Gtk.main_iteration()
             return w.should_continue
 
         def do_conversion(b):
-            d=unicode(dirname_entry.get_text())
+            d=dirname_entry.get_text().decode('utf-8')
             if not d:
                 return False
 
-            video=unicode(video_entry.get_text())
+            video=video_entry.get_text().decode('utf-8')
 
             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):
@@ -4767,7 +4815,7 @@ class AdveneGUI(object):
                                                progress_callback=cb,
                                                video_url=video)
             except OSError, e:
-                dialog.message_dialog(_("Could not export data: ") + unicode(e), icon=gtk.MESSAGE_ERROR)
+                dialog.message_dialog(_("Could not export data: ") + unicode(e), icon=Gtk.MessageType.ERROR)
                 b.set_sensitive(True)
             self.log(_("Website export to %s completed") % d)
             w.destroy()
@@ -4782,14 +4830,14 @@ class AdveneGUI(object):
                 w.destroy()
             return True
 
-        hb=gtk.HButtonBox()
-        b=gtk.Button(stock=gtk.STOCK_CONVERT)
+        hb=Gtk.HButtonBox()
+        b=Gtk.Button(stock=Gtk.STOCK_CONVERT)
         b.connect('clicked', do_conversion)
         hb.add(b)
-        b=gtk.Button(stock=gtk.STOCK_CLOSE)
+        b=Gtk.Button(stock=Gtk.STOCK_CLOSE)
         b.connect('clicked', do_cancel)
         hb.add(b)
-        v.pack_start(hb, expand=False)
+        v.pack_start(hb, False, True, 0)
 
         w.add(v)
 
@@ -4819,7 +4867,7 @@ class AdveneGUI(object):
                 missing.add(a.fragment.end)
         if missing:
             dialog.message_dialog(_("Updating %d snapshots") % len(missing), modal=False)
-            print "Updating %d missing snapshots: " % len(missing), ", ".join(helper.format_time_reference(t) for t in sorted(missing))
+            logger.info("Updating %d missing snapshots: %s" % (len(missing), ", ".join(helper.format_time_reference(t) for t in sorted(missing))))
             for t in sorted(missing):
                 self.controller.player.async_snapshot(t)
         else:
@@ -4832,10 +4880,10 @@ class AdveneGUI(object):
         movie=self.controller.get_default_media()
         if not movie:
             # No defined movie.
-            dialog.message_dialog(_("You first must load a movie into Advene" ), icon=gtk.MESSAGE_ERROR)
+            dialog.message_dialog(_("You first must load a movie into Advene" ), icon=Gtk.MessageType.ERROR)
             return True
         if not os.path.exists(movie):
-            dialog.message_dialog(_("The movie %s does not seem to exist.") % movie, icon=gtk.MESSAGE_ERROR)
+            dialog.message_dialog(_("The movie %s does not seem to exist.") % movie, icon=Gtk.MessageType.ERROR)
             return True
 
         c=self.controller
@@ -4843,12 +4891,12 @@ class AdveneGUI(object):
 
         def do_cancel(b, pb):
             if pb.event_source_generate is not None:
-                gobject.source_remove(pb.event_source_generate)
+                GObject.source_remove(pb.event_source_generate)
             c.package.imagecache.autosync=pb.old_autosync
 
             # Restore standard update display methods
-            self.event_source_update_display=gobject.timeout_add (100, self.update_display)
-            self.event_source_slow_update_display=gobject.timeout_add (1000, self.slow_update_display)
+            self.event_source_update_display=GObject.timeout_add (100, self.update_display)
+            self.event_source_slow_update_display=GObject.timeout_add (1000, self.slow_update_display)
             pb._window.destroy()
             return True
 
@@ -4858,9 +4906,8 @@ class AdveneGUI(object):
             try:
                 p.position_update()
                 i = p.snapshot (p.relative_position)
-            except p.InternalException, e:
-                print "Exception in snapshot: %s" % e
-                return True
+            except p.InternalException:
+                logger.error(u"Exception in snapshot", exc_info=True)
             if i is not None and i.height != 0:
                 self.controller.package.imagecache[p.current_position_value] = helper.snapshot2png (i)
                 prg=1.0 * p.current_position_value / p.stream_duration
@@ -4873,8 +4920,8 @@ class AdveneGUI(object):
         def do_generate(b, pb):
             b.set_sensitive(False)
             # Deactivate the GUI update method
-            gobject.source_remove(self.event_source_update_display)
-            gobject.source_remove(self.event_source_slow_update_display)
+            GObject.source_remove(self.event_source_update_display)
+            GObject.source_remove(self.event_source_slow_update_display)
 
             # Make the imagecache directly store data on disk
             pb.old_autosync=c.package.imagecache.autosync
@@ -4888,36 +4935,36 @@ class AdveneGUI(object):
             elif p.status != p.PlayingStatus:
                 # If we were not already playing, capture from the start
                 c.update_status('start', position=0)
-            pb.event_source_generate=gobject.timeout_add(400, take_screenshot, pb)
+            pb.event_source_generate=GObject.timeout_add(400, take_screenshot, pb)
             return True
 
-        w=gtk.Window()
+        w=Gtk.Window()
         w.set_title(_("Generating screenshots"))
-        v=gtk.VBox()
+        v=Gtk.VBox()
         w.add(v)
 
-        l=gtk.Label()
+        l=Gtk.Label()
         l.set_markup(_("<b>Screenshot generation</b>\n\nScreenshots will be captured approximately every 500ms.\n\nIf the movie was paused or playing, the capture will begin at the current position. Else, it will begin at the beginning of the movie.\nNote that the main interface will not be refreshed as long as this window is open."))
         l.set_line_wrap(True)
-        v.pack_start(l, expand=False)
+        v.pack_start(l, False, True, 0)
 
-        progressbar=gtk.ProgressBar()
+        progressbar=Gtk.ProgressBar()
         progressbar.event_source_generate=None
-        v.pack_start(progressbar, expand=False)
+        v.pack_start(progressbar, False, True, 0)
 
         progressbar._window=w
         progressbar.old_autosync=c.package.imagecache.autosync
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
 
-        b=gtk.Button(stock=gtk.STOCK_MEDIA_RECORD)
+        b=Gtk.Button(stock=Gtk.STOCK_MEDIA_RECORD)
         b.connect('clicked', do_generate, progressbar)
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
-        b=gtk.Button(stock=gtk.STOCK_CANCEL)
+        b=Gtk.Button(stock=Gtk.STOCK_CANCEL)
         b.connect('clicked', do_cancel, progressbar)
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
-        v.pack_start(hb, expand=False)
+        v.pack_start(hb, False, True, 0)
         w.show_all()
         w.set_modal(True)
 
@@ -4936,281 +4983,13 @@ class AdveneGUI(object):
             self.gui.stbv_combo.get_parent().show()
         return True
 
-    def on_shotdetect_activate(self, *p):
-        if not os.path.exists(config.data.path['shotdetect']):
-            dialog.message_dialog(_("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." ), icon=gtk.MESSAGE_ERROR)
-            return True
-        p=self.controller.player
-        movie=self.controller.get_default_media()
-        if not movie:
-            # No defined movie.
-            dialog.message_dialog(_("You first must load a movie into Advene" ), icon=gtk.MESSAGE_ERROR)
-            return True
-        if not os.path.exists(movie):
-            dialog.message_dialog(_("The movie %s does not seem to exist.") % movie, icon=gtk.MESSAGE_ERROR)
-            return True
-
-        def do_gui_operation(function, *args, **kw):
-            """Execute a method in the main loop.
-
-            Ensure that we execute all Gtk operations in the mainloop.
-            """
-            def idle_func():
-                gtk.gdk.threads_enter()
-                try:
-                    function(*args, **kw)
-                    return False
-                finally:
-                    gtk.gdk.threads_leave()
-            gobject.idle_add(idle_func)
-
-        def import_data(progressbar, filename):
-            """Import data from filename.
-
-            filename is either result.xml (shotdetect output) or a
-            .txt file (generated from the intermediary data in case of
-            cancellation).
-            """
-            if filename.endswith('result.xml'):
-                iname='shotdetect'
-            else:
-                iname=filename
-            try:
-                i=advene.util.importer.get_importer(iname, controller=self.controller)
-            except Exception:
-                dialog.message_dialog(_("Cannot import shotdetect output. Did you install the shotdetect software?"),
-                                        icon=gtk.MESSAGE_ERROR,
-                                      modal=False)
-                return True
-            def progress_callback(value=None, label=''):
-                progressbar.set_label_value(label or '', value)
-                while gtk.events_pending():
-                    gtk.main_iteration()
-                return True
-            i.package=self.controller.package
-            i.callback=progress_callback
-            i.process_file(filename)
-            if filename.endswith('.txt'):
-                # Intermediary import. Fix some details.
-                at=i.defaulttype
-                at.mimetype='application/x-advene-structured'
-                at.setMetaData(config.data.namespace, "representation", 'here/content/parsed/num')
-                at.title=_("Incomplete shots")
-            self.controller.package._modified = True
-            self.controller.notify('PackageLoad', package=self.controller.package)
-            msg=_("Detected %s shots") % i.statistics['annotation']
-            dialog.message_dialog(msg, modal=False)
-            self.log(msg)
-            return True
-
-        def do_cancel(b, pb, forced=False):
-            """Cancel action.
-
-            Close dialog and do various cleanups
-            """
-            s=getattr(pb, '_source', None)
-            if s:
-                gobject.source_remove(s)
-
-            # Terminate the process if necessary
-            shots=getattr(pb, '_shots', None)
-            if shots:
-                if config.data.os == 'win32':
-                    import ctypes
-                    ctypes.windll.kernel32.TerminateProcess(int(shots._handle), -1)
-                else:
-                    try:
-                        # Python 2.6 only
-                        shots.terminate()
-                    except AttributeError:
-                        try:
-                            os.kill(shots.pid, 9)
-                            os.waitpid(shots.pid, os.WNOHANG)
-                        except OSError, e:
-                            print "Cannot kill shotdetect", unicode(e)
-
-            # Cleanup temp. dir.
-            td=getattr(pb, '_tempdir', None)
-            if td and os.path.isdir(td):
-                # Remove temp dir.
-                shutil.rmtree(td, ignore_errors=True)
-
-            # Process intermediary data if present.
-            if forced and pb._datapoints:
-                # Shot detection was cancelled, but we got
-                # intermediary data points. Convert them anyway.
-                (fd, datafile)=tempfile.mkstemp('.txt', text=True)
-                pb._datapoints.insert(0, 0)
-                pb._datapoints.append(self.controller.cached_duration or (pb._datapoints[-1] + 5000))
-                for (i, t) in enumerate(zip( pb._datapoints[:-1], pb._datapoints[1:] )):
-                    os.write(fd, '%d %d num=%d\n' % (t[0], t[1], i + 1))
-                os.close(fd)
-                import_data( pb, datafile )
-                os.unlink(datafile)
-            pb._window.destroy()
-            return True
-
-        def on_shotdetect_end(progressbar):
-            # Detection is over. Import resulting file.
-
-            # First disconnect the automatic pulse (win32 only)
-            s=getattr(progressbar, '_source', None)
-            if s:
-                gobject.source_remove(s)
-                progressbar._source=None
-
-            filename=os.path.join( progressbar._tempdir, 'result.xml' )
-            if os.path.exists(filename):
-                # If the file does not exist, it should mean that
-                # the process was killed, so cancel was already
-                # invoked.
-                import_data(progressbar, filename)
-                progressbar._datapoints=[]
-                do_cancel(None, progressbar)
-            return False
-
-        def execute_shotdetect(pb):
-            """Execute shotdetect.
-
-            This method is meant to be run in its own thread.
-            """
-            def subprocess_setup():
-                # Python installs a SIGPIPE handler by default. This is usually not what
-                # non-Python subprocesses expect.
-                signal.signal(signal.SIGPIPE, signal.SIG_DFL)
-
-            shot_re=re.compile('Shot log\s+::\s+(.+)')
-            exp_re = re.compile('(\d*\.\d*)e\+(\d+)')
-
-            argv=[ config.data.path['shotdetect'],
-                   '-i', gobject.filename_from_utf8(movie.encode('utf8')),
-                   '-o', gobject.filename_from_utf8(pb._tempdir.encode('utf8')),
-                   '-s', str(pb._sensitivity.get_value_as_int()) ]
-
-            if config.data.os == 'win32':
-                kw = { 'creationflags': win32process.CREATE_NO_WINDOW }
-            else:
-                kw = { 'preexec_fn': subprocess_setup }
-            try:
-                pb._shots=subprocess.Popen( argv,
-                                            bufsize=0,
-                                            shell=False,
-                                            stdout=subprocess.PIPE,
-                                            stderr=subprocess.PIPE,
-                                            **kw )
-            except OSError, e:
-                do_cancel(None, pb)
-                dialog.message_dialog(_("Could not run shotdetect: %s") % unicode(e), modal=False)
-                return True
-
-            do_gui_operation(pb.set_label_value,
-                             _("Detecting shots from %s") % gobject.filename_display_name(movie),
-                             0.01)
-            while True:
-                l=pb._shots.stderr.readline()
-                if not l:
-                    break
-                ms=shot_re.findall(l)
-                if ms:
-                    ts=0
-                    try:
-                        ts=long(ms[0])
-                    except ValueError:
-                        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:
-                        prg=1.0 * ts / d
-                    else:
-                        prg=None
-                    do_gui_operation(pb.set_label_value,
-                                     _("Detected shot #%(num)d at %(pos)s ") % {
-                            'num': len(pb._datapoints),
-                            'pos': helper.format_time_reference(ts)
-                            },
-                                     prg)
-
-            # Detection is over. Import result
-            do_gui_operation(on_shotdetect_end, pb)
-            return False
-
-        def do_detect(b, pb):
-            b.set_sensitive(False)
-
-            pb._tempdir=unicode(tempfile.mkdtemp('', 'shotdetect'), sys.getfilesystemencoding())
-            #~ if config.data.os == 'win32' or self.controller.cached_duration <= 0:
-                #~ # Async. reading from a pipe is a mess on win32. A
-                #~ # proper fix should be found, but in the meantime,
-                #~ # give a feedback to the user.  Do it also when the
-                #~ # movie length is unknown, so that the user can know
-                #~ # there is activity even if no shot is detected.
-                #~ def progress():
-                    #~ pb.pulse()
-                    #~ return True
-                #~ pb._source=gobject.timeout_add(500, progress)
-
-            t=threading.Thread(target=execute_shotdetect, args= [ pb ])
-            t.start()
-            return True
-
-        w=gtk.Window()
-        w.set_title(_("Shot detection"))
-
-        v=gtk.VBox()
-        w.add(v)
-
-        l=gtk.Label()
-        l.set_markup(_("<b>Shot detection</b>\n\nAdvene will try to detect shots from the currently loaded movie. The threshold parameter is used to specify the sensitivity of the algorithm, and should typically be between 50 and 80. If too many shots are detected, try to augment its value."))
-        l.set_line_wrap(True)
-        v.pack_start(l, expand=False)
-
-        progressbar=gtk.ProgressBar()
-
-        def set_label_value(s, label='', value=None):
-            s.set_text(label)
-            if value is None:
-                progressbar.pulse()
-            else:
-                progressbar.set_fraction(value)
-            return False
-        progressbar.set_label_value=set_label_value.__get__(progressbar)
-
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Sensitivity")), expand=False)
-        progressbar._sensitivity=gtk.SpinButton(gtk.Adjustment(60, 5, 95, 1, 5))
-        hb.pack_start(progressbar._sensitivity)
-        v.pack_start(hb, expand=False)
-        v.pack_start(progressbar, expand=False)
-
-        progressbar._window=w
-        progressbar._datapoints=[]
-
-        hb=gtk.HBox()
-
-        b=gtk.Button(stock=gtk.STOCK_EXECUTE)
-        b.connect('clicked', do_detect, progressbar)
-        hb.pack_start(b, expand=False)
-
-        b=gtk.Button(stock=gtk.STOCK_CANCEL)
-        b.connect('clicked', do_cancel, progressbar, True)
-        hb.pack_start(b, expand=False)
-
-        v.pack_start(hb, expand=False)
-        w.show_all()
-        return True
-
 if __name__ == '__main__':
     v = AdveneGUI ()
     try:
         v.main (config.data.args)
     except Exception, e:
         e, v, tb = sys.exc_info()
-        print config.data.version_string
-        print "Got exception %s. Stopping services..." % str(e)
+        logger.error(config.data.version_string)
+        logger.error(u"Got exception %s. Stopping services..." % unicode(e))
         v.on_exit ()
-        print "*** Exception ***"
-        import code
-        code.traceback.print_exception (e, v, tb)
+        logger.error("*** Exception ***", exc_info=True)
diff --git a/lib/advene/gui/plugins/__init__.py b/lib/advene/gui/plugins/__init__.py
index 3142f9a..1a9dd9e 100644
--- a/lib/advene/gui/plugins/__init__.py
+++ b/lib/advene/gui/plugins/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/actions.py b/lib/advene/gui/plugins/actions.py
index 796ea54..6c174f4 100644
--- a/lib/advene/gui/plugins/actions.py
+++ b/lib/advene/gui/plugins/actions.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@ from advene.rules.elements import RegisteredAction
 import advene.model.tal.context
 import advene.util.helper as helper
 import textwrap
-import gtk
+from gi.repository import Gtk
 
 name="Default GUI actions"
 
@@ -114,7 +114,7 @@ def register(controller=None):
                     ('string:'+_('See the annotation'), _('See the annotation')),
                     ),
                         'url': (
-                    ('string:http://liris.cnrs.fr', _("The Advene website")),
+                    ('string:http://advene.org/', _("The Advene website")),
                     ('annotation/absolute_url', _("The annotation URL")),
                         ),
                         'duration': (
@@ -373,19 +373,19 @@ class DefaultGUIActions:
 
         def handle_response(button, widget, entry, dest):
             # Update the destination
-            dest.content.data = unicode(entry.get_text())
+            dest.content.data = entry.get_text().decode('utf-8')
             # FIXME: notify element modification
             self.gui.popupwidget.undisplay(widget)
             return True
 
-        v=gtk.VBox()
+        v=Gtk.VBox()
 
         w=self.gui.get_illustrated_text(message)
         v.add(w)
-        e=gtk.Entry()
+        e=Gtk.Entry()
         e.set_text(destination.content.data)
         v.add(e)
-        b=gtk.Button(stock=gtk.STOCK_OK)
+        b=Gtk.Button(stock=Gtk.STOCK_OK)
         b.connect('clicked', handle_response, v, e, destination)
         v.add(b)
 
@@ -424,17 +424,17 @@ class DefaultGUIActions:
         message=unicode(message).replace('\\n', '\n')
         message=textwrap.fill(message, config.data.preferences['gui']['popup-textwidth'])
 
-        url=self.parse_parameter(context, parameters, 'url', 'string:http://liris.cnrs.fr/advene/')
+        url=self.parse_parameter(context, parameters, 'url', 'string:http://advene.org/')
         duration=self.parse_parameter(context, parameters, 'duration', None)
         if duration == "" or duration == 0:
             duration = None
 
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        vbox.pack_start(self.gui.get_illustrated_text(description), expand=False)
+        vbox.pack_start(self.gui.get_illustrated_text(description), False, False, 0)
 
-        b=gtk.Button(message)
-        vbox.pack_start(b, expand=False)
+        b=Gtk.Button(message)
+        vbox.pack_start(b, False, True, 0)
 
         b.connect('clicked', handle_response, url, vbox)
 
@@ -464,13 +464,13 @@ class DefaultGUIActions:
         if duration == "" or duration == 0:
             duration = None
 
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        vbox.pack_start(self.gui.get_illustrated_text(description), expand=False)
+        vbox.pack_start(self.gui.get_illustrated_text(description), False, False, 0)
 
-        b=gtk.Button()
+        b=Gtk.Button()
         b.add(self.gui.get_illustrated_text(message, position))
-        vbox.pack_start(b, expand=False)
+        vbox.pack_start(b, False, True, 0)
 
         b.connect('clicked', handle_response, position, vbox)
 
@@ -485,7 +485,7 @@ class DefaultGUIActions:
                 self.gui.popupwidget.undisplay(widget)
                 return True
 
-            vbox=gtk.VBox()
+            vbox=Gtk.VBox()
 
             description=self.parse_parameter(context,
                                              parameters, 'description', _("Make a choice"))
@@ -503,7 +503,7 @@ class DefaultGUIActions:
 
                 position=self.parse_parameter(context, parameters, 'position%d' % i, 0)
 
-                b=gtk.Button()
+                b=Gtk.Button()
                 b.add(self.gui.get_illustrated_text(message, position))
                 b.connect('clicked', handle_response, position, vbox)
                 vbox.add(b)
@@ -560,13 +560,13 @@ class DefaultGUIActions:
         message=message.replace('\\n', '\n')
         message=textwrap.fill(message, config.data.preferences['gui']['popup-textwidth'])
 
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        vbox.pack_start(self.gui.get_illustrated_text(message), expand=False)
+        vbox.pack_start(self.gui.get_illustrated_text(message), False, False, 0)
 
         for r in relations:
             a=r.members[-1]
-            b=gtk.Button()
+            b=Gtk.Button()
             t=''
             if r.content.data:
                 t=' (%s)' % r.content.data
@@ -575,7 +575,7 @@ class DefaultGUIActions:
                 'relation_content': t,
                 'annotation_content': self.controller.get_title(a) }
             b.add(self.gui.get_illustrated_text(c, a.fragment.begin))
-            vbox.pack_start(b, expand=False)
+            vbox.pack_start(b, False, True, 0)
             b.connect('clicked', handle_response, a.fragment.begin, vbox)
 
         self.gui.popupwidget.display(widget=vbox, timeout=annotation.fragment.duration, title=_("Relation navigation"))
diff --git a/lib/advene/gui/plugins/contenthandlers.py b/lib/advene/gui/plugins/contenthandlers.py
index a6ce149..fc0d6f2 100644
--- a/lib/advene/gui/plugins/contenthandlers.py
+++ b/lib/advene/gui/plugins/contenthandlers.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -20,14 +20,15 @@
 from gettext import gettext as _
 
 import os
-import gtk
+from gi.repository import Gdk
+from gi.repository import Gtk
 import xml.parsers.expat
 import StringIO
 
 import advene.core.config as config
 import advene.util.helper as helper
 from advene.gui.edit.elements import ContentHandler, TextContentHandler
-from advene.gui.edit.shapewidget import ShapeDrawer, Rectangle, ShapeEditor
+from advene.gui.edit.shapewidget import ShapeDrawer, ShapeEditor
 from advene.gui.util import image_from_position, dialog, decode_drop_parameters, get_pixmap_toolbutton
 
 from advene.gui.edit.rules import EditRuleSet, EditQuery
@@ -78,7 +79,7 @@ class ZoneContentHandler (ContentHandler):
             return True
 
         shape=self.shape
-        shape.name=unicode(self.nameentry.get_text())
+        shape.name=self.nameentry.get_text().decode('utf-8')
         text="""shape=rect\nname=%s\nx=%02f\ny=%02f\nwidth=%02f\nheight=%02f""" % (
             shape.name,
             shape.x * 100.0 / self.view.canvaswidth,
@@ -91,7 +92,7 @@ class ZoneContentHandler (ContentHandler):
 
     def get_view (self, compact=False):
         """Generate a view widget for editing zone attributes."""
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
         if self.parent is not None and hasattr(self.parent, 'fragment'):
             # We are editing the content of an annotation. Use its snapshot as background.
@@ -118,14 +119,14 @@ class ZoneContentHandler (ContentHandler):
                     self.shape.name = self.element.data
 
         # Name edition
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Label")), expand=False)
-        self.nameentry=gtk.Entry()
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Label")), False, False, 0)
+        self.nameentry=Gtk.Entry()
         if self.shape is not None:
             self.nameentry.set_text(self.shape.name)
-        hb.pack_start(self.nameentry)
+        hb.pack_start(self.nameentry, True, True, 0)
 
-        vbox.pack_start(hb, expand=False)
+        vbox.pack_start(hb, False, True, 0)
 
         vbox.add(self.view.widget)
 
@@ -170,7 +171,7 @@ class SVGContentHandler (ContentHandler):
                 root=None
                 dialog.message_dialog(
                     _("Error while parsing SVG content:\n\n%s") % unicode(e),
-                    icon=gtk.MESSAGE_ERROR)
+                    icon=Gtk.MessageType.ERROR)
             if root is not None:
                 self.view.drawer.clear_objects()
                 path=''
@@ -211,9 +212,9 @@ class SVGContentHandler (ContentHandler):
         url=None
         title=''
         if targetType == config.data.target_type['annotation']:
-            here=self.controller.package.annotations.get(unicode(selection.data, 'utf8').split('\n')[0])
+            here=self.controller.package.annotations.get(unicode(selection.get_data(), 'utf8').split('\n')[0])
         elif targetType == config.data.target_type['view']:
-            data=decode_drop_parameters(selection.data)
+            data=decode_drop_parameters(selection.get_data())
             v=self.controller.package.get_element_by_id(data['id'])
             if v is None:
                 print "Cannot find view", data['id']
@@ -225,7 +226,7 @@ class SVGContentHandler (ContentHandler):
             url='%s/action/OpenView?id=%s' % (root, v.id)
         elif targetType == config.data.target_type['uri-list']:
             here=None
-            url=unicode(selection.data.splitlines()[0], 'utf8')
+            url=unicode(selection.get_data().splitlines()[0], 'utf8')
             title=url
         else:
             # Invalid drop target
@@ -260,12 +261,12 @@ class SVGContentHandler (ContentHandler):
 
     def get_view (self, compact=False):
         """Generate a view widget for editing SVG."""
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
         if self.parent is not None and hasattr(self.parent, 'fragment'):
             i = image_from_position(self.controller, self.parent.fragment.begin,
                                     epsilon=1000/config.data.preferences['default-fps'])
-            self.view = ShapeEditor(background=i, pixmap_dir=config.data.advenefile('pixmaps'))
+            self.view = ShapeEditor(background=i, icon_dir=config.data.advenefile('pixmaps'))
 
             def snapshot_update_cb(context, target):
                 frag = self.parent.fragment
@@ -285,18 +286,16 @@ class SVGContentHandler (ContentHandler):
                                                                            method=annotation_update_cb))
 
         else:
-            self.view = ShapeEditor(pixmap_dir=config.data.advenefile('pixmaps'))
+            self.view = ShapeEditor(icon_dir=config.data.advenefile('pixmaps'))
 
         self.parse_svg()
 
         self.view.drawer.widget.connect('drag-data-received', self.drawer_drag_received)
-        self.view.drawer.widget.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                              gtk.DEST_DEFAULT_HIGHLIGHT |
-                                              gtk.DEST_DEFAULT_ALL,
-                                              config.data.drag_type['view']
-                                              + config.data.drag_type['annotation']
-                                              + config.data.drag_type['uri-list'],
-                                              gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK)
+        self.view.drawer.widget.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                              Gtk.DestDefaults.HIGHLIGHT |
+                                              Gtk.DestDefaults.ALL,
+                                              config.data.get_target_types('view', 'annotation', 'uri-list'),
+                                              Gdk.DragAction.COPY | Gdk.DragAction.LINK)
 
         def edit_svg(b=None):
             vbox.foreach(vbox.remove)
@@ -336,10 +335,10 @@ class SVGContentHandler (ContentHandler):
             self.view.set_background(i)
             return True
 
-        self.view.background_adj = gtk.Adjustment(value=0, lower=0, upper=1.0, step_incr=0.1, page_incr=0.2)
-        slider = gtk.HScale(self.view.background_adj)
+        self.view.background_adj = Gtk.Adjustment.new(value=0, lower=0, upper=1.0, step_increment=0.1, page_increment=0.2, page_size=0.2)
+        slider = Gtk.HScale.new(self.view.background_adj)
         slider.connect("format-value", lambda s, v: helper.format_time(self.parent.fragment.begin + long(v * self.parent.fragment.duration)))
-        ti = gtk.ToolItem()
+        ti = Gtk.ToolItem()
         ti.add(slider)
         ti.set_expand(True)
         self.view.toolbar.insert(ti, -1)
@@ -377,7 +376,7 @@ class RuleSetContentHandler (ContentHandler):
             dialog.message_dialog(
                 _("The following items seem to be\ninvalid TALES expressions:\n\n%s") %
                 "\n".join(iv),
-                icon=gtk.MESSAGE_ERROR)
+                icon=Gtk.MessageType.ERROR)
             return False
         else:
             return True
@@ -404,8 +403,8 @@ class RuleSetContentHandler (ContentHandler):
                               controller=self.controller)
         self.view = self.edit.get_packed_widget()
 
-        scroll_win = gtk.ScrolledWindow ()
-        scroll_win.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        scroll_win = Gtk.ScrolledWindow ()
+        scroll_win.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         scroll_win.add_with_viewport(self.view)
 
         return scroll_win
@@ -433,7 +432,7 @@ class SimpleQueryContentHandler (ContentHandler):
             dialog.message_dialog(
                 _("The following items seem to be\ninvalid TALES expressions:\n\n%s") %
                 "\n".join(iv),
-                icon=gtk.MESSAGE_ERROR)
+                icon=Gtk.MessageType.ERROR)
             return False
         else:
             return True
@@ -462,8 +461,8 @@ class SimpleQueryContentHandler (ContentHandler):
                             editable=self.editable)
         self.view = self.edit.get_widget()
 
-        scroll_win = gtk.ScrolledWindow ()
-        scroll_win.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        scroll_win = Gtk.ScrolledWindow ()
+        scroll_win.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         scroll_win.add_with_viewport(self.view)
 
         return scroll_win
diff --git a/lib/advene/gui/plugins/eventaccumulator.py b/lib/advene/gui/plugins/eventaccumulator.py
index 2b082ab..24845d9 100644
--- a/lib/advene/gui/plugins/eventaccumulator.py
+++ b/lib/advene/gui/plugins/eventaccumulator.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -22,7 +22,8 @@
 This widget allows to stack compact event history.
 """
 
-import gtk
+from gi.repository import Gdk
+from gi.repository import Gtk
 import time
 
 from gettext import gettext as _
@@ -108,8 +109,8 @@ class EventAccumulator(AdhocView):
         self.receive(self.tracer.trace)
 
     def build_widget(self):
-        mainbox = gtk.VBox()
-        btnbar=gtk.HBox()
+        mainbox = Gtk.VBox()
+        btnbar=Gtk.HBox()
 
         # choix details
         if len(self.tracer.trace.levels.keys())<=0:
@@ -128,23 +129,23 @@ class EventAccumulator(AdhocView):
                 self.receive(self.tracer.trace)
                 return
             bdetLabel = self.options['detail']
-            bdet = gtk.Button(bdetLabel)
+            bdet = Gtk.Button(bdetLabel)
             self.DetB = bdet
             bdet.set_size_request(60, 20)
-            btnbar.pack_start(gtk.Label(_(' Trace : ')), expand=False)
-            btnbar.pack_start(bdet, expand=False)
+            btnbar.pack_start(Gtk.Label(_(' Trace : ')), False, False, 0)
+            btnbar.pack_start(bdet, False, True, 0)
             bdet.connect('clicked', details_changed)
 
-        self.btn_filter = gtk.Button(_(' Filters'))
+        self.btn_filter = Gtk.Button(_(' Filters'))
         self.btn_filter.connect('clicked', self.modify_filters)
-        btnbar.pack_start(self.btn_filter, expand=False)
+        btnbar.pack_start(self.btn_filter, False, True, 0)
 
-        self.init_btn_filter = gtk.Button(_('Reset'))
+        self.init_btn_filter = Gtk.Button(_('Reset'))
         self.init_btn_filter.connect('clicked', self.init_obj_filter)
         self.init_btn_filter.set_sensitive(False)
-        btnbar.pack_start(self.init_btn_filter, expand=False)
+        btnbar.pack_start(self.init_btn_filter, False, True, 0)
         self.filter_active(False)
-        btnbar.pack_start(gtk.VSeparator())
+        btnbar.pack_start(Gtk.VSeparator(), True, True, 0)
 
         # choix temps
         if not self.times:
@@ -162,61 +163,61 @@ class EventAccumulator(AdhocView):
                 return
 
             btimeLabel = self.options['time']
-            btime = gtk.Button(btimeLabel)
+            btime = Gtk.Button(btimeLabel)
             btime.set_size_request(60, 20)
-            btnbar.pack_start(gtk.Label(_(' Time : ')), expand=False)
-            btnbar.pack_start(btime, expand=False)
+            btnbar.pack_start(Gtk.Label(_(' Time : ')), False, False, 0)
+            btnbar.pack_start(btime, False, True, 0)
             btime.connect('clicked', time_changed)
-            btnbar.pack_start(gtk.VSeparator())
+            btnbar.pack_start(Gtk.VSeparator(), True, True, 0)
 
         # choix max
         def max_changed(w):
             self.options['max_size']=int(w.get_value())
             self.receive(self.tracer.trace)
             return
-        btnbar.pack_start(gtk.Label(_(' Max. : ')), expand=False)
-        self.sc = gtk.HScale(gtk.Adjustment ( value=20, lower=5, upper=5000, step_incr=1, page_incr=5, page_size=5))
+        btnbar.pack_start(Gtk.Label(_(' Max. : ')), False, False, 0)
+        self.sc = Gtk.HScale.new(Gtk.Adjustment.new(value=20, lower=5, upper=5000, step_incr=1, page_incr=5, page_size=5))
         self.sc.set_size_request(100, 10)
         self.sc.set_digits(0)
-        self.sc.set_value_pos(gtk.POS_LEFT)
+        self.sc.set_value_pos(Gtk.PositionType.LEFT)
         self.sc.connect('value_changed', max_changed)
-        btnbar.pack_start(self.sc, expand=False)
-        btnbar.pack_start(gtk.VSeparator())
+        btnbar.pack_start(self.sc, False, True, 0)
+        btnbar.pack_start(Gtk.VSeparator(), True, True, 0)
 
-        exp_b = gtk.Button(_('Export'))
+        exp_b = Gtk.Button(_('Export'))
         exp_b.connect('clicked', self.export)
-        btnbar.pack_start(exp_b, expand=False)
+        btnbar.pack_start(exp_b, False, True, 0)
 
-        mainbox.pack_start(btnbar, expand=False)
-        mainbox.pack_start(gtk.HSeparator(), expand=False)
-        self.accuBox=gtk.VBox()
-        self.sw = gtk.ScrolledWindow()
-        self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        mainbox.pack_start(btnbar, False, True, 0)
+        mainbox.pack_start(Gtk.HSeparator(), False, False, 0)
+        self.accuBox=Gtk.VBox()
+        self.sw = Gtk.ScrolledWindow()
+        self.sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         self.sw.add_with_viewport(self.accuBox)
-        self.sw.set_vadjustment(gtk.Adjustment(value = 208, lower = 0, upper=208, step_incr=52, page_incr=208, page_size=208))
-        mainbox.pack_start(self.sw)
+        self.sw.set_vadjustment(Gtk.Adjustment.new(value = 208, lower = 0, upper=208, step_incr=52, page_incr=208, page_size=208))
+        mainbox.pack_start(self.sw, True, True, 0)
         return mainbox
 
     def export(self, w):
         fname = self.tracer.export()
-        d = gtk.Dialog(title=_("Exporting traces"),
-                       parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_OK, gtk.RESPONSE_OK
+        d = Gtk.Dialog(title=_("Exporting traces"),
+                       parent=self.controller.gui.gui.win,
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_OK, Gtk.ResponseType.OK
                                  ))
-        l=gtk.Label(_("Export done to\n%s") % fname)
+        l=Gtk.Label(label=_("Export done to\n%s") % fname)
         l.set_selectable(True)
         l.set_line_wrap(True)
         l.show()
-        d.vbox.pack_start(l, expand=False)
+        d.vbox.pack_start(l, False, True, 0)
         d.vbox.show_all()
         d.show()
-        res=d.run()
+        d.run()
         d.destroy()
         return
 
     def modify_filters(self, w):
-        w=gtk.Window(gtk.WINDOW_TOPLEVEL)
+        w=Gtk.Window(Gtk.WindowType.TOPLEVEL)
         def level_changed(w, options):
             v=w.get_label()
             i=self.tracer.trace.levels.keys().index(v)+1
@@ -227,28 +228,28 @@ class EventAccumulator(AdhocView):
             self.show_options(options, v)
             options.show_all()
             return
-        vb = gtk.VBox()
+        vb = Gtk.VBox()
         levelslab = self.options['detail']
-        levels = gtk.Button(levelslab)
-        vb.pack_start(levels, expand=False)
+        levels = Gtk.Button(levelslab)
+        vb.pack_start(levels, False, True, 0)
         #levels.set_size_request(60, 20)
-        vb.pack_start(gtk.HSeparator(), expand=False)
-        options = gtk.VBox()
+        vb.pack_start(Gtk.HSeparator(), False, False, 0)
+        options = Gtk.VBox()
         self.show_options(options, levelslab)
-        sw = gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        sw = Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         sw.set_size_request(600, 480)
         sw.add_with_viewport(options)
-        vb.pack_start(sw, expand=False)
-        vb.pack_start(gtk.HSeparator(), expand=False)
+        vb.pack_start(sw, False, True, 0)
+        vb.pack_start(Gtk.HSeparator(), False, False, 0)
         def options_quit(w, window):
             window.destroy()
             return
-        hbb = gtk.HBox()
-        btn_q = gtk.Button(stock=gtk.STOCK_CLOSE)
-        hbb.pack_end(btn_q, expand=False)
+        hbb = Gtk.HBox()
+        btn_q = Gtk.Button(stock=Gtk.STOCK_CLOSE)
+        hbb.pack_end(btn_q, False, True, 0)
         btn_q.connect('clicked', options_quit, w)
-        vb.pack_end(hbb, expand=False)
+        vb.pack_end(hbb, False, True, 0)
         levels.connect('clicked', level_changed, options)
         w.set_name(_('Defining Filters'))
         w.add(vb)
@@ -268,8 +269,8 @@ class EventAccumulator(AdhocView):
             return
         if levelslab == 'events':
             for i in self.events_names:
-                option = gtk.CheckButton( ECACatalog.event_names[i])
-                options.pack_start(option, expand=False)
+                option = Gtk.CheckButton( ECACatalog.event_names[i])
+                options.pack_start(option, False, True, 0)
                 if i in self.filters[levelslab]:
                     option.set_active(False)
                 else:
@@ -277,16 +278,16 @@ class EventAccumulator(AdhocView):
                 option.connect('toggled', option_clicked, i, levelslab)
         if levelslab == 'events' or levelslab == 'operations':
             for i in self.operations_names:
-                option = gtk.CheckButton( ECACatalog.event_names[i])
-                options.pack_start(option, expand=False)
+                option = Gtk.CheckButton( ECACatalog.event_names[i])
+                options.pack_start(option, False, True, 0)
                 if i in self.filters[levelslab]:
                     option.set_active(False)
                 else:
                     option.set_active(True)
                 option.connect('toggled', option_clicked, i, levelslab)
             for i in self.incomplete_operations_names.keys():
-                option = gtk.CheckButton(self.incomplete_operations_names[i])
-                options.pack_start(option, expand=False)
+                option = Gtk.CheckButton(self.incomplete_operations_names[i])
+                options.pack_start(option, False, True, 0)
                 if i in self.filters[levelslab]:
                     option.set_active(False)
                 else:
@@ -294,8 +295,8 @@ class EventAccumulator(AdhocView):
                 option.connect('toggled', option_clicked, i, levelslab)
         if levelslab == 'actions':
             for i in self.tracer.action_types:
-                option = gtk.CheckButton(i)
-                options.pack_start(option, expand=False)
+                option = Gtk.CheckButton(i)
+                options.pack_start(option, False, True, 0)
                 if i in self.filters[levelslab]:
                     option.set_active(False)
                 else:
@@ -321,7 +322,7 @@ class EventAccumulator(AdhocView):
         return
 
     def filter_active(self, activate):
-        #i=gtk.Image()
+        #i=Gtk.Image()
         #if activate:
             #i.set_from_file(config.data.advenefile( ( 'pixmaps', 'filters_off.png') ))
         #else:
@@ -333,7 +334,7 @@ class EventAccumulator(AdhocView):
 
     def scroll_win(self):
         a = self.sw.get_vadjustment()
-        a.value=a.upper
+        a.set_value(a.get_upper())
         return
 
     def receive(self, trace, event=None, operation=None, action=None):
@@ -469,37 +470,37 @@ class EventAccumulator(AdhocView):
         return
 
     def packAction(self, obj_evt):
-        vb=gtk.VBox()
+        vb=Gtk.VBox()
         if obj_evt.name == 'Navigation':
             self.latest['nav_action'] = obj_evt
             self.latest['nav_actionBox'] = self.build_action_box(obj_evt)
         self.latest['actions'] = obj_evt
         self.latest['actionsBox'] = self.build_action_box(obj_evt)
         vb.add(self.latest['actionsBox'])
-        vb.add(gtk.HSeparator())
-        self.accuBox.pack_start(vb, expand=False)
+        vb.add(Gtk.HSeparator())
+        self.accuBox.pack_start(vb, False, True, 0)
         self.accuBox.show_all()
         self.size = self.size + 1
 
     def packOperation(self, obj_evt):
         if obj_evt is not None:
             self.latest['operations']=obj_evt
-            vb=gtk.VBox()
+            vb=Gtk.VBox()
             self.latest['operationsBox'] = self.build_operation_box(obj_evt)
             vb.add(self.latest['operationsBox'])
-            vb.add(gtk.HSeparator())
-            self.accuBox.pack_start(vb, expand=False)
+            vb.add(Gtk.HSeparator())
+            self.accuBox.pack_start(vb, False, True, 0)
             self.accuBox.show_all()
             self.size = self.size + 1
 
     def packEvent(self, obj_evt):
         if obj_evt is not None:
             self.latest['events']=obj_evt
-            vb=gtk.VBox()
+            vb=Gtk.VBox()
             self.latest['eventsBox'] = self.build_event_box(obj_evt)
             vb.add(self.latest['eventsBox'])
-            vb.add(gtk.HSeparator())
-            self.accuBox.pack_start(vb, expand=False)
+            vb.add(Gtk.HSeparator())
+            self.accuBox.pack_start(vb, False, True, 0)
             self.accuBox.show_all()
             self.size = self.size + 1
 
@@ -514,9 +515,9 @@ class EventAccumulator(AdhocView):
 
     def update_last_action_box(self, obj_evt, nav=False):
         if nav:
-            tup = gtk.tooltips_data_get(self.latest['nav_actionBox'])
+            tup = Gtk.tooltips_data_get(self.latest['nav_actionBox'])
         else:
-            tup = gtk.tooltips_data_get(self.latest['actionsBox'])
+            tup = Gtk.tooltips_data_get(self.latest['actionsBox'])
         if tup is None:
             return
         corpsstr = ""
@@ -576,13 +577,13 @@ class EventAccumulator(AdhocView):
         else:
             print "unlabelled event : %s" % obj_evt.name
             entetestr = "%s : %s" % (ev_time, obj_evt.name)
-        entete = gtk.Label(entetestr.encode("UTF-8"))
-        hb = gtk.HBox()
+        entete = Gtk.Label(label=entetestr.encode("UTF-8"))
+        hb = Gtk.HBox()
         tr = TimestampRepresentation(obj_evt.movietime, self.controller, 50, 0, None , False)
         if tr is not None:
-            hb.pack_start(tr, expand=False)
-            hb.pack_start(gtk.VSeparator(), expand=False)
-        hb.pack_start(entete, expand=False)
+            hb.pack_start(tr, False, True, 0)
+            hb.pack_start(Gtk.VSeparator(), False, False, 0)
+        hb.pack_start(entete, False, True, 0)
         if corpsstr != "":
             hb.set_tooltip_text(corpsstr)
         return hb
@@ -630,18 +631,18 @@ class EventAccumulator(AdhocView):
         else:
             print "unlabelled event : %s" % obj_evt.name
             entetestr = "%s : %s" % (ev_time, obj_evt.name)
-        entete = gtk.Label(entetestr.encode("UTF-8"))
-        hb = gtk.HBox()
-        box = gtk.EventBox()
+        entete = Gtk.Label(label=entetestr.encode("UTF-8"))
+        hb = Gtk.HBox()
+        box = Gtk.EventBox()
         tr = TimestampRepresentation(obj_evt.movietime, self.controller, 50, 0, None , False)
         if tr is not None:
-            hb.pack_start(tr, expand=False)
-            hb.pack_start(gtk.VSeparator(), expand=False)
+            hb.pack_start(tr, False, True, 0)
+            hb.pack_start(Gtk.VSeparator(), False, False, 0)
         if corpsstr != "":
             box.set_tooltip_text(corpsstr)
         def box_pressed(w, event, id):
             #print "%s %s" % (id, mtime)
-            if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+            if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
                 if id is not None:
                     obj = self.controller.package.get_element_by_id(id)
                     if obj is not None:
@@ -653,7 +654,7 @@ class EventAccumulator(AdhocView):
             return
         box.add(entete)
         box.connect('button-press-event', box_pressed, obj_evt.concerned_object['id'])
-        hb.pack_start(box, expand=False)
+        hb.pack_start(box, False, True, 0)
         return hb
 
     def build_action_box(self, obj_evt):
@@ -675,17 +676,17 @@ class EventAccumulator(AdhocView):
                 corpsstr += urllib.unquote( op_time + " : " + op.name + "\n")
             else:
                 corpsstr += urllib.unquote( op_time + " : " + op.name + " ( " + op.concerned_object['name'] + " : " + op.concerned_object['id'] + " )\n")
-        entete = gtk.Label(entetestr.encode("UTF-8"))
-        hb = gtk.HBox()
-        box = gtk.EventBox()
+        entete = Gtk.Label(label=entetestr.encode("UTF-8"))
+        hb = Gtk.HBox()
+        box = Gtk.EventBox()
         tr = TimestampRepresentation(obj_evt.movietime, self.controller, 50, 0, None , False)
         if tr is not None:
-            hb.pack_start(tr, expand=False)
-            hb.pack_start(gtk.VSeparator(), expand=False)
+            hb.pack_start(tr, False, True, 0)
+            hb.pack_start(Gtk.VSeparator(), False, False, 0)
         if corpsstr != "":
             hb.set_tooltip_text(corpsstr)
         def box_pressed(w, event, ops):
-            if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+            if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
                 #FIXME : need to change details in another way
                 self.filters['objects']=[]
                 self.filters['objects'].extend(ops)
@@ -697,7 +698,7 @@ class EventAccumulator(AdhocView):
             return
         box.add(entete)
         box.connect('button-press-event', box_pressed, obj_evt.operations)
-        hb.pack_start(box, expand=False)
+        hb.pack_start(box, False, True, 0)
         return hb
 
     def destroy(self, source=None, event=None):
diff --git a/lib/advene/gui/plugins/htmlcontenhandler.py b/lib/advene/gui/plugins/htmlcontenhandler.py
index 4df4db4..66b11f5 100644
--- a/lib/advene/gui/plugins/htmlcontenhandler.py
+++ b/lib/advene/gui/plugins/htmlcontenhandler.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,16 +16,20 @@
 # along with Advene; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
+import logging
+logger = logging.getLogger(__name__)
 
 from gettext import gettext as _
 
-import gtk
+from gi.repository import Gdk
+from gi.repository import GdkPixbuf
+from gi.repository import Gtk
 import re
 import cairo
 
 import advene.core.config as config
 from advene.gui.edit.elements import ContentHandler, TextContentHandler
-from advene.gui.util import png_to_pixbuf, decode_drop_parameters, get_pixmap_toolbutton, overlay_svg_as_pixbuf
+from advene.gui.util import png_to_pixbuf, decode_drop_parameters, get_pixmap_toolbutton, overlay_svg_as_pixbuf, get_clipboard
 
 from advene.gui.edit.htmleditor import HTMLEditor, ContextDisplay
 import advene.util.helper as helper
@@ -145,7 +149,7 @@ class AnnotationPlaceholder:
         new=self.build_pixbuf()
         if not self.update_pixbuf:
             new.composite(old, 0, 0, old.get_width(), old.get_height(),
-                          0, 0, 1.0, 1.0, gtk.gdk.INTERP_BILINEAR, 255)
+                          0, 0, 1.0, 1.0, GdkPixbuf.InterpType.BILINEAR, 255)
         else:
             self.update_pixbuf(old, new)
         self.pixbuf=new
@@ -174,9 +178,9 @@ class AnnotationPlaceholder:
         context.stroke_preserve()
         context.fill()
 
-        pixbuf = gtk.gdk.pixbuf_new_from_data(
+        pixbuf = GdkPixbuf.Pixbuf.new_from_data(
             surface.get_data(),
-            gtk.gdk.COLORSPACE_RGB, True, 8,
+            GdkPixbuf.Colorspace.RGB, True, 8,
             surface.get_width(), surface.get_height(),
             surface.get_stride())
         return pixbuf
@@ -336,7 +340,7 @@ class AnnotationTypePlaceholder:
         new=self.build_pixbuf()
         if not self.update_pixbuf:
             new.composite(old, 0, 0, old.get_width(), old.get_height(),
-                          0, 0, 1.0, 1.0, gtk.gdk.INTERP_BILINEAR, 255)
+                          0, 0, 1.0, 1.0, GdkPixbuf.InterpType.BILINEAR, 255)
         else:
             self.update_pixbuf(old, new)
         self.pixbuf=new
@@ -365,9 +369,9 @@ class AnnotationTypePlaceholder:
         context.stroke_preserve()
         context.fill()
 
-        pixbuf = gtk.gdk.pixbuf_new_from_data(
+        pixbuf = GdkPixbuf.Pixbuf.new_from_data(
             surface.get_data(),
-            gtk.gdk.COLORSPACE_RGB, True, 8,
+            GdkPixbuf.Colorspace.RGB, True, 8,
             surface.get_width(), surface.get_height(),
             surface.get_stride())
         return pixbuf
@@ -401,7 +405,7 @@ class HTMLContentHandler (ContentHandler):
         self.last_dndtime=None
         self.last_x = None
         self.last_y = None
-        # HTMLEditor component (gtk.Textview subclass)
+        # HTMLEditor component (Gtk.Textview subclass)
         self.editor = None
 
         # Widgets holding editors (basic and html)
@@ -506,17 +510,17 @@ class HTMLContentHandler (ContentHandler):
         self.last_x=x
         self.last_y=y
 
-        x, y = self.editor.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT,
+        x, y = self.editor.window_to_buffer_coords(Gtk.TextWindowType.TEXT,
                                                    *widget.get_pointer())
         it = self.editor.get_iter_at_location(x, y)
-        self.editor.get_buffer().place_cursor(it)
+        self.editor.get_buffer().place_cursor(it.iter)
 
         if targetType == config.data.target_type['annotation']:
-            for uri in unicode(selection.data, 'utf8').split('\n'):
+            for uri in unicode(selection.get_data(), 'utf8').split('\n'):
                 source=self.controller.package.annotations.get(uri)
                 if source is None:
                     return True
-                m=gtk.Menu()
+                m=Gtk.Menu()
                 for (title, choice) in (
                     (_("Snapshot only"), ['link', 'snapshot', ]),
                     (_("Overlayed snapshot only"), ['link', 'overlay', ]),
@@ -524,38 +528,38 @@ class HTMLContentHandler (ContentHandler):
                     (_("Snapshot+timestamp"), ['link', 'snapshot', 'timestamp']),
                     (_("Annotation content"), ['link', 'content']),
                     ):
-                    i=gtk.MenuItem(title)
+                    i=Gtk.MenuItem(title)
                     i.connect('activate', (lambda it, ann, data: self.insert_annotation_content(data, ann, focus=True)), source, choice)
                     m.append(i)
                 m.show_all()
-                m.popup(None, None, None, 0, gtk.get_current_event_time())
+                m.popup(None, None, None, 0, Gtk.get_current_event_time())
             return True
         elif targetType == config.data.target_type['annotation-type']:
-            for uri in unicode(selection.data, 'utf8').split('\n'):
+            for uri in unicode(selection.get_data(), 'utf8').split('\n'):
                 source = self.controller.package.annotationTypes.get(uri)
                 if source is None:
                     return True
-                m=gtk.Menu()
+                m=Gtk.Menu()
                 for (title, choice) in (
                     (_("as a list"), [ 'list' ]),
                     (_("as a grid"), [ 'grid' ]),
                     (_("as a table"), [ 'table' ]),
                     (_("as a transcription"), ['transcription' ]),
                     ):
-                    i=gtk.MenuItem(title)
+                    i=Gtk.MenuItem(title)
                     i.connect('activate', (lambda it, at, data: self.insert_annotationtype_content(data, at, focus=True)), source, choice)
                     m.append(i)
                 m.show_all()
-                m.popup(None, None, None, 0, gtk.get_current_event_time())
+                m.popup(None, None, None, 0, Gtk.get_current_event_time())
             return True
         elif targetType == config.data.target_type['timestamp']:
-            data=decode_drop_parameters(selection.data)
+            data=decode_drop_parameters(selection.get_data())
             t=long(data['timestamp'])
             # FIXME: propose various choices (insert timestamp, insert snapshot, etc)
             self.editor.get_buffer().insert_at_cursor(helper.format_time(t))
             return True
         else:
-            print "Unknown target type for drop: %d" % targetType
+            logger.warn("Unknown target type for drop: %d" % targetType)
         return False
 
     def class_parser(self, tag, attr):
@@ -627,7 +631,7 @@ class HTMLContentHandler (ContentHandler):
         """Popup a contextual menu for the given context.
         """
         if menu is None:
-            menu=gtk.Menu()
+            menu=Gtk.Menu()
 
         def open_link(i, l):
             self.open_link(l)
@@ -643,7 +647,7 @@ class HTMLContentHandler (ContentHandler):
             return True
 
         def new_menuitem(label, action, *params):
-            item=gtk.MenuItem(label)
+            item=Gtk.MenuItem(label)
             if action is not None:
                 item.connect('activate', action, *params)
             item.show()
@@ -684,20 +688,20 @@ class HTMLContentHandler (ContentHandler):
         return menu
 
     def button_press_cb(self, textview, event):
-        if not (event.button == 3 or (event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS)):
+        if not (event.button == 3 or (event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS)):
             return False
 
-        textwin=textview.get_window(gtk.TEXT_WINDOW_TEXT)
-        if event.window != textwin:
+        textwin=textview.get_window(Gtk.TextWindowType.TEXT)
+        if event.get_window() != textwin:
             return False
-        (x, y) = textview.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT,
+        (x, y) = textview.window_to_buffer_coords(Gtk.TextWindowType.TEXT,
                                                   int(event.x),
                                                   int(event.y))
         it=textview.get_iter_at_location(x, y)
         if it is None:
             print "Error in get_iter_at_location"
             return False
-        ctx=self.editor.get_current_context(it)
+        ctx=self.editor.get_current_context(it.iter)
         if not ctx:
             return False
 
@@ -706,7 +710,7 @@ class HTMLContentHandler (ContentHandler):
             if hasattr(ctx[-1], '_placeholder'):
                 # An annotation placeholder is here. Display popup menu.
                 menu=self.contextual_popup(ctx)
-                menu.popup(None, None, None, 0, event.time)
+                menu.popup_at_pointer(None)
             return True
         else:
             # Double click with left button
@@ -728,7 +732,7 @@ class HTMLContentHandler (ContentHandler):
 
     def get_view (self, compact=False):
         """Generate a view widget for editing HTML."""
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
         self.editor=HTMLEditor()
         self.editor.custom_url_loader=self.custom_url_loader
@@ -739,27 +743,25 @@ class HTMLContentHandler (ContentHandler):
             self.controller.log(_("HTML editor: cannot parse content (%s)") % unicode(e))
 
         self.editor.connect('drag-data-received', self.editor_drag_received)
-        self.editor.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_ASK )
+        self.editor.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                  Gtk.DestDefaults.HIGHLIGHT |
+                                  Gtk.DestDefaults.ALL,
+                                  config.data.get_target_types('annotation', 'annotation-type', 'timestamp'),
+                                  Gdk.DragAction.COPY | Gdk.DragAction.LINK | Gdk.DragAction.ASK )
         self.editor.connect('button-press-event', self.button_press_cb)
 
-        self.view = gtk.VBox()
+        self.view = Gtk.VBox()
 
         def sel_copy(i):
-            self.editor.get_buffer().copy_clipboard(gtk.clipboard_get())
+            self.editor.get_buffer().copy_clipboard(get_clipboard())
             return True
 
         def sel_cut(i):
-            self.editor.get_buffer().cut_clipboard(gtk.clipboard_get())
+            self.editor.get_buffer().cut_clipboard(get_clipboard())
             return True
 
         def sel_paste(i):
-            self.editor.get_buffer().paste_clipboard(gtk.clipboard_get())
+            self.editor.get_buffer().paste_clipboard(get_clipboard())
             return True
 
         def refresh(i):
@@ -767,33 +769,33 @@ class HTMLContentHandler (ContentHandler):
             return True
 
         def display_header_menu(i):
-            m=gtk.Menu()
+            m=Gtk.Menu()
             for h in (1, 2, 3):
-                i=gtk.MenuItem(_("Heading %d") % h)
+                i=Gtk.MenuItem(_("Heading %d") % h)
                 i.connect('activate', lambda w, level: self.editor.apply_html_tag('h%d' % level), h)
                 m.append(i)
             m.show_all()
-            m.popup(None, i, None, 1, gtk.get_current_event_time())
+            m.popup(None, i, None, 1, Gtk.get_current_event_time())
             return True
 
-        tb=gtk.Toolbar()
+        tb=Gtk.Toolbar()
         vbox.toolbar=tb
-        tb.set_style(gtk.TOOLBAR_ICONS)
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
         for (icon, tooltip, action) in (
-            (gtk.STOCK_BOLD, _("Bold"), lambda i: self.editor.apply_html_tag('b')),
-            (gtk.STOCK_ITALIC, _("Italic"), lambda i: self.editor.apply_html_tag('i')),
+            (Gtk.STOCK_BOLD, _("Bold"), lambda i: self.editor.apply_html_tag('b')),
+            (Gtk.STOCK_ITALIC, _("Italic"), lambda i: self.editor.apply_html_tag('i')),
             ("title_icon.png", _("Header"), display_header_menu),
             (None, None, None),
-            (gtk.STOCK_COPY, _("Copy"), sel_copy),
-            (gtk.STOCK_CUT, _("Cut"), sel_cut),
-            (gtk.STOCK_PASTE, _("Paste"), sel_paste),
+            (Gtk.STOCK_COPY, _("Copy"), sel_copy),
+            (Gtk.STOCK_CUT, _("Cut"), sel_cut),
+            (Gtk.STOCK_PASTE, _("Paste"), sel_paste),
             (None, None, None),
-            (gtk.STOCK_REFRESH, _("Refresh"), refresh),
+            (Gtk.STOCK_REFRESH, _("Refresh"), refresh),
             ):
-            if not config.data.preferences['expert-mode'] and icon == gtk.STOCK_REFRESH:
+            if not config.data.preferences['expert-mode'] and icon == Gtk.STOCK_REFRESH:
                 continue
             if not icon:
-                b=gtk.SeparatorToolItem()
+                b=Gtk.SeparatorToolItem()
             else:
                 b=get_pixmap_toolbutton(icon, action)
                 b.set_tooltip_text(tooltip)
@@ -801,15 +803,15 @@ class HTMLContentHandler (ContentHandler):
             b.show()
 
         if self.editor.can_undo():
-            b=gtk.ToolButton(gtk.STOCK_UNDO)
+            b=Gtk.ToolButton(Gtk.STOCK_UNDO)
             b.connect('clicked', lambda i: self.editor.undo())
             b.set_tooltip_text(_("Undo"))
             tb.insert(b, -1)
             b.show()
 
-        self.view.pack_start(tb, expand=False)
-        sw=gtk.ScrolledWindow()
-        sw.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        self.view.pack_start(tb, False, True, 0)
+        sw=Gtk.ScrolledWindow()
+        sw.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         sw.add(self.editor)
 
         context_data=ContextDisplay()
@@ -818,11 +820,11 @@ class HTMLContentHandler (ContentHandler):
                 context_data.set_context(self.editor.get_current_context(it))
             return True
         self.editor.get_buffer().connect('mark-set', cursor_moved)
-        sw2=gtk.ScrolledWindow()
-        sw2.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        sw2=Gtk.ScrolledWindow()
+        sw2.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         sw2.add(context_data)
 
-        p=gtk.HPaned()
+        p=Gtk.HPaned()
         p.add1(sw2)
         p.add2(sw)
         # Hide by default
diff --git a/lib/advene/gui/plugins/kinect.py b/lib/advene/gui/plugins/kinect.py
new file mode 100644
index 0000000..a8c8782
--- /dev/null
+++ b/lib/advene/gui/plugins/kinect.py
@@ -0,0 +1,173 @@
+#
+# Advene: Annotate Digital Videos, Exchange on the NEt
+# Copyright (C) 2011-2017 Olivier Aubert <contact at olivieraubert.net>
+#
+# 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
+#
+
+import time
+from gettext import gettext as _
+from gi.repository import Gtk
+
+import advene.core.config as config
+from advene.gui.views import AdhocView
+
+name="Kinect view/control plugin"
+
+print "Trying to import", name
+
+try:
+    import pytrack
+except ImportError:
+    pytrack = None
+
+def register(controller):
+    if pytrack is not None:
+        controller.register_viewclass(KinectController)
+
+class KinectController(AdhocView):
+    view_name = _("Kinect Controller")
+    view_id = 'kinect'
+    tooltip=_("Kinect control interface")
+
+    def __init__(self, controller=None, uri=None, parameters=None):
+        super(KinectController, self).__init__(controller=controller)
+        self.close_on_package_load = False
+        self.contextual_actions = [
+            ]
+        self.controller = controller
+        self.registered_rules = []
+
+        self.mode = ''
+        # When was the last seek done ?
+        self.last_seek = 0
+        self.seek_threshold = .5
+
+        if pytrack.pytrack_init(config.data.advenefile('Sample-Tracking.xml')):
+            self.log("Problem when initializing Kinect controller")
+
+        @pytrack.callback_function
+        def callback(*p):
+            self.callback(*p)
+        self.callbacks = pytrack.CallbacksT()
+        for (n, t) in self.callbacks._fields_:
+            setattr(self.callbacks, n, callback)
+        pytrack.pytrack_set_callbacks(self.callbacks)
+
+        # Load options
+        opt, arg = self.load_parameters(parameters)
+        self.options.update(opt)
+        self.widget = self.build_widget()
+        pytrack.pytrack_start_loop()
+
+    def handle_rate_control(self, fx):
+        if fx > .9:
+            rate = 8.0
+        elif fx > .8:
+            rate = 4.0
+        elif fx > .7:
+            rate = 2.0
+        elif fx > .4:
+            rate = 1.0
+        elif fx > .3:
+            rate = .5
+        elif fx > .2:
+            rate = .1
+        else:
+            rate = 1 / config.data.preferences['default-fps']
+        if self.controller.player.get_rate() != rate:
+            self.action.set_text("Set rate %.2f" % rate)
+            self.controller.queue_action(self.controller.player.set_rate, rate)
+
+    def handle_seek_control(self, fx):
+        t = time.time()
+        if t - self.last_seek < self.seek_threshold:
+            return
+        self.last_seek = t
+        if fx > .8:
+            seek = config.data.preferences['second-time-increment']
+        elif fx > .6:
+            seek = config.data.preferences['time-increment']
+        elif fx < .2:
+             seek = -config.data.preferences['second-time-increment']
+        elif fx < .4:
+            seek = -config.data.preferences['time-increment']
+        else:
+            seek =0
+        if seek:
+            self.action.set_text("Seek %d" % seek)
+            self.controller.queue_action(self.controller.move_position, seek)
+
+    def handle_mode_selection(self, fx):
+        if fx < .3:
+            mode = 'rate'
+        elif fx > .7:
+            mode = 'seek'
+        else:
+            mode = 'none'
+        if mode != self.mode:
+            self.set_mode(mode)
+
+    def set_mode(self, mode):
+        if mode != self.mode:
+            if self.mode in self.mode_buttons:
+                self.mode_buttons[self.mode].set_sensitive(False)
+            self.mode = mode
+            self.mode_buttons[self.mode].set_sensitive(True)
+            self.action.set_text("Mode: %s" % mode)
+
+    def callback(self, event, fx, fy, ix, iy, d):
+        #self.log("Kinect: %s (%f, %f) (%d, %d) %d"  % (event, fx, fy, ix, iy, d))
+        self.label.set_text("%s (%f, %f) (%d, %d) %d"  % (event, fx, fy, ix, iy, d))
+        if event == 'push' and d == 5:
+            # Any direction
+            self.action.set_text("Play/pause")
+            self.controller.update_status('pause')
+        elif event == 'move':
+            if .5 < fy < .9:
+                # Control zone
+                if self.mode == 'rate':
+                    self.handle_rate_control(fx)
+                elif self.mode == 'seek':
+                    self.handle_seek_control(fx)
+            elif fy < .3:
+                # Mode selection
+                self.handle_mode_selection(fx)
+
+    def build_widget(self):
+        vbox=Gtk.VBox()
+
+        vbox.add(Gtk.Label(label="Kinect control"))
+
+        hb = Gtk.HBox()
+        self.mode_buttons = {
+            'rate': Gtk.Button("Rate"),
+            'none': Gtk.Button("Disabled"),
+            'seek': Gtk.Button("Seek"),
+            }
+        for k in ('rate', 'none', 'seek'):
+            hb.add(self.mode_buttons[k])
+            self.mode_buttons[k].set_sensitive(False)
+        vbox.pack_start(hb, False, True, 0)
+
+        self.label = Gtk.Label(label="Perform a Wave to start.")
+        vbox.add(self.label)
+        self.action = Gtk.Label(label="No action")
+        vbox.add(self.action)
+        # FIXME
+        #self.slider = Gtk.
+
+        vbox.show_all()
+        self.set_mode('none')
+        return vbox
diff --git a/lib/advene/gui/plugins/logmessages.py b/lib/advene/gui/plugins/logmessages.py
index e0ba2e8..d437621 100644
--- a/lib/advene/gui/plugins/logmessages.py
+++ b/lib/advene/gui/plugins/logmessages.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@
 """Log messages display.
 """
 
-import gtk
+from gi.repository import Gtk
 
 from gettext import gettext as _
 from advene.gui.views import AdhocView
@@ -41,7 +41,7 @@ class LogMessages(AdhocView):
 
     def autoscroll(self, *p):
         # Autoscroll
-        self.textview.scroll_mark_onscreen(self.controller.gui.logbuffer.get_mark("insert"))
+        self.textview.scroll_mark_onscreen(self.textview.get_buffer().get_insert())
         return True
 
     def reparent_done(self):
@@ -49,18 +49,18 @@ class LogMessages(AdhocView):
         return True
 
     def build_widget(self):
-        sw=gtk.ScrolledWindow()
-        self.textview=gtk.TextView(self.controller.gui.logbuffer)
-        self.textview.set_wrap_mode(gtk.WRAP_CHAR)
+        sw=Gtk.ScrolledWindow()
+        self.textview=Gtk.TextView.new_with_buffer(self.controller.gui.logbuffer)
+        self.textview.set_wrap_mode(Gtk.WrapMode.CHAR)
         self.textview.set_editable(False)
         sw.add(self.textview)
 
         self.safe_connect(self.controller.gui.logbuffer, "changed", self.autoscroll)
 
         # Scroll for initial display
-        def initial_display(t):
+        def initial_display(*p):
             self.autoscroll()
             return False
-        self.textview.connect('map', initial_display)
+        self.textview.connect('size-allocate', initial_display)
 
         return sw
diff --git a/lib/advene/gui/plugins/shotvalidation.py b/lib/advene/gui/plugins/shotvalidation.py
index 23c6ee5..ef06e60 100644
--- a/lib/advene/gui/plugins/shotvalidation.py
+++ b/lib/advene/gui/plugins/shotvalidation.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,8 @@
 # along with Advene; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
-import gtk
+from gi.repository import Gdk
+from gi.repository import Gtk
 
 from gettext import gettext as _
 
@@ -41,7 +42,7 @@ class ShotValidation(AdhocView):
         self.controller=controller
         self._annotationtype=None
 
-        self.current_index = gtk.Adjustment(10, 1, 10, 1, 10)
+        self.current_index = Gtk.Adjustment.new(10, 1, 10, 1, 10, 5)
         self.options={}
 
         # Load options
@@ -120,11 +121,11 @@ class ShotValidation(AdhocView):
         return True
 
     def handle_keypress(self, widget, event):
-        if event.keyval == gtk.keysyms.Page_Down:
+        if event.keyval == Gdk.KEY_Page_Down:
             # Next annotation
             self.set_index(self.index + 1)
             return True
-        elif event.keyval == gtk.keysyms.Page_Up:
+        elif event.keyval == Gdk.KEY_Page_Up:
             # Previous annotation
             self.set_index(self.index - 1)
             return True
@@ -146,8 +147,8 @@ class ShotValidation(AdhocView):
         annotation = self.annotations[i]
         batch=object()
 
-        event = gtk.get_current_event()
-        if event.state & gtk.gdk.CONTROL_MASK:
+        event = Gtk.get_current_event()
+        if event.get_state().state & Gdk.ModifierType.CONTROL_MASK:
             # Control-key is held. Split the annotation.
             if new > annotation.fragment.begin and new < annotation.fragment.end:
                 self.controller.split_annotation(annotation, new)
@@ -185,12 +186,12 @@ class ShotValidation(AdhocView):
 
     def build_widget(self):
         if not self.annotations:
-            return gtk.Label((_("No annotations to adjust")))
+            return Gtk.Label(label=(_("No annotations to adjust")))
 
-        vbox = gtk.VBox()
+        vbox = Gtk.VBox()
 
-        self.title_widget = gtk.Label()
-        vbox.pack_start(self.title_widget)
+        self.title_widget = Gtk.Label()
+        vbox.pack_start(self.title_widget, True, True, 0)
 
         self.selector = FrameSelector(self.controller, self.annotations[0].fragment.begin, label=_("Click on the frame just after the cut to adjust the cut time.\nControl-click on a frame to indicate a missing cut."))
         self.selector.callback = self.validate_and_next
@@ -212,31 +213,31 @@ class ShotValidation(AdhocView):
         vbox.add(self.selector.widget)
 
         # Button bar
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
 
-        self.prev_button = gtk.Button(_("< Previous cut"))
+        self.prev_button = Gtk.Button(_("< Previous cut"))
         self.prev_button.set_tooltip_text(_("Display previous cut"))
         self.prev_button.connect("clicked", lambda b: self.set_index(self.index - 1))
         hb.add(self.prev_button)
 
-        l = gtk.Label("#")
-        hb.pack_start(l, expand=False)
+        l = Gtk.Label(label="#")
+        hb.pack_start(l, False, True, 0)
 
-        self.next_button = gtk.Button(_("Next cut >"))
+        self.next_button = Gtk.Button(_("Next cut >"))
         self.next_button.set_tooltip_text(_("Display next cut"))
         self.next_button.connect("clicked", lambda b: self.set_index(self.index + 1))
 
-        s=gtk.SpinButton(self.current_index, 1, 0)
+        s=Gtk.SpinButton.new(self.current_index, 1, 0)
         s.set_increments(1, 10)
-        s.set_update_policy(gtk.UPDATE_IF_VALID)
+        #s.set_update_policy(Gtk.UPDATE_IF_VALID)
         s.set_numeric(True)
 
         # For an unknown reason, the default behaviour of updating
         # SpinButton through scroll does not work. Emulate it.
         def handle_spin_scroll(widget, event):
-            if event.direction == gtk.gdk.SCROLL_UP:
+            if event.direction == Gdk.ScrollDirection.UP:
                 offset=+1
-            elif event.direction == gtk.gdk.SCROLL_DOWN:
+            elif event.direction == Gdk.ScrollDirection.DOWN:
                 offset=-1
             self.set_index(self.index + offset)
             return True
@@ -245,40 +246,40 @@ class ShotValidation(AdhocView):
 
         hb.add(self.next_button)
 
-        vbox.pack_start(hb, expand=False)
+        vbox.pack_start(hb, False, True, 0)
 
-        hb = gtk.HButtonBox()
-        b=gtk.Button(_("Current time"))
+        hb = Gtk.HButtonBox()
+        b=Gtk.Button(_("Current time"))
         b.set_tooltip_text(_("Go to annotation containing current player time."))
         b.connect("clicked", self.goto_current)
         hb.add(b)
 
-        b=gtk.Button(_("Refresh snapshots"))
+        b=Gtk.Button(_("Refresh snapshots"))
         b.set_tooltip_text(_("Refresh missing snapshots"))
         b.connect("clicked", lambda b: self.selector.refresh_snapshots())
         hb.add(b)
 
-        b=gtk.Button(_("Undo"))
+        b=Gtk.Button(_("Undo"))
         b.set_tooltip_text(_("Undo last modification"))
         b.connect("clicked", self.undo)
         hb.add(b)
         b.set_sensitive(False)
         self.undo_button = b
 
-        b=gtk.Button(_("Merge with previous"))
+        b=Gtk.Button(_("Merge with previous"))
         b.set_tooltip_text(_("Merge with previous annotation, i.e. remove this bound."))
         b.connect("clicked", self.merge)
         hb.add(b)
 
-        b=gtk.Button(stock=gtk.STOCK_CLOSE)
+        b=Gtk.Button(stock=Gtk.STOCK_CLOSE)
         b.set_tooltip_text(_("Close view."))
         b.connect("clicked", self.close)
         hb.add(b)
 
-        vbox.pack_start(hb, expand=False)
+        vbox.pack_start(hb, False, True, 0)
 
-        self.statusbar = gtk.Statusbar()
-        vbox.pack_start(self.statusbar, expand=False)
+        self.statusbar = Gtk.Statusbar()
+        vbox.pack_start(self.statusbar, False, True, 0)
 
         self.set_index(0)
         vbox.show_all()
diff --git a/lib/advene/gui/plugins/tracepreview.py b/lib/advene/gui/plugins/tracepreview.py
index acd62f2..43114a4 100644
--- a/lib/advene/gui/plugins/tracepreview.py
+++ b/lib/advene/gui/plugins/tracepreview.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -22,7 +22,8 @@
 This widget allows to stack compact operation history to preview the trace.
 """
 
-import gtk
+from gi.repository import Gdk
+from gi.repository import Gtk
 import time
 
 from gettext import gettext as _
@@ -94,32 +95,32 @@ class TracePreview(AdhocView):
         self.receive(self.tracer.trace)
 
     def build_widget(self):
-        mainbox = gtk.VBox()
-        btnbar=gtk.HBox()
-        btngt = gtk.Button(_('Full trace'))
+        mainbox = Gtk.VBox()
+        btnbar=Gtk.HBox()
+        btngt = Gtk.Button(_('Full trace'))
         btngt.set_tooltip_text(_('Open the trace timeline view fareast'))
         btngt.set_size_request(60, 20)
         def open_trace(w):
             l=[ w for w in self.controller.gui.adhoc_views if w.view_id == 'tracetimeline' ]
             if not l:
                 a=self.controller.gui.open_adhoc_view(name='tracetimeline', destination='fareast')
-        btnbar.pack_start(btngt, expand=False)
+        btnbar.pack_start(btngt, False, True, 0)
         btngt.connect('clicked', open_trace)
-        mainbox.pack_start(btnbar, expand=False)
-        mainbox.pack_start(gtk.HSeparator(), expand=False)
-        self.accuBox = gtk.VBox()
-        self.sw = gtk.ScrolledWindow()
-        self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        mainbox.pack_start(btnbar, False, True, 0)
+        mainbox.pack_start(Gtk.HSeparator(), False, False, 0)
+        self.accuBox = Gtk.VBox()
+        self.sw = Gtk.ScrolledWindow()
+        self.sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         self.sw.add_with_viewport(self.accuBox)
-        self.sw.set_vadjustment(gtk.Adjustment(value = 208, lower = 0, upper=208, step_incr=52, page_incr=208, page_size=208))
-        mainbox.pack_start(self.sw)
+        self.sw.set_vadjustment(Gtk.Adjustment.new(value = 208, lower = 0, upper=208, step_incr=52, page_incr=208, page_size=208))
+        mainbox.pack_start(self.sw, True, True, 0)
         return mainbox
 
 
     def scroll_win(self):
         a = self.sw.get_vadjustment()
         if a:
-            a.value=a.upper
+            a.set_value(a.get_upper())
         return
 
     def receive(self, trace, event=None, operation=None, action=None):
@@ -156,10 +157,10 @@ class TracePreview(AdhocView):
 
     def packObs(self, obj_evt, level):
         if obj_evt is not None:
-            vb=gtk.VBox()
+            vb=Gtk.VBox()
             self.last_obs_box = self.buildBox(obj_evt, level)
             def zoom_in_timeline(w, event, obj_evt):
-                if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+                if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
                     l=[ w for w in self.controller.gui.adhoc_views if w.view_id == 'tracetimeline' ]
                     if l:
                         a=l[-1]
@@ -174,8 +175,8 @@ class TracePreview(AdhocView):
             self.last_obs_box.connect('button-press-event', zoom_in_timeline, obj_evt)
             self.last_obs = obj_evt
             vb.add(self.last_obs_box)
-            vb.add(gtk.HSeparator())
-            self.accuBox.pack_start(vb, expand=False)
+            vb.add(Gtk.HSeparator())
+            self.accuBox.pack_start(vb, False, True, 0)
             self.accuBox.show_all()
             self.size = self.size + 1
 
@@ -230,44 +231,44 @@ class TracePreview(AdhocView):
                 entetestr = "%s : %s %s" % (ev_time, self.incomplete_operations_names[obj_evt.name], comp)
             if obj_evt.content is not None:
                 corpsstr = urllib.unquote(obj_evt.content.encode('utf-8'))
-            entete = gtk.Label(ev_time.encode("UTF-8"))
-            hb = gtk.HBox()
-            hb.pack_start(entete, expand=False)
+            entete = Gtk.Label(label=ev_time.encode("UTF-8"))
+            hb = Gtk.HBox()
+            hb.pack_start(entete, False, True, 0)
             objcanvas = goocanvas.Canvas()
             objcanvas.set_bounds (0,0,60,20)
-            hb.pack_end(objcanvas, expand=False)
+            hb.pack_end(objcanvas, False, True, 0)
             #BIG HACK to display icon
             te = obj_evt.name
             if te.find('Edit')>=0:
                 if te.find('Start')>=0:
-                    pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+                    pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                         (( 'pixmaps', 'traces', 'edition.png')))
                 elif te.find('End')>=0 or te.find('Destroy')>=0:
-                    pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+                    pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                         (( 'pixmaps', 'traces', 'finedition.png')))
             elif te.find('Creat')>=0:
-                pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                         (( 'pixmaps', 'traces', 'plus.png')))
             elif te.find('Delet')>=0:
-                pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                         (( 'pixmaps', 'traces', 'moins.png')))
             elif te.find('Set')>=0:
-                pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                         ( ('pixmaps', 'traces', 'allera.png')))
             elif te.find('Start')>=0 or te.find('Resume')>=0:
-                pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                         ( ('pixmaps', 'traces', 'lecture.png')))
             elif te.find('Pause')>=0:
-                pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                         ( ('pixmaps', 'traces', 'pause.png')))
             elif te.find('Stop')>=0:
-                pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                         ( ('pixmaps', 'traces', 'stop.png')))
             elif te.find('Activation')>=0:
-                pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     ( ('pixmaps', 'traces', 'web.png')), 20,20)
             else:
-                pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     ( ('pixmaps', 'traces', 'error.png')), 20,20)
                 print 'No icon for %s' % te
             goocanvas.Image(parent=objcanvas.get_root_item(), width=20,height=20,x=0,y=0,pixbuf=pb)
@@ -277,7 +278,7 @@ class TracePreview(AdhocView):
                 ob = self.controller.package.get_element_by_id(obj_evt.concerned_object['id'])
                 temp_c = self.controller.get_element_color(ob)
                 if temp_c is not None:
-                    temp_c = gdk2intrgba(gtk.gdk.color_parse(temp_c))
+                    temp_c = gdk2intrgba(Gdk.color_parse(temp_c))
                 else:
                     temp_c = 0xFFFFFFFF
                 goocanvas.Ellipse(parent=objg,
@@ -314,7 +315,7 @@ class TracePreview(AdhocView):
                         x = 40,
                         y = 10,
                         width = -1,
-                        anchor = gtk.ANCHOR_CENTER,
+                        anchor = Gtk.ANCHOR_CENTER,
                         font = "Sans 5")
             else:
                 # no concerned object, we are in an action of navigation
@@ -335,12 +336,12 @@ class TracePreview(AdhocView):
                         x = 40,
                         y = 10,
                         width = -1,
-                        anchor = gtk.ANCHOR_CENTER,
+                        anchor = Gtk.ANCHOR_CENTER,
                         font = "Sans 7")
             cm = objcanvas.get_colormap()
             color = cm.alloc_color('#FFFFFF')
             if obj_evt.name in self.tracer.colormodel[level]:
-                color = gtk.gdk.color_parse(self.tracer.colormodel[level])
+                color = Gdk.color_parse(self.tracer.colormodel[level])
             elif self.tracer.modelmapping[level]:
                 for k in self.tracer.modelmapping[level]:
                     if obj_evt.name in self.tracer.modelmapping[level][k]:
@@ -348,7 +349,7 @@ class TracePreview(AdhocView):
                         if x >=0:
                             kn = self.tracer.tracemodel[k][x]
                             if kn in self.tracer.colormodel[k]:
-                                color = gtk.gdk.color_parse(self.tracer.colormodel[k][kn])
+                                color = Gdk.color_parse(self.tracer.colormodel[k][kn])
                                 break
                         else:
                             #BIG HACK, FIXME
@@ -367,9 +368,9 @@ class TracePreview(AdhocView):
                                     if x >=0:
                                         kn = self.tracer.tracemodel[k][x]
                                         if kn in self.tracer.colormodel[k]:
-                                            color = gtk.gdk.color_parse(self.tracer.colormodel[k][kn])
+                                            color = Gdk.color_parse(self.tracer.colormodel[k][kn])
                                             break
-            objcanvas.modify_base (gtk.STATE_NORMAL, color)
+            objcanvas.modify_base (Gtk.StateType.NORMAL, color)
             objcanvas.set_size_request(60,20)
             if corpsstr != "":
                 objcanvas.set_tooltip_text(corpsstr)
diff --git a/lib/advene/gui/plugins/tracetimeline.py b/lib/advene/gui/plugins/tracetimeline.py
index b41779c..1360b08 100644
--- a/lib/advene/gui/plugins/tracetimeline.py
+++ b/lib/advene/gui/plugins/tracetimeline.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -22,35 +22,40 @@
 This widget allows to present event history in a timeline view.
 """
 
-import urllib
-import gtk
 import time
-from gobject import timeout_add, source_remove
+import urllib
+
+from gi.repository import Gdk
+from gi.repository import GdkPixbuf
+from gi.repository import GObject
+from gi.repository import Gtk
+
 from gettext import gettext as _
+
 from advene.model.fragment import MillisecondFragment
 from advene.model.schema import Schema, AnnotationType, RelationType
 from advene.model.annotation import Annotation, Relation
 from advene.model.view import View
-from math import floor
 from advene.gui.views import AdhocView
-#import advene.util.helper as helper
+import advene.util.helper as helper
 from advene.rules.elements import ECACatalog
 import advene.core.config as config
-from advene.gui.widget import TimestampRepresentation
 from advene.gui.util import dialog, get_small_stock_button, gdk2intrgba
 from advene.model.util.defaultdict import DefaultDict
 
 try:
-    import goocanvas
-    from goocanvas import Group
+    import gi
+    gi.require_version('GooCanvas', '2.0')
+    from gi.repository import GooCanvas
+    from gi.repository.GooCanvas import CanvasGroup
 except ImportError:
     # Goocanvas is not available. Define some globals in order not to
     # fail the module loading, and use them as a guard in register()
-    goocanvas=None
-    Group=object
+    GooCanvas=None
+    CanvasGroup=object
 
 def register(controller):
-    if goocanvas is None:
+    if GooCanvas is None:
         controller.log("Cannot register TraceTimeline: the goocanvas python module does not seem to be available.")
     else:
         controller.register_viewclass(TraceTimeline)
@@ -145,7 +150,7 @@ class TraceTimeline(AdhocView):
         self.context_t_max = time.time()
         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]))
+            c=gdk2intrgba(Gdk.color_parse(self.tracer.colormodel['actions'][act]))
             self.context_cols[act]=(i, c, None)
         self.col_width = 80
         self.colspacing = 5
@@ -183,7 +188,7 @@ class TraceTimeline(AdhocView):
         # save zoom values
         h = self.canvas.get_allocation().height
         va=self.sw.get_vadjustment()
-        vc = (va.value + h/2.0) * self.timefactor
+        vc = (va.get_value() + h/2.0) * self.timefactor
         self.display_values[self.active_trace.name] = (self.canvasY, self.timefactor, self.obj_l, vc)
         self.active_trace = trace
         self.start_time=self.active_trace.start
@@ -198,12 +203,12 @@ class TraceTimeline(AdhocView):
             self.refresh()
 
     def build_widget(self):
-        mainbox = gtk.VBox()
+        mainbox = Gtk.VBox()
         # trace selector
         def trace_changed(w):
             self.select_trace(w.get_active())
             return True
-        self.selector_box = gtk.HBox()
+        self.selector_box = Gtk.HBox()
         self.trace_selector = dialog.list_selector_widget(
             members= [( n, _("%(name)s (%(index)d)") % {
                         'name': t.name,
@@ -212,8 +217,8 @@ class TraceTimeline(AdhocView):
             preselect=0,
             callback=trace_changed)
         #self.trace_selector.set_size_request(70,-1)
-        self.selector_box.pack_start(self.trace_selector, expand=True)
-        self.remove_trace_button = get_small_stock_button(gtk.STOCK_CANCEL)
+        self.selector_box.pack_start(self.trace_selector, True, True, 0)
+        self.remove_trace_button = get_small_stock_button(Gtk.STOCK_CANCEL)
         def remove_trace(button, event):
             """Remove a trace from the selector list
             """
@@ -227,12 +232,12 @@ class TraceTimeline(AdhocView):
                 #self.select_trace(tr-1)
 
         self.remove_trace_button.connect('button-press-event', remove_trace)
-        self.selector_box.pack_start(self.remove_trace_button, expand=False)
-        mainbox.pack_start(self.selector_box, expand=False)
+        self.selector_box.pack_start(self.remove_trace_button, False, True, 0)
+        mainbox.pack_start(self.selector_box, False, True, 0)
 
         quicksearch_options = [False, ['oname','oid','ocontent']] # exact search, where to search
-        self.quicksearch_button=get_small_stock_button(gtk.STOCK_FIND)
-        self.quicksearch_entry=gtk.Entry()
+        self.quicksearch_button=get_small_stock_button(Gtk.STOCK_FIND)
+        self.quicksearch_entry=Gtk.Entry()
         self.quicksearch_entry.set_text(_('Search'))
         def do_search(button, options):
             """Execute a search query in the active trace.
@@ -242,7 +247,7 @@ class TraceTimeline(AdhocView):
             @type options: list
             @param options: a list containing the different options for the search query (see tracebuilder for more infos)
             """
-            tr=self.tracer.search(self.active_trace, unicode(self.quicksearch_entry.get_text(), 'utf-8'), options[0], options[1])
+            tr=self.tracer.search(self.active_trace, self.quicksearch_entry.get_text().decode('utf-8'), options[0], options[1])
             mod= self.trace_selector.get_model()
             if len(self.tracer.traces)>len(mod):
                 n = len(self.tracer.traces)-1
@@ -259,41 +264,41 @@ class TraceTimeline(AdhocView):
             """
             if w.is_focus():
                 return False
-            w.select_region(0, len(w.get_text()))
+            w.select_region(0, len(w.get_text().decode('utf-8')))
             w.grab_focus()
             return True
         def is_typing(w, event):
             """Execute search query if <Enter> is pressed in search entry
             """
             #if return is hit, activate quicksearch_button
-            if event.keyval == gtk.keysyms.Return:
+            if event.keyval == Gdk.KEY_Return:
                 self.quicksearch_button.activate()
         self.quicksearch_entry.connect('button-press-event', is_focus)
         self.quicksearch_entry.connect('key-press-event', is_typing)
-        self.search_box = gtk.HBox()
-        self.search_box.pack_start(self.quicksearch_entry, expand=False)
-        self.search_box.pack_start(self.quicksearch_button, expand=False)
-        #mainbox.pack_start(self.search_box, expand=False)
+        self.search_box = Gtk.HBox()
+        self.search_box.pack_start(self.quicksearch_entry, False, True, 0)
+        self.search_box.pack_start(self.quicksearch_button, False, True, 0)
+        #mainbox.pack_start(self.search_box, False, True, 0)
 
-        toolbox = gtk.Toolbar()
-        toolbox.set_orientation(gtk.ORIENTATION_HORIZONTAL)
-        toolbox.set_style(gtk.TOOLBAR_ICONS)
-        #toolbox.set_icon_size(gtk.ICON_SIZE_MENU)
-        #mainbox.pack_start(toolbox, expand=False)
+        toolbox = Gtk.Toolbar()
+        toolbox.set_orientation(Gtk.Orientation.HORIZONTAL)
+        toolbox.set_style(Gtk.ToolbarStyle.ICONS)
+        #toolbox.set_icon_size(Gtk.IconSize.MENU)
+        #mainbox.pack_start(toolbox, False, True, 0)
 
 
-        htb = gtk.HBox()
-        htb.pack_start(toolbox, expand=True)
-        htb.pack_start(self.search_box, expand=False)
+        htb = Gtk.HBox()
+        htb.pack_start(toolbox, True, True, 0)
+        htb.pack_start(self.search_box, False, True, 0)
 
-        mainbox.pack_start(htb, expand=False)
+        mainbox.pack_start(htb, False, True, 0)
 
         c = len(self.cols)
         self.context_canvasX = c*(self.context_col_width+self.context_colspacing) + 5 # 1+4 for select square
 
-        bx = gtk.HPaned()
-        hbt = gtk.HBox()
-        self.context_canvas = goocanvas.Canvas()
+        bx = Gtk.HPaned()
+        hbt = Gtk.HBox()
+        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)
 
@@ -307,34 +312,34 @@ class TraceTimeline(AdhocView):
                 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)
-        mainbox.pack_start(hbt, expand=True)
+        hbt.pack_start(self.context_canvas, False, True, 0)
+        hbt.pack_start(Gtk.VSeparator(), False, False, 0)
+        hbt.pack_start(bx, True, True, 0)
+        mainbox.pack_start(hbt, True, True, 0)
 
-        timeline_box=gtk.VBox()
+        timeline_box=Gtk.VBox()
         bx.pack1(timeline_box, resize=False, shrink=False)
 
-        scrolled_win = gtk.ScrolledWindow ()
+        scrolled_win = Gtk.ScrolledWindow ()
         self.sw = scrolled_win
-        self.sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS)
+        self.sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.ALWAYS)
         def sw_scrolled(a):
             """Move context selection frame when scrolling the timeline
             """
             self.context_update_sel_frame()
         self.sw.get_vadjustment().connect('value-changed', sw_scrolled)
-        self.head_canvas = goocanvas.Canvas()
+        self.head_canvas = GooCanvas.Canvas()
 
         self.canvasX = c*(self.col_width+self.colspacing)
         self.head_canvas.set_bounds (0,0,self.canvasX,self.head_canvasY)
         self.head_canvas.set_size_request(-1, self.head_canvasY)
-        timeline_box.pack_start(self.head_canvas, expand=False, fill=False)
+        timeline_box.pack_start(self.head_canvas, False, False, 0)
 
-        self.canvas = goocanvas.Canvas()
+        self.canvas = GooCanvas.Canvas()
         self.canvas.set_bounds (0, 0,self.canvasX, self.canvasY)
         self.canvas.set_size_request(200, 25) # important to force a minimum size (else we could have problem with radius of objects < 0)
 
-        self.doc_canvas = goocanvas.Canvas()
+        self.doc_canvas = GooCanvas.Canvas()
         self.doc_canvas.set_bounds(0,0, self.doc_canvas_X, self.doc_canvas_Y)
         self.doc_canvas.set_size_request(-1, self.doc_canvas_Y)
         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)
@@ -398,7 +403,7 @@ class TraceTimeline(AdhocView):
         def show_tooltip(w, x, y, km, tooltip):
             """Show a tooltip according to the item under the cursor
             """
-            under_cursor = self.canvas.get_items_at(x, y+w.get_vadjustment().value, False)
+            under_cursor = self.canvas.get_items_at(x, y+w.get_vadjustment().get_value(), False)
             if not under_cursor:
                 return False
             for item in under_cursor:
@@ -410,36 +415,36 @@ class TraceTimeline(AdhocView):
         scrolled_win.connect("query-tooltip", show_tooltip)
 
 
-        timeline_box.pack_start(gtk.HSeparator(), expand=False, fill=False)
+        timeline_box.pack_start(Gtk.HSeparator(), False, False, 0)
         timeline_box.add(scrolled_win)
 
-        mainbox.pack_start(gtk.HSeparator(), expand=False, fill=False)
+        mainbox.pack_start(Gtk.HSeparator(), False, False, 0)
 
-        mainbox.pack_start(self.doc_canvas, expand=False, fill=True)
+        mainbox.pack_start(self.doc_canvas, False, True, 0)
 
-        btnm = gtk.ToolButton(stock_id=gtk.STOCK_ZOOM_OUT)
+        btnm = Gtk.ToolButton(stock_id=Gtk.STOCK_ZOOM_OUT)
         btnm.set_tooltip_text(_('Zoom out'))
         btnm.set_label('')
         toolbox.insert(btnm, -1)
 
-        btnp = gtk.ToolButton(stock_id=gtk.STOCK_ZOOM_IN)
+        btnp = Gtk.ToolButton(stock_id=Gtk.STOCK_ZOOM_IN)
         btnp.set_tooltip_text(_('Zoom in'))
         btnp.set_label('')
         toolbox.insert(btnp, -1)
 
-        btnc = gtk.ToolButton(stock_id=gtk.STOCK_ZOOM_100)
+        btnc = Gtk.ToolButton(stock_id=Gtk.STOCK_ZOOM_100)
         btnc.set_tooltip_text(_('Zoom 100%'))
         btnc.set_label('')
         toolbox.insert(btnc, -1)
-        self.btnl = gtk.ToolButton()
+        self.btnl = Gtk.ToolButton()
         self.btnl.set_tooltip_text(_('Toggle links lock'))
-        img = gtk.Image()
+        img = Gtk.Image()
         img.set_from_file(config.data.advenefile( ( 'pixmaps', 'unlocked.png') ))
         self.btnl.set_icon_widget(img)
         toolbox.insert(self.btnl, -1)
         self.btnl.connect('clicked', self.toggle_lock)
         #btn to change link mode
-        b = gtk.ToolButton(label='L')
+        b = Gtk.ToolButton(label='L')
         b.set_tooltip_text(_('Toggle link mode'))
         toolbox.insert(b, -1)
         b.connect('clicked', self.toggle_link_mode)
@@ -448,8 +453,8 @@ class TraceTimeline(AdhocView):
             """Open a trace file, add it to the trace selector and make it active
             """
             fname=dialog.get_filename(title=_("Open a trace file"),
-                                   action=gtk.FILE_CHOOSER_ACTION_OPEN,
-                                   button=gtk.STOCK_OPEN,
+                                   action=Gtk.FileChooserAction.OPEN,
+                                   button=Gtk.STOCK_OPEN,
                                    default_dir=config.data.path['settings'],
                                    filter='any')
             if not fname:
@@ -461,29 +466,29 @@ class TraceTimeline(AdhocView):
             self.trace_selector.set_active(len(self.tracer.traces) - 1)
             return True
 
-        btnar = gtk.ToggleToolButton(stock_id=gtk.STOCK_REFRESH)
+        btnar = Gtk.ToggleToolButton(stock_id=Gtk.STOCK_REFRESH)
         btnar.set_tooltip_text(_('Toggle auto refresh'))
         btnar.set_label('')
         btnar.connect('clicked', self.toggle_auto_refresh)
         toolbox.insert(btnar, -1)
 
 
-        s=gtk.SeparatorToolItem()
+        s=Gtk.SeparatorToolItem()
         s.set_draw(True)
         toolbox.insert(s, -1)
 
-        b=gtk.ToolButton(stock_id=gtk.STOCK_OPEN)
+        b=Gtk.ToolButton(stock_id=Gtk.STOCK_OPEN)
         b.set_tooltip_text(_('Open an existing trace'))
         toolbox.insert(b, -1)
         b.connect('clicked', open_trace)
 
         # Export trace
-        btne = gtk.ToolButton(stock_id=gtk.STOCK_SAVE)
+        btne = Gtk.ToolButton(stock_id=Gtk.STOCK_SAVE)
         btne.set_tooltip_text(_('Save trace'))
         toolbox.insert(btne, -1)
         btne.connect('clicked', self.export)
 
-        btnopt = gtk.ToolButton(stock_id=gtk.STOCK_PREFERENCES)
+        btnopt = Gtk.ToolButton(stock_id=Gtk.STOCK_PREFERENCES)
         btnopt.set_tooltip_text(_('Configuration'))
         btnopt.set_label('')
         #btnopt.connect('clicked', open_options)
@@ -502,40 +507,32 @@ class TraceTimeline(AdhocView):
             Horizontal scrolling if <shift> is pressed.
             Vertical scrolling if nothing special.
             """
-            zoom=event.state & gtk.gdk.CONTROL_MASK
+            zoom=event.get_state() & Gdk.ModifierType.CONTROL_MASK
             a = None
             if zoom:
                 center = event.y * self.timefactor
-                if event.direction == gtk.gdk.SCROLL_DOWN:
+                if event.direction == Gdk.ScrollDirection.DOWN:
                     zoom_out(widget, center)
-                elif  event.direction == gtk.gdk.SCROLL_UP:
+                elif  event.direction == Gdk.ScrollDirection.UP:
                     self.zoom_at_ratio(widget, 1.25, center)
                 return
-            elif event.state & gtk.gdk.SHIFT_MASK:
+            elif event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                 # Horizontal scroll
                 a = scrolled_win.get_hadjustment()
-                incr = a.step_increment
+                incr = a.get_step_increment()
             else:
                 # Vertical scroll
                 a = scrolled_win.get_vadjustment()
-                incr = a.step_increment
-
-            if event.direction == gtk.gdk.SCROLL_DOWN:
-                val = a.value + incr
-                if val > a.upper - a.page_size:
-                    val = a.upper - a.page_size
-                elif val < a.lower:
-                    val = a.lower
-                if val != a.value:
-                    a.value = val
-            elif event.direction == gtk.gdk.SCROLL_UP:
-                val = a.value - incr
-                if val < a.lower:
-                    val = a.lower
-                elif val > a.upper - a.page_size:
-                    val = a.upper - a.page_size
-                if val != a.value:
-                    a.value = val
+                incr = a.get_step_increment()
+
+            if event.direction == Gdk.ScrollDirection.DOWN:
+                a.set_value(helper.clamp(a.get_value() + incr,
+                            a.get_lower(),
+                            a.get_upper() - a.get_page_size()))
+            elif event.direction == Gdk.ScrollDirection.UP:
+                a.set_value(helper.clamp(a.get_value() - incr,
+                            a.get_lower(),
+                            a.get_upper() - a.get_page_size()))
             return True
         self.canvas.connect('scroll-event', on_background_scroll)
 
@@ -545,19 +542,19 @@ class TraceTimeline(AdhocView):
             if <shift> is pressed, draw a selection frame
             if nothing is pressed, drag the canvas
             """
-            if not event.state & gtk.gdk.BUTTON1_MASK:
+            if not event.get_state() & Gdk.ModifierType.BUTTON1_MASK:
                 return False
-            if event.state & gtk.gdk.SHIFT_MASK:
+            if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                 # redraw selection frame
-                #self.widget.get_parent_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.PLUS))
+                #self.widget.get_parent_window().set_cursor(Gdk.Cursor.new(Gdk.PLUS))
                 if self.selection[0]==0 and self.selection[1]==0:
                     self.selection[0]=event.x
                     self.selection[1]=event.y
-                p = goocanvas.Points([(self.selection[0],self.selection[1]),(self.selection[0],event.y),(event.x,event.y),(event.x,self.selection[1])])
+                p = GooCanvas.Points([(self.selection[0],self.selection[1]),(self.selection[0],event.y),(event.x,event.y),(event.x,self.selection[1])])
                 if self.sel_frame is not None:
                     self.sel_frame.props.points = p
                 else:
-                    self.sel_frame=goocanvas.Polyline (parent = self.canvas.get_root_item(),
+                    self.sel_frame=GooCanvas.Polyline (parent = self.canvas.get_root_item(),
                                         close_path = True,
                                         points = p,
                                         stroke_color = 0xFFFFFFFF,
@@ -572,19 +569,19 @@ class TraceTimeline(AdhocView):
 
             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))
+                self.widget.get_parent_window().set_cursor(Gdk.Cursor.new(Gdk.DIAMOND_CROSS))
                 #curseur grab
                 return False
             x, y = self.drag_coordinates
             wa=widget.get_allocation()
             a=scrolled_win.get_hadjustment()
-            v=a.value + x - event.x_root
-            if v > a.lower and v+wa.width < a.upper:
-                a.value=v
+            a.set_value(helper.clamp(a.get_value() + x - event.x_root,
+                                     a.get_lower(),
+                                     a.get_upper() - wa.get_width()))
             a=scrolled_win.get_vadjustment()
-            v=a.value + y - event.y_root
-            if v > a.lower and v+wa.height < a.upper:
-                a.value=v
+            a.set_value(helper.clamp(a.get_value() + y - event.y_root,
+                        a.get_lower(),
+                                     a.get_upper() - wa.get_width()))
 
             self.drag_coordinates= (event.x_root, event.y_root)
             return False
@@ -636,7 +633,7 @@ class TraceTimeline(AdhocView):
         self.draw_marks()
         if self.autoscroll:
             a = self.sw.get_vadjustment()
-            a.value=a.upper-a.page_size
+            a.set_value(a.get_upper() - a.get_page_size())
         if self.auto_refresh_keep_100:
             self.zoom_100()
         self.context_update_time()
@@ -648,12 +645,12 @@ class TraceTimeline(AdhocView):
         #function to launch / stop autorefresh
         self.auto_refresh = not self.auto_refresh
         if self.auto_refresh:
-            self.ar_tag = timeout_add(self.auto_refresh_delay, self.refresh_time)
+            self.ar_tag = GObject.timeout_add(self.auto_refresh_delay, self.refresh_time)
             #should change an icon button
             print "auto_refresh started"
         else:
             #should change an icon button
-            source_remove(self.ar_tag)
+            GObject.source_remove(self.ar_tag)
             print "auto_refresh stopped"
 
     def show_inspector(self):
@@ -665,16 +662,16 @@ class TraceTimeline(AdhocView):
         """Export current trace to a predefined location
         """
         fname = self.tracer.export()
-        d = gtk.Dialog(title=_("Exporting traces"),
-                       parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_OK, gtk.RESPONSE_OK
+        d = Gtk.Dialog(title=_("Exporting traces"),
+                       parent=self.controller.gui.gui.win,
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_OK, Gtk.ResponseType.OK
                                  ))
-        l=gtk.Label(_("Export done to\n%s") % fname)
+        l=Gtk.Label(label=_("Export done to\n%s") % fname)
         l.set_selectable(True)
         l.set_line_wrap(True)
         l.show()
-        d.vbox.pack_start(l, expand=False)
+        d.vbox.pack_start(l, False, True, 0)
         d.vbox.show_all()
         d.show()
         res=d.run()
@@ -713,7 +710,7 @@ class TraceTimeline(AdhocView):
         va=self.sw.get_vadjustment()
 
         if center_v is None:
-            vc = (va.value + h/2.0) * self.timefactor
+            vc = (va.get_value() + h/2.0) * self.timefactor
         else:
             vc = center_v
         self.canvasY *= ratio
@@ -746,11 +743,9 @@ class TraceTimeline(AdhocView):
                 self.timemarks=[]
                 self.draw_marks()
         self.update_lines()
-        va.value = vc/self.timefactor-va.page_size/2.0
-        if va.value<va.lower:
-            va.value=va.lower
-        elif va.value>va.upper-va.page_size:
-            va.value=va.upper-va.page_size
+        va.set_value(helper.clamp(vc/self.timefactor-va.get_page_size()/2.0,
+                                  va.get_lower(),
+                                  va.get_upper() - va.get_page_size()))
 
     def zoom_on(self, w=None, canvas_item=None):
         """Zoom on an item (ObjGroup or EventGroup) in the canvas
@@ -795,7 +790,7 @@ class TraceTimeline(AdhocView):
         # 20.0 to keep a little space between border and object
         va=self.sw.get_vadjustment()
         rapp = h / (20.0 + max_y - min_y)
-        vc = self.timefactor * ((min_y + max_y) / 2.0) * (va.upper / self.canvasY)
+        vc = self.timefactor * ((min_y + max_y) / 2.0) * (va.get_upper() / self.canvasY)
         self.zoom_at_ratio(None, rapp, vc)
 
 
@@ -894,7 +889,7 @@ class TraceTimeline(AdhocView):
         if self.sel_frame:
             self.sel_frame.remove()
             self.sel_frame=None
-        if ev.state & gtk.gdk.SHIFT_MASK:
+        if ev.state & Gdk.ModifierType.SHIFT_MASK:
             if self.selection[0]==0 and self.selection[1]==0:
                 #not a simple click + maj + release
                 return
@@ -910,7 +905,7 @@ class TraceTimeline(AdhocView):
                 self.selection = [ 0, 0, 0, 0]
                 return
             rapp = h / float(max_y - min_y)
-            vc = self.timefactor * ((min_y + max_y) / 2.0) * (va.upper / self.canvasY)
+            vc = self.timefactor * ((min_y + max_y) / 2.0) * (va.get_upper() / self.canvasY)
             self.zoom_at_ratio(None, rapp, vc)
             self.selection = [ 0, 0, 0, 0]
             return
@@ -924,12 +919,12 @@ class TraceTimeline(AdhocView):
         Draw a selection frame if <shift> pressed and left click
         Display contextual menu according to under the cursor items if right click
         """
-        if ev.state & gtk.gdk.SHIFT_MASK:
+        if ev.state & Gdk.ModifierType.SHIFT_MASK:
             self.selection = [ ev.x, ev.y, 0, 0]
             if self.sel_frame:
                 self.sel_frame.remove()
                 self.sel_frame=None
-            self.widget.get_parent_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.PLUS))
+            self.widget.get_parent_window().set_cursor(Gdk.Cursor.new(Gdk.PLUS))
             return
         obj_gp = None
         evt_gp = None
@@ -945,10 +940,10 @@ class TraceTimeline(AdhocView):
             return
         if ev.button == 3:
             #clic droit sur un item
-            menu=gtk.Menu()
+            menu=Gtk.Menu()
             if obj_gp is not None:
                 if obj_gp.rep is not None:
-                    i=gtk.MenuItem(_("Zoom and center on linked items"))
+                    i=Gtk.MenuItem(_("Zoom and center on linked items"))
                     i.connect("activate", self.zoom_on, obj_gp)
                     menu.append(i)
                 obj = objt = None
@@ -957,14 +952,14 @@ class TraceTimeline(AdhocView):
                 if obj_gp.cobj['cid'] is not None:
                     objt = self.controller.package.get_element_by_id(obj_gp.cobj['cid'])
                 if obj is not None:
-                    i=gtk.MenuItem(_("Edit item"))
+                    i=Gtk.MenuItem(_("Edit item"))
                     i.connect("activate", self.edit_item, obj)
                     menu.append(i)
                 elif objt is not None:
-                    i=gtk.MenuItem(_("Recreate item"))
+                    i=Gtk.MenuItem(_("Recreate item"))
                     i.connect("activate", self.recreate_item, obj_gp)
                     menu.append(i)
-                m = gtk.Menu()
+                m = Gtk.Menu()
                 mt= []
 
                 if obj_gp.operation.movietime not in mt:
@@ -974,18 +969,18 @@ class TraceTimeline(AdhocView):
                     else:
                         n = ECACatalog.event_names[obj_gp.operation.name]
                     mt.append(obj_gp.operation.movietime)
-                    i = gtk.MenuItem("%s (%s)" % (time.strftime("%H:%M:%S", time.gmtime(obj_gp.operation.movietime/1000)), n))
+                    i = Gtk.MenuItem("%s (%s)" % (time.strftime("%H:%M:%S", time.gmtime(obj_gp.operation.movietime/1000)), n))
                     i.connect("activate", self.goto, obj_gp.operation.movietime)
                     m.append(i)
-                i=gtk.MenuItem(_("Go to..."))
+                i=Gtk.MenuItem(_("Go to..."))
                 i.set_submenu(m)
                 menu.append(i)
             if evt_gp is not None:
-                i=gtk.MenuItem(_("Zoom on action"))
+                i=Gtk.MenuItem(_("Zoom on action"))
                 i.connect("activate", self.zoom_on, evt_gp)
                 menu.append(i)
                 if obj_gp is None:
-                    m = gtk.Menu()
+                    m = Gtk.Menu()
                     mt= []
                     for op in evt_gp.event.operations:
                         if op.movietime not in mt:
@@ -995,14 +990,14 @@ class TraceTimeline(AdhocView):
                             else:
                                 n = ECACatalog.event_names[op.name]
                             mt.append(op.movietime)
-                            i = gtk.MenuItem("%s (%s)" % (time.strftime("%H:%M:%S", time.gmtime(op.movietime/1000)), n))
+                            i = Gtk.MenuItem("%s (%s)" % (time.strftime("%H:%M:%S", time.gmtime(op.movietime/1000)), n))
                             i.connect("activate", self.goto, op.movietime)
                             m.append(i)
-                    i=gtk.MenuItem(_("Go to..."))
+                    i=Gtk.MenuItem(_("Go to..."))
                     i.set_submenu(m)
                     menu.append(i)
             menu.show_all()
-            menu.popup(None, None, None, ev.button, ev.time)
+            menu.popup_at_pointer(None)
         elif ev.button == 1:
             if obj_gp is not None:
                 self.toggle_lock(w=obj_gp)
@@ -1068,12 +1063,12 @@ class TraceTimeline(AdhocView):
             else:
                tinc=self.timemarks[0].get_child(0).get_bounds().y1
             t=self.timemarks[-1].get_child(0).get_bounds().y1+tinc
-        ld = goocanvas.LineDash([5.0, 20.0])
+        ld = GooCanvas.LineDash([5.0, 20.0])
         while t < self.canvasY:
             #print self.start_time, t, t*self.timefactor
             txt = time.strftime("%H:%M:%S",time.localtime(self.start_time+t*self.timefactor))
-            mgroup = goocanvas.Group(parent=self.canvas.get_root_item())
-            a=goocanvas.polyline_new_line(mgroup,
+            mgroup = GooCanvas.Group(parent=self.canvas.get_root_item())
+            a=GooCanvas.polyline_new_line(mgroup,
                                         0,
                                         t,
                                         self.canvasX,
@@ -1081,22 +1076,22 @@ class TraceTimeline(AdhocView):
                                         line_dash=ld,
                                         line_width = 0.2)
             a.props.tooltip=txt
-            a=goocanvas.Text(parent = mgroup,
+            a=GooCanvas.Text(parent = mgroup,
                         text = txt,
                         x = 0,
                         y = t-5,
                         width = -1,
-                        anchor = gtk.ANCHOR_W,
+                        anchor = Gtk.ANCHOR_W,
                         fill_color_rgba=0x121212FF,
                         font = "Sans 7")
             a.props.tooltip=txt
-            a=goocanvas.Text(parent = mgroup,
+            a=GooCanvas.Text(parent = mgroup,
                         text = txt,
                         x = self.canvasX-4,
                         y = t-5,
                         width = -1,
                         fill_color_rgba=0x121212FF,
-                        anchor = gtk.ANCHOR_E,
+                        anchor = Gtk.ANCHOR_E,
                         font = "Sans 7")
             a.props.tooltip=txt
             self.timemarks.append(mgroup)
@@ -1118,7 +1113,7 @@ class TraceTimeline(AdhocView):
         """
         offset = 0
         for c in self.tracer.tracemodel['actions']:
-            etgroup = HeadGroup(self.controller, self.head_canvas, c, (self.colspacing+self.col_width)*offset, 0, self.col_width, 8, gdk2intrgba(gtk.gdk.color_parse(self.tracer.colormodel['actions'][c])))
+            etgroup = HeadGroup(self.controller, self.head_canvas, c, (self.colspacing+self.col_width)*offset, 0, self.col_width, 8, gdk2intrgba(Gdk.color_parse(self.tracer.colormodel['actions'][c])))
             (og, oa) = self.cols[c]
             self.cols[c]=(etgroup, oa)
             offset += 1
@@ -1162,7 +1157,7 @@ class TraceTimeline(AdhocView):
         if self.links_locked:
             self.toggle_lock()
             self.inspector.clean()
-        self.widget.get_parent_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
+        self.widget.get_parent_window().set_cursor(Gdk.Cursor.new(Gdk.CursorType.WATCH))
         root=self.canvas.get_root_item()
         while root.get_n_children()>0:
             c = root.get_child(0)
@@ -1172,7 +1167,7 @@ class TraceTimeline(AdhocView):
         for c in self.cols:
             h,l = self.cols[c]
             self.cols[c]=(h,None)
-        self.now_line = goocanvas.polyline_new_line(root,
+        self.now_line = GooCanvas.polyline_new_line(root,
                                         0,
                                         self.canvasY-1,
                                         self.canvasX,
@@ -1190,11 +1185,11 @@ class TraceTimeline(AdhocView):
         self.draw_marks()
         if center:
             va=self.sw.get_vadjustment()
-            va.value = center/self.timefactor-va.page_size/2.0
+            va.value = center/self.timefactor-va.get_page_size()/2.0
             if va.value<va.lower:
                 va.value=va.lower
-            elif va.value>va.upper-va.page_size:
-                va.value=va.upper-va.page_size
+            elif va.value>va.get_upper()-va.get_page_size():
+                va.value=va.get_upper()-va.get_page_size()
         self.context_update_time()
         self.widget.get_parent_window().set_cursor(None)
         #print "----------------REFRESH END-----------------"
@@ -1270,7 +1265,6 @@ class TraceTimeline(AdhocView):
             oldlength = b.y2-b.y1
             #calculating new length
             newlength = float(action.time[1]-action.time[0])/self.timefactor
-            ratio = newlength/oldlength
             if b.y1+newlength >= self.canvasY-1:
                 #need to expand canvas
                 self.canvasY = b.y1+newlength+1
@@ -1301,7 +1295,7 @@ class TraceTimeline(AdhocView):
         self.canvas.show()
         if self.autoscroll:
             a = self.sw.get_vadjustment()
-            a.value=a.upper-a.page_size
+            a.set_value(a.get_upper()-a.get_page_size())
         if l and l.event == action:
             self.context_update_line(action)
         else:
@@ -1373,7 +1367,7 @@ class TraceTimeline(AdhocView):
             while n < root.get_n_children():
                 l=root.get_child(n)
                 n+=1
-                if isinstance(l,goocanvas.Polyline):
+                if isinstance(l,GooCanvas.Polyline):
                     l.props.y *= ratio
                     l.props.height *= ratio
         self.context_update_sel_frame()
@@ -1389,7 +1383,7 @@ class TraceTimeline(AdhocView):
         y2 = float(action.time[1]-self.active_trace.start)*self.context_canvasY/(self.context_t_max-self.active_trace.start)
         (i,color,line)=self.context_cols[action.name]
         x = 3+2*i
-        l = goocanvas.polyline_new_line(self.context_canvas.get_root_item(),
+        l = GooCanvas.polyline_new_line(self.context_canvas.get_root_item(),
                                         x,
                                         y1,
                                         x,
@@ -1416,7 +1410,7 @@ class TraceTimeline(AdhocView):
         """Draw the selection frame on context canvas, corresponding to what is displayed in the trace timeline
         """
         #refresh canvas bounds
-        self.context_frame = goocanvas.Rect (parent = self.context_canvas.get_root_item(),
+        self.context_frame = GooCanvas.Rect (parent = self.context_canvas.get_root_item(),
                                     x = 0,
                                     y = 0,
                                     width = self.context_canvasX,
@@ -1444,11 +1438,11 @@ class TraceTimeline(AdhocView):
         return
 
 
-class HeadGroup (Group):
+class HeadGroup (CanvasGroup):
     """Group containing a rectangle and a name used to display headers.
     """
     def __init__(self, controller=None, canvas=None, name="N/A", x = 5, y=0, w=90, fontsize=14, color_c=0x00ffff50):
-        Group.__init__(self, parent = canvas.get_root_item ())
+        CanvasGroup.__init__(self, parent = canvas.get_root_item ())
         self.controller=controller
         #self.name=name[0:2]
         self.name=name[0:5]
@@ -1456,7 +1450,7 @@ class HeadGroup (Group):
         self.color_s = "black"
         self.color_c = color_c
         self.fontsize=fontsize
-        self.rect = goocanvas.Rect (parent = self,
+        self.rect = GooCanvas.Rect (parent = self,
                                     x = x,
                                     y = y,
                                     width = self.w,
@@ -1464,12 +1458,12 @@ class HeadGroup (Group):
                                     fill_color_rgba = 0xFFFFFF00,
                                     stroke_color = 0xFFFFFF00,
                                     line_width = 0)
-        self.text = goocanvas.Text (parent = self,
+        self.text = GooCanvas.Text (parent = self,
                                         text = self.name,
                                         x = x+w/2,
                                         y = y+15,
                                         width = -1,
-                                        anchor = gtk.ANCHOR_CENTER,
+                                        anchor = Gtk.ANCHOR_CENTER,
                                         font = "Sans Bold %s" % str(self.fontsize))
 
         def change_name(self, name):
@@ -1491,11 +1485,11 @@ class HeadGroup (Group):
             self.text.props.font="%s %s" % (font, str(self.fontsize))
             return
 
-class EventGroup (Group):
+class EventGroup (CanvasGroup):
     """Group containing a rectangle, commentmarks and ObjGroups used to display an action
     """
     def __init__(self, link_mode=0, controller=None, inspector=None, canvas=None, dg=None, type=None, event=None, x =0, y=0, l=1, w=90, ol=5, fontsize=6, color_c=0x00ffffff, blocked=False):
-        Group.__init__(self, parent = canvas.get_root_item ())
+        CanvasGroup.__init__(self, parent = canvas.get_root_item ())
         self.canvas = canvas
         self.controller=controller
         self.inspector = inspector
@@ -1541,10 +1535,10 @@ class EventGroup (Group):
         @type color_c: number
         @param color_c: fill color rgba
 
-        @rtype: goocanvas.Rect
+        @rtype: GooCanvas.Rect
         @return: the new rect
         """
-        return goocanvas.Rect (parent = self,
+        return GooCanvas.Rect (parent = self,
                                     x = self.x,
                                     y = self.y,
                                     width = self.w,
@@ -1600,7 +1594,6 @@ class EventGroup (Group):
         """
         w = self.rect.props.width
         l = self.rect.props.height
-        c_sel = None
         if l < 10:
             #not enough space
             for c in self.objs:
@@ -1696,9 +1689,9 @@ class EventGroup (Group):
         """Add comment mark to this group if it has a comment
         """
         if not self.commentMark:
-            pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                         ( ('pixmaps', 'traces', 'msg.png')), 16, 16)
-            self.commentMark = goocanvas.Image(parent=self,
+            self.commentMark = GooCanvas.Image(parent=self,
                                                 width=16,
                                                 height=16,
                                                 x=self.x,
@@ -1707,11 +1700,11 @@ class EventGroup (Group):
         self.commentMark.props.tooltip=self.event.comment
 
 
-class ObjGroup (Group):
+class ObjGroup (CanvasGroup):
     """Group used to display informations on an operation
     """
     def __init__(self, link_mode=0, controller=None, inspector=None, canvas=None, dg=None, x=0, y=0, r=4, fontsize=5, op=None, blocked=False):
-        Group.__init__(self, parent = canvas.get_root_item ())
+        CanvasGroup.__init__(self, parent = canvas.get_root_item ())
         self.controller=controller
         self.rep = None
         self.text = None
@@ -1737,7 +1730,7 @@ class ObjGroup (Group):
             temp_it = self.controller.package.get_element_by_id(self.cobj['id'])
             temp_c = self.controller.get_element_color(temp_it)
             if temp_c is not None:
-                self.color_f = gdk2intrgba(gtk.gdk.color_parse(temp_c))
+                self.color_f = gdk2intrgba(Gdk.color_parse(temp_c))
             self.rep = self.newRep()
             self.text = self.newText()
         self.oprep = self.newOpRep()
@@ -1763,7 +1756,7 @@ class ObjGroup (Group):
             self.rep.props.center_x = self.x +3* self.r + 3
             self.rep.props.radius_x = self.r
             self.rep.props.radius_y = self.r
-        #move icon, cannot modify directly goocanvas.Image pixbuf property ... stretching ?
+        #move icon, cannot modify directly GooCanvas.Image pixbuf property ... stretching ?
         if self.oprep:
             #~ self.oprep.props.y = self.y +3
             #~ self.oprep.props.x = self.x
@@ -1870,8 +1863,8 @@ class ObjGroup (Group):
                     #this is an eventgroup
                     x1=g.rect.props.x+g.rect.props.width/2.0
                     y1=g.rect.props.y+g.rect.props.height
-                p = goocanvas.Points ([(x0, y0), (x1,y1)])
-                self.lines.append(goocanvas.Polyline (parent = self,
+                p = GooCanvas.Points ([(x0, y0), (x1,y1)])
+                self.lines.append(GooCanvas.Polyline (parent = self,
                                   close_path = False,
                                   points = p,
                                   stroke_color = 0xFFFFFFFF,
@@ -1895,8 +1888,8 @@ class ObjGroup (Group):
                     dic[g.operation.time]=(g.rep.props.center_x, g.rep.props.center_y)
             ks = dic.keys()
             ks.sort()
-            p=goocanvas.Points([dic[k] for k in ks])
-            self.lines.append(goocanvas.Polyline (parent = self,
+            p=GooCanvas.Points([dic[k] for k in ks])
+            self.lines.append(GooCanvas.Polyline (parent = self,
                                 close_path = False,
                                 points = p,
                                 stroke_color = 0xFFFFFFFF,
@@ -1941,53 +1934,53 @@ class ObjGroup (Group):
     def newOpRep(self):
         """Change icon representing operation.
 
-        @rtype: goocanvas.Image
+        @rtype: GooCanvas.Image
         @return: the newly created image
         """
         #BIG HACK to display icon
         te = self.operation.name
         if te.find('Edit')>=0:
             if te.find('Start')>=0:
-                pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     (( 'pixmaps', 'traces', 'edition.png')), int(2*self.r), int(2*self.r))
             elif te.find('End')>=0 or te.find('Destroy')>=0:
-                pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     (( 'pixmaps', 'traces', 'finedition.png')), int(2*self.r), int(2*self.r))
         elif te.find('Creat')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     (( 'pixmaps', 'traces', 'plus.png')), int(2*self.r), int(2*self.r))
         elif te.find('Delet')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     (( 'pixmaps', 'traces', 'moins.png')), int(2*self.r), int(2*self.r))
         elif te.find('Set')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     ( ('pixmaps', 'traces', 'allera.png')), int(2*self.r), int(2*self.r))
         elif te.find('Start')>=0 or te.find('Resume')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     ( ('pixmaps', 'traces', 'lecture.png')), int(2*self.r), int(2*self.r))
         elif te.find('Pause')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     ( ('pixmaps', 'traces', 'pause.png')), int(2*self.r), int(2*self.r))
         elif te.find('Stop')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     ( ('pixmaps', 'traces', 'stop.png')), int(2*self.r), int(2*self.r))
         elif te.find('Activation')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     ( ('pixmaps', 'traces', 'web.png')), int(2*self.r), int(2*self.r))
         else:
-            pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     ( ('pixmaps', 'traces', 'error.png')), int(2*self.r), int(2*self.r))
             print 'No icon for %s' % te
-        return goocanvas.Image(parent=self, width=int(2*self.r),height=int(2*self.r),x=self.x,y=self.y+3,pixbuf=pb)
+        return GooCanvas.Image(parent=self, width=int(2*self.r),height=int(2*self.r),x=self.x,y=self.y+3,pixbuf=pb)
 
 
     def newRep(self):
         """Create an advene object representation (ellipse).
 
-        @rtype: goocanvas.Ellipse
+        @rtype: GooCanvas.Ellipse
         @return: the newly created ellipse
         """
-        return goocanvas.Ellipse(parent=self,
+        return GooCanvas.Ellipse(parent=self,
                         center_x=self.x + 3*self.r + 3,
                         center_y=self.y+self.r + 3,
                         radius_x=self.r,
@@ -1999,7 +1992,7 @@ class ObjGroup (Group):
     def newText(self):
         """ Create a new text representation of the advene object
 
-        @rtype: goocanvas.Text
+        @rtype: GooCanvas.Text
         @return: the newly created text
         """
         txt = 'U'
@@ -2009,66 +2002,67 @@ class ObjGroup (Group):
             self.cobj['type']=type(o)
             #print self.type
         txt = TYPE_ABREVIATION[self.cobj['type']]
-        return goocanvas.Text (parent = self,
+        return GooCanvas.Text (parent = self,
                         text = txt,
                         x = self.x + 3 * self.r + 3,
                         y = self.y + self.r + 3,
                         width = -1,
-                        anchor = gtk.ANCHOR_CENTER,
+                        anchor = Gtk.ANCHOR_CENTER,
                         font = "Sans %s" % str(self.fontsize))
 
 
-class Inspector (gtk.VBox):
+class Inspector (Gtk.VBox):
     """Inspector component to display informations concerning items and actions in the timeline
     """
     def __init__ (self, controller=None):
-        gtk.VBox.__init__(self)
+        GObject.GObject.__init__(self)
         self.action=None
         self.item=None
         self.controller=controller
         self.tracer = self.controller.tracers[0]
-        self.pack_start(gtk.Label(_('Inspector')), expand=False)
-        self.pack_start(gtk.HSeparator(), expand=False)
-        self.inspector_id = gtk.Label('')
-        self.pack_start(self.inspector_id, expand=False)
+        self.pack_start(Gtk.Label(_('Inspector')), False, False, 0)
+        self.pack_start(Gtk.HSeparator(), False, False, 0)
+        self.inspector_id = Gtk.Label(label='')
+        self.pack_start(self.inspector_id, False, True, 0)
         self.inspector_id.set_alignment(0, 0.5)
         self.inspector_id.set_tooltip_text(_('Item Id'))
-        self.inspector_type = gtk.Label('')
-        self.pack_start(self.inspector_type, expand=False)
+        self.inspector_type = Gtk.Label(label='')
+        self.pack_start(self.inspector_type, False, True, 0)
         self.inspector_type.set_tooltip_text(_('Item name or class'))
         self.inspector_type.set_alignment(0, 0.5)
-        self.inspector_name = gtk.Label('')
-        self.pack_start(self.inspector_name, expand=False)
+        self.inspector_name = Gtk.Label(label='')
+        self.pack_start(self.inspector_name, False, True, 0)
         self.inspector_name.set_tooltip_text(_('Type or schema'))
         self.inspector_name.set_alignment(0, 0.5)
-        self.pack_start(gtk.HSeparator(), expand=False)
-        self.pack_start(gtk.Label(_('Operations')), expand=False)
-        self.pack_start(gtk.HSeparator(), expand=False)
-        opscwin = gtk.ScrolledWindow ()
-        opscwin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        self.pack_start(Gtk.HSeparator(), False, False, 0)
+        self.pack_start(Gtk.Label(_('Operations')), False, False, 0)
+        self.pack_start(Gtk.HSeparator(), False, False, 0)
+        opscwin = Gtk.ScrolledWindow ()
+        opscwin.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         opscwin.set_border_width(0)
-        self.inspector_opes= gtk.VBox()
+        self.inspector_opes= Gtk.VBox()
         opscwin.add_with_viewport(self.inspector_opes)
-        self.pack_start(opscwin, expand=True)
-        self.commentBox = gtk.VBox()
-        self.comment=gtk.Entry()
-        save_btn=gtk.Button()
-        img = gtk.Image()
+        self.pack_start(opscwin, True, True, 0)
+        self.commentBox = Gtk.VBox()
+        self.comment=Gtk.Entry()
+        save_btn=Gtk.Button()
+        img = Gtk.Image()
         img.set_from_file(config.data.advenefile( ( 'pixmaps', 'traces', 'msg_add.png') ))
         save_btn.add(img)
         def save_clicked(w):
             """Save comment in the trace
             """
             if self.action:
-                self.action.event.change_comment(unicode(self.comment.get_text()))
-                if unicode(self.comment.get_text()) != '':
+                comment = self.comment.get_text().decode('utf-8')
+                self.action.event.change_comment(comment)
+                if comment != '':
                     self.action.addCommentMark()
                 else:
                     self.action.removeCommentMark()
 
         save_btn.connect('clicked', save_clicked)
-        clear_btn=gtk.Button()
-        img = gtk.Image()
+        clear_btn=Gtk.Button()
+        img = Gtk.Image()
         img.set_from_file(config.data.advenefile( ( 'pixmaps', 'traces', 'msg_del.png') ))
         clear_btn.add(img)
         def clear_clicked(w):
@@ -2078,15 +2072,15 @@ class Inspector (gtk.VBox):
             save_clicked(w)
 
         clear_btn.connect('clicked', clear_clicked)
-        btns = gtk.HBox()
-        btns.pack_start(save_btn, expand=False)
-        btns.pack_start(clear_btn, expand=False)
-        self.commentBox.pack_end(btns, expand=False)
-        self.commentBox.pack_end(self.comment, expand=False)
-        self.commentBox.pack_end(gtk.HSeparator(), expand=False)
-        self.commentBox.pack_end(gtk.Label(_('Comment')), expand=False)
-        self.commentBox.pack_end(gtk.HSeparator(), expand=False)
-        self.pack_end(self.commentBox, expand=False)
+        btns = Gtk.HBox()
+        btns.pack_start(save_btn, False, True, 0)
+        btns.pack_start(clear_btn, False, True, 0)
+        self.commentBox.pack_end(btns, False, True, 0)
+        self.commentBox.pack_end(self.comment, False, True, 0)
+        self.commentBox.pack_end(Gtk.HSeparator(), False, False, 0)
+        self.commentBox.pack_end(Gtk.Label(_('Comment')), False, False, 0)
+        self.commentBox.pack_end(Gtk.HSeparator(), False, False, 0)
+        self.pack_end(self.commentBox, False, True, 0)
         self.clean()
 
     def fillWithItem(self, item):
@@ -2119,7 +2113,7 @@ class Inspector (gtk.VBox):
         self.inspector_id.set_text(_('Action'))
         self.inspector_name.set_text('')
         self.inspector_type.set_text(action.event.name)
-        self.pack_end(self.commentBox, expand=False)
+        self.pack_end(self.commentBox, False, True, 0)
         self.comment.set_text(action.event.comment)
         self.addOperations(action.event.operations, op)
         self.show_all()
@@ -2146,7 +2140,7 @@ class Inspector (gtk.VBox):
         for o in op_list:
             l = self.addOperation(o, o==op_sel)
             l.set_size_request(-1, 20)
-            self.inspector_opes.pack_start(l, expand=False)
+            self.inspector_opes.pack_start(l, False, True, 0)
 
     def addOperation(self, obj_evt=None, sel=False):
         """Build a box to display an operation
@@ -2178,51 +2172,51 @@ class Inspector (gtk.VBox):
                 entetestr = entetestr + ' %s' % poss[1]
             else:
                 entetestr = entetestr + ' %s' % poss[0]
-        entete = gtk.Label(ev_time.encode("UTF-8"))
-        hb = gtk.HBox()
+        entete = Gtk.Label(label=ev_time.encode("UTF-8"))
+        hb = Gtk.HBox()
 
-        #hb.pack_start(entete, expand=False)
-        objcanvas = goocanvas.Canvas()
+        #hb.pack_start(entete, False, True, 0)
+        objcanvas = GooCanvas.Canvas()
         objcanvas.set_bounds (0,0,60,20)
         #BIG HACK to display icon
         te = obj_evt.name
         if te.find('Edit')>=0:
             if te.find('Start')>=0:
-                pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                     (( 'pixmaps', 'traces', 'edition.png')))
             elif te.find('End')>=0 or te.find('Destroy')>=0:
-                pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+                pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                     (( 'pixmaps', 'traces', 'finedition.png')))
         elif te.find('Creat')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                     (( 'pixmaps', 'traces', 'plus.png')))
         elif te.find('Delet')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                     (( 'pixmaps', 'traces', 'moins.png')))
         elif te.find('Set')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                     ( ('pixmaps', 'traces', 'allera.png')))
         elif te.find('Start')>=0 or te.find('Resume')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                     ( ('pixmaps', 'traces', 'lecture.png')))
         elif te.find('Pause')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                     ( ('pixmaps', 'traces', 'pause.png')))
         elif te.find('Stop')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile
                     ( ('pixmaps', 'traces', 'stop.png')))
         elif te.find('Activation')>=0:
-            pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     ( ('pixmaps', 'traces', 'web.png')), 20,20)
         else:
-            pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
+            pb = GdkPixbuf.Pixbuf.new_from_file_at_size(config.data.advenefile
                     ( ('pixmaps', 'traces', 'error.png')), 20,20)
             print 'No icon for %s' % te
-        goocanvas.Image(parent=objcanvas.get_root_item(), width=20,height=20,x=0,y=0,pixbuf=pb)
+        GooCanvas.Image(parent=objcanvas.get_root_item(), width=20,height=20,x=0,y=0,pixbuf=pb)
         # object icon
-        objg = goocanvas.Group(parent = objcanvas.get_root_item ())
+        objg = CanvasGroup(parent = objcanvas.get_root_item ())
         if sel:
-            goocanvas.Rect(parent=objg,
+            GooCanvas.Rect(parent=objg,
                             x=0,
                             y=0,
                             width=60,
@@ -2234,10 +2228,10 @@ class Inspector (gtk.VBox):
             ob = self.controller.package.get_element_by_id(obj_evt.concerned_object['id'])
             temp_c = self.controller.get_element_color(ob)
             if temp_c is not None:
-                temp_c = gdk2intrgba(gtk.gdk.color_parse(temp_c))
+                temp_c = gdk2intrgba(Gdk.color_parse(temp_c))
             else:
                 temp_c = 0xFFFFFFFF
-            goocanvas.Ellipse(parent=objg,
+            GooCanvas.Ellipse(parent=objg,
                     center_x=40,
                     center_y=10,
                     radius_x=9,
@@ -2246,12 +2240,12 @@ class Inspector (gtk.VBox):
                     fill_color_rgba=temp_c,
                     line_width=1.0)
             txt = TYPE_ABREVIATION[obj_evt.concerned_object['type']]
-            goocanvas.Text (parent = objg,
+            GooCanvas.Text (parent = objg,
                     text = txt,
                     x = 40,
                     y = 10,
                     width = -1,
-                    anchor = gtk.ANCHOR_CENTER,
+                    anchor = Gtk.ANCHOR_CENTER,
                     font = "Sans 5")
         else:
             # no concerned object, we are in an action of navigation
@@ -2266,17 +2260,17 @@ class Inspector (gtk.VBox):
                     txt=poss[0]
             else:
                 txt = time.strftime("%H:%M:%S", time.gmtime(obj_evt.movietime/1000))
-            goocanvas.Text (parent = objg,
+            GooCanvas.Text (parent = objg,
                     text = txt,
                     x = 40,
                     y = 10,
                     width = -1,
-                    anchor = gtk.ANCHOR_CENTER,
+                    anchor = Gtk.ANCHOR_CENTER,
                     font = "Sans 7")
         cm = objcanvas.get_colormap()
         color = cm.alloc_color('#FFFFFF')
         if obj_evt.name in self.tracer.colormodel['operations']:
-            color = gtk.gdk.color_parse(self.tracer.colormodel['operations'][obj_evt.name])
+            color = Gdk.color_parse(self.tracer.colormodel['operations'][obj_evt.name])
         elif self.tracer.modelmapping['operations']:
             for k in self.tracer.modelmapping['operations']:
                 if obj_evt.name in self.tracer.modelmapping['operations'][k]:
@@ -2284,7 +2278,7 @@ class Inspector (gtk.VBox):
                     if x >=0:
                         kn = self.tracer.tracemodel[k][x]
                         if kn in self.tracer.colormodel[k]:
-                            color = gtk.gdk.color_parse(self.tracer.colormodel[k][kn])
+                            color = Gdk.color_parse(self.tracer.colormodel[k][kn])
                             break
                     else:
                         #BIG HACK, FIXME
@@ -2303,23 +2297,23 @@ class Inspector (gtk.VBox):
                                 if x >=0:
                                     kn = self.tracer.tracemodel[k][x]
                                     if kn in self.tracer.colormodel[k]:
-                                        color = gtk.gdk.color_parse(self.tracer.colormodel[k][kn])
+                                        color = Gdk.color_parse(self.tracer.colormodel[k][kn])
                                         break
-        objcanvas.modify_base (gtk.STATE_NORMAL, color)
+        objcanvas.modify_base (Gtk.StateType.NORMAL, color)
         objcanvas.set_size_request(60,20)
         if corpsstr != "":
             objcanvas.set_tooltip_text(corpsstr)
         if entetestr != "":
             entete.set_tooltip_text(entetestr)
 
-        box = gtk.EventBox()
+        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
             """
-            if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+            if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
                 if id is not None:
                     obj = self.controller.package.get_element_by_id(id)
                     if obj is not None:
@@ -2330,8 +2324,8 @@ class Inspector (gtk.VBox):
         box.add(entete)
         box.connect('button-press-event', box_pressed, obj_evt.concerned_object['id'])
         objcanvas.connect('button-press-event', box_pressed, obj_evt.concerned_object['id'])
-        hb.pack_start(box, expand=False)
-        hb.pack_end(objcanvas, expand=False)
+        hb.pack_start(box, False, True, 0)
+        hb.pack_end(objcanvas, False, True, 0)
         return hb
 
     def clean(self):
@@ -2348,11 +2342,11 @@ class Inspector (gtk.VBox):
         self.comment.set_text('')
         self.show_all()
 
-class DocGroup (Group):
+class DocGroup (CanvasGroup):
     """Group used to display a representation of the movie
     """
     def __init__(self, controller=None, canvas=None, name="N/A", x =10, y=10, w=80, h=20, fontsize=14, color_c=0x00000050):
-        Group.__init__(self, parent = canvas.get_root_item ())
+        CanvasGroup.__init__(self, parent = canvas.get_root_item ())
         self.controller=controller
         self.canvas=canvas
         self.name=name
@@ -2378,10 +2372,10 @@ class DocGroup (Group):
     def newRect(self):
         """Create a new rectangle to represent the movie.
 
-        @rtype: goocanvas.Rect
+        @rtype: GooCanvas.Rect
         @return: a new rectangle
         """
-        return goocanvas.Rect (parent = self,
+        return GooCanvas.Rect (parent = self,
                                     x = self.x,
                                     y = self.y,
                                     width = self.w,
@@ -2397,16 +2391,16 @@ class DocGroup (Group):
         if nbmax > 3:
             nbmax = 3
         #timestamp 0
-        self.timemarks.append(goocanvas.Text (parent = self,
+        self.timemarks.append(GooCanvas.Text (parent = self,
                                 text = time.strftime("%H:%M:%S", time.gmtime(0)),
                                 x = self.x,
                                 y = self.y+self.h+7,
                                 fill_color = self.color_c,
                                 width = -1,
-                                anchor = gtk.ANCHOR_CENTER,
+                                anchor = Gtk.ANCHOR_CENTER,
                                 font = "Sans 6"))
-        p = goocanvas.Points ([(self.x, self.y+self.h), (self.x, self.y+self.h+2)])
-        self.timemarks.append(goocanvas.Polyline (parent = self,
+        p = GooCanvas.Points ([(self.x, self.y+self.h), (self.x, self.y+self.h+2)])
+        self.timemarks.append(GooCanvas.Polyline (parent = self,
                                         close_path = False,
                                         points = p,
                                         stroke_color_rgba = self.color_c,
@@ -2415,16 +2409,16 @@ class DocGroup (Group):
                                         end_arrow = False
                                         ))
         #timestamp fin
-        self.timemarks.append(goocanvas.Text (parent = self,
+        self.timemarks.append(GooCanvas.Text (parent = self,
                                 text = time.strftime("%H:%M:%S", time.gmtime(self.movielength/1000)),
                                 x = self.x+self.w,
                                 y = self.y+self.h+7,
                                 fill_color = self.color_c,
                                 width = -1,
-                                anchor = gtk.ANCHOR_CENTER,
+                                anchor = Gtk.ANCHOR_CENTER,
                                 font = "Sans 6"))
-        p = goocanvas.Points ([(self.x+self.w, self.y+self.h), (self.x+self.w, self.y+self.h+2)])
-        self.timemarks.append(goocanvas.Polyline (parent = self,
+        p = GooCanvas.Points ([(self.x+self.w, self.y+self.h), (self.x+self.w, self.y+self.h+2)])
+        self.timemarks.append(GooCanvas.Polyline (parent = self,
                                         close_path = False,
                                         points = p,
                                         stroke_color_rgba = self.color_c,
@@ -2440,16 +2434,16 @@ class DocGroup (Group):
         #1-3 timestamps intermediaires
         for i in range(0, nbmax+1):
             rap = 1.0 * i / (nbmax+1)
-            self.timemarks.append(goocanvas.Text (parent = self,
+            self.timemarks.append(GooCanvas.Text (parent = self,
                                 text = time.strftime("%H:%M:%S", time.gmtime(sec * rap)),
                                 x = self.x + self.w * rap,
                                 y = self.y+self.h+7,
                                 fill_color = self.color_c,
                                 width = -1,
-                                anchor = gtk.ANCHOR_CENTER,
+                                anchor = Gtk.ANCHOR_CENTER,
                                 font = "Sans 6"))
-            p = goocanvas.Points ([(self.x + self.w * rap, self.y+self.h), (self.x + self.w * rap, self.y+self.h+2)])
-            self.timemarks.append(goocanvas.Polyline (parent = self,
+            p = GooCanvas.Points ([(self.x + self.w * rap, self.y+self.h), (self.x + self.w * rap, self.y+self.h+2)])
+            self.timemarks.append(GooCanvas.Polyline (parent = self,
                                         close_path = False,
                                         points = p,
                                         stroke_color_rgba = self.color_c,
@@ -2501,7 +2495,7 @@ class DocGroup (Group):
             #print "%s %s %s" % (action.name, ACTIONS.index(action.name), color)
             for op in action.operations:
                 self.addMark(op.movietime,
-                             gdk2intrgba(gtk.gdk.color_parse(self.tracer.colormodel['actions'][action.name])))
+                             gdk2intrgba(Gdk.color_parse(self.tracer.colormodel['actions'][action.name])))
         elif obj is not None:
             self.addMark(obj.operation.movietime, 0xD9D919FF)
 
@@ -2519,8 +2513,8 @@ class DocGroup (Group):
         x2 = x+offset
         y2=self.rect.get_bounds().y1
         y1=y2-offset
-        p = goocanvas.Points ([(x1, y1), (x, y2), (x2, y1)])
-        l = goocanvas.Polyline (parent = self,
+        p = GooCanvas.Points ([(x1, y1), (x, y2), (x2, y1)])
+        l = GooCanvas.Polyline (parent = self,
                                         close_path = False,
                                         points = p,
                                         stroke_color_rgba = color,
@@ -2558,9 +2552,9 @@ class DocGroup (Group):
         x=self.rect.get_bounds().x1 + self.w * time / self.movielength
         y1=self.rect.get_bounds().y1 - offset
         y2=self.rect.get_bounds().y2 + offset
-        p = goocanvas.Points ([(x, y1), (x, y2)])
-        #ld = goocanvas.LineDash([3.0, 3.0])
-        l = goocanvas.Polyline (parent = self,
+        p = GooCanvas.Points ([(x, y1), (x, y2)])
+        #ld = GooCanvas.LineDash([3.0, 3.0])
+        l = GooCanvas.Polyline (parent = self,
                                         close_path = False,
                                         points = p,
                                         stroke_color_rgba = color,
diff --git a/lib/advene/gui/plugins/videoplayer.py b/lib/advene/gui/plugins/videoplayer.py
index d558032..c26c49d 100644
--- a/lib/advene/gui/plugins/videoplayer.py
+++ b/lib/advene/gui/plugins/videoplayer.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,8 +18,9 @@
 #
 
 from gettext import gettext as _
-import gtk
-import pango
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import Pango
 import os
 
 import advene.core.config as config
@@ -185,12 +186,12 @@ class VideoPlayer(AdhocView):
     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') ]
+            sources = [ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_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)
+            data = decode_drop_parameters(selection.get_data())
             refTime = long(data['timestamp'])
         if refTime is not None:
             self.set_offset(refTime - self.controller.player.current_position_value)
@@ -201,37 +202,37 @@ class VideoPlayer(AdhocView):
         """
         if self.player is None:
             return None
-        w=gtk.Window()
-        d=gtk.Socket()
+        w=Gtk.Window()
+        d=Gtk.Socket()
         w.add(d)
         w.show_all()
         self.player.set_visual(d.get_id())
         return w
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
         self.player = self.controller.playerfactory.get_player()
 
         self.player.sound_mute()
 
-        self.drawable=gtk.Socket()
+        self.drawable=Gtk.Socket()
         def handle_remove(socket):
             # Do not kill the widget if the application exits
             return True
         self.drawable.connect('plug-removed', handle_remove)
 
-        black=gtk.gdk.Color(0, 0, 0)
-        for state in (gtk.STATE_ACTIVE, gtk.STATE_NORMAL,
-                      gtk.STATE_SELECTED, gtk.STATE_INSENSITIVE,
-                      gtk.STATE_PRELIGHT):
+        black=Gdk.Color(0, 0, 0)
+        for state in (Gtk.StateType.ACTIVE, Gtk.StateType.NORMAL,
+                      Gtk.StateType.SELECTED, Gtk.StateType.INSENSITIVE,
+                      Gtk.StateType.PRELIGHT):
             self.drawable.modify_bg (state, black)
 
         self.drawable.set_size_request(320, 200)
 
 
-        self.toolbar=gtk.Toolbar()
-        self.toolbar.set_style(gtk.TOOLBAR_ICONS)
+        self.toolbar=Gtk.Toolbar()
+        self.toolbar.set_style(Gtk.ToolbarStyle.ICONS)
 
         # Append the volume control to the toolbar
         def volume_change(scale, value):
@@ -239,14 +240,14 @@ class VideoPlayer(AdhocView):
                 self.player.sound_set_volume(int(value * 100))
             return True
 
-        self.audio_volume = gtk.VolumeButton()
+        self.audio_volume = Gtk.VolumeButton()
         self.audio_volume.set_value(self.player.sound_get_volume() / 100.0)
-        ti = gtk.ToolItem()
+        ti = Gtk.ToolItem()
         ti.add(self.audio_volume)
         self.audio_volume.connect('value-changed', volume_change)
         self.toolbar.insert(ti, -1)
 
-        sync_button=gtk.ToolButton(gtk.STOCK_CONNECT)
+        sync_button=Gtk.ToolButton(Gtk.STOCK_CONNECT)
         sync_button.set_tooltip_text(_("Synchronize"))
         sync_button.connect('clicked', self.synchronize)
         self.toolbar.insert(sync_button, -1)
@@ -255,54 +256,55 @@ class VideoPlayer(AdhocView):
             self.offset = long(spin.get_value())
             return True
 
-        ti = gtk.ToolItem()
-        self.offset_spin = gtk.SpinButton(gtk.Adjustment(value = self.offset,
-                                                         lower = - 24 * 60 * 60 * 1000,
-                                                         upper =   24 * 60 * 60 * 1000,
-                                                         step_incr = 1000 / config.data.preferences['default-fps'],
-                                                         page_incr = 1000))
+        ti = Gtk.ToolItem()
+        self.offset_spin = Gtk.SpinButton.new(Gtk.Adjustment.new(self.offset,
+                                                                 - 24 * 60 * 60 * 1000,
+                                                                 24 * 60 * 60 * 1000,
+                                                                 1000 / config.data.preferences['default-fps'],
+                                                                 1000,
+                                                                 500),
+                                              1000, 0)
         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 = Gtk.Label()
         self.label.set_alignment(0, 0)
-        self.label.modify_font(pango.FontDescription("sans 10"))
+        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()
+        # 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()
+        black=Gdk.color_parse('black')
+        white=Gdk.color_parse('white')
+        eb=Gtk.EventBox()
         eb.add(self.label)
-        for state in (gtk.STATE_ACTIVE, gtk.STATE_NORMAL,
-                      gtk.STATE_SELECTED, gtk.STATE_INSENSITIVE,
-                      gtk.STATE_PRELIGHT):
+        for state in (Gtk.StateType.ACTIVE, Gtk.StateType.NORMAL,
+                      Gtk.StateType.SELECTED, Gtk.StateType.INSENSITIVE,
+                      Gtk.StateType.PRELIGHT):
             self.label.modify_bg(state, black)
             eb.modify_bg(state, black)
             self.label.modify_fg(state, white)
 
         vbox.add(self.drawable)
-        vbox.pack_start(eb, expand=False)
-        vbox.pack_start(self.toolbar, expand=False)
+        vbox.pack_start(eb, False, True, 0)
+        vbox.pack_start(self.toolbar, False, True, 0)
 
         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.drag_dest_set(Gtk.DestDefaults.MOTION |
+                           Gtk.DestDefaults.HIGHLIGHT |
+                           Gtk.DestDefaults.ALL,
+                           config.data.get_target_types('annotation', 'timestamp'),
+                           Gdk.DragAction.COPY | Gdk.DragAction.LINK | Gdk.DragAction.MOVE)
 
         vbox.show_all()
         return vbox
diff --git a/lib/advene/gui/popup.py b/lib/advene/gui/popup.py
index 2b673a5..ac1dc0b 100644
--- a/lib/advene/gui/popup.py
+++ b/lib/advene/gui/popup.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,7 +21,7 @@
 Generic popup menu used by the various Advene views.
 """
 
-import gtk
+from gi.repository import Gtk
 import re
 import os
 
@@ -38,7 +38,7 @@ from advene.model.query import Query
 
 from advene.rules.elements import RuleSet, Rule, Event, Condition, Action
 
-from advene.gui.util import image_from_position, dialog
+from advene.gui.util import image_from_position, dialog, get_clipboard
 import advene.util.helper as helper
 import advene.util.importer
 
@@ -50,7 +50,7 @@ class Menu:
         self.menu=self.make_base_menu(element)
 
     def popup(self):
-        self.menu.popup(None, None, None, 0, gtk.get_current_event_time())
+        self.menu.popup_at_pointer(None)
         return True
 
     def get_title (self, element):
@@ -170,11 +170,8 @@ class Menu:
         self.controller.gui.edit_element(el)
         return True
 
-    def nerd_service(self, widget, annotationtype):
-        # Relatively ugly hack becase the Importer GUI API does not
-        # allow to specify default parameters easily.
-        config.data.preferences['nerd-annotation-type'] = annotationtype.id
-        v = self.controller.gui.open_adhoc_view('importerview', filename='http://nerd.eurecom.fr/', message=_("Named-Entity extraction using NERD"), display_unlikely=False)
+    def filter_service(self, widget, importer, annotationtype):
+        self.controller.gui.open_adhoc_view('importerview', message=_("Apply %s") % importer.name, display_unlikely=False, importerclass=importer, annotation_type=annotationtype)
 
     def popup_get_offset(self):
         offset=dialog.entry_dialog(title='Enter an offset',
@@ -233,8 +230,8 @@ class Menu:
         return True
 
     def copy_id (self, widget, el):
-        clip=gtk.clipboard_get()
-        clip.set_text(el.id)
+        clip = get_clipboard()
+        clip.set_text(el.id, -1)
         return True
 
     def browse_element (self, widget, el):
@@ -290,9 +287,9 @@ class Menu:
 
     def add_menuitem(self, menu=None, item=None, action=None, *param, **kw):
         if item is None or item == "":
-            i = gtk.SeparatorMenuItem()
+            i = Gtk.SeparatorMenuItem()
         else:
-            i = gtk.MenuItem(item, use_underline=False)
+            i = Gtk.MenuItem(item, use_underline=False)
         if action is not None:
             i.connect('activate', action, *param, **kw)
         menu.append(i)
@@ -305,9 +302,9 @@ class Menu:
         @type element: an Advene element
 
         @return: the built menu
-        @rtype: gtk.Menu
+        @rtype: Gtk.Menu
         """
-        menu = gtk.Menu()
+        menu = Gtk.Menu()
 
         def add_item(*p, **kw):
             return self.add_menuitem(menu, *p, **kw)
@@ -361,34 +358,34 @@ class Menu:
     def renumber_annotations(self, m, at):
         """Renumber all annotations of a given type.
         """
-        d = gtk.Dialog(title=_("Renumbering annotations of type %s") % self.get_title(at),
-                       parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-                                 gtk.STOCK_OK, gtk.RESPONSE_OK,
+        d = Gtk.Dialog(title=_("Renumbering annotations of type %s") % self.get_title(at),
+                       parent=self.controller.gui.gui.win,
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+                                 Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                  ))
-        l=gtk.Label()
+        l=Gtk.Label()
         l.set_markup(_("<b>Renumber all annotations according to their order.</b>\n\n<i>Note that this action cannot be undone.</i>\nReplace the first numeric value of the annotation content with the new annotation number.\nIf no numeric value is found and the annotation is structured, it will insert the number.\nIf no numeric value is found and the annotation is of type text/plain, it will overwrite the annotation content.\nThe offset parameter allows you to renumber from a given annotation."))
         l.set_line_wrap(True)
         l.show()
         d.vbox.add(l)
 
-        hb=gtk.HBox()
-        l=gtk.Label(_("Offset"))
-        hb.pack_start(l, expand=False)
-        s=gtk.SpinButton()
-        s.set_range(1, len(at.annotations))
+        hb=Gtk.HBox()
+        l=Gtk.Label(label=_("Offset"))
+        hb.pack_start(l, False, True, 0)
+        s=Gtk.SpinButton()
+        s.set_range(-5, len(at.annotations))
         s.set_value(1)
         s.set_increments(1, 5)
         hb.add(s)
-        d.vbox.pack_start(hb, expand=False)
+        d.vbox.pack_start(hb, False, True, 0)
 
         d.connect('key-press-event', dialog.dialog_keypressed_cb)
         d.show_all()
         dialog.center_on_mouse(d)
 
         res=d.run()
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             re_number=re.compile('(\d+)')
             re_struct=re.compile('^num=(\d+)$', re.MULTILINE)
             offset=s.get_value_as_int() - 1
@@ -396,19 +393,19 @@ class Menu:
             l.sort(key=lambda a: a.fragment.begin)
             l=l[offset:]
             size=float(len(l))
-            dial=gtk.Dialog(_("Renumbering %d annotations") % size,
-                           None,
-                           gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
-                           (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
-            prg=gtk.ProgressBar()
-            dial.vbox.pack_start(prg, expand=False)
+            dial=Gtk.Dialog(_("Renumbering %d annotations") % size,
+                           self.controller.gui.gui.win,
+                           Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                           (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL))
+            prg=Gtk.ProgressBar()
+            dial.vbox.pack_start(prg, False, True, 0)
             dial.show_all()
 
             for i, a in enumerate(l[offset:]):
                 prg.set_text(_("Annotation #%d") % i)
                 prg.set_fraction( i / size )
-                while gtk.events_pending():
-                    gtk.main_iteration()
+                while Gtk.events_pending():
+                    Gtk.main_iteration()
 
                 if a.type.mimetype == 'application/x-advene-structured':
                     if re_struct.search(a.content.data):
@@ -448,7 +445,7 @@ class Menu:
     def common_submenu(self, element):
         """Build the common submenu for all elements.
         """
-        submenu=gtk.Menu()
+        submenu=Gtk.Menu()
         def add_item(*p, **kw):
             self.add_menuitem(submenu, *p, **kw)
 
@@ -489,7 +486,7 @@ class Menu:
 
     def activate_submenu(self, element):
         """Build an "activate" submenu for the given annotation"""
-        submenu=gtk.Menu()
+        submenu=Gtk.Menu()
         def add_item(*p, **kw):
             self.add_menuitem(submenu, *p, **kw)
 
@@ -513,7 +510,7 @@ class Menu:
         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 = Gtk.MenuItem(_("Highlight"), use_underline=False)
         item.set_submenu(self.activate_submenu(element))
         menu.append(item)
         add_item(_("Save snapshot..."), save_snapshot, element)
@@ -534,7 +531,7 @@ class Menu:
                     submenu.append(c)
             else:
                 for i in items:
-                    item=gtk.MenuItem(self.get_title(i), use_underline=False)
+                    item=Gtk.MenuItem(self.get_title(i), use_underline=False)
                     m=Menu(element=i, controller=self.controller)
                     item.set_submenu(m.menu)
                     submenu.append(item)
@@ -548,30 +545,30 @@ class Menu:
                 # The submenu was already populated.
                 return False
             if el.incomingRelations:
-                i=gtk.MenuItem(_("Incoming"))
+                i=Gtk.MenuItem(_("Incoming"))
                 submenu.append(i)
-                i=gtk.SeparatorMenuItem()
+                i=Gtk.SeparatorMenuItem()
                 submenu.append(i)
                 for t, l in el.typedRelatedIn.iteritems():
                     at=self.controller.package.get_element_by_id(t)
-                    m=gtk.MenuItem(self.get_title(at), use_underline=False)
-                    amenu=gtk.Menu()
+                    m=Gtk.MenuItem(self.get_title(at), use_underline=False)
+                    amenu=Gtk.Menu()
                     m.set_submenu(amenu)
                     amenu.connect('map', build_submenu, at, l)
                     submenu.append(m)
             if submenu.get_children():
                 # There were incoming annotations. Use a separator
-                i=gtk.SeparatorMenuItem()
+                i=Gtk.SeparatorMenuItem()
                 submenu.append(i)
             if el.outgoingRelations:
-                i=gtk.MenuItem(_("Outgoing"))
+                i=Gtk.MenuItem(_("Outgoing"))
                 submenu.append(i)
-                i=gtk.SeparatorMenuItem()
+                i=Gtk.SeparatorMenuItem()
                 submenu.append(i)
                 for t, l in el.typedRelatedOut.iteritems():
                     at=self.controller.package.get_element_by_id(t)
-                    m=gtk.MenuItem(self.get_title(at), use_underline=False)
-                    amenu=gtk.Menu()
+                    m=Gtk.MenuItem(self.get_title(at), use_underline=False)
+                    amenu=Gtk.Menu()
                     m.set_submenu(amenu)
                     amenu.connect('map', build_submenu, at, l)
                     submenu.append(m)
@@ -579,29 +576,29 @@ class Menu:
             return False
 
         if element.relations:
-            i=gtk.MenuItem(_("Related annotations"), use_underline=False)
-            submenu=gtk.Menu()
+            i=Gtk.MenuItem(_("Related annotations"), use_underline=False)
+            submenu=Gtk.Menu()
             i.set_submenu(submenu)
             submenu.connect('map', build_related, element)
             menu.append(i)
 
             if element.incomingRelations:
-                i=gtk.MenuItem(_("Incoming relations"), use_underline=False)
-                submenu=gtk.Menu()
+                i=Gtk.MenuItem(_("Incoming relations"), use_underline=False)
+                submenu=Gtk.Menu()
                 i.set_submenu(submenu)
                 submenu.connect('map', build_submenu, element, element.incomingRelations)
                 menu.append(i)
 
             if element.outgoingRelations:
-                i=gtk.MenuItem(_("Outgoing relations"), use_underline=False)
-                submenu=gtk.Menu()
+                i=Gtk.MenuItem(_("Outgoing relations"), use_underline=False)
+                submenu=Gtk.Menu()
                 i.set_submenu(submenu)
                 submenu.connect('map', build_submenu, element, element.outgoingRelations)
                 menu.append(i)
 
         add_item("")
 
-        item = gtk.MenuItem()
+        item = Gtk.MenuItem()
         item.add(image_from_position(self.controller,
                                      position=element.fragment.begin,
                                      height=60))
@@ -621,7 +618,7 @@ class Menu:
         add_item(element.content.data)
         add_item(_('Members:'))
         for a in element.members:
-            item=gtk.MenuItem(self.get_title(a), use_underline=False)
+            item=Gtk.MenuItem(self.get_title(a), use_underline=False)
             m=Menu(element=a, controller=self.controller)
             item.set_submenu(m.menu)
             menu.append(item)
@@ -740,10 +737,10 @@ class Menu:
         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(_('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(_('Display annotations in table'), lambda i: self.controller.gui.open_adhoc_view('table', elements=element.annotations, source='here/annotationTypes/%s/annotations' % element.id))
         add_item(_('Export to another format...'), lambda i: self.controller.gui.export_element(element))
-        if [ i for i in advene.util.importer.IMPORTERS if 'NERD' in i.name ]:
-            add_item(_('Extract Named Entities...'), self.nerd_service, element)
+        for imp in [ i for i in advene.util.importer.IMPORTERS if hasattr(i, 'annotation_filter') ]:
+            add_item(_("Apply %s..." % imp.name), self.filter_service, imp, element)
         if self.readonly:
             return
         add_item(None)
@@ -821,16 +818,16 @@ class Menu:
                 self.controller.log(_('Exception in query: %s') % unicode(e))
             return True
 
-        m=gtk.MenuItem(_('Apply query on...'))
+        m=Gtk.MenuItem(_('Apply query on...'))
         menu.append(m)
-        sm=gtk.Menu()
+        sm=Gtk.Menu()
         m.set_submenu(sm)
         for (expr, label) in (
              ('package', _('the package')),
              ('package/annotations', _('all annotations of the package')),
              ('package/annotations/first', _('the first annotation of the package')),
             ):
-            i=gtk.MenuItem(label)
+            i=Gtk.MenuItem(label)
             i.connect('activate', try_query, expr)
             sm.append(i)
         return
diff --git a/lib/advene/gui/util/__init__.py b/lib/advene/gui/util/__init__.py
index b01be20..8152264 100644
--- a/lib/advene/gui/util/__init__.py
+++ b/lib/advene/gui/util/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,11 +18,16 @@
 #
 """GUI helper methods.
 """
+import logging
+logger = logging.getLogger(__name__)
 
 from gettext import gettext as _
 
-import gtk
-import gobject
+from gi.repository import Gdk
+from gi.repository import GdkPixbuf
+from gi.repository import Gtk
+from gi.repository import GObject
+
 import urlparse
 import urllib
 import StringIO
@@ -43,46 +48,48 @@ predefined_content_mimetypes=[
     ('image/svg+xml', _("SVG graphics content")),
     ]
 
-if hasattr(gtk, 'image_new_from_pixbuf'):
-    image_new_from_pixbuf=gtk.image_new_from_pixbuf
-else:
-    def my_image_new_from_pixbuf(pb, width=None):
-        i=gtk.Image()
-        if width:
-            height = width * pb.get_height() / pb.get_width()
-            p=pb.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR)
-        else:
-            p=pb
-        i.set_from_pixbuf(p)
-        return i
-    image_new_from_pixbuf=my_image_new_from_pixbuf
+if not hasattr(Gtk.Menu, 'popup_at_pointer'):
+    # Monkey patch Gtk.Menu (popup_at_pointer is available only in Gtk >= 3.22)
+    def popup_at_pointer(widget, event):
+        widget.popup(None, None, None, None, 0, Gtk.get_current_event_time())
+    Gtk.Menu.popup_at_pointer = popup_at_pointer
+
+def image_new_from_pixbuf(pb, width=None):
+    i=Gtk.Image()
+    if width:
+        height = width * pb.get_height() / pb.get_width()
+        p=pb.scale_simple(width, height, GdkPixbuf.InterpType.BILINEAR)
+    else:
+        p=pb
+    i.set_from_pixbuf(p)
+    return i
 
 def png_to_pixbuf (png_data, width=None, height=None):
     """Load PNG data into a pixbuf
     """
-    loader = gtk.gdk.PixbufLoader ('png')
+    loader = GdkPixbuf.PixbufLoader.new_with_type('png')
     if not isinstance(png_data, str):
         png_data=str(png_data)
     try:
-        loader.write (png_data, len (png_data))
+        loader.write(png_data)
         pixbuf = loader.get_pixbuf ()
         loader.close ()
-    except gobject.GError:
+    except GObject.GError:
         # The PNG data was invalid.
-        pixbuf=gtk.gdk.pixbuf_new_from_file(config.data.advenefile( ( 'pixmaps', 'notavailable.png' ) ))
+        pixbuf=GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile( ( 'pixmaps', 'notavailable.png' ) ))
 
     if width and not height:
         height = width * pixbuf.get_height() / pixbuf.get_width()
     if height and not width:
         width = height * pixbuf.get_width() / pixbuf.get_height()
     if width and height:
-        p=pixbuf.scale_simple(width, height, gtk.gdk.INTERP_BILINEAR)
+        p=pixbuf.scale_simple(width, height, GdkPixbuf.InterpType.BILINEAR)
         return p
     else:
         return pixbuf
 
 def image_from_position(controller, position=None, width=None, height=None, epsilon=None):
-    i=gtk.Image()
+    i=Gtk.Image()
     if position is None:
         position=controller.player.current_position_value
     pb=png_to_pixbuf (controller.package.imagecache.get(position, epsilon), width=width, height=height)
@@ -103,32 +110,32 @@ def overlay_svg_as_pixbuf(png_data, svg_data, width=None, height=None):
 """ % svg_data
 
     try:
-        loader = gtk.gdk.PixbufLoader('svg')
+        loader = GdkPixbuf.PixbufLoader.new_with_type('svg')
     except Exception, e:
         print "Unable to load the SVG pixbuf loader: ", str(e)
         loader=None
     if loader is not None:
         try:
-            loader.write(svg_data)
+            loader.write(svg_data.encode('utf-8'))
             loader.close ()
             p = loader.get_pixbuf ()
             w = p.get_width()
             h = p.get_height()
-            pixbuf=png_to_pixbuf (png_data).scale_simple(w, h, gtk.gdk.INTERP_BILINEAR)
-            p.composite(pixbuf, 0, 0, w, h, 0, 0, 1.0, 1.0, gtk.gdk.INTERP_BILINEAR, 255)
-        except gobject.GError, e:
+            pixbuf=png_to_pixbuf (png_data).scale_simple(w, h, GdkPixbuf.InterpType.BILINEAR)
+            p.composite(pixbuf, 0, 0, w, h, 0, 0, 1.0, 1.0, GdkPixbuf.InterpType.BILINEAR, 255)
+        except GObject.GError, e:
             # The PNG data was invalid.
             print "Invalid image data", e
-            pixbuf=gtk.gdk.pixbuf_new_from_file(config.data.advenefile( ( 'pixmaps', 'notavailable.png' ) ))
+            pixbuf=GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile( ( 'pixmaps', 'notavailable.png' ) ))
     else:
-        pixbuf=gtk.gdk.pixbuf_new_from_file(config.data.advenefile( ( 'pixmaps', 'notavailable.png' ) ))
+        pixbuf=GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile( ( 'pixmaps', 'notavailable.png' ) ))
 
     if width and not height:
         height = 1.0 * width * pixbuf.get_height() / pixbuf.get_width()
     if height and not width:
         width = 1.0 * height * pixbuf.get_width() / pixbuf.get_height()
     if width and height:
-        p=pixbuf.scale_simple(int(width), int(height), gtk.gdk.INTERP_BILINEAR)
+        p=pixbuf.scale_simple(int(width), int(height), GdkPixbuf.InterpType.BILINEAR)
         return p
     return pixbuf
 
@@ -142,15 +149,15 @@ def overlay_svg_as_png(png_data, svg_data):
     return s.getvalue()
 
 def get_small_stock_button(sid, callback=None, *p):
-    b=gtk.Button()
-    b.add(gtk.image_new_from_stock(sid, gtk.ICON_SIZE_SMALL_TOOLBAR))
+    b=Gtk.Button()
+    b.add(Gtk.Image.new_from_stock(sid, Gtk.IconSize.SMALL_TOOLBAR))
     if callback:
         b.connect('clicked', callback, *p)
     return b
 
 def get_pixmap_button(pixmap, callback=None, *p):
-    b=gtk.Button()
-    i=gtk.Image()
+    b=Gtk.Button()
+    i=Gtk.Image()
     i.set_from_file(config.data.advenefile( ( 'pixmaps', pixmap) ))
     b.add(i)
     i.show()
@@ -161,11 +168,11 @@ def get_pixmap_button(pixmap, callback=None, *p):
 def get_pixmap_toolbutton(pixmap, callback=None, *p):
     if pixmap.startswith('gtk-'):
         # Stock-id
-        b=gtk.ToolButton(pixmap)
+        b=Gtk.ToolButton(pixmap)
     else:
-        i=gtk.Image()
+        i=Gtk.Image()
         i.set_from_file(config.data.advenefile( ( 'pixmaps', pixmap) ))
-        b=gtk.ToolButton(icon_widget=i)
+        b=Gtk.ToolButton(icon_widget=i)
         i.show()
     if callback:
         b.connect('clicked', callback, *p)
@@ -176,7 +183,7 @@ color_cache={}
 def name2color(color):
     """Return the gtk color for the given color name or code.
     """
-    if isinstance(color, gtk.gdk.Color):
+    if isinstance(color, Gdk.Color):
         gtk_color = color
     elif color:
         # Found a color. Cache it.
@@ -184,7 +191,7 @@ def name2color(color):
             gtk_color=color_cache[color]
         except KeyError:
             try:
-                color_cache[color]=gtk.gdk.color_parse(color)
+                color_cache[color]=Gdk.color_parse(color)
             except (TypeError, ValueError):
                 print "Unable to parse ", color
                 color_cache[color]=None
@@ -193,80 +200,6 @@ def name2color(color):
         gtk_color=None
     return gtk_color
 
-def get_color_style(w, background=None, foreground=None):
-    """Return a style for a widget with given colors.
-    """
-    if background is None:
-        background='white'
-    if foreground is None:
-        foreground='black'
-    b=name2color(background)
-    f=name2color(foreground)
-
-    style=w.get_style().copy()
-    for state in (gtk.STATE_ACTIVE, gtk.STATE_NORMAL,
-                  gtk.STATE_SELECTED, gtk.STATE_INSENSITIVE,
-                  gtk.STATE_PRELIGHT):
-        style.bg[state]=b
-        style.fg[state]=f
-        style.text[state]=f
-        #style.base[state]=white
-    return style
-
-arrow_up_xpm="""13 16 2 1
-       c None
-.      c #FF0000
-      .
-     ...
-    .....
-   .......
-  .........
- ...........
-.............
-     ...
-     ...
-     ...
-     ...
-     ...
-     ...
-     ...
-     ...
-     ...
-""".splitlines()
-
-arrow_right_xpm="""16 13 2 1
-. c None
-# c #ff0000
-................
-..........#.....
-..........##....
-..........###...
-..........####..
-###############.
-################
-###############.
-..........####..
-..........###...
-..........##....
-..........#.....
-................""".splitlines()
-
-
-def shaped_window_from_xpm(xpm):
-    # Code adapted from evolution/widgets/table/e-table-header-item.c
-    pixbuf = gtk.gdk.pixbuf_new_from_xpm_data(xpm)
-    pixmap, bitmap = pixbuf.render_pixmap_and_mask()
-
-    gtk.widget_push_colormap(gtk.gdk.rgb_get_colormap())
-    win = gtk.Window(gtk.WINDOW_POPUP)
-    pix = gtk.Image()
-    pix.set_from_pixmap(pixmap, bitmap)
-    win.realize()
-    win.add(pix)
-    win.shape_combine_mask(bitmap, 0, 0)
-    gtk.widget_pop_colormap()
-    return win
-
 def encode_drop_parameters(**kw):
     """Encode the given parameters as drop parameters.
 
@@ -292,42 +225,43 @@ def get_target_types(el):
     """
     targets = []
     if isinstance(el, Annotation):
-        targets.extend(config.data.drag_type['annotation']
-                       + config.data.drag_type['timestamp']
-                       + config.data.drag_type['tag'])
+        targets.extend(config.data.get_target_types('annotation', 'timestamp', 'tag'))
     elif isinstance(el, Relation):
-        targets.extend(config.data.drag_type['relation'])
+        targets.extend(config.data.get_target_types('relation'))
     elif isinstance(el, View):
         if helper.get_view_type(el) == 'adhoc':
-            targets.extend(config.data.drag_type['adhoc-view'])
+            targets.extend(config.data.get_target_types('adhoc-view'))
         else:
-            targets.extend(config.data.drag_type['view'])
+            targets.extend(config.data.get_target_types('view'))
     elif isinstance(el, AnnotationType):
-        targets.extend(config.data.drag_type['annotation-type'])
+        targets.extend(config.data.get_target_types('annotation-type'))
     elif isinstance(el, RelationType):
-        targets.extend(config.data.drag_type['relation-type'])
+        targets.extend(config.data.get_target_types('relation-type'))
     elif isinstance(el, Query):
-        targets.extend(config.data.drag_type['query'])
+        targets.extend(config.data.get_target_types('query'))
     elif isinstance(el, Schema):
-        targets.extend(config.data.drag_type['schema'])
+        targets.extend(config.data.get_target_types('schema'))
     elif isinstance(el, (int, long)):
-        targets.extend(config.data.drag_type['timestamp'])
+        targets.extend(config.data.get_target_types('timestamp'))
     # FIXME: Resource
 
-    targets.extend(config.data.drag_type['uri-list']
-                   + config.data.drag_type['text-plain']
-                   + config.data.drag_type['TEXT']
-                   + config.data.drag_type['STRING'])
+    targets.extend(config.data.get_target_types('uri-list',
+                                                'text-plain',
+                                                'TEXT',
+                                                'STRING'))
     return targets
 
 def drag_data_get_cb(widget, context, selection, targetType, timestamp, controller):
     """Generic drag-data-get handler.
 
+    It is used by the origin widget of a drag action, when the
+    destination widget queries for the DND data.
+
     Usage information:
     this method must be connected passing the controller as user data:
       widget.connect('drag-data-get', drag_data_get_cb, controller)
 
-    and the context must has a _element attribute (defined in a
+    and the context must have a _element attribute (defined in a
     'drag-begin' handler for instance).
     """
     typ=config.data.target_type
@@ -338,10 +272,10 @@ def drag_data_get_cb(widget, context, selection, targetType, timestamp, controll
         widgets = widget.container.get_selected_annotation_widgets()
         if not widget in widgets:
             widgets = None
-    except AttributeError:
+    except (AttributeError, RuntimeError):
+        logger.error("Cannot get_selected_annotation_widgets", exc_info=True)
         widgets=None
 
-
     d={ typ['annotation']: Annotation,
         typ['annotation-type']: AnnotationType,
         typ['relation']: Relation,
@@ -354,38 +288,38 @@ def drag_data_get_cb(widget, context, selection, targetType, timestamp, controll
         if not isinstance(el, d[targetType]):
             return False
         if widgets:
-            selection.set(selection.target, 8, "\n".join( w.annotation.uri for w in widgets ).encode('utf8'))
+            selection.set(selection.get_target(), 8, "\n".join( w.annotation.uri for w in widgets ).encode('utf8'))
         else:
-            selection.set(selection.target, 8, el.uri.encode('utf8'))
+            selection.set(selection.get_target(), 8, el.uri.encode('utf8'))
         return True
     elif targetType == typ['adhoc-view']:
         if helper.get_view_type(el) != 'adhoc':
             return False
-        selection.set(selection.target, 8, encode_drop_parameters(id=el.id))
+        selection.set(selection.get_target(), 8, encode_drop_parameters(id=el.id))
         return True
     elif targetType == typ['uri-list']:
 
         if widgets:
-            selection.set(selection.target, 8, "\n".join( controller.build_context(here=w.annotation.uri).evaluateValue('here/absolute_url') for w in widgets ).encode('utf8'))
+            selection.set(selection.get_target(), 8, "\n".join( controller.build_context(here=w.annotation).evaluateValue('here/absolute_url') for w in widgets ).encode('utf8'))
         else:
             try:
                 uri=controller.build_context(here=el).evaluateValue('here/absolute_url')
             except:
                 uri="No URI for " + unicode(el)
-            selection.set(selection.target, 8, uri.encode('utf8'))
+            selection.set(selection.get_target(), 8, uri.encode('utf8'))
     elif targetType == typ['timestamp']:
         if isinstance(el, (int, long)):
-            selection.set(selection.target, 8, encode_drop_parameters(timestamp=el))
+            selection.set(selection.get_target(), 8, encode_drop_parameters(timestamp=el))
         elif isinstance(el, Annotation):
-            selection.set(selection.target, 8, encode_drop_parameters(timestamp=el.fragment.begin,
+            selection.set(selection.get_target(), 8, encode_drop_parameters(timestamp=el.fragment.begin,
                                                                       comment=controller.get_title(el)))
         else:
             print "Inconsistent DND target"
         return True
     elif targetType in (typ['text-plain'], typ['STRING']):
-        selection.set(selection.target, 8, controller.get_title(el).encode('utf8'))
+        selection.set(selection.get_target(), 8, controller.get_title(el).encode('utf8'))
     else:
-        print "Unknown target type for drag: %d" % targetType
+        logger.warn("Unknown target type for drag: %d" % targetType)
     return True
 
 def contextual_drag_begin(widget, context, element, controller):
@@ -398,24 +332,22 @@ def contextual_drag_begin(widget, context, element, controller):
             return False
 
     # set_icon_widget does not work on native Gtk on MacOS X
-    if config.data.os == 'darwin' and not os.environ.get('DISPLAY'):
-        return False
+    #if config.data.os == 'darwin' and not os.environ.get('DISPLAY'):
+    #    return False
     # set_icon_widget is broken ATM in recent gtk on win32.
-    elif config.data.os == 'win32':
-        return False
+    #elif config.data.os == 'win32':
+    #    return False
 
-    w=gtk.Window(gtk.WINDOW_POPUP)
+    w=Gtk.Window(Gtk.WindowType.POPUP)
     w.set_decorated(False)
+    w.get_style_context().add_class('advene_drag_icon')
 
-    bw_style=get_color_style(w, 'black', 'white')
-    w.set_style(bw_style)
-
-    v=gtk.VBox()
-    v.set_style(bw_style)
+    v=Gtk.VBox()
+    v.get_style_context().add_class('advene_drag_icon')
 
     def get_coloured_label(t, color=None):
-        l=gtk.Label()
-        #l.set_ellipsize(pango.ELLIPSIZE_END)
+        l=Gtk.Label()
+        #l.set_ellipsize(Pango.EllipsizeMode.END)
         if color is None:
             color='white'
         l.set_markup("""<span background="%s" foreground="black">%s</span>""" % (color, t.replace('<', '<')))
@@ -425,58 +357,56 @@ def contextual_drag_begin(widget, context, element, controller):
 
     if isinstance(element, (long, int)):
         begin=image_new_from_pixbuf(png_to_pixbuf (cache.get(element, epsilon=config.data.preferences['bookmark-snapshot-precision']), width=config.data.preferences['drag-snapshot-width']))
-        begin.set_style(bw_style)
+        begin.get_style_context().add_class('advene_drag_icon')
 
-        l=gtk.Label()
-        l.set_style(bw_style)
+        l=Gtk.Label()
         l.set_text(helper.format_time(element))
-        l.set_style(bw_style)
+        l.get_style_context().add_class('advene_drag_icon')
 
-        v.pack_start(begin, expand=False)
-        v.pack_start(l, expand=False)
-        w.set_style(bw_style)
+        v.pack_start(begin, False, True, 0)
+        v.pack_start(l, False, True, 0)
         w.set_size_request(long(1.5 * config.data.preferences['drag-snapshot-width']), -1)
     elif isinstance(element, Annotation):
         # Pictures HBox
-        h=gtk.HBox()
-        h.set_style(bw_style)
+        h=Gtk.HBox()
+        h.get_style_context().add_class('advene_drag_icon')
         begin=image_new_from_pixbuf(png_to_pixbuf (cache.get(element.fragment.begin), width=config.data.preferences['drag-snapshot-width']))
-        begin.set_style(bw_style)
-        h.pack_start(begin, expand=False)
+        begin.get_style_context().add_class('advene_drag_icon')
+        h.pack_start(begin, False, True, 0)
         # Padding
-        h.pack_start(gtk.HBox(), expand=True)
+        h.pack_start(Gtk.HBox(), True, True, 0)
         end=image_new_from_pixbuf(png_to_pixbuf (cache.get(element.fragment.end), width=config.data.preferences['drag-snapshot-width']))
-        end.set_style(bw_style)
-        h.pack_start(end, expand=False)
-        v.pack_start(h, expand=False)
+        end.get_style_context().add_class('advene_drag_icon')
+        h.pack_start(end, False, True, 0)
+        v.pack_start(h, False, True, 0)
 
         l=get_coloured_label(controller.get_title(element), controller.get_element_color(element))
-        l.set_style(bw_style)
-        v.pack_start(l, expand=False)
-        w.set_style(bw_style)
+        l.get_style_context().add_class('advene_drag_icon')
+        v.pack_start(l, False, True, 0)
+        w.get_style_context().add_class('advene_drag_icon')
         w.set_size_request(long(2.5 * config.data.preferences['drag-snapshot-width']), -1)
     elif isinstance(element, AnnotationType):
         l=get_coloured_label(_("Annotation Type %(title)s:\n%(count)s") % {
                 'title': controller.get_title(element),
                 'count': helper.format_element_name('annotation', len(element.annotations)),
                 }, controller.get_element_color(element))
-        v.pack_start(l, expand=False)
+        v.pack_start(l, False, True, 0)
     elif isinstance(element, RelationType):
         l=get_coloured_label(_("Relation Type %(title)s:\n%(count)s") % {
                 'title': controller.get_title(element),
                 'count': helper.format_element_name('relation', len(element.relations)),
                 }, controller.get_element_color(element))
-        v.pack_start(l, expand=False)
+        v.pack_start(l, False, True, 0)
     else:
         l=get_coloured_label("%s %s" % (helper.get_type(element),
                                         controller.get_title(element)),
                              controller.get_element_color(element))
-        v.pack_start(l, expand=False)
+        v.pack_start(l, False, True, 0)
 
     w.add(v)
     w.show_all()
     widget._icon=w
-    context.set_icon_widget(w, 0, 0)
+    Gtk.drag_set_icon_widget(context, w, 0, 0)
     return True
 
 def contextual_drag_end(widget, context):
@@ -498,15 +428,15 @@ def enable_drag_source(widget, element, controller):
     else:
         el=element
     # Generic support
-    widget.drag_source_set(gtk.gdk.BUTTON1_MASK,
+    widget.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
                            get_target_types(el),
-                           gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE )
+                           Gdk.DragAction.LINK | Gdk.DragAction.COPY | Gdk.DragAction.MOVE )
     widget.connect('drag-begin', contextual_drag_begin, element, controller)
     widget.connect('drag-end', contextual_drag_end)
     widget.connect('drag-data-get', drag_data_get_cb, controller)
 
 def gdk2intrgba(color, alpha=0xff):
-    """Convert a gdk.Color to int RGBA.
+    """Convert a Gdk.Color to int RGBA.
     """
     return ( (color.red >> 8) << 24) \
          | ( (color.green >> 8) << 16) \
@@ -514,8 +444,11 @@ def gdk2intrgba(color, alpha=0xff):
          | alpha
 
 def gdk2intrgb(color):
-    """Convert a gdk.Color to int RGB.
+    """Convert a Gdk.Color to int RGB.
     """
     return ( (color.red >> 8) << 16) \
          | ( (color.green >> 8) << 8) \
          | (color.blue >> 8)
+
+def get_clipboard():
+    return Gtk.Clipboard.get(Gdk.Atom.intern("CLIPBOARD", True))
diff --git a/lib/advene/gui/util/completer.py b/lib/advene/gui/util/completer.py
index 527f99e..cda11d9 100644
--- a/lib/advene/gui/util/completer.py
+++ b/lib/advene/gui/util/completer.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,13 +16,14 @@
 # along with Advene; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
-"""Autocomplete feature for gtk.TextView
+"""Autocomplete feature for Gtk.TextView
 
 This code is inspired and adapted from the Scribes project
 (http://scribes.sf.net/) - GPLv2
 """
 
-import gtk
+from gi.repository import Gtk
+from gi.repository import Gdk
 import re
 
 import advene.core.config as config
@@ -81,11 +82,12 @@ class Completer:
         return False
 
     def hide_completion_window(self, *p):
-        self.widget.hide_all()
+        self.widget.hide()
         self.is_visible=False
 
     def show_completion_window(self, *p):
-        width, height = self.treeview.size_request()
+        req = self.treeview.size_request()
+        width, height = req.width, req.height
         width += 24
         height += 24
         self.widget.resize(width, height)
@@ -108,7 +110,7 @@ class Completer:
     def get_cursor_textview_coordinates(self):
         rectangle=self.get_cursor_rectangle()
         # Get the cursor's window coordinates.
-        position = self.textview.buffer_to_window_coords(gtk.TEXT_WINDOW_TEXT, rectangle.x, rectangle.y)
+        position = self.textview.buffer_to_window_coords(Gtk.TextWindowType.TEXT, rectangle.x, rectangle.y)
         cursor_x = position[0]
         cursor_y = position[1]
         return cursor_x, cursor_y
@@ -132,18 +134,18 @@ class Completer:
         cursor_x, cursor_y = self.get_cursor_textview_coordinates()
         cursor_height = self.get_cursor_size()[1]
         # Get the text editor's textview coordinate and size.
-        window = self.textview.get_window(gtk.TEXT_WINDOW_TEXT)
-        rectangle = self.textview.get_visible_rect()
-        window_x, window_y = window.get_origin()
-        window_width, window_height = rectangle.width, rectangle.height
+        window = self.textview.get_window(Gtk.TextWindowType.TEXT)
+        origin = window.get_origin()
+        # Note: do not use origin.x/origin.y since it does not work on win32
+        window_x, window_y = origin[1], origin[2]
 
         # Determine where to position the completion window.
         position_x = window_x + cursor_x
         position_y = window_y + cursor_y + cursor_height
 
-        if position_x + width > gtk.gdk.screen_width():
+        if position_x + width > Gdk.Screen.width():
             position_x = window_x + cursor_x - width
-        if position_y + height > gtk.gdk.screen_height():
+        if position_y + height > Gdk.Screen.height():
             position_y = window_y + cursor_y - height
 
         #if not_(self.__signals_are_blocked):
@@ -175,14 +177,14 @@ class Completer:
         cursor_position=b.get_iter_at_mark(b.get_insert())
         word_start=cursor_position.copy()
         word_start.backward_word_start()
-        return unicode(word_start.get_text(cursor_position)), word_start, cursor_position
+        return word_start.get_text(cursor_position).decode('utf-8'), word_start, cursor_position
 
     def insert_word_completion(self, path):
         """Insert item selected in the completion window into the text editor's
         buffer.
 
         @param path: The selected row in the completion window.
-        @type path: A gtk.TreeRow object.
+        @type path: A Gtk.TreeRow object.
         """
         # Get the selected completion string.
         completion_string = self.model[path[0]][0].decode("utf8")
@@ -221,11 +223,11 @@ class Completer:
         if not self.is_visible:
             return False
 
-        if event.keyval in (gtk.keysyms.Tab, gtk.keysyms.Right, gtk.keysyms.Left,
-                            gtk.keysyms.Home, gtk.keysyms.End, gtk.keysyms.Insert,
-                            gtk.keysyms.Delete,
-                            gtk.keysyms.Page_Up, gtk.keysyms.Page_Down,
-                            gtk.keysyms.Escape):
+        if event.keyval in (Gdk.KEY_Tab, Gdk.KEY_Right, Gdk.KEY_Left,
+                            Gdk.KEY_Home, Gdk.KEY_End, Gdk.KEY_Insert,
+                            Gdk.KEY_Delete,
+                            Gdk.KEY_Page_Up, Gdk.KEY_Page_Down,
+                            Gdk.KEY_Escape):
             self.hide_completion_window()
             return True
 
@@ -239,11 +241,11 @@ class Completer:
             selection.select_path((0,))
             model, iterator = selection.get_selected()
         path = model.get_path(iterator)
-        if event.keyval == gtk.keysyms.Return:
+        if event.keyval == Gdk.KEY_Return:
             # Insert the selected item into the editor's buffer when the enter key
             # event is detected.
             self.treeview.row_activated(path, self.treeview.get_column(0))
-        elif event.keyval == gtk.keysyms.Up:
+        elif event.keyval == Gdk.KEY_Up:
             # If the up key is pressed check to see if the first row is selected.
             # If it is, select the last row. Otherwise, get the path to the row
             # above and select it.
@@ -254,7 +256,7 @@ class Completer:
             else:
                 selection.select_path((path[0] - 1, ))
                 self.treeview.scroll_to_cell((path[0] - 1, ))
-        elif event.keyval == gtk.keysyms.Down:
+        elif event.keyval == Gdk.KEY_Down:
             # Get the iterator of the next row.
             next_iterator = model.iter_next(iterator)
             # If the next row exists, select it, if not select the first row.
@@ -270,16 +272,16 @@ class Completer:
         return True
 
     def build_widget(self):
-        w=gtk.Window(gtk.WINDOW_POPUP)
+        w=Gtk.Window(Gtk.WindowType.POPUP)
 
-        w.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_MENU)
+        w.set_type_hint(Gdk.WindowTypeHint.MENU)
         #w.set_size_request(200, 200)
 
-        self.treeview=gtk.TreeView()
+        self.treeview=Gtk.TreeView()
 
-        self.model = gtk.ListStore(str)
-        renderer = gtk.CellRendererText()
-        col=gtk.TreeViewColumn("", renderer, text=0)
+        self.model = Gtk.ListStore(str)
+        renderer = Gtk.CellRendererText()
+        col=Gtk.TreeViewColumn("", renderer, text=0)
         col.set_expand(False)
 
         self.treeview.append_column(col)
@@ -296,13 +298,9 @@ class Completer:
             return True
         self.treeview.connect('row-activated', treeview_row_activated_cb)
 
-        style = self.textview.get_style()
-        color = style.base[gtk.STATE_SELECTED]
-        self.treeview.modify_base(gtk.STATE_ACTIVE, color)
-
-        scroll=gtk.ScrolledWindow()
+        scroll=Gtk.ScrolledWindow()
         scroll.add(self.treeview)
-        scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         scroll.set_border_width(2)
         w.add(scroll)
 
@@ -325,12 +323,17 @@ class Indexer:
             'views': set(),
             }
         self.regexp=re.compile(r'[^\w\d_]+', re.UNICODE)
-        self.size_limit=4
+        self.alt_regexp = re.compile(r'\s*,\s*', re.UNICODE)
+        self.size_limit = 4
 
     def get_words(self, s):
         """Return the list of indexable words from the given string.
         """
-        return [ w for w in self.regexp.split(s) if len(w) >= self.size_limit ]
+        if ',' in s:
+            regexp = self.alt_regexp
+        else:
+            regexp = self.regexp
+        return [ w for w in regexp.split(s) if len(w) >= self.size_limit ]
 
     def initialize(self):
         """Initialize the indexer on package load.
@@ -387,17 +390,25 @@ class Indexer:
         in the annotation of the same type. If it is a view,
         completions will be searched for in other views.
 
-        If element is a gtk.TextBuffer, completions will be searched
+        If element is a Gtk.TextBuffer, completions will be searched
         in its content.
         """
         if isinstance(context, View):
             s=self.index['views']
             # FIXME: maybe add ids (annotation-types, relations-types, views)
         elif isinstance(context, Annotation):
-            s=self.index.get(context.type.id, [])
-        elif isinstance(context, gtk.TextBuffer):
+            s = []
+            if config.data.preferences['completion-predefined-only']:
+                terms = context.type.getMetaData(config.data.namespace, "completions")
+                if terms:
+                    s = self.get_words(terms)
+            if not s:
+                # No predefined completion anyway
+                s = self.index.get(context.type.id, [])
+        elif isinstance(context, Gtk.TextBuffer):
             # The replace clause transforms the timestamp placeholders into spaces.
-            s=set(self.get_words(unicode(context.get_slice(*context.get_bounds()).replace('\xef\xbf\xbc', ' '))))
+            args = context.get_bounds() + (False, )
+            s=set(self.get_words(unicode(context.get_slice(*args).replace('\xef\xbf\xbc', ' '))))
             s.update(self.index['views'])
         else:
             s=self.index['views']
@@ -407,23 +418,23 @@ class Indexer:
 
 if __name__ == "__main__":
     import sys
-    window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+    window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
     window.set_default_size (600, 400)
 
     def key_pressed_cb (win, event):
-        if event.state & gtk.gdk.CONTROL_MASK:
+        if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             # The Control-key is held. Special actions :
-            if event.keyval == gtk.keysyms.q:
-                gtk.main_quit ()
+            if event.keyval == Gdk.KEY_q:
+                Gtk.main_quit ()
                 return True
 
     window.connect('key_press_event', key_pressed_cb)
-    window.connect('destroy', lambda e: gtk.main_quit())
+    window.connect('destroy', lambda e: Gtk.main_quit())
     window.set_title ('test')
 
-    import gtksourceview2
-    t=gtksourceview2.View(gtksourceview2.Buffer())
-    #t=gtk.TextView()
+    from gi.repository import GtkSource
+    t=GtkSource.View(GtkSource.Buffer())
+    #t=Gtk.TextView()
     if sys.argv[1:]:
         print "loading ", sys.argv[1]
         t.get_buffer().set_text(open(sys.argv[1]).read())
@@ -436,4 +447,4 @@ if __name__ == "__main__":
 
     window.add (t)
     window.show_all()
-    gtk.main ()
+    Gtk.main ()
diff --git a/lib/advene/gui/util/dialog.py b/lib/advene/gui/util/dialog.py
index bf38f87..12f792c 100644
--- a/lib/advene/gui/util/dialog.py
+++ b/lib/advene/gui/util/dialog.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,7 +21,8 @@
 
 from gettext import gettext as _
 
-import gtk
+from gi.repository import Gdk
+from gi.repository import Gtk
 import re
 import os
 import sys
@@ -37,14 +38,22 @@ _fs_encoding = sys.getfilesystemencoding()
 if _fs_encoding in ('ascii', 'ANSI_X3.4-1968', None):
     _fs_encoding='utf8'
 
+# Default transient toplevel window
+DEFAULT_PARENT = None
+
+def set_default_transient_parent(w):
+    global DEFAULT_PARENT
+    DEFAULT_PARENT = w
+    return w
+
 def dialog_keypressed_cb(widget=None, event=None):
     """Generic dialog keypress handler.
     """
-    if event.keyval == gtk.keysyms.Return:
-        widget.response(gtk.RESPONSE_OK)
+    if event.keyval == Gdk.KEY_Return:
+        widget.response(Gtk.ResponseType.OK)
         return True
-    elif event.keyval == gtk.keysyms.Escape:
-        widget.response(gtk.RESPONSE_CANCEL)
+    elif event.keyval == Gdk.KEY_Escape:
+        widget.response(Gtk.ResponseType.CANCEL)
         return True
     return False
 
@@ -58,7 +67,7 @@ def generate_list_model(elements, active_element=None):
     @param elements: a list of couples (element, label) or tuples (element, label, color)
     @param active_element: the element that should be preselected
     """
-    store=gtk.ListStore(str, object, str)
+    store=Gtk.ListStore(str, object, str)
     active_iter=None
     if elements:
         if len(elements[0]) == 3:
@@ -93,11 +102,12 @@ def list_selector_widget(members=None,
                                  active_element=preselect)
 
     if entry:
-        combobox=gtk.ComboBoxEntry(store, column=0)
+        combobox=Gtk.ComboBoxText.new_with_entry()
+        combobox.set_model(store)
     else:
-        combobox=gtk.ComboBox(store)
-        cell = gtk.CellRendererText()
-        combobox.pack_start(cell, expand=True)
+        combobox=Gtk.ComboBox.new_with_model(store)
+        cell = Gtk.CellRendererText()
+        combobox.pack_start(cell, True)
         combobox.add_attribute(cell, 'text', 0)
         combobox.add_attribute(cell, 'background', 2)
 
@@ -112,9 +122,9 @@ def list_selector_widget(members=None,
             try:
                 return combo.get_model().get_value(combo.get_active_iter(), 1)
             except (TypeError, AttributeError):
-                return unicode(combo.child.get_text())
+                return combo.get_child().get_text().decode('utf-8')
         def set_current_element(combo, t):
-            combo.child.set_text(t)
+            combo.get_child().set_text(t)
     else:
         def get_current_element(combo):
             if combo.get_active_iter() is not None:
@@ -155,14 +165,14 @@ def list_selector(title=None,
                                     preselect=preselect,
                                     entry=entry)
 
-    d = gtk.Dialog(title=title,
-                   parent=None,
-                   flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                   buttons=( gtk.STOCK_OK, gtk.RESPONSE_OK,
-                             gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL ))
+    d = Gtk.Dialog(title=title,
+                   parent=DEFAULT_PARENT,
+                   flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                   buttons=( Gtk.STOCK_OK, Gtk.ResponseType.OK,
+                             Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL ))
 
     if text is not None:
-        l=gtk.Label(text)
+        l=Gtk.Label(label=text)
         l.show()
         d.vbox.add(l)
 
@@ -175,37 +185,37 @@ def list_selector(title=None,
     center_on_mouse(d)
     res=d.run()
     retval=None
-    if res == gtk.RESPONSE_OK:
+    if res == Gtk.ResponseType.OK:
         retval=combobox.get_current_element()
     d.destroy()
     return retval
 
-def message_dialog(label="", icon=gtk.MESSAGE_INFO, modal=True, callback=None):
+def message_dialog(label="", icon=Gtk.MessageType.INFO, modal=True, callback=None):
     """Message dialog.
 
     If callback is not None, then the dialog will not be modal and
     the callback function will be called upon validation.
     """
-    if icon == gtk.MESSAGE_QUESTION:
-        button=gtk.BUTTONS_YES_NO
+    if icon == Gtk.MessageType.QUESTION:
+        button=Gtk.ButtonsType.YES_NO
     else:
-        button=gtk.BUTTONS_OK
+        button=Gtk.ButtonsType.OK
     if callback is not None:
         # Force non-modal behaviour when there is a callback
         modal=False
     if modal:
-        flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT
+        flags=Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT
     else:
-        flags=gtk.DIALOG_DESTROY_WITH_PARENT
+        flags=Gtk.DialogFlags.DESTROY_WITH_PARENT
 
-    dialog = gtk.MessageDialog(None, flags,
-                               icon, button)
+    dialog = Gtk.MessageDialog(DEFAULT_PARENT, flags, icon, button)
     dialog.set_markup(label)
-    if not dialog.label.get_text():
+    label_widget = dialog.get_message_area().get_children()[0]
+    if not label_widget.get_text().decode('utf-8'):
         # Hackish way of determining if there was an error while
         # parsing the markup. In this case, fallback to simple text
-        dialog.label.set_text(label)
-    dialog.set_position(gtk.WIN_POS_CENTER_ALWAYS)
+        label_widget.set_text(label)
+    dialog.set_position(Gtk.WindowPosition.CENTER_ALWAYS)
     dialog.connect('key-press-event', dialog_keypressed_cb)
 
     dialog.show()
@@ -214,8 +224,8 @@ def message_dialog(label="", icon=gtk.MESSAGE_INFO, modal=True, callback=None):
     if modal:
         res=dialog.run()
         dialog.destroy()
-        if icon == gtk.MESSAGE_QUESTION:
-            return (res == gtk.RESPONSE_YES)
+        if icon == Gtk.MessageType.QUESTION:
+            return (res == Gtk.ResponseType.YES or res == Gtk.ResponseType.OK)
         else:
             return True
     else:
@@ -223,7 +233,7 @@ def message_dialog(label="", icon=gtk.MESSAGE_INFO, modal=True, callback=None):
         # Connect the signal handler.
         def handle_response(d, res):
             d.destroy()
-            if res == gtk.RESPONSE_YES and callback is not None:
+            if res == Gtk.ResponseType.YES and callback is not None:
                 callback()
             return True
         dialog.connect('response', handle_response)
@@ -233,25 +243,25 @@ def yes_no_cancel_popup(title=None,
                         text=None):
     """Build a Yes-No-Cancel popup window.
 
-    Return codes are in (gtk.RESPONSE_YES, gtk.RESPONSE_NO, gtk.RESPONSE_CANCEL)
+    Return codes are in (Gtk.ResponseType.YES, Gtk.ResponseType.NO, Gtk.ResponseType.CANCEL)
     """
-    d = gtk.Dialog(title=title,
-                   parent=None,
-                   flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
-                   buttons=( gtk.STOCK_YES, gtk.RESPONSE_YES,
-                             gtk.STOCK_NO, gtk.RESPONSE_NO,
-                             gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL ))
-    hb=gtk.HBox()
+    d = Gtk.Dialog(title=title,
+                   parent=DEFAULT_PARENT,
+                   flags=Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                   buttons=( Gtk.STOCK_YES, Gtk.ResponseType.YES,
+                             Gtk.STOCK_NO, Gtk.ResponseType.NO,
+                             Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL ))
+    hb=Gtk.HBox()
     hb.show()
     d.vbox.add(hb)
 
-    i=gtk.Image()
-    i.set_from_stock(gtk.STOCK_DIALOG_QUESTION, gtk.ICON_SIZE_DIALOG)
+    i=Gtk.Image()
+    i.set_from_stock(Gtk.STOCK_DIALOG_QUESTION, Gtk.IconSize.DIALOG)
     i.show()
-    hb.pack_start(i, expand=False)
+    hb.pack_start(i, False, True, 0)
 
     if text is not None:
-        l=gtk.Label(text)
+        l=Gtk.Label(label=text)
         l.show()
         hb.add(l)
     d.connect('key-press-event', dialog_keypressed_cb)
@@ -279,26 +289,26 @@ def entry_dialog(title=None,
     @return: the entry value or None if the dialog was cancelled
     @rtype: string
     """
-    d = gtk.Dialog(title=title,
-                   parent=None,
-                   flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                   buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-                             gtk.STOCK_OK, gtk.RESPONSE_OK,
+    d = Gtk.Dialog(title=title,
+                   parent=DEFAULT_PARENT,
+                   flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                   buttons=( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+                             Gtk.STOCK_OK, Gtk.ResponseType.OK,
                              ))
     if text:
-        l=gtk.Label(text)
+        l=Gtk.Label(label=text)
         l.show()
         d.vbox.add(l)
 
-    e=gtk.Entry()
+    e=Gtk.Entry()
     e.show()
     if default:
         e.set_text(default)
 
     if completions:
-        completion = gtk.EntryCompletion()
+        completion = Gtk.EntryCompletion()
         e.set_completion(completion)
-        liststore = gtk.ListStore(str)
+        liststore = Gtk.ListStore(str)
         completion.set_text_column(0)
         completion.set_model(liststore)
         for s in completions:
@@ -313,9 +323,9 @@ def entry_dialog(title=None,
 
     res=d.run()
     ret=None
-    if res == gtk.RESPONSE_OK:
+    if res == Gtk.ResponseType.OK:
         try:
-            ret=unicode(e.get_text())
+            ret=e.get_text().decode('utf-8')
         except ValueError:
             ret=None
     else:
@@ -344,15 +354,15 @@ def build_optionmenu(elements, current, on_change_element, editable=True):
         on_change_element(element)
         return True
 
-    store=gtk.ListStore(str, object)
+    store=Gtk.ListStore(str, object)
     active_iter=None
     for k, v in elements.iteritems():
         i=store.append( (v, k) )
         if k == current:
             active_iter=i
 
-    optionmenu = gtk.ComboBox(model=store)
-    cell = gtk.CellRendererText()
+    optionmenu = Gtk.ComboBox.new_with_model(store)
+    cell = Gtk.CellRendererText()
     optionmenu.pack_start(cell, True)
     optionmenu.add_attribute(cell, 'text', 0)
     optionmenu.set_active_iter(active_iter)
@@ -371,28 +381,28 @@ def title_id_widget(element_title=None,
     @type element_id: string
     @return: the widget
     """
-    v=gtk.Table(rows=2, columns=2)
+    v=Gtk.Table(rows=2, columns=2)
 
-    l=gtk.Label(_("Title"))
+    l=Gtk.Label(label=_("Title"))
     v.attach(l, 0, 1, 0, 1)
 
-    title_entry=gtk.Entry()
+    title_entry=Gtk.Entry()
     title_entry.show()
     if element_title:
         title_entry.set_text(element_title)
     v.attach(title_entry, 1, 2, 0, 1)
 
-    l=gtk.Label(_("Id"))
+    l=Gtk.Label(label=_("Id"))
     v.attach(l, 0, 1, 1, 2)
 
-    id_entry=gtk.Entry()
+    id_entry=Gtk.Entry()
     id_entry.show()
     if element_id:
         id_entry.set_text(element_id)
     v.attach(id_entry, 1, 2, 1, 2)
 
     def update_id(entry):
-        id_entry.set_text(helper.title2id(unicode(entry.get_text())))
+        id_entry.set_text(helper.title2id(entry.get_text().decode('utf-8')))
         return True
 
     title_entry.connect('changed', update_id)
@@ -416,25 +426,25 @@ def title_id_dialog(title=_("Name the element"),
     @type element_title: string
     @param element_id: default id
     @type element_id: string
-    @param flags: optional gtk.Dialog flags (such as gtk.DIALOG_MODAL)
+    @param flags: optional Gtk.Dialog flags (such as Gtk.DialogFlags.MODAL)
 
     @return: the dialog widget
     """
     if flags is None:
-        flags=gtk.DIALOG_DESTROY_WITH_PARENT
-    d = gtk.Dialog(title=title,
-                   parent=None,
+        flags=Gtk.DialogFlags.DESTROY_WITH_PARENT
+    d = Gtk.Dialog(title=title,
+                   parent=DEFAULT_PARENT,
                    flags=flags,
-                   buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-                             gtk.STOCK_OK, gtk.RESPONSE_OK,
+                   buttons=( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+                             Gtk.STOCK_OK, Gtk.ResponseType.OK,
                              ))
     if text:
-        l=gtk.Label(text)
+        l=Gtk.Label(label=text)
         l.show()
         d.vbox.add(l)
 
     v=title_id_widget(element_title, element_id)
-    d.vbox.pack_start(v, expand=False)
+    d.vbox.pack_start(v, False, True, 0)
     d.connect('key-press-event', dialog_keypressed_cb)
     d.id_entry=v.id_entry
     d.title_entry=v.title_entry
@@ -464,10 +474,10 @@ def get_title_id(title=_("Name the element"),
     center_on_mouse(d)
 
     res=d.run()
-    if res == gtk.RESPONSE_OK:
+    if res == Gtk.ResponseType.OK:
         try:
-            t=unicode(d.title_entry.get_text())
-            i=unicode(d.id_entry.get_text())
+            t=d.title_entry.get_text().decode('utf-8')
+            i=d.id_entry.get_text().decode('utf-8')
         except ValueError:
             t=None
             i=None
@@ -480,8 +490,8 @@ def get_title_id(title=_("Name the element"),
     return t, i
 
 def get_filename(title=_("Open a file"),
-                 action=gtk.FILE_CHOOSER_ACTION_OPEN,
-                 button=gtk.STOCK_OPEN,
+                 action=Gtk.FileChooserAction.OPEN,
+                 button=Gtk.STOCK_OPEN,
                  default_dir=None,
                  default_file=None,
                  alias=False,
@@ -490,8 +500,8 @@ def get_filename(title=_("Open a file"),
 
     @param title: the dialog title
     @type title: string
-    @param action: the dialog action: gtk.FILE_CHOOSER_ACTION_OPEN (default) or gtk.FILE_CHOOSER_ACTION_SAVE
-    @param button: the validation button id: gtk.STOCK_OPEN (default) or gtk.STOCK_SAVE
+    @param action: the dialog action: Gtk.FileChooserAction.OPEN (default) or Gtk.FileChooserAction.SAVE
+    @param button: the validation button id: Gtk.STOCK_OPEN (default) or Gtk.STOCK_SAVE
     @param default_dir: the default directory
     @type default_dir: string
     @param default_file: the default file
@@ -502,16 +512,16 @@ def get_filename(title=_("Open a file"),
     @type filter: string
     @return: if alias, a tuple (filename, alias), else the filename
     """
-    preview_box = gtk.VBox()
+    preview_box = Gtk.VBox()
 
-    preview = gtk.Button(_("N/C"))
+    preview = Gtk.Button(_("N/C"))
     preview_box.add(preview)
 
     if alias:
-        h=gtk.HBox()
-        l=gtk.Label(_("Alias"))
+        h=Gtk.HBox()
+        l=Gtk.Label(label=_("Alias"))
         h.add(l)
-        alias_entry = gtk.Entry()
+        alias_entry = Gtk.Entry()
         h.add(alias_entry)
         preview_box.add(h)
     preview_box.show_all()
@@ -536,7 +546,7 @@ def get_filename(title=_("Open a file"),
             if config.data.os == 'win32':
                 # Force resize for win32
                 oldmode=chooser.get_resize_mode()
-                chooser.set_resize_mode(gtk.RESIZE_IMMEDIATE)
+                chooser.set_resize_mode(Gtk.RESIZE_IMMEDIATE)
                 chooser.resize_children()
                 chooser.set_resize_mode(oldmode)
         else:
@@ -559,13 +569,13 @@ def get_filename(title=_("Open a file"),
 
     preview.connect('clicked', do_preview)
 
-    fs=gtk.FileChooserDialog(title=title,
-                             parent=None,
+    fs=Gtk.FileChooserDialog(title=title,
+                             parent=DEFAULT_PARENT,
                              action=action,
                              buttons=( button,
-                                       gtk.RESPONSE_OK,
-                                       gtk.STOCK_CANCEL,
-                                       gtk.RESPONSE_CANCEL ))
+                                       Gtk.ResponseType.OK,
+                                       Gtk.STOCK_CANCEL,
+                                       Gtk.ResponseType.CANCEL ))
     fs.set_preview_widget(preview_box)
 
     # filter may be: 'any', 'advene', 'session', 'video'
@@ -580,7 +590,7 @@ def get_filename(title=_("Open a file"),
         ('audio', _("Audio files"), ('*.wav', '*.mp3', '*.ogg')),
         ('video', _("Video files"), [ "*%s" % e for e in config.data.video_extensions ])
         ):
-        filters[name]=gtk.FileFilter()
+        filters[name]=Gtk.FileFilter()
         filters[name].set_name(descr)
         for e in exts:
             filters[name].add_pattern(e)
@@ -601,10 +611,10 @@ def get_filename(title=_("Open a file"),
     res=fs.run()
     filename=None
     al=None
-    if res == gtk.RESPONSE_OK:
+    if res == Gtk.ResponseType.OK:
         filename=fs.get_filename()
         if alias:
-            al=unicode(alias_entry.get_text())
+            al=alias_entry.get_text().decode('utf-8')
             if not al:
                 # It may not have been updated, if the user typed the
                 # filename in the entry box.
@@ -624,27 +634,27 @@ def get_filename(title=_("Open a file"),
         return filename
 
 def get_dirname(title=_("Choose a directory"),
-                 action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
-                 button=gtk.STOCK_OK,
+                 action=Gtk.FileChooserAction.SELECT_FOLDER,
+                 button=Gtk.STOCK_OK,
                  default_dir=None):
     """Get a directory name.
 
     @param title: the dialog title
     @type title: string
-    @param action: the dialog action: gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER (default)
-    @param button: the validation button id: gtk.STOCK_OK (default)
+    @param action: the dialog action: Gtk.FileChooserAction.SELECT_FOLDER (default)
+    @param button: the validation button id: Gtk.STOCK_OK (default)
     @param default_dir: the default directory
     @type default_dir: string
     @return: the directory name
     """
 
-    fs=gtk.FileChooserDialog(title=title,
-                             parent=None,
+    fs=Gtk.FileChooserDialog(title=title,
+                             parent=DEFAULT_PARENT,
                              action=action,
                              buttons=( button,
-                                       gtk.RESPONSE_OK,
-                                       gtk.STOCK_CANCEL,
-                                       gtk.RESPONSE_CANCEL ))
+                                       Gtk.ResponseType.OK,
+                                       Gtk.STOCK_CANCEL,
+                                       Gtk.ResponseType.CANCEL ))
     if default_dir:
         fs.set_current_folder(default_dir)
 
@@ -652,7 +662,7 @@ def get_dirname(title=_("Choose a directory"),
     center_on_mouse(fs)
     res=fs.run()
     dirname=None
-    if res == gtk.RESPONSE_OK:
+    if res == Gtk.ResponseType.OK:
         dirname=fs.get_filename()
     fs.destroy()
 
@@ -691,26 +701,26 @@ class CategorizedSelector:
         self.button=None
 
     def popup_menu(self, *p):
-        m=gtk.Menu()
+        m=Gtk.Menu()
 
-        i=gtk.MenuItem(self.title, use_underline=False)
+        i=Gtk.MenuItem(self.title, use_underline=False)
         i.set_sensitive(False)
         m.append(i)
-        i=gtk.SeparatorMenuItem()
+        i=Gtk.SeparatorMenuItem()
         m.append(i)
 
         submenu={}
         for c in self.categories:
-            i=gtk.MenuItem(self.description_getter(c), use_underline=False)
+            i=Gtk.MenuItem(self.description_getter(c), use_underline=False)
             m.append(i)
-            submenu[c]=gtk.Menu()
+            submenu[c]=Gtk.Menu()
             i.set_submenu(submenu[c])
         for e in self.elements:
-            i=gtk.MenuItem(self.description_getter(e), use_underline=False)
+            i=Gtk.MenuItem(self.description_getter(e), use_underline=False)
             submenu[self.category_getter(e)].append(i)
             i.connect('activate', lambda menuitem, element: self.update_element(element), e)
         m.show_all()
-        m.popup(None, None, None, 0, gtk.get_current_event_time())
+        m.popup(None, None, None, 0, Gtk.get_current_event_time())
         return m
 
     def get_button(self):
@@ -718,7 +728,7 @@ class CategorizedSelector:
         """
         if self.button is not None:
             return self.button
-        b=gtk.Button(self.description_getter(self.current))
+        b=Gtk.Button(self.description_getter(self.current))
         if self.editable:
             b.connect('clicked', lambda w: self.popup_menu())
         b.show()
@@ -734,7 +744,7 @@ class CategorizedSelector:
         return True
 
 def center_on_mouse(w):
-    """Center the given gtk.Window on the mouse position.
+    """Center the given Gtk.Window on the mouse position.
     """
     root=w.get_toplevel().get_root_window()
     (screen, x, y, mod) = root.get_display().get_pointer()
diff --git a/lib/advene/gui/util/initialconfig.py b/lib/advene/gui/util/initialconfig.py
index c7c994a..18adc8b 100644
--- a/lib/advene/gui/util/initialconfig.py
+++ b/lib/advene/gui/util/initialconfig.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -36,8 +36,8 @@ gettext.textdomain(APP)
 gettext.install(APP, localedir=config.data.path['locale'], unicode=True)
 from gettext import gettext as _
 
-import gtk
-import gobject
+from gi.repository import Gtk
+from gi.repository import GObject
 import os
 
 from advene.gui.edit.properties import EditWidget
@@ -61,8 +61,8 @@ class Config:
 
     def main(self):
         self.widget.show_all()
-        gobject.timeout_add (10, self.run_config)
-        gtk.main()
+        GObject.timeout_add (10, self.run_config)
+        Gtk.main()
 
     def run_config(self):
         res=self.widget.popup()
@@ -74,7 +74,7 @@ class Config:
             for k in ('data', 'imagecache', 'moviepath'):
                 config.data.path[k]=self.options[k]
             config.data.save_preferences()
-        gtk.main_quit()
+        Gtk.main_quit()
         return
 
     def build_widget(self):
diff --git a/lib/advene/gui/util/playpausebutton.py b/lib/advene/gui/util/playpausebutton.py
index 890060e..a4132df 100644
--- a/lib/advene/gui/util/playpausebutton.py
+++ b/lib/advene/gui/util/playpausebutton.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -19,15 +19,15 @@
 """PlayPause button.
 """
 
-import gtk
+from gi.repository import Gtk
 
 import advene.core.config as config
 
-class PlayPauseButton(gtk.ToolButton):
+class PlayPauseButton(Gtk.ToolButton):
     def __init__(self, *p, **kw):
         super(PlayPauseButton, self).__init__(*p, **kw)
-        self.active_id = gtk.STOCK_MEDIA_PLAY
-        self.inactive_id = gtk.STOCK_MEDIA_PAUSE
+        self.active_id = Gtk.STOCK_MEDIA_PLAY
+        self.inactive_id = Gtk.STOCK_MEDIA_PAUSE
         self.is_active = True
 
     def set_stock_ids(self, active_id, inactive_id):
diff --git a/lib/advene/gui/views/__init__.py b/lib/advene/gui/views/__init__.py
index bc3909c..4bfe77b 100644
--- a/lib/advene/gui/views/__init__.py
+++ b/lib/advene/gui/views/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -19,8 +19,9 @@
 import advene.core.config as config
 
 import re
-import gtk
-import gobject
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import GObject
 import StringIO
 import os
 import urllib
@@ -61,7 +62,7 @@ class AdhocView(object):
         # If self.buttonbox exists, then the widget has already
         # defined its own buttonbox, and the generic popup method
         # can but the "Close" button in it:
-        # self.buttonbox = gtk.HButtonBox()
+        # self.buttonbox = Gtk.HButtonBox()
 
         self._label=self.view_name
 
@@ -89,7 +90,7 @@ class AdhocView(object):
             pass
 
     def safe_connect(self, obj, *p):
-        """Connect a signal handler to a gobject.
+        """Connect a signal handler to a GObject.
 
         It memorizes the handler id so that it is properly
         disconnected upon view closing.
@@ -121,7 +122,7 @@ class AdhocView(object):
             def undisplay():
                 self.statusbar.pop(context_id)
                 return False
-            gobject.timeout_add(1500, undisplay)
+            GObject.timeout_add(1500, undisplay)
 
     def log(self, msg, level=None):
         m=": ".join( (self.view_name, msg) )
@@ -133,18 +134,18 @@ class AdhocView(object):
     def set_label(self, label):
         self._label=label
         p=self.widget.get_parent()
-        if isinstance(p, gtk.Notebook):
+        if isinstance(p, Gtk.Notebook):
             # We are in a notebook.
             l=p.get_tab_label(self.widget)
             if l is not None:
-                if isinstance(l, gtk.Label):
+                if isinstance(l, Gtk.Label):
                     l.set_text(label)
-                elif isinstance(l, gtk.HBox):
+                elif isinstance(l, Gtk.HBox):
                     # It may be a HBox with multiple elements. Find the label.
                     # Normally (cf gui.viewbook), the label is in an EventBox
                     l=l.get_children()[1].get_children()[0]
                     l.set_text(label)
-        elif isinstance(p, gtk.VBox):
+        elif isinstance(p, Gtk.VBox):
             # It is a popup window. Set its title.
             p.get_toplevel().set_title(label)
 
@@ -345,7 +346,7 @@ class AdhocView(object):
         v.content.data=self.as_html()
         self.controller.package.views.append(v)
         self.controller.notify('ViewCreate', view=v)
-        d=dialog.message_dialog(_("View successfully exported as %s.\nOpen it in the web browser ?") % v.title, icon=gtk.MESSAGE_QUESTION)
+        d=dialog.message_dialog(_("View successfully exported as %s.\nOpen it in the web browser ?") % v.title, icon=Gtk.MessageType.QUESTION)
         if d:
             c=self.controller.build_context(here=v)
             self.controller.open_url(c.evaluateValue('package/view/%s/absolute_url' % ident))
@@ -356,7 +357,7 @@ class AdhocView(object):
         return self.widget
 
     def build_widget(self):
-        return gtk.Label(self.view_name)
+        return Gtk.Label(label=self.view_name)
 
     def attach_view(self, menuitem, window):
         def relocate_view(item, v, d):
@@ -376,24 +377,24 @@ class AdhocView(object):
                 v.reparent_done()
             return True
 
-        menu=gtk.Menu()
+        menu=Gtk.Menu()
         for (label, destination) in (
             (_("...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, use_underline=False)
+            item = Gtk.MenuItem(label, use_underline=False)
             item.connect('activate', relocate_view, self, destination)
             menu.append(item)
 
         menu.show_all()
-        menu.popup(None, None, None, 0, gtk.get_current_event_time())
+        menu.popup_at_pointer(None)
         return True
 
     def popup(self, label=None):
         if label is None:
             label=self.view_name
-        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+        window = Gtk.Window(Gtk.WindowType.TOPLEVEL)
         window.set_title (label)
 
         def close_popup(*p):
@@ -415,30 +416,30 @@ class AdhocView(object):
             window.add(self.widget)
             window.buttonbox = self.widget.buttonbox
         else:
-            vbox = gtk.VBox()
+            vbox = Gtk.VBox()
             window.add(vbox)
-            window.buttonbox = gtk.HBox()
-            vbox.pack_start(window.buttonbox, expand=False)
+            window.buttonbox = Gtk.HBox()
+            vbox.pack_start(window.buttonbox, False, True, 0)
             vbox.add (self.widget)
 
         # Insert contextual_actions in buttonbox
         if hasattr(self, 'contextual_actions') and self.contextual_actions:
-            menubar=gtk.MenuBar()
-            root=gtk.MenuItem(_("Actions"))
+            menubar=Gtk.MenuBar()
+            root=Gtk.MenuItem(_("Actions"))
             menubar.append(root)
-            menu=gtk.Menu()
+            menu=Gtk.Menu()
             root.set_submenu(menu)
             for label, action in self.contextual_actions:
-                b=gtk.MenuItem(label, use_underline=False)
-                b.connect('activate', action)
+                b=Gtk.MenuItem(label, use_underline=False)
+                b.connect('activate', lambda w: action())
                 menu.append(b)
-            window.buttonbox.pack_start(menubar, expand=False)
+            window.buttonbox.pack_start(menubar, False, True, 0)
             window.own_buttons.append(menubar)
 
         def drag_sent(widget_, context, selection, targetType, eventTime ):
             if targetType == config.data.target_type['adhoc-view-instance']:
                 # This is not very robust, but allows to transmit a view instance reference
-                selection.set(selection.target, 8, repr(self).encode('utf8'))
+                selection.set(selection.get_target(), 8, repr(self).encode('utf8'))
                 if hasattr(self, 'reparent_prepare'):
                     self.reparent_prepare()
                 self.widget.get_parent().remove(self.widget)
@@ -452,12 +453,12 @@ class AdhocView(object):
         b.set_tooltip_text(_("Click or drag-and-drop to reattach view"))
         b.connect('drag-data-get', drag_sent)
         # The widget can generate drags
-        b.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                          config.data.drag_type['adhoc-view-instance'],
-                          gtk.gdk.ACTION_LINK)
+        b.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                          config.data.get_target_types('adhoc-view-instance'),
+                          Gdk.DragAction.LINK)
 
         window.own_buttons.append(b)
-        window.buttonbox.pack_start(b, expand=False)
+        window.buttonbox.pack_start(b, False, True, 0)
 
         b=get_pixmap_button('small_close.png')
         if self.controller and self.controller.gui:
@@ -465,7 +466,7 @@ class AdhocView(object):
         else:
             b.connect('clicked', lambda w: window.destroy())
         window.own_buttons.append(b)
-        window.buttonbox.pack_start (b, expand=False)
+        window.buttonbox.pack_start(b, False, False, 0)
 
         def remove_own_buttons(w):
             for b in window.own_buttons:
@@ -484,12 +485,12 @@ class AdhocView(object):
             self.controller.gui.register_view (self)
             window.cleanup_id=window.connect('destroy', self.controller.gui.close_view_cb, window, self)
             self.controller.gui.init_window_size(window, self.view_id)
-            window.set_icon_list(*self.controller.gui.get_icon_list())
+            window.set_icon_list(self.controller.gui.get_icon_list())
 
         if config.data.os == 'win32':
             # Force resize for win32
             oldmode=window.get_resize_mode()
-            window.set_resize_mode(gtk.RESIZE_IMMEDIATE)
+            window.set_resize_mode(Gtk.RESIZE_IMMEDIATE)
             window.resize_children()
             window.set_resize_mode(oldmode)
         return window
diff --git a/lib/advene/gui/views/accumulatorpopup.py b/lib/advene/gui/views/accumulatorpopup.py
index 8e680f3..359bb31 100644
--- a/lib/advene/gui/views/accumulatorpopup.py
+++ b/lib/advene/gui/views/accumulatorpopup.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@
 import time
 import operator
 
-import gtk
+from gi.repository import Gtk
 
 from gettext import gettext as _
 
@@ -64,8 +64,6 @@ class AccumulatorPopup(AdhocView):
         self.scrollable=scrollable
 
         self.new_color = name2color('tomato')
-        self.old_color = gtk.Button().get_style().bg[0]
-
         # List of tuples (widget, hidetime, frame)
         self.widgets=[]
         # Lock on self.widgets
@@ -81,11 +79,11 @@ class AccumulatorPopup(AdhocView):
     def display_message(self, message='', timeout=None, title=None):
         """Convenience method.
         """
-        t=gtk.TextView()
+        t=Gtk.TextView()
         t.set_editable(False)
         t.set_cursor_visible(False)
-        t.set_wrap_mode(gtk.WRAP_WORD)
-        t.set_justification(gtk.JUSTIFY_LEFT)
+        t.set_wrap_mode(Gtk.WrapMode.WORD)
+        t.set_justification(Gtk.Justification.LEFT)
         t.get_buffer().set_text(message)
         self.display(t, timeout, title)
 
@@ -106,53 +104,45 @@ class AccumulatorPopup(AdhocView):
             hidetime=None
 
         # Build a titled frame around the widget
-        f=gtk.Frame()
+        f=Gtk.Frame()
         if isinstance(title, basestring):
-            hb=gtk.HBox()
+            hb=Gtk.HBox()
 
-            l=gtk.Label(title)
-            hb.pack_start(l, expand=False)
+            l=Gtk.Label(label=title)
+            hb.pack_start(l, False, True, 0)
 
             b=get_pixmap_button('small_close.png')
-            b.set_relief(gtk.RELIEF_NONE)
+            b.set_relief(Gtk.ReliefStyle.NONE)
             b.connect('clicked', self.undisplay_cb, widget)
-            hb.pack_start(b, expand=False, fill=False)
+            hb.pack_start(b, False, False, 0)
 
             f.set_label_widget(hb)
         else:
             # Hopefully it is a gtk widget
             f.set_label_widget(title)
         f.set_label_align(0.1, 0.5)
-        f.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
+        f.set_shadow_type(Gtk.ShadowType.ETCHED_OUT)
         f.add(widget)
 
         self.lock.acquire()
-        for t in self.widgets:
-            self.set_color(t[2].get_label_widget(), self.old_color)
         self.widgets.append( (widget, hidetime, f) )
         if hidetime:
             self.controller.register_usertime_action( hidetime,
                                                       lambda c, time: self.undisplay(widget))
         self.widgets.sort(key=operator.itemgetter(1))
         self.lock.release()
-        self.contentbox.pack_start(f, expand=False, padding=2)
+        self.contentbox.pack_start(f, False, False, 2)
 
         f.show_all()
         self.show()
         nb=self.widget.get_parent()
-        if isinstance(nb, gtk.Notebook):
+        if isinstance(nb, Gtk.Notebook):
             # Ensure that the view is visible
             nb.set_current_page(nb.page_num(self.widget))
 
         self.controller.notify('PopupDisplay', view=self)
         return True
 
-    def set_color(self, button, color):
-        for style in (gtk.STATE_ACTIVE, gtk.STATE_NORMAL,
-                      gtk.STATE_SELECTED, gtk.STATE_INSENSITIVE,
-                      gtk.STATE_PRELIGHT):
-            button.modify_bg (style, color)
-
     def get_popup_width(self):
         """Return the requested popup width
 
@@ -203,21 +193,21 @@ class AccumulatorPopup(AdhocView):
         return True
 
     def build_widget(self):
-        mainbox=gtk.VBox()
+        mainbox=Gtk.VBox()
 
         if self.vertical:
-            self.contentbox = gtk.VBox()
+            self.contentbox = Gtk.VBox()
             mainbox.add(self.contentbox)
         else:
-            self.contentbox = gtk.HBox()
+            self.contentbox = Gtk.HBox()
             mainbox.add(self.contentbox)
 
         if self.controller.gui:
             self.controller.gui.register_view (self)
 
         if self.scrollable:
-            sw=gtk.ScrolledWindow()
-            sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+            sw=Gtk.ScrolledWindow()
+            sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
             sw.add_with_viewport(mainbox)
             return sw
         else:
diff --git a/lib/advene/gui/views/activebookmarks.py b/lib/advene/gui/views/activebookmarks.py
index 498f004..8f0d3b1 100644
--- a/lib/advene/gui/views/activebookmarks.py
+++ b/lib/advene/gui/views/activebookmarks.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -17,18 +17,21 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 """Module displaying active time bookmarks."""
+import logging
+logger = logging.getLogger(__name__)
 
 import os
 from gettext import gettext as _
-import gtk
-import gobject
-import pango
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import GObject
+from gi.repository import Pango
 import urllib
 
 # Advene part
 import advene.core.config as config
-from advene.gui.util import dialog, get_small_stock_button, get_pixmap_button, name2color, png_to_pixbuf, get_pixmap_toolbutton, get_color_style
-from advene.gui.util import encode_drop_parameters, decode_drop_parameters, shaped_window_from_xpm, arrow_right_xpm
+from advene.gui.util import dialog, get_small_stock_button, get_pixmap_button, name2color, png_to_pixbuf, get_pixmap_toolbutton
+from advene.gui.util import encode_drop_parameters, decode_drop_parameters, get_clipboard
 from advene.gui.views import AdhocView
 from advene.gui.views.bookmarks import BookmarkWidget
 from advene.model.annotation import Annotation
@@ -84,12 +87,11 @@ class ActiveBookmarks(AdhocView):
                 b.widget.show_all()
                 self.bookmarks.append(b)
 
-        self.mainbox=gtk.VBox()
+        self.mainbox=Gtk.VBox()
         self.widget=self.build_widget()
         if typ is None:
             typ=self.controller.package.annotationTypes[0]
         self.type = typ
-        self.arrow_mark=None
         self.refresh()
 
     def debug (self, widget, *p):
@@ -110,10 +112,10 @@ class ActiveBookmarks(AdhocView):
     type=property(get_type, set_type)
 
     def register_callback (self, controller=None):
-        self.loop_id=gobject.timeout_add(1000, self.check_contents)
+        self.loop_id=GObject.timeout_add(1000, self.check_contents)
 
     def unregister_callback(self, controller=None):
-        gobject.source_remove(self.loop_id)
+        GObject.source_remove(self.loop_id)
 
     def get_save_arguments(self):
         # Serialisation format: annotationid:begin:end:content where
@@ -124,7 +126,7 @@ class ActiveBookmarks(AdhocView):
     def refresh(self, *p):
         self.mainbox.foreach(self.mainbox.remove)
         for w in self.bookmarks:
-            self.mainbox.pack_start(w.widget, expand=False)
+            self.mainbox.pack_start(w.widget, False, True, 0)
         self.mainbox.show_all()
         self.generate_focus_chain()
         return True
@@ -217,7 +219,7 @@ class ActiveBookmarks(AdhocView):
                 index=self.bookmarks.index(cur) + 1
         if index is None:
             self.bookmarks.append(b)
-            self.mainbox.pack_start(b.widget, expand=False)
+            self.mainbox.pack_start(b.widget, False, True, 0)
             self.generate_focus_chain()
         else:
             self.bookmarks.insert(index, b)
@@ -287,7 +289,7 @@ class ActiveBookmarks(AdhocView):
     def get_matching_bookmark(self, wid):
         """Return the bookmark whose begin or end image is wid.
 
-        Usually used in DND callbacks, with wid=context.get_source_widget()
+        Usually used in DND callbacks, with wid=Gtk.drag_get_source_widget(context)
         """
         l=[ b
             for b in self.bookmarks
@@ -301,7 +303,7 @@ class ActiveBookmarks(AdhocView):
         """Scroll to the bottom of the view.
         """
         adj=self.mainbox.get_parent().get_vadjustment()
-        adj.value = adj.upper
+        adj.set_value(adj.get_upper())
         return True
 
     def scroll_to_bookmark(self, b=None):
@@ -310,15 +312,15 @@ class ActiveBookmarks(AdhocView):
         if not self.bookmarks:
             return
         b=b or self.get_current_bookmark() or self.bookmarks[0]
-        if b.widget.window is None:
+        if b.widget.get_window() is None:
             return True
-        x, y, w, h, depth=b.widget.window.get_geometry()
+        x, y, w, h = b.widget.get_window().get_geometry()
         parent=self.mainbox.get_parent()
         adj=parent.get_vadjustment()
-        pos=adj.value
-        height=parent.window.get_geometry()[3]
+        pos=adj.get_value()
+        height=parent.get_window().get_geometry().height
         if y < pos or y + h > pos + height:
-            adj.value = min(y, adj.upper - adj.page_size)
+            adj.set_value(helper.clamp(y, adj.get_lower(), adj.get_upper() - adj.get_page_size()))
         return True
 
     def delete_origin_timestamp(self, wid):
@@ -355,15 +357,15 @@ class ActiveBookmarks(AdhocView):
             return
         dt=config.data.drag_type
         b=ActiveBookmark(container=self, from_serialisation=data)
-        if selection.target in ( dt['STRING'][0][0], dt['text-plain'][0][0]):
+        if selection.get_target() in ( dt['STRING'][0][0], dt['text-plain'][0][0]):
             selection.set_text('%s : %s' % (helper.format_time(b.begin), b.content))
-        elif selection.target == dt['timestamp'][0][0]:
-            selection.set(selection.target, 8, encode_drop_parameters(begin=b.begin, comment=b.content))
-        elif selection.target == dt['bookmark'][0][0]:
-            selection.set(selection.target, 8, data)
-        elif selection.target == dt['annotation'][0][0]:
+        elif selection.get_target() == dt['timestamp'][0][0]:
+            selection.set(selection.get_target(), 8, encode_drop_parameters(begin=b.begin, comment=b.content))
+        elif selection.get_target() == dt['bookmark'][0][0]:
+            selection.set(selection.get_target(), 8, data)
+        elif selection.get_target() == dt['annotation'][0][0]:
             if b.annotation is not None:
-                selection.set(selection.target, 8, b.annotation.uri.encode('utf8'))
+                selection.set(selection.get_target(), 8, b.annotation.uri.encode('utf8'))
         else:
             del b
             return False
@@ -377,7 +379,7 @@ class ActiveBookmarks(AdhocView):
     def copy_current_bookmark(self):
         """Copy the current bookmark into the clipboard.
         """
-        c=gtk.clipboard_get()
+        c = get_clipboard()
         cur=self.get_current_bookmark()
         if cur is None:
             return None
@@ -390,8 +392,8 @@ class ActiveBookmarks(AdhocView):
         return cur
 
     def build_widget(self):
-        v=gtk.VBox()
-        hb=gtk.HBox()
+        v=Gtk.VBox()
+        hb=Gtk.HBox()
         hb.set_homogeneous(False)
 
         def bookmark_current_time(b):
@@ -403,13 +405,13 @@ class ActiveBookmarks(AdhocView):
                 self.append(v)
                 return True
 
-        tb=gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
+        tb=Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
 
         def remove_drag_received(widget, context, x, y, selection, targetType, time):
             if targetType == config.data.target_type['timestamp']:
                 # Check if we received the drag from one of our own widget.
-                wid=context.get_source_widget()
+                wid=Gtk.drag_get_source_widget(context)
                 b=self.get_matching_bookmark(wid)
                 if b is not None:
                     if b.end_widget == b.dropbox:
@@ -436,21 +438,21 @@ class ActiveBookmarks(AdhocView):
         def reorder(widget):
             """Display a popup menu proposing various sort options.
             """
-            m=gtk.Menu()
+            m=Gtk.Menu()
             for t, func in (
                 (_("Chronological order"), lambda a, b: cmp(a.begin, b.begin)),
                 (_("Completeness and chronological order"), lambda a, b: cmp(a.end_widget == a.dropbox,
                                                                              b.end_widget == b.dropbox) or cmp(a.begin, b.begin))
                 ):
-                i=gtk.MenuItem(t)
+                i=Gtk.MenuItem(t)
                 i.connect('activate', do_reorder, func)
                 m.append(i)
             m.show_all()
-            m.popup(None, widget, None, 0, gtk.get_current_event_time())
+            m.popup(None, widget, None, 0, Gtk.get_current_event_time())
             return True
 
         def do_complete(b, func):
-            l=[ b for b in self.bookmarks if b.annotation is None ]
+            l=[ bo for bo in self.bookmarks if bo.annotation is None ]
             if isinstance(func, long) or isinstance(func, int):
                 for b in l:
                     b.end=b.begin+func
@@ -476,17 +478,17 @@ class ActiveBookmarks(AdhocView):
                         b.end=self.controller.cached_duration
 
         def complete(widget):
-            m=gtk.Menu()
+            m=Gtk.Menu()
             for t, func in (
                 (_("User-specified duration"), 'user'),
                 (_("2s duration"), 2000),
                 (_("Complete coverage"), 'coverage'),
                 ):
-                i=gtk.MenuItem(t)
+                i=Gtk.MenuItem(t)
                 i.connect('activate', do_complete, func)
                 m.append(i)
             m.show_all()
-            m.popup(None, widget, None, 0, gtk.get_current_event_time())
+            m.popup_at_pointer(None)
             return True
 
         def remove_current(widget):
@@ -497,22 +499,22 @@ class ActiveBookmarks(AdhocView):
                 self.remove(b)
             return True
 
-        b=get_small_stock_button(gtk.STOCK_DELETE)
+        b=get_small_stock_button(Gtk.STOCK_DELETE)
         b.set_tooltip_text(_("Drop a bookmark here to remove it from the list"))
         if config.data.os == 'win32':
             # DND on win32 is partially broken: it will not detect
             # ACTION_MOVE only. We have to add ACTION_COPY.
-            flags=gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE
+            flags=Gdk.DragAction.COPY | Gdk.DragAction.MOVE
         else:
-            flags=gtk.gdk.ACTION_MOVE
-        b.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                        gtk.DEST_DEFAULT_HIGHLIGHT |
-                        gtk.DEST_DEFAULT_ALL,
-                        config.data.drag_type['timestamp'],
+            flags=Gdk.DragAction.MOVE
+        b.drag_dest_set(Gtk.DestDefaults.MOTION |
+                        Gtk.DestDefaults.HIGHLIGHT |
+                        Gtk.DestDefaults.ALL,
+                        config.data.get_target_types('timestamp'),
                         flags )
         b.connect('drag-data-received', remove_drag_received)
         b.connect('clicked', remove_current)
-        i=gtk.ToolItem()
+        i=Gtk.ToolItem()
         i.add(b)
         tb.insert(i, -1)
 
@@ -520,7 +522,7 @@ class ActiveBookmarks(AdhocView):
         b.set_tooltip_text(_("Insert a bookmark for the current video time"))
         tb.insert(b, -1)
 
-        i=gtk.ToolItem()
+        i=Gtk.ToolItem()
         types=[ (at, self.controller.get_title(at), self.controller.get_element_color(at)) for at in self.controller.package.annotationTypes ]
         types.sort(key=lambda a: a[1])
 
@@ -540,7 +542,7 @@ class ActiveBookmarks(AdhocView):
                 self.set_image_size(s)
                 return True
 
-            m=gtk.Menu()
+            m=Gtk.Menu()
             s=config.data.preferences['bookmark-snapshot-width']
             for size, label in (
                 (long(.5 * s), _("Smallish")),
@@ -550,98 +552,73 @@ class ActiveBookmarks(AdhocView):
                 (long(1.5 * s), _("Larger")),
                 (long(2 * s), _("Huge")),
                 ):
-                i=gtk.MenuItem(label)
+                i=Gtk.MenuItem(label)
                 i.connect('activate', set_scale, size)
                 m.append(i)
             m.show_all()
-            m.popup(None, None, None, 0, gtk.get_current_event_time())
+            m.popup(None, None, None, 0, Gtk.get_current_event_time())
             return True
 
         for (icon, tip, method) in (
-            (gtk.STOCK_REDO, _("Reorder active bookmarks"), reorder),
-            (gtk.STOCK_CONVERT, _("Complete bookmarks into annotations"), complete),
-            (gtk.STOCK_SAVE, _("Save the current state"), self.save_view),
-            (gtk.STOCK_FULLSCREEN, _("Set the size of snaphots"), scale_snaphots_menu),
+            (Gtk.STOCK_REDO, _("Reorder active bookmarks"), reorder),
+            (Gtk.STOCK_CONVERT, _("Complete bookmarks into annotations"), complete),
+            (Gtk.STOCK_SAVE, _("Save the current state"), self.save_view),
+            (Gtk.STOCK_FULLSCREEN, _("Set the size of snaphots"), scale_snaphots_menu),
             ):
             b=get_small_stock_button(icon)
             b.set_tooltip_text(tip)
             b.connect('clicked', method)
-            i=gtk.ToolItem()
+            i=Gtk.ToolItem()
             i.add(b)
             tb.insert(i, -1)
 
         hb.add(tb)
-        v.pack_start(hb, expand=False)
-        sw=gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        v.pack_start(hb, False, True, 0)
+        sw=Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         sw.add_with_viewport(self.mainbox)
         self.scrollwindow=sw
 
         def scroll_on_drag(widget, drag_context, x, y, timestamp):
             adj=widget.get_adjustment()
-            v=adj.value
+            v=adj.get_value()
             if y > widget.get_allocation().height / 2:
                 # Try to scroll down
                 v += max(adj.step_increment, adj.page_increment / 3)
             else:
                 v -= max(adj.step_increment, adj.page_increment / 3)
-            if v < 0:
-                v = 0
-            elif v > adj.upper - adj.page_size:
-                v=adj.upper - adj.page_size
-            adj.value=v
+            adj.set_value(helper.clamp(v, adj.get_lower(), adj.get_upper() - adj.get_page_size()))
             return True
 
         sb=sw.get_vscrollbar()
-        sb.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']
-                         + config.data.drag_type['annotation-type']
-                         ,
-                         gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
+        sb.drag_dest_set(Gtk.DestDefaults.MOTION |
+                         Gtk.DestDefaults.HIGHLIGHT |
+                         Gtk.DestDefaults.ALL,
+                         config.data.get_target_types('annotation',
+                                                      'timestamp',
+                                                      'annotation-type'),
+                         Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
         sb.connect('drag-motion', scroll_on_drag)
 
-        def hide_arrow_mark(*p):
-            if self.arrow_mark is not None:
-                self.arrow_mark.hide()
-            return True
-
         def mainbox_drag_motion(widget, drag_context, x, y, timestamp):
-            if self.arrow_mark is None:
-                self.arrow_mark=shaped_window_from_xpm(arrow_right_xpm)
             if not self.bookmarks:
                 return True
-            l=[ b
-                for b in self.bookmarks
-                if y < b.widget.get_allocation().y + b.widget.get_allocation().height  ]
-            if l:
-                y=l[0].widget.get_allocation().y - 10
-            else:
-                a=self.bookmarks[-1].widget.get_allocation()
-                y=a.y + a.height
-            rx, ry = widget.window.get_origin()
-            self.arrow_mark.move(long(rx), long(ry + y))
-            self.arrow_mark.show_all()
-            actions=drag_context.actions
-            is_in_view=drag_context.get_source_widget().is_ancestor(widget)
-            if (actions == gtk.gdk.ACTION_MOVE
-                or actions == gtk.gdk.ACTION_LINK):
+            actions=drag_context.get_actions()
+            is_in_view=Gtk.drag_get_source_widget(drag_context).is_ancestor(widget)
+            if (actions == Gdk.DragAction.MOVE
+                or actions == Gdk.DragAction.LINK):
                 # Only 1 possible action. Use it.
-                drag_context.drag_status(actions, timestamp)
-            elif actions == gtk.gdk.ACTION_COPY and is_in_view and config.data.drag_type['annotation'][0][0] in drag_context.targets:
+                Gdk.drag_status(drag_context, actions, timestamp)
+            elif actions == Gdk.DragAction.COPY and is_in_view and config.data.drag_type['annotation'][0][0] in drag_context.list_targets():
                 # We cannot just copy an annotation from our own view,
                 # it just can be moved
-                drag_context.drag_status(gtk.gdk.ACTION_MOVE, timestamp)
-            elif gtk.gdk.ACTION_MOVE & actions and is_in_view:
+                Gdk.drag_status(drag_context, Gdk.DragAction.MOVE, timestamp)
+            elif Gdk.DragAction.MOVE & actions and is_in_view:
                 # DND from the same view. Force default to move.
-                drag_context.drag_status(gtk.gdk.ACTION_MOVE, timestamp)
+                Gdk.drag_status(drag_context, Gdk.DragAction.MOVE, timestamp)
 
         def mainbox_drag_received(widget, context, x, y, selection, targetType, time):
             index=None
-            if self.arrow_mark is not None:
-                self.arrow_mark.hide()
             if widget == self.mainbox:
                 l=[ b
                     for b in self.bookmarks
@@ -649,25 +626,25 @@ class ActiveBookmarks(AdhocView):
                 if l:
                     index=self.bookmarks.index(l[0])
             if targetType == config.data.target_type['timestamp']:
-                data=decode_drop_parameters(selection.data)
+                data=decode_drop_parameters(selection.get_data())
                 position=long(data['timestamp'])
                 b=self.append(position, index)
                 if 'comment' in data:
                     b.content=data['comment']
                 # If the drag originated from our own widgets, remove it.
-                if context.action == gtk.gdk.ACTION_MOVE:
-                    self.delete_origin_timestamp(context.get_source_widget())
+                if Gdk.DragAction.MOVE & context.get_actions():
+                    self.delete_origin_timestamp(Gtk.drag_get_source_widget(context))
                 return True
             elif targetType == config.data.target_type['annotation-type']:
                 # Populate the view with annotation begins
-                source=self.controller.package.annotationTypes.get(unicode(selection.data, 'utf8'))
+                source=self.controller.package.annotationTypes.get(unicode(selection.get_data(), 'utf8'))
                 if source is not None:
                     for a in source.annotations:
                         b=self.append(a.fragment.begin)
                         b.content=self.controller.get_title(a)
                 return True
             elif targetType == config.data.target_type['annotation']:
-                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
                 for source in sources:
                     l=[ b for b in self.bookmarks if b.annotation == source ]
                     if l:
@@ -691,47 +668,42 @@ class ActiveBookmarks(AdhocView):
                 self.refresh()
                 return True
             else:
-                print "Unknown target type for drop: %d" % targetType
+                logger.warn("Unknown target type for drop: %d" % targetType)
                 return False
 
-        self.mainbox.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']
-                                   + config.data.drag_type['annotation-type']
-                                   ,
-                                   gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
+        self.mainbox.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                   Gtk.DestDefaults.HIGHLIGHT |
+                                   Gtk.DestDefaults.ALL,
+                                   config.data.get_target_types('annotation', 'timestamp', 'annotation-type'),
+                                   Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
         self.mainbox.connect('drag-data-received', mainbox_drag_received)
         self.mainbox.connect('drag-motion', mainbox_drag_motion)
-        self.mainbox.connect('drag-end', hide_arrow_mark)
-        self.mainbox.connect('drag-leave', hide_arrow_mark)
         self.mainbox.set_spacing(8)
 
         # Shortcuts
         def mainbox_key_press(widget, event):
-            if event.keyval == gtk.keysyms.Delete or event.keyval == gtk.keysyms.BackSpace:
+            if event.keyval == Gdk.KEY_Delete or event.keyval == Gdk.KEY_BackSpace:
                 cur=self.get_current_bookmark()
                 if cur is not None:
                     self.remove(cur)
                 return True
-            elif event.keyval == gtk.keysyms.d and event.state & gtk.gdk.CONTROL_MASK:
+            elif event.keyval == Gdk.KEY_d and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
                 # Control-D: duplicate current bookmark
                 self.duplicate_bookmark()
                 return True
-            elif event.keyval == gtk.keysyms.c and event.state & gtk.gdk.CONTROL_MASK:
+            elif event.keyval == Gdk.KEY_c and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
                 # Copy.
                 self.copy_current_bookmark()
                 return True
-            elif event.keyval == gtk.keysyms.x and event.state & gtk.gdk.CONTROL_MASK:
+            elif event.keyval == Gdk.KEY_x and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
                 # Cut
                 cur = self.copy_current_bookmark()
                 if cur is not None:
                     self.remove(cur)
                 return True
-            elif event.keyval == gtk.keysyms.v and event.state & gtk.gdk.CONTROL_MASK:
+            elif event.keyval == Gdk.KEY_v and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
                 # Paste
-                c=gtk.clipboard_get()
+                c = get_clipboard()
                 def paste_bookmark(cl, sel, data):
                     b=ActiveBookmark(container=self, from_serialisation=sel.data)
                     self.append(b, after_current=True)
@@ -787,17 +759,16 @@ class ActiveBookmark(object):
 
         # begin_widget and end_widget are both instances of BookmarkWidget.
         # end_widget may be self.dropbox (if end is not initialized yet)
-        self.dropbox=gtk.EventBox()
+        self.dropbox=Gtk.EventBox()
         self.dropbox.image=None
         self.dropbox.set_size_request(config.data.preferences['bookmark-snapshot-width'], -1)
         self.dropbox.show()
         self.dropbox.set_no_show_all(True)
-        self.dropbox.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                            gtk.DEST_DEFAULT_HIGHLIGHT |
-                                            gtk.DEST_DEFAULT_ALL,
-                                            config.data.drag_type['timestamp']
-                                            + config.data.drag_type['annotation-type'],
-                                            gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
+        self.dropbox.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                            Gtk.DestDefaults.HIGHLIGHT |
+                                            Gtk.DestDefaults.ALL,
+                                            config.data.get_target_types('timestamp', 'annotation-type'),
+                                            Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
         self.dropbox.connect('drag-data-received', self.begin_drag_received)
         self.dropbox.connect('drag-motion', self.bound_drag_motion)
 
@@ -838,15 +809,14 @@ class ActiveBookmark(object):
                                            width=self.container.options['snapshot-size'])
             self.end_widget.widget.set_property('can-focus', False)
             parent=self.begin_widget.widget.get_parent()
-            parent.pack_start(self.end_widget.widget, expand=False)
+            parent.pack_start(self.end_widget.widget, False, True, 0)
             self.end_widget.widget.show_all()
 
-            self.end_widget.image.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                                gtk.DEST_DEFAULT_HIGHLIGHT |
-                                                gtk.DEST_DEFAULT_ALL,
-                                                config.data.drag_type['timestamp']
-                                                + config.data.drag_type['annotation-type'],
-                                                gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
+            self.end_widget.image.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                                Gtk.DestDefaults.HIGHLIGHT |
+                                                Gtk.DestDefaults.ALL,
+                                                config.data.get_target_types('timestamp', 'annotation-type'),
+                                                Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
             self.end_widget.image.connect('drag-data-received', self.end_drag_received)
             self.end_widget.image.connect('drag-motion', self.bound_drag_motion)
             self.end_widget.image.connect('scroll-event', self.handle_scroll_event, self.get_end, self.set_end, lambda v: v > self.begin)
@@ -862,7 +832,7 @@ class ActiveBookmark(object):
                 for (label, action) in (
                     (_("Remove end timestamp"), lambda i: self.set_end(None)),
                     ):
-                    i=gtk.MenuItem(label)
+                    i=Gtk.MenuItem(label)
                     i.connect('activate', action)
                     menu.append(i)
                 return
@@ -930,25 +900,25 @@ class ActiveBookmark(object):
 
     def bound_drag_motion(self, widget, drag_context, x, y, timestamp):
         # Force the correct default action.
-        actions=drag_context.actions
-        is_in_view=drag_context.get_source_widget().is_ancestor(self.container.mainbox)
-        if (actions == gtk.gdk.ACTION_MOVE
-            or actions == gtk.gdk.ACTION_LINK
-            or actions == gtk.gdk.ACTION_COPY):
+        actions=drag_context.get_actions()
+        is_in_view=Gtk.drag_get_source_widget(drag_context).is_ancestor(self.container.mainbox)
+        if (actions == Gdk.DragAction.MOVE
+            or actions == Gdk.DragAction.LINK
+            or actions == Gdk.DragAction.COPY):
             # Only 1 possible action. Use it.
-            drag_context.drag_status(actions, timestamp)
-        elif gtk.gdk.ACTION_MOVE & actions and is_in_view:
+            Gdk.drag_status(drag_context, actions, timestamp)
+        elif Gdk.DragAction.MOVE & actions and is_in_view:
             # DND from the same view. Force default to move.
-            drag_context.drag_status(gtk.gdk.ACTION_MOVE, timestamp)
+            Gdk.drag_status(drag_context, Gdk.DragAction.MOVE, timestamp)
 
     def begin_drag_received(self, widget, context, x, y, selection, targetType, time):
         if self.last_drag_time == time:
             return True
         self.last_drag_time=time
-        if self.is_widget_in_bookmark(context.get_source_widget()):
+        if self.is_widget_in_bookmark(Gtk.drag_get_source_widget(context)):
             return False
         if targetType == config.data.target_type['timestamp']:
-            data=decode_drop_parameters(selection.data)
+            data=decode_drop_parameters(selection.get_data())
             e=long(data['timestamp'])
             if self.end is None:
                 if e < self.begin:
@@ -970,24 +940,24 @@ class ActiveBookmark(object):
             # If the drag originated from our own widgets, remove it.
             # If the drop was done from within our view, then
             # delete the origin widget.
-            if context.action == gtk.gdk.ACTION_MOVE:
-                self.container.delete_origin_timestamp(context.get_source_widget())
+            if Gdk.DragAction.MOVE & context.get_actions():
+                self.container.delete_origin_timestamp(Gtk.drag_get_source_widget(context))
             # Set the current status
             self.container.set_current_bookmark(self)
             return True
         elif targetType == config.data.target_type['annotation-type']:
-            source=self.controller.package.annotationTypes.get(unicode(selection.data, 'utf8'))
+            source=self.controller.package.annotationTypes.get(unicode(selection.get_data(), 'utf8'))
             if source is not None:
                 self.transtype(source)
             return True
         return False
 
     def end_drag_received(self, widget, context, x, y, selection, targetType, time):
-        if self.is_widget_in_bookmark(context.get_source_widget()):
+        if self.is_widget_in_bookmark(Gtk.drag_get_source_widget(context)):
             return False
         self.container.set_current_bookmark(self)
         if targetType == config.data.target_type['timestamp']:
-            data=decode_drop_parameters(selection.data)
+            data=decode_drop_parameters(selection.get_data())
             e=long(data['timestamp'])
             if self.end is not None:
                 # Save a copy of the deleted timestamp next to the current bookmark
@@ -1001,12 +971,12 @@ class ActiveBookmark(object):
             # If the drag originated from our own widgets, remove it.
             # If the drop was done from within our view, then
             # delete the origin widget.
-            if context.action == gtk.gdk.ACTION_MOVE:
-                self.container.delete_origin_timestamp(context.get_source_widget())
+            if Gdk.DragAction.MOVE & context.get_actions():
+                self.container.delete_origin_timestamp(Gtk.drag_get_source_widget(context))
             self.container.set_current_bookmark(self)
             return True
         elif targetType == config.data.target_type['annotation-type']:
-            source=self.controller.package.annotationTypes.get(unicode(selection.data, 'utf8'))
+            source=self.controller.package.annotationTypes.get(unicode(selection.get_data(), 'utf8'))
             if source is not None:
                 self.transtype(source)
             return True
@@ -1024,7 +994,7 @@ class ActiveBookmark(object):
             col=self.controller.get_element_color(self.annotation)
             if col is not None:
                 color=name2color(col)
-                self.begin_widget.comment_entry.modify_base(gtk.STATE_NORMAL, color)
+                self.begin_widget.comment_entry.modify_base(Gtk.StateType.NORMAL, color)
         return True
 
     def set_content(self, c):
@@ -1110,7 +1080,7 @@ class ActiveBookmark(object):
                 self.container.remove(self)
                 return True
             b=get_pixmap_button('small_ok.png', handle_ok)
-            b.set_relief(gtk.RELIEF_NONE)
+            b.set_relief(Gtk.ReliefStyle.NONE)
             b.set_tooltip_text(_("Validate the annotation"))
             def set_current(widget, event):
                 self.container.set_current_bookmark(self)
@@ -1123,14 +1093,14 @@ class ActiveBookmark(object):
             col=self.controller.get_element_color(self.annotation)
             if col is not None:
                 color=name2color(col)
-                self.begin_widget.comment_entry.modify_base(gtk.STATE_NORMAL, color)
+                self.begin_widget.comment_entry.modify_base(Gtk.StateType.NORMAL, color)
         else:
             # Reset the color and the label widget
             l=self.frame.get_label_widget()
             if l is not None:
                 l.destroy()
             # Reset the textview color
-            self.begin_widget.comment_entry.modify_base(gtk.STATE_NORMAL, self.default_background_color)
+            #self.begin_widget.comment_entry.modify_base(Gtk.StateType.NORMAL, self.default_background_color)
 
     def grab_focus(self, *p):
         """Set the focus on the comment edition widget.
@@ -1140,16 +1110,16 @@ class ActiveBookmark(object):
 
     def handle_scroll_event(self, button, event, get_value, set_value, check_value):
         # Handle scroll actions
-        if not (event.state & gtk.gdk.CONTROL_MASK):
+        if not (event.get_state() & Gdk.ModifierType.CONTROL_MASK):
             return False
-        if event.state & gtk.gdk.SHIFT_MASK:
+        if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
             i='second-scroll-increment'
         else:
             i='scroll-increment'
 
-        if event.direction == gtk.gdk.SCROLL_DOWN:
+        if event.direction == Gdk.ScrollDirection.DOWN:
             incr=-config.data.preferences[i]
-        elif event.direction == gtk.gdk.SCROLL_UP:
+        elif event.direction == Gdk.ScrollDirection.UP:
             incr=config.data.preferences[i]
 
         v=get_value()
@@ -1183,28 +1153,28 @@ class ActiveBookmark(object):
 
     def timestamp_key_press(self, widget, event, source):
         def move_or_navigate(index, event):
-            if event.state & gtk.gdk.SHIFT_MASK:
+            if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                 # Shift-up/down/home/end: move the bookmark
                 self.container.move_boomark(self, index)
             else:
                 # Set the current bookmark
                 self.container.select_bookmark(index)
 
-        if event.keyval == gtk.keysyms.Delete or event.keyval == gtk.keysyms.BackSpace:
+        if event.keyval == Gdk.KEY_Delete or event.keyval == Gdk.KEY_BackSpace:
             self.delete_timestamp(source)
             return True
-        elif event.keyval == gtk.keysyms.d and event.state & gtk.gdk.CONTROL_MASK:
+        elif event.keyval == Gdk.KEY_d and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             # Control-D: duplicate current bookmark
             self.container.duplicate_bookmark()
             return True
-        elif event.keyval == gtk.keysyms.Up or event.keyval == gtk.keysyms.Down:
+        elif event.keyval == Gdk.KEY_Up or event.keyval == Gdk.KEY_Down:
             # Up/Down navigation. It is normally handled by Gtk but
             # the default behaviour has a corner case which makes it
             # impractical in this case (going from a bookmark to an
             # annotation selects the annotation content, and prevents
             # further navigation). Hence we handle it manually.
             index=self.container.bookmarks.index(self)
-            if event.keyval == gtk.keysyms.Up:
+            if event.keyval == Gdk.KEY_Up:
                 if index == 0:
                     return True
                 index -= 1
@@ -1214,37 +1184,35 @@ class ActiveBookmark(object):
                     return True
             move_or_navigate(index, event)
             return True
-        elif event.keyval == gtk.keysyms.Home:
+        elif event.keyval == Gdk.KEY_Home:
             move_or_navigate(0, event)
-        elif event.keyval == gtk.keysyms.End:
+        elif event.keyval == Gdk.KEY_End:
             move_or_navigate(-1, event)
         return False
 
     def build_widget(self):
 
-        f=gtk.Frame()
+        f=Gtk.Frame()
 
-        box=gtk.HBox()
+        box=Gtk.HBox()
 
         self.begin_widget=BookmarkWidget(self.controller,
                                          display_comments=True,
                                          width=self.container.options['snapshot-size'])
-        self.begin_widget.image.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                              gtk.DEST_DEFAULT_HIGHLIGHT |
-                                              gtk.DEST_DEFAULT_ALL,
-                                              config.data.drag_type['timestamp']
-                                              + config.data.drag_type['annotation-type'],
-                                              gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE )
+        self.begin_widget.image.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                              Gtk.DestDefaults.HIGHLIGHT |
+                                              Gtk.DestDefaults.ALL,
+                                              config.data.get_target_types('timestamp', 'annotation-type'),
+                                              Gdk.DragAction.COPY | Gdk.DragAction.MOVE )
         self.begin_widget.image.connect('drag-data-received', self.begin_drag_received)
         self.begin_widget.image.connect('drag-motion', self.bound_drag_motion)
         self.begin_widget.image.connect('scroll-event', self.handle_scroll_event, self.get_begin, self.set_begin, lambda v: self.end is None or v < self.end)
 
-        self.begin_widget.comment_entry.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                              gtk.DEST_DEFAULT_HIGHLIGHT |
-                                              gtk.DEST_DEFAULT_ALL,
-                                              config.data.drag_type['timestamp']
-                                              + config.data.drag_type['annotation-type'],
-                                              gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE )
+        self.begin_widget.comment_entry.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                                      Gtk.DestDefaults.HIGHLIGHT |
+                                                      Gtk.DestDefaults.ALL,
+                                                      config.data.get_target_types('timestamp', 'annotation-type'),
+                                                      Gdk.DragAction.COPY | Gdk.DragAction.MOVE )
         self.begin_widget.comment_entry.connect('drag-data-received', self.begin_drag_received)
         self.begin_widget.comment_entry.connect('drag-motion', self.bound_drag_motion)
         self.begin_widget.image.connect('key-press-event', self.timestamp_key_press, 'begin')
@@ -1270,16 +1238,16 @@ class ActiveBookmark(object):
                     (_("Remove begin timestamp"), remove_begin)
                     )
             for (label, action) in l:
-                i=gtk.MenuItem(label)
+                i=Gtk.MenuItem(label)
                 i.connect('activate', action)
                 menu.append(i)
             if self.annotation is None:
-                i=gtk.MenuItem(_("Complete bookmark"))
+                i=Gtk.MenuItem(_("Complete bookmark"))
                 i.connect('activate', lambda i: self.set_end(self.begin + 2000))
                 menu.append(i)
             else:
-                i=gtk.MenuItem(_("Change type to"))
-                sm=gtk.Menu()
+                i=Gtk.MenuItem(_("Change type to"))
+                sm=Gtk.Menu()
                 i.set_submenu(sm)
                 menu.append(i)
                 l=[ (t, self.controller.get_title(t))
@@ -1287,7 +1255,7 @@ class ActiveBookmark(object):
                     if t != self.annotation.type ]
                 l.sort(key=lambda a: a[1])
                 for (typ, title) in l:
-                    i=gtk.MenuItem(title, use_underline=False)
+                    i=Gtk.MenuItem(title, use_underline=False)
                     i.connect('activate', (lambda i, t: self.transtype(t)), typ)
                     sm.append(i)
             return
@@ -1295,25 +1263,22 @@ class ActiveBookmark(object):
 
         self.begin_widget.comment_entry.set_accepts_tab(False)
 
-        box.pack_start(self.begin_widget.widget, expand=True)
-        box.pack_start(self.end_widget, expand=False)
+        box.pack_start(self.begin_widget.widget, True, True, 0)
+        box.pack_start(self.end_widget, False, True, 0)
         f.add(box)
         f.show_all()
 
         self.frame=f
 
-        # Memorize the default textview color.
-        self.default_background_color=self.begin_widget.comment_entry.get_style().base[gtk.STATE_NORMAL]
-
         #if self.annotation is not None:
         self.set_frame_attributes()
 
         # Add a padding widget so that the frame fits the displayed elements
-        #padding=gtk.HBox()
-        #padding.pack_start(f, expand=False)
+        #padding=Gtk.HBox()
+        #padding.pack_start(f, False, True, 0)
 
         # Use an Event box to be able to drag the frame representing an annotation
-        eb=gtk.EventBox()
+        eb=Gtk.EventBox()
         eb.add(f)
 
         def drag_sent(widget, context, selection, targetType, eventTime):
@@ -1323,61 +1288,59 @@ class ActiveBookmark(object):
                 if self.annotation is None:
                     return False
                 else:
-                    selection.set(selection.target, 8, self.annotation.uri.encode('utf8'))
+                    selection.set(selection.get_target(), 8, self.annotation.uri.encode('utf8'))
             elif targetType == config.data.target_type['uri-list']:
                 if self.annotation is None:
                     return False
                 c=self.controller.build_context(here=self.annotation)
                 uri=c.evaluateValue('here/absolute_url')
-                selection.set(selection.target, 8, uri.encode('utf8'))
+                selection.set(selection.get_target(), 8, uri.encode('utf8'))
             elif (targetType == config.data.target_type['text-plain']
                   or targetType == config.data.target_type['TEXT']
                   or targetType == config.data.target_type['STRING']):
                 # Put the timecode + content
-                selection.set(selection.target, 8, ("%s : %s" % (helper.format_time(self.begin),
+                selection.set(selection.get_target(), 8, ("%s : %s" % (helper.format_time(self.begin),
                                                                  self.content)).encode('utf8'))
             elif targetType == config.data.target_type['timestamp']:
-                selection.set(selection.target, 8, encode_drop_parameters(timestamp=self.begin,
+                selection.set(selection.get_target(), 8, encode_drop_parameters(timestamp=self.begin,
                                                                           comment=self.content))
             else:
                 return False
             return True
 
-        eb.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                           config.data.drag_type['annotation']
-                           + config.data.drag_type['uri-list']
-                           + config.data.drag_type['text-plain']
-                           + config.data.drag_type['TEXT']
-                           + config.data.drag_type['STRING']
-                           + config.data.drag_type['timestamp']
-                           + config.data.drag_type['tag']
-                           ,
-                           gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
+        eb.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                           config.data.get_target_types('annotation',
+                                                        'uri-list',
+                                                        'text-plain',
+                                                        'TEXT',
+                                                        'STRING',
+                                                        'timestamp',
+                                                        'tag'),
+                           Gdk.DragAction.LINK | Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
         eb.connect('drag-data-get', drag_sent)
 
         def _drag_begin(widget, context):
-            w=gtk.Window(gtk.WINDOW_POPUP)
+            w=Gtk.Window(Gtk.WindowType.POPUP)
             w.set_decorated(False)
 
-            style=get_color_style(w, 'black', 'white')
-            w.set_style(style)
+            w.get_style_context().add_class('advene_drag_icon')
 
-            v=gtk.VBox()
-            v.set_style(style)
-            h=gtk.HBox()
-            h.set_style(style)
-            begin=gtk.Image()
-            h.pack_start(begin, expand=False)
-            padding=gtk.HBox()
+            v=Gtk.VBox()
+            v.get_style_context().add_class('advene_drag_icon')
+            h=Gtk.HBox()
+            h.get_style_context().add_class('advene_drag_icon')
+            begin=Gtk.Image()
+            h.pack_start(begin, False, True, 0)
+            padding=Gtk.HBox()
             # Padding
-            h.pack_start(padding, expand=True)
-            end=gtk.Image()
-            h.pack_start(end, expand=False)
-            v.pack_start(h, expand=False)
-            l=gtk.Label()
-            l.set_ellipsize(pango.ELLIPSIZE_END)
-            l.set_style(style)
-            v.pack_start(l, expand=False)
+            h.pack_start(padding, True, True, 0)
+            end=Gtk.Image()
+            h.pack_start(end, False, True, 0)
+            v.pack_start(h, False, True, 0)
+            l=Gtk.Label()
+            l.set_ellipsize(Pango.EllipsizeMode.END)
+            l.get_style_context().add_class('advene_drag_icon')
+            v.pack_start(l, False, True, 0)
 
             def set_cursor(wid, t=None, precision=None):
                 if t is None:
@@ -1411,7 +1374,7 @@ class ActiveBookmark(object):
             w.set_cursor()
             w.set_size_request(long(2.5 * config.data.preferences['drag-snapshot-width']), -1)
             widget._icon=w
-            context.set_icon_widget(w, 0, 0)
+            Gtk.drag_set_icon_widget(context, w, 0, 0)
             return True
 
         def _drag_end(widget, context):
@@ -1420,7 +1383,7 @@ class ActiveBookmark(object):
             return True
 
         def _drag_motion(widget, drag_context, x, y, timestamp):
-            w=drag_context.get_source_widget()
+            w=Gtk.drag_get_source_widget(drag_context)
             try:
                 w._icon.set_cursor()
             except AttributeError:
@@ -1434,7 +1397,7 @@ class ActiveBookmark(object):
             eb.connect('drag-motion', _drag_motion)
 
         def _button_press(widget, event):
-            if event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS:
+            if event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
                 if self.annotation is not None:
                     menu=advene.gui.popup.Menu(self.annotation, controller=self.controller)
                     menu.popup()
diff --git a/lib/advene/gui/views/annotationdisplay.py b/lib/advene/gui/views/annotationdisplay.py
index b44ffde..f2a7309 100644
--- a/lib/advene/gui/views/annotationdisplay.py
+++ b/lib/advene/gui/views/annotationdisplay.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -19,8 +19,10 @@
 """Module displaying the contents of an annotation.
 """
 
-import gobject
-import gtk
+from gi.repository import GObject
+from gi.repository import Gdk
+from gi.repository import GdkPixbuf
+from gi.repository import Gtk
 from gettext import gettext as _
 
 import advene.core.config as config
@@ -143,14 +145,14 @@ class AnnotationDisplay(AdhocView):
             elif self.annotation.content.mimetype.startswith('image/'):
                 # Image content, other than image/svg
                 # Load the element content
-                loader = gtk.gdk.PixbufLoader()
+                loader = GdkPixbuf.PixbufLoader()
                 try:
                     loader.write (self.annotation.content.data, len (self.annotation.content.data))
                     loader.close ()
                     pixbuf = loader.get_pixbuf ()
-                except gobject.GError:
+                except GObject.GError:
                     # The PNG data was invalid.
-                    pixbuf=gtk.gdk.pixbuf_new_from_file(config.data.advenefile( ( 'pixmaps', 'notavailable.png' ) ))
+                    pixbuf=GdkPixbuf.Pixbuf.new_from_file(config.data.advenefile( ( 'pixmaps', 'notavailable.png' ) ))
 
                 d['contents']=''
                 d['imagecontents'] = pixbuf
@@ -175,7 +177,7 @@ class AnnotationDisplay(AdhocView):
                     height=pixbuf.get_height()
                     if width > w and w > 0:
                         height = 1.0 * w * height / width
-                        pixbuf=pixbuf.scale_simple(int(w), int(height), gtk.gdk.INTERP_BILINEAR)
+                        pixbuf=pixbuf.scale_simple(int(w), int(height), GdkPixbuf.InterpType.BILINEAR)
                     self.label['imagecontents'].set_from_pixbuf(pixbuf)
             else:
                 widget = self.label.get(k)
@@ -193,29 +195,29 @@ class AnnotationDisplay(AdhocView):
         return False
 
     def build_widget(self):
-        v=gtk.VBox()
+        v=Gtk.VBox()
 
         self.label={}
         self.sw={}
 
-        h=gtk.HBox()
-        self.label['title']=gtk.Label()
-        h.pack_start(self.label['title'], expand=False)
-        v.pack_start(h, expand=False)
+        h=Gtk.HBox()
+        self.label['title']=Gtk.Label()
+        h.pack_start(self.label['title'], False, True, 0)
+        v.pack_start(h, False, True, 0)
 
-        h=gtk.HBox()
-        self.label['begin']=gtk.Label()
-        h.pack_start(self.label['begin'], expand=False)
-        l=gtk.Label(' - ')
-        h.pack_start(l, expand=False)
-        self.label['end']=gtk.Label()
-        h.pack_start(self.label['end'], expand=False)
-        v.pack_start(h, expand=False)
+        h=Gtk.HBox()
+        self.label['begin']=Gtk.Label()
+        h.pack_start(self.label['begin'], False, True, 0)
+        l=Gtk.Label(label=' - ')
+        h.pack_start(l, False, True, 0)
+        self.label['end']=Gtk.Label()
+        h.pack_start(self.label['end'], False, True, 0)
+        v.pack_start(h, False, True, 0)
 
         def handle_motion(widget, event):
             if isinstance(self.annotation, Annotation):
                 i = self.label['image']
-                i.epsilon = self.annotation.fragment.duration / widget.allocation.width
+                i.epsilon = self.annotation.fragment.duration / widget.get_allocation().width
                 v = self.annotation.fragment.begin + i.epsilon * 20 * int(event.x / 20)
                 i.set_value(v)
             return True
@@ -227,37 +229,37 @@ class AnnotationDisplay(AdhocView):
                 i.set_value(self.annotation.fragment.begin)
             return True
 
-        fr = gtk.Expander ()
+        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'].add_events(Gdk.EventMask.POINTER_MOTION_MASK
+                                       | Gdk.EventMask.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)
+        v.pack_start(fr, False, True, 0)
 
         # 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.annotation.content.data = self.label['contents'].get_text().decode('utf-8')
                 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)
+        hbox = Gtk.HBox()
+        hbox.pack_start(Gtk.Label(_("Contents")), False, False, 0)
         ok_button=get_pixmap_button('small_ok.png', handle_ok)
-        ok_button.set_relief(gtk.RELIEF_NONE)
+        ok_button.set_relief(Gtk.ReliefStyle.NONE)
         ok_button.set_tooltip_text(_("Validate"))
         ok_button.set_no_show_all(True)
-        hbox.pack_start(ok_button, expand=False)
+        hbox.pack_start(ok_button, False, True, 0)
 
-        f=gtk.Frame()
+        f=Gtk.Frame()
         f.set_label_widget(hbox)
 
         def contents_modified(buf):
@@ -268,12 +270,12 @@ class AnnotationDisplay(AdhocView):
                 ok_button.hide()
             return True
 
-        c=self.label['contents']=gtk.TextView()
-        c.set_wrap_mode(gtk.WRAP_WORD_CHAR)
+        c=self.label['contents']=Gtk.TextView()
+        c.set_wrap_mode(Gtk.WrapMode.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=Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         sw.add(c)
         def set_text(widget, t):
             b=widget.get_buffer()
@@ -286,13 +288,13 @@ class AnnotationDisplay(AdhocView):
         c.set_text = set_text.__get__(c)
         def get_text(widget):
             b=widget.get_buffer()
-            return b.get_text(*b.get_bounds())
+            return b.get_text(*b.get_bounds() + ( False, ))
         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
+            if (event.keyval == Gdk.KEY_Return
+                and event.get_state() & Gdk.ModifierType.CONTROL_MASK
                 and widget.get_buffer().get_modified()):
                 handle_ok(ok_button)
                 return True
@@ -306,14 +308,14 @@ class AnnotationDisplay(AdhocView):
                                      element=self.annotation,
                                      indexer=self.controller.package._indexer)
 
-        image=self.label['imagecontents']=gtk.Image()
+        image=self.label['imagecontents']=Gtk.Image()
 
-        swi=gtk.ScrolledWindow()
-        swi.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        swi=Gtk.ScrolledWindow()
+        swi.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         swi.add_with_viewport(image)
         self.sw['imagecontents']=swi
 
-        vb=gtk.VBox()
+        vb=Gtk.VBox()
         vb.add(sw)
         vb.add(swi)
 
@@ -328,17 +330,17 @@ class AnnotationDisplay(AdhocView):
             """Handle the drop of an annotation.
             """
             if targetType == config.data.target_type['annotation']:
-                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
                 if sources:
                     self.set_annotation(sources[0])
                 return True
             return False
         # The button can receive drops (to display annotations)
         v.connect('drag-data-received', annotation_drag_received_cb)
-        v.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                        gtk.DEST_DEFAULT_HIGHLIGHT |
-                        gtk.DEST_DEFAULT_ALL,
-                        config.data.drag_type['annotation'],
-                        gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE)
+        v.drag_dest_set(Gtk.DestDefaults.MOTION |
+                        Gtk.DestDefaults.HIGHLIGHT |
+                        Gtk.DestDefaults.ALL,
+                        config.data.get_target_types('annotation'),
+                        Gdk.DragAction.COPY | Gdk.DragAction.LINK | Gdk.DragAction.MOVE)
 
         return v
diff --git a/lib/advene/gui/views/bookmarks.py b/lib/advene/gui/views/bookmarks.py
index 5e7390b..fb30b88 100755
--- a/lib/advene/gui/views/bookmarks.py
+++ b/lib/advene/gui/views/bookmarks.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -17,9 +17,12 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
 """Module displaying time bookmarks (for navigation history for instance)."""
+import logging
+logger = logging.getLogger(__name__)
 
-import gtk
-import pango
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import Pango
 import urllib
 
 # Advene part
@@ -174,7 +177,7 @@ class Bookmarks(AdhocView):
             return True
         b=BookmarkWidget(self.controller, position, comment, self.display_comments)
         self.bookmarks.append(b)
-        self.mainbox.pack_start(b.widget, expand=False)
+        self.mainbox.pack_start(b.widget, False, True, 0)
         b.widget.show_all()
         self.autoscroll()
         return True
@@ -182,7 +185,7 @@ class Bookmarks(AdhocView):
     def refresh(self, *p):
         self.mainbox.foreach(self.mainbox.remove)
         for b in self.bookmarks:
-            self.mainbox.pack_start(b.widget, expand=False)
+            self.mainbox.pack_start(b.widget, False, True, 0)
         self.mainbox.show_all()
         self.autoscroll()
         return True
@@ -198,17 +201,17 @@ class Bookmarks(AdhocView):
                 adj=self.scrollwindow.get_vadjustment()
             else:
                 adj=self.scrollwindow.get_hadjustment()
-            adj.set_value(adj.upper)
+            adj.set_value(adj.get_upper())
 
     def build_widget(self):
-        v=gtk.VBox()
+        v=Gtk.VBox()
 
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
         hb.set_homogeneous(False)
 
         def remove_drag_received(widget, context, x, y, selection, targetType, time):
             if targetType == config.data.target_type['timestamp']:
-                data=decode_drop_parameters(selection.data)
+                data=decode_drop_parameters(selection.get_data())
                 position=long(data['timestamp'])
                 w=self.get_matching_bookmark(position)
                 if position is not None:
@@ -216,17 +219,18 @@ class Bookmarks(AdhocView):
                     self.refresh()
                 return True
             else:
-                print "Unknown target type for drop: %d" % targetType
+                logger.warn("Unknown target type for drop: %d" % targetType)
             return False
 
-        b=get_small_stock_button(gtk.STOCK_DELETE)
+        b=get_small_stock_button(Gtk.STOCK_DELETE)
         b.set_tooltip_text(_("Drop a position here to remove it from the list"))
-        b.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                        gtk.DEST_DEFAULT_HIGHLIGHT |
-                        gtk.DEST_DEFAULT_ALL,
-                        config.data.drag_type['timestamp'], gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_COPY)
+        b.drag_dest_set(Gtk.DestDefaults.MOTION |
+                        Gtk.DestDefaults.HIGHLIGHT |
+                        Gtk.DestDefaults.ALL,
+                        config.data.get_target_types('timestamp'),
+                        Gdk.DragAction.LINK | Gdk.DragAction.COPY)
         b.connect('drag-data-received', remove_drag_received)
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
         def bookmark_current_time(b):
             p=self.controller.player
@@ -237,30 +241,30 @@ class Bookmarks(AdhocView):
                 self.append(v)
             return True
 
-        tb=gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
+        tb=Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
         for icon, action, tip in (
             ('set-to-now.png', bookmark_current_time, _("Insert a bookmark for the current video time")),
-            (gtk.STOCK_CONVERT, self.convert_to_annotations, _("Convert bookmarks to annotations")),
-            (gtk.STOCK_SAVE, self.save_view, _("Save view")),
+            (Gtk.STOCK_CONVERT, self.convert_to_annotations, _("Convert bookmarks to annotations")),
+            (Gtk.STOCK_SAVE, self.save_view, _("Save view")),
             ):
             if icon.endswith('.png'):
                 b=get_pixmap_toolbutton(icon)
             else:
-                b=gtk.ToolButton(stock_id=icon)
+                b=Gtk.ToolButton(stock_id=icon)
             b.set_tooltip_text(tip)
             b.connect('clicked', action)
             tb.insert(b, -1)
         hb.add(tb)
-        v.pack_start(hb, expand=False)
+        v.pack_start(hb, False, True, 0)
 
         if self.options['vertical']:
-            mainbox=gtk.VBox()
+            mainbox=Gtk.VBox()
         else:
-            mainbox=gtk.HBox()
+            mainbox=Gtk.HBox()
 
-        sw=gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        sw=Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
 
         sw.add_with_viewport(mainbox)
         self.scrollwindow=sw
@@ -268,19 +272,19 @@ class Bookmarks(AdhocView):
 
         def mainbox_drag_received(widget, context, x, y, selection, targetType, time):
             if targetType == config.data.target_type['timestamp']:
-                data=decode_drop_parameters(selection.data)
+                data=decode_drop_parameters(selection.get_data())
                 position=long(data['timestamp'])
                 comment=data.get('comment', '')
                 self.append(position, comment=comment)
                 return True
             else:
-                print "Unknown target type for drop: %d" % targetType
+                logger.warn("Unknown target type for drop: %d" % targetType)
             return False
 
-        self.mainbox.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                  gtk.DEST_DEFAULT_HIGHLIGHT |
-                                  gtk.DEST_DEFAULT_ALL,
-                                  config.data.drag_type['timestamp'], gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_COPY)
+        self.mainbox.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                  Gtk.DestDefaults.HIGHLIGHT |
+                                  Gtk.DestDefaults.ALL,
+                                  config.data.get_target_types('timestamp'), Gdk.DragAction.LINK | Gdk.DragAction.COPY)
         self.mainbox.connect('drag-data-received', mainbox_drag_received)
 
         v.add(sw)
@@ -314,43 +318,43 @@ class BookmarkWidget(object):
         self.image.connect('clicked', self.image.goto_and_refresh)
 
         if self.display_comments:
-            hbox=gtk.HBox()
-            self.comment_entry=gtk.TextView()
+            hbox=Gtk.HBox()
+            self.comment_entry=Gtk.TextView()
             # Hook the completer component
             completer=Completer(textview=self.comment_entry,
                                 controller=self.controller,
                                 element=self.comment_entry.get_buffer(),
                                 indexer=self.controller.package._indexer)
-            self.comment_entry.set_wrap_mode(gtk.WRAP_WORD)
-            fd=pango.FontDescription('sans %d' % config.data.preferences['timeline']['font-size'])
+            self.comment_entry.set_wrap_mode(Gtk.WrapMode.WORD)
+            fd=Pango.FontDescription('sans %d' % config.data.preferences['timeline']['font-size'])
             self.comment_entry.modify_font(fd)
             b=self.comment_entry.get_buffer()
             b.set_text(self.comment)
 
             def focus_in_event(wid, event):
-                if unicode(b.get_text(*b.get_bounds())) == self.default_comment:
+                if b.get_text(*b.get_bounds() + (False,)).decode('utf-8') == self.default_comment:
                     b.set_text('')
                 return False
             self.comment_entry.connect('focus-in-event', focus_in_event)
 
             def focus_out_event(wid, event):
-                if b.get_text(*b.get_bounds()) == '':
+                if b.get_text(*b.get_bounds() + (False,)) == '':
                     b.set_text(self.default_comment)
                 return False
             self.comment_entry.connect('focus-out-event', focus_out_event)
 
             def update_comment(buf):
-                self.comment=unicode(buf.get_text(*buf.get_bounds()))
+                self.comment=buf.get_text(*buf.get_bounds() + (False,)).decode('utf-8')
                 return True
             b.connect('changed', update_comment)
 
             #self.comment_entry.set_size_request(config.data.preferences['bookmark-snapshot-width'], -1)
 
-            sw=gtk.ScrolledWindow()
+            sw=Gtk.ScrolledWindow()
             sw.add(self.comment_entry)
-            sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_NEVER)
-            hbox.pack_start(self.image, expand=False)
-            hbox.pack_start(sw, expand=True)
+            sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.NEVER)
+            hbox.pack_start(self.image, False, True, 0)
+            hbox.pack_start(sw, True, True, 0)
             hbox.show_all()
             return hbox
         else:
diff --git a/lib/advene/gui/views/browser.py b/lib/advene/gui/views/browser.py
index fc5d3cd..e59c906 100755
--- a/lib/advene/gui/views/browser.py
+++ b/lib/advene/gui/views/browser.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,7 +28,8 @@ from advene.model.exception import AdveneException
 
 from gettext import gettext as _
 
-import gtk
+from gi.repository import Gdk
+from gi.repository import Gtk
 
 name="TALES browser view plugin"
 
@@ -46,12 +47,12 @@ class BrowserColumn:
         self.widget.connect('key-press-event', self.key_pressed_cb)
 
     def key_pressed_cb(self, col, event):
-        if event.keyval == gtk.keysyms.Right:
+        if event.keyval == Gdk.KEY_Right:
             # Next column
             if self.next is not None:
                 self.next.get_focus()
             return True
-        elif event.keyval == gtk.keysyms.Left:
+        elif event.keyval == Gdk.KEY_Left:
             # Previous column
             if self.previous is not None:
                 self.previous.get_focus()
@@ -70,7 +71,7 @@ class BrowserColumn:
         return self.widget
 
     def get_liststore(self):
-        ls=gtk.ListStore(str)
+        ls=Gtk.ListStore(str)
         if self.model is None:
             return ls
         for att in helper.get_valid_members(self.model):
@@ -130,21 +131,21 @@ class BrowserColumn:
         return False
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        self.label=gtk.Button(self.name, use_underline=False)
+        self.label=Gtk.Button(self.name, use_underline=False)
         self.label.connect('clicked', self.on_column_activation)
-        vbox.pack_start(self.label, expand=False)
+        vbox.pack_start(self.label, False, True, 0)
 
-        sw = gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        sw = Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         vbox.add (sw)
 
         self.liststore = self.get_liststore()
-        self.listview = gtk.TreeView(self.liststore)
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn("Attributes", renderer, text=0)
-        column.set_widget(gtk.Label())
+        self.listview = Gtk.TreeView(self.liststore)
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn("Attributes", renderer, text=0)
+        column.set_widget(Gtk.Label())
         self.listview.append_column(column)
         self.listview.connect('key-press-event', self.key_pressed_cb)
 
@@ -179,14 +180,14 @@ class Browser(AdhocView):
         if self.callback:
             def validate_path(*p):
                 if self.callback:
-                    p=unicode(self.pathlabel.get_text())
+                    p=self.pathlabel.get_text().decode('utf-8')
                     self.close()
                     self.callback(p)
                 return True
 
             def validate_value(*p):
                 if self.callback:
-                    v="string:%s" % unicode(self.valuelabel.get_text())
+                    v=u"string:%s" % self.valuelabel.get_text().decode('utf-8')
                     self.close()
                     self.callback(v)
                 return True
@@ -248,8 +249,8 @@ class Browser(AdhocView):
                 columnbrowser.next=None
                 self._update_view(path, Exception(_("Expression returned None (there was an exception)")))
                 if config.data.preferences['expert-mode']:
-                    self.log("Exception when evaluating %s :\n%s" % ("/".join(path),
-                                                                     str(e)))
+                    self.log(u"Exception when evaluating %s :\n%s" % (u"/".join(path),
+                                                                      unicode(e)))
             return True
 
         self._update_view(path, el)
@@ -266,7 +267,7 @@ class Browser(AdhocView):
             col=BrowserColumn(element=el, name=attribute, callback=self.clicked_callback,
                               parent=columnbrowser)
             col.widget.set_property("width-request", self.column_width)
-            self.hbox.pack_start(col.get_widget(), expand=False)
+            self.hbox.pack_start(col.get_widget(), False, False, 0)
             columnbrowser.next=col
         else:
             # Delete all next+1 columns (we reuse the next one)
@@ -278,7 +279,7 @@ class Browser(AdhocView):
 
         # Scroll the columns
         adj=self.sw.get_hadjustment()
-        adj.value = adj.upper - .1
+        adj.set_value(adj.get_upper() - .1)
         return True
 
     def _update_view(self, path, element):
@@ -306,64 +307,64 @@ class Browser(AdhocView):
         return True
 
     def scroll_event(self, widget=None, event=None):
-        if event.state & gtk.gdk.CONTROL_MASK:
+        if event.get_state() & Gdk.ModifierType.CONTROL_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
+            if event.direction == Gdk.ScrollDirection.DOWN or event.direction == Gdk.ScrollDirection.RIGHT:
+                val = helper.clamp(a.get_value() + a.get_step_increment(),
+                                   a.get_lower(),
+                                   a.get_upper() - a.get_page_size())
+                if val != a.get_value():
+                    a.set_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
+            elif event.direction == Gdk.ScrollDirection.UP or event.direction == Gdk.ScrollDirection.LEFT:
+                val = helper.clamp(a.get_value() - a.get_step_increment(),
+                                   a.get_lower(),
+                                   a.get_upper() - a.get_page_size())
+                if val != a.get_value():
+                    a.set_value(val)
                     a.value_changed ()
                 return True
         return False
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        self.sw=gtk.ScrolledWindow()
-        self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        self.sw=Gtk.ScrolledWindow()
+        self.sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
 
         self.sw.connect('scroll-event', self.scroll_event)
         vbox.add(self.sw)
 
-        self.hbox = gtk.HBox()
+        self.hbox = Gtk.HBox()
 
         self.rootcolumn=BrowserColumn(element=self.element, name='here',
                                       callback=self.clicked_callback,
                                       parent=None)
         self.rootcolumn.widget.set_property("width-request", self.column_width)
-        self.hbox.pack_start(self.rootcolumn.get_widget(), expand=False)
+        self.hbox.pack_start(self.rootcolumn.get_widget(), False, False, 0)
 
         self.sw.add_with_viewport(self.hbox)
 
         def name_label(name, label):
-            hb=gtk.HBox()
-            l=gtk.Label()
+            hb=Gtk.HBox()
+            l=Gtk.Label()
             l.set_markup("<b>%s :</b> " % name)
-            hb.pack_start(l, expand=False)
-            hb.pack_start(label, expand=False)
+            hb.pack_start(l, False, True, 0)
+            hb.pack_start(label, False, True, 0)
             return hb
 
         # Display the type/value of the current element
-        self.pathlabel = gtk.Label("here")
+        self.pathlabel = Gtk.Label(label="here")
         self.pathlabel.set_selectable(True)
-        vbox.pack_start(name_label(_("Path"), self.pathlabel), expand=False)
+        vbox.pack_start(name_label(_("Path"), self.pathlabel), False, False, 0)
 
-        self.typelabel = gtk.Label(unicode(type(self.element)))
-        vbox.pack_start(name_label(_("Type"), self.typelabel), expand=False)
+        self.typelabel = Gtk.Label(label=unicode(type(self.element)))
+        vbox.pack_start(name_label(_("Type"), self.typelabel), False, False, 0)
 
-        self.valuelabel = gtk.Label("here")
+        self.valuelabel = Gtk.Label(label="here")
         self.valuelabel.set_selectable(True)
-        vbox.pack_start(name_label(_("Value"), self.valuelabel), expand=False)
+        vbox.pack_start(name_label(_("Value"), self.valuelabel), False, False, 0)
 
         vbox.show_all()
         def debug(*p):
diff --git a/lib/advene/gui/views/caption.py b/lib/advene/gui/views/caption.py
index 389e66b..e275974 100644
--- a/lib/advene/gui/views/caption.py
+++ b/lib/advene/gui/views/caption.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -22,9 +22,8 @@
 from advene.gui.views import AdhocView
 
 from gettext import gettext as _
-from advene.gui.util import get_color_style
 
-import gtk
+from gi.repository import Gtk
 
 class CaptionView(AdhocView):
     view_name = _("Caption")
@@ -59,19 +58,18 @@ class CaptionView(AdhocView):
         return True
 
     def build_widget(self):
-        v=gtk.HBox()
+        v=Gtk.HBox()
 
-        style=get_color_style(v, 'black', 'white')
-        v.set_style(style)
+        v.get_style_context().add_class('advene_caption')
 
         def create_label(text, widget):
-            eb=gtk.EventBox()
-            l=gtk.Label(text)
+            eb=Gtk.EventBox()
+            l=Gtk.Label(label=text)
             l.set_single_line_mode(True)
             eb.add(l)
-            l.set_style(style)
-            eb.set_style(style)
-            widget.pack_start(eb)
+            l.get_style_context().add_class('advene_caption')
+            eb.get_style_context().add_class('advene_caption')
+            widget.pack_start(eb, True, True, 0)
             return l
 
         self.label=create_label('', v)
diff --git a/lib/advene/gui/views/checker.py b/lib/advene/gui/views/checker.py
index 0d956f5..bcdb800 100644
--- a/lib/advene/gui/views/checker.py
+++ b/lib/advene/gui/views/checker.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -20,7 +20,7 @@
 """
 
 import itertools
-import gtk
+from gi.repository import Gtk
 
 from gettext import gettext as _
 
@@ -82,15 +82,15 @@ class CheckerView(AdhocView):
                 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)
+        self.overlap_table.model.set_sort_column_id(advene.gui.views.table.COLUMN_TYPE, Gtk.SortType.ASCENDING)
 
     def build_widget(self):
-        mainbox = gtk.VBox()
+        mainbox = Gtk.VBox()
 
-        mainbox.pack_start(gtk.Label(_("List of possible issues in the current package")), expand=False)
+        mainbox.pack_start(Gtk.Label(_("List of possible issues in the current package")), False, False, 0)
 
-        notebook=gtk.Notebook()
-        notebook.set_tab_pos(gtk.POS_TOP)
+        notebook=Gtk.Notebook()
+        notebook.set_tab_pos(Gtk.PositionType.TOP)
         notebook.popup_disable()
         mainbox.add(notebook)
 
@@ -98,14 +98,14 @@ class CheckerView(AdhocView):
         self.overlap_table = table
 
         # Set colors
-        table.columns['begin'].add_attribute(table.columns['begin'].get_cell_renderers()[0],
+        table.columns['begin'].add_attribute(table.columns['begin'].get_cells()[0],
                                              'cell-background',
                                              advene.gui.views.table.COLUMN_CUSTOM_FIRST)
-        table.columns['end'].add_attribute(table.columns['end'].get_cell_renderers()[0],
+        table.columns['end'].add_attribute(table.columns['end'].get_cells()[0],
                                            'cell-background',
                                            advene.gui.views.table.COLUMN_CUSTOM_FIRST + 1)
 
-        notebook.append_page(table.widget, gtk.Label(_("Overlapping")))
+        notebook.append_page(table.widget, Gtk.Label(label=_("Overlapping")))
 
         return mainbox
 
diff --git a/lib/advene/gui/views/editaccumulator.py b/lib/advene/gui/views/editaccumulator.py
index 068ed20..9bcf77a 100644
--- a/lib/advene/gui/views/editaccumulator.py
+++ b/lib/advene/gui/views/editaccumulator.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,8 +21,11 @@
 
 This widget allows to stack compact editing widgets.
 """
+import logging
+logger = logging.getLogger(__name__)
 
-import gtk
+from gi.repository import Gdk
+from gi.repository import Gtk
 
 from gettext import gettext as _
 
@@ -57,7 +60,7 @@ class EditAccumulator(AccumulatorPopup):
         w=e.compact()
 
         # Buttons hbox
-        hbox=gtk.HBox()
+        hbox=Gtk.HBox()
 
         def handle_ok(b, w):
             e.apply_cb()
@@ -66,20 +69,20 @@ class EditAccumulator(AccumulatorPopup):
 
         # OK button
         b=get_pixmap_button('small_ok.png', handle_ok, w)
-        b.set_relief(gtk.RELIEF_NONE)
+        b.set_relief(Gtk.ReliefStyle.NONE)
         b.set_tooltip_text(_("Validate"))
-        hbox.pack_start(b, expand=False)
+        hbox.pack_start(b, False, True, 0)
 
         # Close button
         b=get_pixmap_button('small_close.png', self.undisplay_cb, w)
-        b.set_relief(gtk.RELIEF_NONE)
+        b.set_relief(Gtk.ReliefStyle.NONE)
         b.set_tooltip_text(_("Close"))
-        hbox.pack_start(b, expand=False)
+        hbox.pack_start(b, False, True, 0)
 
         t=self.get_short_title(element)
-        l=gtk.Label()
+        l=Gtk.Label()
         l.set_markup('<b>%s</b>' % t.replace('<', '<'))
-        hbox.pack_start(l, expand=True)
+        hbox.pack_start(l, True, True, 0)
 
         self.edited_elements[element]=w
         w._title_label=l
@@ -109,7 +112,7 @@ class EditAccumulator(AccumulatorPopup):
         # Limit label size
         # Ellipsize does not work well here, the label is always
         # allocated too small a space
-        #l.set_ellipsize(pango.ELLIPSIZE_END)
+        #l.set_ellipsize(Pango.EllipsizeMode.END)
         if len(t) > 80:
             t=unicode(t[:79])+u'\u2026'
         return t
@@ -162,11 +165,11 @@ class EditAccumulator(AccumulatorPopup):
 
     def drag_received(self, widget, context, x, y, selection, targetType, time):
         if targetType == config.data.target_type['annotation']:
-            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
             for source in sources:
                 self.edit(source)
         else:
-            print "Unknown target type for drop: %d" % targetType
+            logger.warn("Unknown target type for drop: %d" % targetType)
         return True
 
     def build_widget(self):
@@ -174,9 +177,9 @@ class EditAccumulator(AccumulatorPopup):
 
         # The widget can receive drops from annotations
         mainbox.connect('drag-data-received', self.drag_received)
-        mainbox.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                  gtk.DEST_DEFAULT_HIGHLIGHT |
-                                  gtk.DEST_DEFAULT_ALL,
-                                  config.data.drag_type['annotation'], gtk.gdk.ACTION_LINK)
+        mainbox.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                  Gtk.DestDefaults.HIGHLIGHT |
+                                  Gtk.DestDefaults.ALL,
+                                  config.data.get_target_types('annotation'), Gdk.DragAction.LINK)
 
         return mainbox
diff --git a/lib/advene/gui/views/editionhistory.py b/lib/advene/gui/views/editionhistory.py
index 60bb79a..0a3d54b 100644
--- a/lib/advene/gui/views/editionhistory.py
+++ b/lib/advene/gui/views/editionhistory.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -23,7 +23,7 @@ This view displays a list of last n edited/created elements.
 
 from gettext import gettext as _
 
-import gtk
+from gi.repository import Gtk
 
 import advene.core.config as config
 from advene.gui.views import AdhocView
@@ -72,19 +72,19 @@ class EditionHistory(AdhocView):
                                (self.edited, g.last_edited) ):
             w.foreach(w.remove)
             for e in reversed(elements):
-                b=gtk.Button("\n".join((helper.get_type(e), self.controller.get_title(e))), use_underline=False)
+                b=Gtk.Button("\n".join((helper.get_type(e), self.controller.get_title(e))), use_underline=False)
                 b.set_alignment(0, 0)
                 colorname=self.controller.get_element_color(e)
                 if colorname:
                     if config.data.os == 'win32':
                         text=b.get_label()
                         b.foreach(b.remove)
-                        l=gtk.Label()
+                        l=Gtk.Label()
                         l.set_markup('<span background="%s">%s</span>' % (colorname, text))
                         l.show()
                         b.add(l)
                     else:
-                        style = b.modify_bg(gtk.STATE_NORMAL, name2color(colorname))
+                        style = b.modify_bg(Gtk.StateType.NORMAL, name2color(colorname))
                 b.connect('clicked', (lambda i, el: self.controller.gui.edit_element(el)),
                           e)
                 content=getattr(e, 'content', None)
@@ -92,23 +92,23 @@ class EditionHistory(AdhocView):
                     b.set_tooltip_text(content.data)
                 enable_drag_source(b, e, self.controller)
                 b.connect('button-press-event', display_popup, e)
-                w.pack_start(b, expand=False)
+                w.pack_start(b, False, True, 0)
         self.widget.show_all()
         return True
 
     def build_widget(self):
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
 
         for (label, attname) in ( (_("Created"), 'created'),
                                   (_("Edited"), 'edited' ) ):
-            c=gtk.VBox()
-            c.pack_start(gtk.Label(label), expand=False)
+            c=Gtk.VBox()
+            c.pack_start(Gtk.Label(label), False, False, 0)
 
-            sw = gtk.ScrolledWindow()
-            sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+            sw = Gtk.ScrolledWindow()
+            sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
             c.add(sw)
 
-            v=gtk.VBox()
+            v=Gtk.VBox()
             sw.add_with_viewport(v)
             setattr(self, attname, v)
 
diff --git a/lib/advene/gui/views/finder.py b/lib/advene/gui/views/finder.py
index 6983616..e144a79 100644
--- a/lib/advene/gui/views/finder.py
+++ b/lib/advene/gui/views/finder.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,28 +18,36 @@
 #
 
 # Advene finder, a la MacOS X
+import logging
+logger = logging.getLogger(__name__)
 
 from gettext import gettext as _
 
-import gtk
-import gobject
+from gi.repository import Gdk
+from gi.repository import GdkPixbuf
+from gi.repository import Gtk
+from gi.repository import GObject
 import urllib
 
 import advene.core.config as config
-from advene.gui.views.tree import DetailedTreeModel
+from advene.gui.edit.properties import EditWidget
 from advene.gui.views import AdhocView
 from advene.gui.views.annotationdisplay import AnnotationDisplay
 from advene.gui.views.relationdisplay import RelationDisplay
-from advene.model.schema import AnnotationType, RelationType
+
+from advene.model.package import Package
 from advene.model.annotation import Annotation, Relation
-from advene.model.view import View
-from advene.model.resources import ResourceData
+from advene.model.schema import Schema, AnnotationType, RelationType
+from advene.model.bundle import AbstractBundle
+from advene.model.resources import Resources, ResourceData
 from advene.model.query import Query
+from advene.model.view import View
+
 import advene.rules.elements
 import advene.gui.popup
 import advene.util.helper as helper
 import advene.model.tal.context
-from advene.gui.util import drag_data_get_cb, get_target_types, enable_drag_source, contextual_drag_begin, name2color
+from advene.gui.util import get_target_types, enable_drag_source, contextual_drag_begin, drag_data_get_cb
 
 name="Package finder view plugin"
 
@@ -49,26 +57,177 @@ def register(controller):
 # Matching between element classes and the FinderColumn class
 CLASS2COLUMN={}
 
+class Metadata(object):
+    """Virtual object describing an element Metadata.
+    """
+    def __init__(self, element, package, viewableType=None):
+        self.element = element
+        self.rootPackage = package
+        self.viewableType = viewableType
+
+    def get_config(self, uri):
+        (ns, k) = uri.split(':')
+        return self.element.getMetaData(config.data.namespace_prefix[ns], k)
+
+    def set_config(self, uri, value):
+        (ns, k) = uri.split(':')
+        self.element.setMetaData(config.data.namespace_prefix[ns], k, value)
+
+    def list_keys(self):
+        try:
+            return [ "%s:%s" % (config.data.reverse_namespace_prefix[nsuri],
+                                name)
+                     for (nsuri, name, value) in self.element.listMetaData() ]
+        except AttributeError:
+            return []
+
+class VirtualNode:
+    """Virtual node.
+    """
+    def __init__(self, name, package, viewableType=None):
+        self.title=name
+        self.rootPackage=package
+        self.viewableType=viewableType
+
+class DetailedTreeModel(object):
+    """Detailed Tree Model.
+
+    In this model,
+       - Annotations and Relations depend on their types.
+       - Types depend on their schema
+       - Schemas depend on their package list of schemas
+       - Views depend on their package list of views
+       - Resources depend on the Resource node
+    """
+    def __init__(self, controller=None, package=None):
+        self.childrencache = {}
+        self.virtual={}
+        self.virtual['root'] = VirtualNode(_("Package"), package)
+        self.virtual['views']=VirtualNode(_("List of views"), package, viewableType='view-list')
+        self.virtual['static']=VirtualNode(_("Static views"), package, viewableType='view-list')
+        self.virtual['dynamic']=VirtualNode(_("Dynamic views"), package, viewableType='view-list')
+        self.virtual['admin']=VirtualNode(_("Admin views"), package, viewableType='view-list')
+        self.virtual['adhoc']=VirtualNode(_("Adhoc views"), package)
+
+    def nodeParent (self, node):
+        #print "nodeparent %s" % node
+        if isinstance (node, Annotation):
+            parent = node.type
+        elif isinstance (node, Relation):
+            parent = node.type
+        elif isinstance (node, RelationType):
+            parent = node.schema
+        elif isinstance (node, AnnotationType):
+            parent = node.schema
+        elif isinstance (node, Schema):
+            parent = node.rootPackage.schemas
+        elif isinstance (node, View):
+            if node.id.startswith('_'):
+                parent=self.virtual['admin']
+            else:
+                t=helper.get_view_type(node)
+                parent=self.virtual[t]
+        elif isinstance (node, Query):
+            parent = node.rootPackage.queries
+        elif isinstance (node, Package):
+            parent = None
+        elif isinstance (node, AbstractBundle):
+            parent = node.rootPackage
+        elif isinstance (node, Resources):
+            parent = node.parent
+        elif isinstance (node, ResourceData):
+            parent = node.parent
+        elif node in (self.virtual['static'], self.virtual['dynamic'], self.virtual['adhoc'], self.virtual['admin']):
+            parent = self.virtual['views']
+        elif node == self.virtual['views']:
+            parent=node.rootPackage
+        else:
+            parent = None
+        return parent
+
+    def nodeChildren (self, node):
+        #print "nodechildren %s" % node
+        children = []
+        if isinstance (node, Annotation):
+            children = []
+        elif isinstance (node, Relation):
+            children = []
+        elif isinstance (node, AnnotationType):
+            if not node in self.childrencache:
+                self.childrencache[node] = node.annotations
+            children = self.childrencache[node]
+        elif isinstance (node, RelationType):
+            if not node in self.childrencache:
+                self.childrencache[node] = node.relations
+            children = self.childrencache[node]
+        elif isinstance (node, Schema):
+            # Do not cache these elements
+            l=list(node.annotationTypes)
+            l.extend(node.relationTypes)
+            children = l
+        elif isinstance (node, View):
+            children = []
+        elif isinstance (node, Query):
+            children = []
+        elif isinstance (node, Package):
+            if not node in self.childrencache:
+                self.childrencache[node] = [node.schemas, self.virtual['views'], node.queries, node.resources ]
+            children = self.childrencache[node]
+        elif isinstance (node, AbstractBundle):
+            children = node
+        elif isinstance (node, Resources):
+            if not node in self.childrencache:
+                self.childrencache[node] = node.children()
+            children = self.childrencache[node]
+        elif isinstance (node, ResourceData):
+            children = []
+        elif node == self.virtual['views']:
+            children=[ self.virtual['static'], self.virtual['dynamic'], self.virtual['adhoc'], self.virtual['admin'] ]
+        elif node is []:
+            children = [ self.get_package() ]
+        else:
+            children = []
+            if node == self.virtual['admin']:
+                children=sorted([ v
+                                  for v in node.rootPackage.views
+                                  if v.id.startswith('_') ],
+                                key=lambda e: (e.title or e.id).lower())
+            else:
+                for t in ('static', 'dynamic', 'adhoc'):
+                    if node == self.virtual[t]:
+                        children=sorted([ v
+                                          for v in node.rootPackage.views
+                                          if not v.id.startswith('_')
+                                          and helper.get_view_type(v) == t ],
+                                        key=lambda e: (e.title or e.id).lower())
+                        break
+        return children
+
+    def nodeHasChildren (self, node):
+        children = self.nodeChildren(node)
+        return (children is not None and children)
+
 class FinderColumn(object):
     """Abstract FinderColumn class.
     """
-    def __init__(self, controller=None, node=None, callback=None, parent=None):
+    def __init__(self, controller=None, model=None, node=None, callback=None, parent=None):
         self.controller=controller
+        self.model=model
         self.node=node
         self.callback=callback
         self.previous=parent
         self.next=None
-        self.widget=gtk.Frame()
+        self.widget=Gtk.Frame()
         self.widget.add(self.build_widget())
         self.widget.connect('key-press-event', self.key_pressed_cb)
 
     def key_pressed_cb(self, col, event):
-        if event.keyval == gtk.keysyms.Right:
+        if event.keyval == Gdk.KEY_Right:
             # Next column
             if self.next is not None:
                 self.next.get_focus()
             return True
-        elif event.keyval == gtk.keysyms.Left:
+        elif event.keyval == Gdk.KEY_Left:
             # Previous column
             if self.previous is not None:
                 self.previous.get_focus()
@@ -78,7 +237,7 @@ class FinderColumn(object):
     def get_focus(self):
         """Get the focus on the column.
 
-        As we use a gtk.Button at the top of every specialized
+        As we use a Gtk.Button at the top of every specialized
         ViewColumn, we want to use the second button.
         """
         b=self.get_child_buttons(self.widget)
@@ -89,17 +248,20 @@ class FinderColumn(object):
     def get_child_buttons(self, w):
         """Return the buttons contained in the widget.
         """
-        if isinstance(w, gtk.Frame):
+        if isinstance(w, Gtk.Frame):
             w=w.get_children()[0]
         b=[]
         try:
-            b=[ c for c in w.get_children() if isinstance(c, gtk.Button) ]
+            b=[ c for c in w.get_children() if isinstance(c, Gtk.Button) ]
         except AttributeError:
             return []
         for c in w.get_children():
             b.extend(self.get_child_buttons(c))
         return b
 
+    def get_selected_annotation_widgets(self):
+        return []
+
     def close(self):
         """Close this column, and all following ones.
         """
@@ -110,9 +272,7 @@ class FinderColumn(object):
             self.previous.next=None
 
     def get_name(self):
-        if self.node is None:
-            return "FIXME"
-        return self.node[self.COLUMN_TITLE]
+        return self.controller.get_title(self.node)
     name=property(fget=get_name, doc="Displayed name for the element")
 
     def update(self, node=None):
@@ -128,35 +288,38 @@ class FinderColumn(object):
         return True
 
     def build_widget(self):
-        return gtk.Label("Generic finder column")
+        return Gtk.Label(label="Generic column for %s" % self.name)
 
 class ModelColumn(FinderColumn):
     COLUMN_TITLE=0
-    COLUMN_NODE=1
+    COLUMN_ELEMENT=1
     COLUMN_COLOR=2
 
-    def get_valid_members(self, el):
+    def get_valid_members(self, node):
         """Return the list of valid members for the element.
         """
-        def title(c):
-            el=c[DetailedTreeModel.COLUMN_ELEMENT]
+        def title(el):
+            t = self.controller.get_title(el)
             if isinstance(el, AnnotationType):
-                return "%s (%d)" % (c[DetailedTreeModel.COLUMN_TITLE], len(el.annotations))
+                return "%s (%d)" % (t, len(el.annotations))
             elif isinstance(el, RelationType):
-                return "%s (%d)" % (c[DetailedTreeModel.COLUMN_TITLE], len(el.relations))
+                return "%s (%d)" % (t, len(el.relations))
             else:
-                return c[DetailedTreeModel.COLUMN_TITLE]
+                return t
 
         return [ (title(c),
                   c,
-                  c[DetailedTreeModel.COLUMN_COLOR]) for c in self.node.iterchildren() ]
+                  self.controller.get_element_color(c)) for c in self.model.nodeChildren(node) ]
+
+    def get_selected_annotation_widgets(self):
+        return []
 
     def get_focus(self):
         self.listview.grab_focus()
         return True
 
     def get_liststore(self):
-        ls=gtk.ListStore(str, object, str)
+        ls=Gtk.ListStore(str, object, str)
         if self.node is None:
             return ls
         for row in self.get_valid_members(self.node):
@@ -168,6 +331,7 @@ class ModelColumn(FinderColumn):
         self.liststore.clear()
         if self.node is None:
             return True
+        self.column.set_title(self.controller.get_title(node))
         for row in self.get_valid_members(node):
             self.liststore.append(row)
 
@@ -175,7 +339,7 @@ class ModelColumn(FinderColumn):
             # There is a next column. Should we still display it ?
             if not [ r
                      for r in self.liststore
-                     if r[self.COLUMN_NODE][DetailedTreeModel.COLUMN_ELEMENT] == self.next.node[self.COLUMN_NODE] ]:
+                     if r[self.COLUMN_ELEMENT] == self.next.node ]:
                 # The next node is no more in the current elements.
                 self.next.close()
                 self.next=None
@@ -195,14 +359,14 @@ class ModelColumn(FinderColumn):
             return False
         path, col, cx, cy = t
         it = model.get_iter(path)
-        node = model.get_value(it, DetailedTreeModel.COLUMN_ELEMENT)
+        node = model.get_value(it, self.COLUMN_ELEMENT)
         widget.get_selection().select_path (path)
-        if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+        if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
             # Double-click: edit the element
-            self.controller.gui.edit_element(node[DetailedTreeModel.COLUMN_ELEMENT])
+            self.controller.gui.edit_element(node)
             return True
         elif event.button == 3:
-            menu = advene.gui.popup.Menu(node[DetailedTreeModel.COLUMN_ELEMENT], controller=self.controller)
+            menu = advene.gui.popup.Menu(node, controller=self.controller)
             menu.popup()
             return True
         return False
@@ -212,7 +376,7 @@ class ModelColumn(FinderColumn):
         if selection is not None:
             store, it = selection.get_selected()
             if it is not None:
-                att = model.get_value (it, self.COLUMN_NODE)
+                att = model.get_value (it, self.COLUMN_ELEMENT)
         if att and self.callback:
             self.callback(self, att)
             return True
@@ -225,7 +389,7 @@ class ModelColumn(FinderColumn):
             if row is None:
                 element=None
             else:
-                element = treeview.get_model()[row[0]][self.COLUMN_NODE][DetailedTreeModel.COLUMN_ELEMENT]
+                element = treeview.get_model()[row[0]][self.COLUMN_ELEMENT]
             self.drag_data=(int(x), int(y), event, element)
 
     def on_treeview_button_release_event(self, treeview, event):
@@ -233,7 +397,7 @@ class ModelColumn(FinderColumn):
         self.drag_context=None
 
     def on_treeview_motion_notify_event(self, treeview, event):
-        if (event.state == gtk.gdk.BUTTON1_MASK
+        if (event.get_state() == Gdk.ModifierType.BUTTON1_MASK
             and self.drag_context is None
             and self.drag_data is not None
             and self.drag_data[3] is not None):
@@ -244,27 +408,46 @@ class ModelColumn(FinderColumn):
             if threshold:
                 # A drag was started. Setup the appropriate target.
                 element=self.drag_data[3]
-                targets=get_target_types(element)
-                actions = gtk.gdk.ACTION_MOVE | gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_COPY
+                targets = Gtk.TargetList.new(get_target_types(element))
+                actions = Gdk.DragAction.MOVE | Gdk.DragAction.LINK | Gdk.DragAction.COPY
                 button = 1
-                self.drag_context = treeview.drag_begin(targets, actions, button, self.drag_data[2])
+                self.drag_context = treeview.drag_begin_with_coordinates(targets, actions, button, event, -1, -1)
                 contextual_drag_begin(treeview, self.drag_context, element, self.controller)
                 self.drag_context._element=element
 
+    def on_title_clicked(self, column):
+        # Display metadata
+        if self.callback:
+            self.callback(self, Metadata(self.node, self.node.rootPackage))
+        return True
+
+    def own_drag_data_get_cb(self, treeview, context, selection, targetType, timestamp):
+        model, paths = treeview.get_selection().get_selected_rows()
+
+        els=[ model[p][self.COLUMN_ELEMENT] for p in paths ]
+
+        context._element = els[0]
+        drag_data_get_cb(treeview, context, selection, targetType, timestamp, self.controller)
+        return True
+
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        sw = gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        sw = Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         vbox.add (sw)
 
         self.liststore = self.get_liststore()
-        self.listview = gtk.TreeView(self.liststore)
-        renderer = gtk.CellRendererText()
-        column = gtk.TreeViewColumn("Attributes", renderer,
+        self.listview = Gtk.TreeView(self.liststore)
+        self.listview.container = self
+        renderer = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn("Attributes", renderer,
                                     text=self.COLUMN_TITLE,
                                     cell_background=self.COLUMN_COLOR)
-        column.set_widget(gtk.Label())
+        self.column = column
+        column.set_title(self.get_name())
+        column.set_clickable(True)
+        column.connect('clicked', self.on_title_clicked)
         self.listview.append_column(column)
 
         selection = self.listview.get_selection()
@@ -278,7 +461,7 @@ class ModelColumn(FinderColumn):
         self.listview.connect('button-press-event', self.on_treeview_button_press_event)
         self.listview.connect('button-release-event', self.on_treeview_button_release_event)
         self.listview.connect('motion-notify-event', self.on_treeview_motion_notify_event)
-        self.listview.connect('drag-data-get', drag_data_get_cb, self.controller)
+        self.listview.connect('drag-data-get', self.own_drag_data_get_cb)
 
         sw.add(self.listview)
 
@@ -289,13 +472,16 @@ class ModelColumn(FinderColumn):
 class AnnotationColumn(FinderColumn):
     def update(self, node=None):
         self.node=node
-        self.view.set_annotation(node[DetailedTreeModel.COLUMN_ELEMENT])
+        self.view.set_annotation(node)
         return True
 
+    def get_selected_annotation_widgets(self):
+        return []
+
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        self.view=AnnotationDisplay(controller=self.controller, annotation=self.node[DetailedTreeModel.COLUMN_ELEMENT])
+        self.view=AnnotationDisplay(controller=self.controller, annotation=self.node)
         vbox.add(self.view.widget)
         vbox.show_all()
         return vbox
@@ -304,27 +490,27 @@ CLASS2COLUMN[Annotation]=AnnotationColumn
 class RelationColumn(FinderColumn):
     def update(self, node=None):
         self.node=node
-        self.view.set_relation(node[DetailedTreeModel.COLUMN_ELEMENT])
+        self.view.set_relation(node)
         return True
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        self.view=RelationDisplay(controller=self.controller, relation=self.node[DetailedTreeModel.COLUMN_ELEMENT])
+        self.view=RelationDisplay(controller=self.controller, relation=self.node)
         vbox.add(self.view.widget)
         vbox.show_all()
         return vbox
 CLASS2COLUMN[Relation]=RelationColumn
 
 class ViewColumn(FinderColumn):
-    def __init__(self, controller=None, node=None, callback=None, parent=None):
-        self.element=node[DetailedTreeModel.COLUMN_ELEMENT]
-        FinderColumn.__init__(self, controller, node, callback, parent)
+    def __init__(self, controller=None, model=None, node=None, callback=None, parent=None):
+        self.element=node
+        FinderColumn.__init__(self, controller, model, node, callback, parent)
         self.update(node)
 
     def update(self, node=None):
         self.node=node
-        self.element=self.node[DetailedTreeModel.COLUMN_ELEMENT]
+        self.element = self.node
 
         self.label['title'].set_markup(_("View <b>%(title)s</b>\nId: %(id)s") % {
                 'title': self.controller.get_title(self.element).replace('<', '<'),
@@ -363,22 +549,22 @@ class ViewColumn(FinderColumn):
         return True
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
         self.label={}
-        self.label['title']=gtk.Label()
-        vbox.pack_start(self.label['title'], expand=False)
-        self.label['info']=gtk.Label()
-        vbox.pack_start(self.label['info'], expand=False)
-        b=self.label['edit']=gtk.Button(_("Edit view"))
+        self.label['title']=Gtk.Label()
+        vbox.pack_start(self.label['title'], False, True, 0)
+        self.label['info']=Gtk.Label()
+        vbox.pack_start(self.label['info'], False, True, 0)
+        b=self.label['edit']=Gtk.Button(_("Edit view"))
         b.connect('clicked', lambda w: self.controller.gui.edit_element(self.element))
         # Enable DND
         def get_element():
             return self.element
         enable_drag_source(b, get_element, self.controller)
 
-        vbox.pack_start(b, expand=False)
+        vbox.pack_start(b, False, True, 0)
 
-        b=self.label['activate']=gtk.Button(_("Open view"))
+        b=self.label['activate']=Gtk.Button(_("Open view"))
         b.connect('clicked', self.activate)
         # Drag and drop for adhoc views
 
@@ -388,35 +574,35 @@ class ViewColumn(FinderColumn):
                     return False
                 if helper.get_view_type(self.element) != 'adhoc':
                     return False
-                selection.set(selection.target, 8,
+                selection.set(selection.get_target(), 8,
                               urllib.urlencode( {
                             'id': self.element.id,
                             } ).encode('utf8'))
                 return True
             else:
-                print "Unknown target type for drag: %d" % targetType
+                logger.warn("Unknown target type for drag: %d" % targetType)
             return True
 
-        b.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                          config.data.drag_type['adhoc-view'],
-                          gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
+        b.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                          config.data.get_target_types('adhoc-view'),
+                          Gdk.DragAction.LINK | Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
         b.connect('drag-data-get', drag_data_get_cb)
 
-        vbox.pack_start(b, expand=False)
+        vbox.pack_start(b, False, True, 0)
 
         vbox.show_all()
         return vbox
 CLASS2COLUMN[View]=ViewColumn
 
 class QueryColumn(FinderColumn):
-    def __init__(self, controller=None, node=None, callback=None, parent=None):
-        self.element=node[DetailedTreeModel.COLUMN_ELEMENT]
-        FinderColumn.__init__(self, controller, node, callback, parent)
+    def __init__(self, controller=None, model=None, node=None, callback=None, parent=None):
+        self.element=node
+        FinderColumn.__init__(self, controller, model, node, callback, parent)
         self.update(node)
 
     def update(self, node=None):
         self.node=node
-        self.element=self.node[DetailedTreeModel.COLUMN_ELEMENT]
+        self.element=self.node
 
         self.label['title'].set_markup(_("%(type)s <b>%(title)s</b>\nId: %(id)s") % {
                 'type': helper.get_type(self.element),
@@ -428,21 +614,21 @@ class QueryColumn(FinderColumn):
         return True
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
         self.label={}
-        self.label['title']=gtk.Label()
-        vbox.pack_start(self.label['title'], expand=False)
+        self.label['title']=Gtk.Label()
+        vbox.pack_start(self.label['title'], False, True, 0)
 
-        b=self.label['edit']=gtk.Button(_("Edit query"))
+        b=self.label['edit']=Gtk.Button(_("Edit query"))
         # Enable DND
         def get_element():
             return self.element
         enable_drag_source(b, get_element, self.controller)
         b.connect('clicked', lambda w: self.controller.gui.edit_element(self.element))
-        vbox.pack_start(b, expand=False)
+        vbox.pack_start(b, False, True, 0)
 
-        f=gtk.Frame(_("Try to apply the query on..."))
-        v=gtk.VBox()
+        f=Gtk.Frame.new(_("Try to apply the query on..."))
+        v=Gtk.VBox()
         f.add(v)
 
         def try_query(b, expr):
@@ -452,7 +638,7 @@ class QueryColumn(FinderColumn):
                                                     query=self.element,
                                                     result=res,
                                                     destination='east')
-            except Exception, e:
+            except Exception:
                 #print "********** Oops"
                 #import traceback
                 #traceback.print_exc()
@@ -465,9 +651,9 @@ class QueryColumn(FinderColumn):
              ('package/annotations', _("all annotations of the package")),
              ('package/annotations/first', _("the first annotation of the package")),
             ):
-            b=gtk.Button(label, use_underline=False)
+            b=Gtk.Button(label, use_underline=False)
             b.connect('clicked', try_query, expr)
-            v.pack_start(b, expand=False)
+            v.pack_start(b, False, True, 0)
             self.apply_buttons.append(b)
 
         vbox.add(f)
@@ -476,14 +662,14 @@ class QueryColumn(FinderColumn):
 CLASS2COLUMN[Query]=QueryColumn
 
 class ResourceColumn(FinderColumn):
-    def __init__(self, controller=None, node=None, callback=None, parent=None):
-        self.element=node[DetailedTreeModel.COLUMN_ELEMENT]
-        FinderColumn.__init__(self, controller, node, callback, parent)
+    def __init__(self, controller=None, model=None, node=None, callback=None, parent=None):
+        self.element=node
+        FinderColumn.__init__(self, controller, model, node, callback, parent)
         self.update(node)
 
     def update(self, node=None):
         self.node=node
-        self.element=self.node[DetailedTreeModel.COLUMN_ELEMENT]
+        self.element=self.node
         self.label['title'].set_markup(_("%(type)s <b>%(title)s</b>\nId: %(id)s") % {
                 'type': helper.get_type(self.element),
                 'title': self.controller.get_title(self.element).replace('<', '<'),
@@ -494,31 +680,93 @@ class ResourceColumn(FinderColumn):
     def update_preview(self):
         self.preview.foreach(self.preview.remove)
         if self.element.mimetype.startswith('image/'):
-            i=gtk.Image()
-            pixbuf=gtk.gdk.pixbuf_new_from_file(self.element.file_)
+            i=Gtk.Image()
+            pixbuf=GdkPixbuf.Pixbuf.new_from_file(self.element.file_)
             i.set_from_pixbuf(pixbuf)
             self.preview.add(i)
             i.show()
+        # FIXME: if self.element.mimetype.startswith('audio/'):
+        # Add play icon
         return True
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
         self.label={}
-        self.label['title']=gtk.Label()
-        vbox.pack_start(self.label['title'], expand=False)
-        b=self.label['edit']=gtk.Button(_("Edit resource"))
+        self.label['title']=Gtk.Label()
+        vbox.pack_start(self.label['title'], False, True, 0)
+        b=self.label['edit']=Gtk.Button(_("Edit resource"))
         # Enable DND
         def get_element():
             return self.element
         enable_drag_source(b, get_element, self.controller)
         b.connect('clicked', lambda w: self.controller.gui.edit_element(self.element))
-        vbox.pack_start(b, expand=False)
-        self.preview=gtk.VBox()
+        vbox.pack_start(b, False, True, 0)
+        self.preview=Gtk.VBox()
         vbox.add(self.preview)
         vbox.show_all()
         return vbox
 CLASS2COLUMN[ResourceData]=ResourceColumn
 
+class MetadataColumn(FinderColumn):
+    def update(self, node=None):
+        self.node=node
+        return True
+
+    def build_widget(self):
+        el = self.node.element
+        vbox=Gtk.VBox()
+
+        info = Gtk.TextView()
+        info.set_wrap_mode(Gtk.WrapMode.WORD_CHAR)
+        def set_text(widget, t):
+            b=widget.get_buffer()
+            b.delete(*b.get_bounds())
+            b.set_text(t)
+            b.set_modified(False)
+            return True
+        info.set_text = set_text.__get__(info)
+        sw = Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+
+        if isinstance(el, Package):
+            info.set_text(_("""Package %(title)s:
+%(schema)s
+%(annotation)s in %(annotation_type)s
+%(relation)s in %(relation_type)s
+%(query)s
+%(view)s
+
+Description:
+%(description)s
+""") % {
+        'title': el.title,
+        'schema': helper.format_element_name('schema', len(el.schemas)),
+        'annotation': helper.format_element_name('annotation', len(el.annotations)),
+        'annotation_type': helper.format_element_name('annotation_type', len(el.annotationTypes)),
+        'relation': helper.format_element_name('relation', len(el.relations)),
+        'relation_type': helper.format_element_name('relation_type', len(el.relationTypes)),
+        'query': helper.format_element_name('query', len(el.queries)),
+        'view': helper.format_element_name('view', len(el.views)),
+        'description': el.getMetaData(config.data.namespace_prefix['dc'], 'description')
+        })
+        else:
+            info.set_text(_("""%(type)s %(title)s""") % ({"type": type(el),
+                                                          "title": self.controller.get_title(el)}))
+
+        frame = Gtk.Expander.new(_("Metadata"))
+        frame.set_expanded(False)
+        self.view = EditWidget(self.node.set_config, self.node.get_config)
+        for p in self.node.list_keys():
+            self.view.add_entry(p, p, "")
+
+        sw.add(info)
+        vbox.add(sw)
+        frame.add(self.view)
+        vbox.add(frame)
+        vbox.show_all()
+        return vbox
+CLASS2COLUMN[Metadata] = MetadataColumn
+
 class Finder(AdhocView):
     view_name = _("Package finder")
     view_id = 'finder'
@@ -558,12 +806,12 @@ class Finder(AdhocView):
             while cb is not None:
                 if [ r
                      for r in cb.liststore
-                     if r[ModelColumn.COLUMN_NODE][DetailedTreeModel.COLUMN_ELEMENT] == element ]:
+                     if r.node == element ]:
                     # The element is present in the list of
                     # children. Remove the next column if necessary
                     # and update the children list.
                     cb.update(node=cb.node)
-                    if cb.next is not None and cb.next.node[DetailedTreeModel.COLUMN_ELEMENT] == element:
+                    if cb.next is not None and cb.next.node == element:
                         cb.next.close()
 
                 cb=cb.next
@@ -625,7 +873,7 @@ class Finder(AdhocView):
         self.model=DetailedTreeModel(controller=self.controller, package=package)
 
         # Update the rootcolumn element
-        self.rootcolumn.update(self.model[0])
+        self.rootcolumn.update(package)
         return True
 
     def clicked_callback(self, columnbrowser, node):
@@ -637,15 +885,16 @@ class Finder(AdhocView):
                 cb=cb.next
             self.rootcolumn.next=None
         elif columnbrowser.next is None:
-            t=type(node[DetailedTreeModel.COLUMN_ELEMENT])
+            t=type(node)
             clazz=CLASS2COLUMN.get(t, ModelColumn)
             # Create a new columnbrowser
             col=clazz(controller=self.controller,
+                      model=self.model,
                       node=node,
                       callback=self.clicked_callback,
                       parent=columnbrowser)
             col.widget.set_property("width-request", self.column_width)
-            self.hbox.pack_start(col.widget, expand=False)
+            self.hbox.pack_start(col.widget, False, True, 0)
             col.widget.show_all()
             columnbrowser.next=col
         else:
@@ -654,7 +903,7 @@ class Finder(AdhocView):
             if cb is not None:
                 cb.close()
             # Check if the column is still appropriate for the node
-            clazz=CLASS2COLUMN.get(type(node[DetailedTreeModel.COLUMN_ELEMENT]), ModelColumn)
+            clazz=CLASS2COLUMN.get(type(node), ModelColumn)
             if not isinstance(columnbrowser.next, clazz):
                 # The column is not appropriate for the new node.
                 # Close it and reopen it.
@@ -664,53 +913,54 @@ class Finder(AdhocView):
                 columnbrowser.next.update(node)
 
         # Scroll the columns
-        gobject.timeout_add(100, lambda: self.autoscroll_end() and False)
+        GObject.timeout_add(100, lambda: self.autoscroll_end() and False)
         return True
 
     def autoscroll_end(self):
         adj=self.sw.get_hadjustment()
-        adj.value = adj.upper - adj.page_size
+        adj.set_value(adj.get_upper() - adj.get_page_size())
         return True
 
     def scroll_event(self, widget=None, event=None):
         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
+        if ((event.direction == Gdk.ScrollDirection.DOWN and event.get_state() & Gdk.ModifierType.SHIFT_MASK)
+            or event.direction == Gdk.ScrollDirection.RIGHT):
+            val = a.get_value() + a.get_step_increment()
+            if val > a.get_upper() - a.get_page_size():
+                val = a.get_upper() - a.get_page_size()
+            if val != a.get_value():
+                a.set_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
+        elif ((event.direction == Gdk.ScrollDirection.UP and event.get_state() & Gdk.ModifierType.SHIFT_MASK)
+              or event.direction == Gdk.ScrollDirection.LEFT):
+            val = a.get_value() - a.get_step_increment()
+            if val < a.get_lower():
+                val = a.get_lower()
+            if val != a.get_value():
+                a.set_value(val)
                 a.value_changed ()
             return True
         return False
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        self.sw=gtk.ScrolledWindow()
-        self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        self.sw=Gtk.ScrolledWindow()
+        self.sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
 
         self.sw.connect('scroll-event', self.scroll_event)
         vbox.add(self.sw)
 
-        self.hbox = gtk.HBox()
+        self.hbox = Gtk.HBox()
 
         self.rootcolumn=ModelColumn(controller=self.controller,
-                                     node=self.model[0],
-                                     callback=self.clicked_callback,
-                                     parent=None)
+                                    model=self.model,
+                                    node=self.package,
+                                    callback=self.clicked_callback,
+                                    parent=None)
         self.rootcolumn.widget.set_property("width-request", self.column_width)
-        self.hbox.pack_start(self.rootcolumn.widget, expand=False)
+        self.hbox.pack_start(self.rootcolumn.widget, False, True, 0)
 
         self.sw.add_with_viewport(self.hbox)
 
diff --git a/lib/advene/gui/views/html.py b/lib/advene/gui/views/html.py
index adeba2c..9b3144e 100644
--- a/lib/advene/gui/views/html.py
+++ b/lib/advene/gui/views/html.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,155 +21,23 @@
 FIXME: add navigation buttons (back, history)
 """
 
-import gtk
+from gi.repository import Gtk
 import urllib
 import urlparse
 import re
 
 engine=None
 try:
-    import webkit
+    import gi
+    gi.require_version('WebKit', '3.0')
+    from gi.repository import WebKit
     engine='webkit'
 except ImportError:
-    try:
-        import gtkmozembed
-        gtkmozembed.set_comp_path('')
-        engine='mozembed'
-    except ImportError:
-        try:
-            import gtkhtml2
-            engine='gtkhtml2'
-        except ImportError:
-            pass
+    pass
 
 from gettext import gettext as _
 from advene.gui.views import AdhocView
 
-class gtkhtml_wrapper:
-    def __init__(self, controller=None, notify=None):
-        self.controller=controller
-        self.notify=notify
-        self.history = []
-        self.current = ""
-        self.widget = self.build_widget()
-
-    def refresh(self, *p):
-        self.set_url(self.current)
-        return True
-
-    def back(self, *p):
-        if len(self.history) <= 1:
-            self.log(_("Cannot go back: first item in history"))
-        else:
-            # Current URL
-            u=self.history.pop()
-            # Previous one
-            self.set_url(self.history[-1])
-        return True
-
-    def set_url(self, url):
-        self.update_history(url)
-        d=self.component.document
-        d.clear()
-
-        u=urllib.urlopen(url)
-
-        d.open_stream(u.info().type)
-        for l in u:
-            d.write_stream (l)
-
-        u.close()
-        d.close_stream()
-
-        self.current=url
-        if self.notify:
-            self.notify(url=url)
-        return True
-
-    def get_url(self):
-        return self.current
-
-    def update_history(self, url):
-        if not self.history:
-            self.history.append(url)
-        elif self.history[-1] != url:
-            self.history.append(url)
-        return
-
-    def build_widget(self):
-        w=gtk.ScrolledWindow()
-        w.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-
-        c=gtkhtml2.View()
-        c.document=gtkhtml2.Document()
-
-        def request_url(document, url, stream):
-            print "request url", url, stream
-            pass
-
-        def link_clicked(document, link):
-            u=self.get_url()
-            if u:
-                url=urllib.basejoin(u, link)
-            else:
-                url=link
-            self.set_url(url)
-            return True
-
-        c.document.connect('link-clicked', link_clicked)
-        c.document.connect('request-url', request_url)
-
-        c.get_vadjustment().set_value(0)
-        w.set_hadjustment(c.get_hadjustment())
-        w.set_vadjustment(c.get_vadjustment())
-        c.document.clear()
-        c.set_document(c.document)
-        w.add(c)
-        self.component=c
-        return w
-
-class mozembed_wrapper:
-    def __init__(self, controller=None, notify=None):
-        self.controller=controller
-        self.notify=notify
-        self.widget=self.build_widget()
-
-    def refresh(self, *p):
-        self.component.reload(0)
-        return True
-
-    def back(self, *p):
-        self.component.go_back()
-        return True
-
-    def set_url(self, url):
-        self.component.load_url(url)
-        return True
-
-    def get_url(self):
-        return self.component.get_location()
-
-    def build_widget(self):
-        w=gtkmozembed.MozEmbed()
-        # A profile must be initialized, cf
-        # http://www.async.com.br/faq/pygtk/index.py?req=show&file=faq19.018.htp
-        gtkmozembed.set_profile_path("/tmp", "foobar")
-
-        def update_location(c):
-            if self.notify:
-                self.notify(url=self.get_url())
-            return False
-
-        def update_label(c):
-            if self.notify:
-                self.notify(label=c.get_link_message())
-            return False
-
-        w.connect('location', update_location)
-        w.connect('link-message', update_label)
-        self.component=w
-        return w
-
 class webkit_wrapper:
     def __init__(self, controller=None, notify=None):
         self.controller=controller
@@ -190,7 +58,7 @@ class webkit_wrapper:
         return True
 
     def build_widget(self):
-        w=webkit.WebView()
+        w = WebKit.WebView()
 
         def update_location(url):
             l=urlparse.urlparse(url)
@@ -277,7 +145,7 @@ class webkit_wrapper:
                               _javascript_script_prompt_cb)
 
         self.component=w
-        s=gtk.ScrolledWindow()
+        s=Gtk.ScrolledWindow()
         s.add(w)
 
         return s
@@ -311,12 +179,10 @@ class HTMLView(AdhocView):
 
     def build_widget(self):
         mapping={ 'webkit': webkit_wrapper,
-                  'mozembed': mozembed_wrapper,
-                  'gtkhtml2': gtkhtml_wrapper,
                   None: None}
         wrapper=mapping.get(engine)
         if wrapper is None:
-            w=gtk.Label(_("No available HTML rendering component"))
+            w=Gtk.Label(label=_("No available HTML rendering component"))
             self.component=w
         else:
             self.component = wrapper(controller=self.controller,
@@ -326,18 +192,18 @@ class HTMLView(AdhocView):
         def utbv_menu(*p):
             if self.controller and self.controller.gui:
                 m=self.controller.gui.build_utbv_menu(action=self.open_url)
-                m.popup(None, None, None, 0, gtk.get_current_event_time())
+                m.popup(None, None, None, 0, Gtk.get_current_event_time())
             return True
 
-        tb=gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
+        tb=Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
 
         for icon, action in (
-            (gtk.STOCK_GO_BACK, self.component.back),
-            (gtk.STOCK_REFRESH, self.component.refresh),
-            (gtk.STOCK_HOME, utbv_menu),
+            (Gtk.STOCK_GO_BACK, self.component.back),
+            (Gtk.STOCK_REFRESH, self.component.refresh),
+            (Gtk.STOCK_HOME, utbv_menu),
             ):
-            b=gtk.ToolButton(stock_id=icon)
+            b=Gtk.ToolButton(stock_id=icon)
             b.connect('clicked', action)
             tb.insert(b, -1)
 
@@ -345,26 +211,26 @@ class HTMLView(AdhocView):
             self.component.set_url(self.current_url())
             return True
 
-        self.url_entry=gtk.Entry()
+        self.url_entry=Gtk.Entry()
         self.url_entry.connect('activate', entry_validated)
-        ti=gtk.ToolItem()
+        ti=Gtk.ToolItem()
         ti.add(self.url_entry)
         ti.set_expand(True)
         tb.insert(ti, -1)
 
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
 
-        vbox.pack_start(tb, expand=False)
+        vbox.pack_start(tb, False, True, 0)
 
         vbox.add(w)
 
-        self.url_label=gtk.Label('')
+        self.url_label=Gtk.Label(label='')
         self.url_label.set_alignment(0, 0)
-        vbox.pack_start(self.url_label, expand=False)
+        vbox.pack_start(self.url_label, False, True, 0)
 
         return vbox
 
     def current_url(self, url=None):
         if url is not None:
-            self.url_entry.set_text(url)
-        return unicode(self.url_entry.get_text())
+            self.url_entry.set_text(url.encode('utf-8'))
+        return self.url_entry.get_text().decode('utf-8')
diff --git a/lib/advene/gui/views/interactivequery.py b/lib/advene/gui/views/interactivequery.py
index a2d4b42..4183646 100644
--- a/lib/advene/gui/views/interactivequery.py
+++ b/lib/advene/gui/views/interactivequery.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -23,8 +23,8 @@ Display the query results in a view (timeline, tree, etc).
 from gettext import gettext as _
 import pprint
 
-import gtk
-import pango
+from gi.repository import Gtk
+from gi.repository import Pango
 
 import advene.core.config as config
 from advene.gui.edit.rules import EditQuery
@@ -184,7 +184,7 @@ class InteractiveQuery(AdhocView):
         except AdveneTalesException, e:
             # Display a dialog with the value
             dialog.message_dialog(_("TALES error in interactive expression:\n%s" % str(e)),
-                icon=gtk.MESSAGE_ERROR)
+                icon=Gtk.MessageType.ERROR)
             return True
 
         # Close the search window
@@ -203,30 +203,30 @@ class InteractiveQuery(AdhocView):
         return True
 
     def build_widget(self):
-        vbox = gtk.VBox()
+        vbox = Gtk.VBox()
 
         self.eq=EditQuery(self.query,
                           editable=True,
                           controller=self.controller)
         vbox.add(self.eq.widget)
 
-        hb=gtk.HButtonBox()
+        hb=Gtk.HButtonBox()
 
-        b=gtk.Button(stock=gtk.STOCK_OK)
+        b=Gtk.Button(stock=Gtk.STOCK_OK)
         b.connect('clicked', self.validate)
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
-        b=gtk.Button(stock=gtk.STOCK_CANCEL)
+        b=Gtk.Button(stock=Gtk.STOCK_CANCEL)
         b.connect('clicked', self.cancel)
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
-        vbox.pack_start(hb, expand=False)
+        vbox.pack_start(hb, False, True, 0)
 
         def handle_key_press_event(widget, event):
-            if event.keyval == gtk.keysyms.Return:
+            if event.keyval == Gdk.KEY_Return:
                 self.validate()
                 return True
-            elif event.keyval == gtk.keysyms.Escape:
+            elif event.keyval == Gdk.KEY_Escape:
                 self.cancel()
                 return True
             return False
@@ -370,7 +370,7 @@ class InteractiveResult(AdhocView):
         return True
 
     def redo_quicksearch(self, b, entry):
-        s=unicode(entry.get_text())
+        s=entry.get_text().decode('utf-8')
         if not s:
             self.log(_("Empty quicksearch string"))
             return True
@@ -383,37 +383,37 @@ class InteractiveResult(AdhocView):
         return True
 
     def build_widget(self):
-        v=gtk.VBox()
+        v=Gtk.VBox()
 
-        tb=gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
-        v.pack_start(tb, expand=False)
+        tb=Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
+        v.pack_start(tb, False, True, 0)
 
-        top_box=gtk.HBox()
-        v.pack_start(top_box, expand=False)
+        top_box=Gtk.HBox()
+        v.pack_start(top_box, False, True, 0)
 
         if hasattr(self.query, 'container') and self.query.container.id == '_interactive':
-            b=gtk.Button(_("Edit query again"))
+            b=Gtk.Button(_("Edit query again"))
             b.connect('clicked', self.edit_query)
-            top_box.pack_start(b, expand=False)
+            top_box.pack_start(b, False, True, 0)
         elif isinstance(self.query, SimpleQuery):
-            b=gtk.Button(_("Edit query"))
+            b=Gtk.Button(_("Edit query"))
             b.connect('clicked', lambda b: self.controller.gui.edit_element(self.query))
-            top_box.pack_start(b, expand=False)
+            top_box.pack_start(b, False, True, 0)
         elif isinstance(self.query, Quicksearch):
-            e=gtk.Entry()
+            e=Gtk.Entry()
             e.set_text(self.query.searched)
             e.set_width_chars(12)
             e.connect('activate', self.redo_quicksearch, e)
-            b=get_small_stock_button(gtk.STOCK_FIND, self.redo_quicksearch, e)
+            b=get_small_stock_button(Gtk.STOCK_FIND, self.redo_quicksearch, e)
             e.set_tooltip_text(_('String to search'))
             b.set_tooltip_text(_('Search again'))
-            top_box.pack_start(e, expand=False)
-            top_box.pack_start(b, expand=False)
+            top_box.pack_start(e, False, True, 0)
+            top_box.pack_start(b, False, True, 0)
 
         # Present choices to display the result
         if not self.result:
-            v.add(gtk.Label(_("Empty result")))
+            v.add(Gtk.Label(label=_("Empty result")))
         elif (isinstance(self.result, list) or isinstance(self.result, tuple)
             or isinstance(self.result, AbstractBundle)):
             # Check if there are annotations
@@ -428,8 +428,8 @@ class InteractiveResult(AdhocView):
                     'elements': helper.format_element_name("annotation", len(l)),
                     'number': len(self.result)}
 
-            label=gtk.Label(t)
-            label.set_ellipsize(pango.ELLIPSIZE_END)
+            label=Gtk.Label(label=t)
+            label.set_ellipsize(Pango.EllipsizeMode.END)
             label.set_line_wrap(True)
             top_box.add(label)
 
@@ -456,18 +456,18 @@ class InteractiveResult(AdhocView):
                     v.add(table.widget)
                 else:
                     # Mixed annotations + other elements
-                    notebook=gtk.Notebook()
-                    notebook.set_tab_pos(gtk.POS_TOP)
+                    notebook=Gtk.Notebook()
+                    notebook.set_tab_pos(Gtk.PositionType.TOP)
                     notebook.popup_disable()
                     v.add(notebook)
 
-                    notebook.append_page(table.widget, gtk.Label(_("Annotations")))
+                    notebook.append_page(table.widget, Gtk.Label(label=_("Annotations")))
 
                     gtable=GenericTable(controller=self.controller, elements=[ e
                                                                                for e in self.result
                                                                                if not isinstance(e, Annotation) ]
                                                                                )
-                    notebook.append_page(gtable.widget, gtk.Label(_("Other elements")))
+                    notebook.append_page(gtable.widget, Gtk.Label(label=_("Other elements")))
 
 
                 for (icon, tip, action) in (
@@ -478,16 +478,16 @@ class InteractiveResult(AdhocView):
                                                              destination=self._destination,
                                                              elements=l)),
                     ('highlight.png', _("Highlight annotations"), lambda b: toggle_highlight(b, l)),
-                    (gtk.STOCK_CONVERT, _("Export table"), lambda b: table.csv_export()),
-                    (gtk.STOCK_NEW, _("Create annotations from the result"), self.create_annotations),
+                    (Gtk.STOCK_CONVERT, _("Export table"), lambda b: table.csv_export()),
+                    (Gtk.STOCK_NEW, _("Create annotations from the result"), self.create_annotations),
                     ('montage.png', _("Define a montage with the result"), self.create_montage),
                     ('comment.png', _("Create a comment view with the result"), self.create_comment),
-                    (gtk.STOCK_FIND_AND_REPLACE, _("Search and replace strings in the annotations content"), self.search_replace),
+                    (Gtk.STOCK_FIND_AND_REPLACE, _("Search and replace strings in the annotations content"), self.search_replace),
                     ):
                     if icon.endswith('.png'):
                         ti=get_pixmap_toolbutton(icon)
                     else:
-                        ti=gtk.ToolButton(stock_id=icon)
+                        ti=Gtk.ToolButton(stock_id=icon)
                     ti.connect('clicked', action)
                     ti.set_tooltip_text(tip)
                     tb.insert(ti, -1)
@@ -498,7 +498,7 @@ class InteractiveResult(AdhocView):
                 gtable=GenericTable(controller=self.controller, elements=self.result)
                 v.add(gtable.widget)
 
-                ti=gtk.ToolButton(gtk.STOCK_CONVERT)
+                ti=Gtk.ToolButton(Gtk.STOCK_CONVERT)
                 ti.connect('clicked', lambda b: gtable.csv_export())
                 ti.set_tooltip_text(_("Export table"))
                 tb.insert(ti, -1)
@@ -516,7 +516,7 @@ class InteractiveResult(AdhocView):
                 ti.set_tooltip_text(_("Open in python evaluator"))
                 tb.insert(ti, -1)
         else:
-            v.add(gtk.Label(_("Result:\n%s") % unicode(self.result)))
+            v.add(Gtk.Label(label=_("Result:\n%s") % unicode(self.result)))
         v.show_all()
         return v
 
diff --git a/lib/advene/gui/views/logwindow.py b/lib/advene/gui/views/logwindow.py
index 50443b8..e7a4545 100644
--- a/lib/advene/gui/views/logwindow.py
+++ b/lib/advene/gui/views/logwindow.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -30,7 +30,7 @@ import advene.util.helper as helper
 
 from gettext import gettext as _
 
-import gtk
+from gi.repository import Gtk
 
 import advene.rules.elements
 
@@ -66,13 +66,13 @@ class LogWindow(AdhocView):
         return False
 
     def build_widget(self):
-        w=gtk.VBox()
+        w=Gtk.VBox()
 
-        sw = gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        sw = Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         w.add(sw)
 
-        self.datawidget=gtk.VBox()
+        self.datawidget=Gtk.VBox()
         sw.add_with_viewport(self.datawidget)
 
         return w
@@ -114,24 +114,24 @@ class LogWindow(AdhocView):
         if l:
             return True
 
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
 
-        b=gtk.Button(message)
+        b=Gtk.Button(message)
         # Make the message left-aligned
-        b.child.set_alignment(0.0, 0.5)
+        b.get_child().set_alignment(0.0, 0.5)
         b.connect('clicked', self.goto_url, url)
         b.set_tooltip_text(_("Go to %s") % url)
         hb.add(b)
 
-        b=gtk.Button(helper.format_time(position))
-        b.child.set_alignment(0.0, 0.5)
+        b=Gtk.Button(helper.format_time(position))
+        b.get_child().set_alignment(0.0, 0.5)
         b.connect('clicked', self.goto_position, position)
         b.set_tooltip_text(_("Go to the given position"))
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
         hb.show_all()
 
-        self.datawidget.pack_start(hb, expand=False)
+        self.datawidget.pack_start(hb, False, True, 0)
         self.data.append( (time.time(), position, message, url, hb) )
         return True
 
diff --git a/lib/advene/gui/views/relation.py b/lib/advene/gui/views/relation.py
index d13aa25..048a04b 100755
--- a/lib/advene/gui/views/relation.py
+++ b/lib/advene/gui/views/relation.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -17,6 +17,9 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
 # Advene part
+import logging
+logger = logging.getLogger(__name__)
+
 import advene.core.config as config
 
 from gettext import gettext as _
@@ -24,7 +27,7 @@ from gettext import gettext as _
 import advene.gui.popup
 from advene.gui.util import name2color
 
-import gtk
+from gi.repository import Gtk
 
 class RelationView:
     """Controller for the MVC representing a relation."""
@@ -46,12 +49,12 @@ class RelationView:
         return True
 
     def build_widget(self):
-        l=gtk.Label()
+        l=Gtk.Label()
         l.set_markup("<b>%s</b> relation between\nann. <i>%s</i>\nand\nann. <i>%s</i>" %
                      (self.relation.type.title.replace('<', '<'),
                       self.relation.members[0].id,
                       self.relation.members[1].id))
-        b=gtk.Button()
+        b=Gtk.Button()
         b.add(l)
         b.connect('clicked', self.popup)
 
@@ -73,15 +76,15 @@ class RelationsBox:
         self.controller=controller
         self.relationviews=[]
         self.active_color = name2color('red')
-        self.inactive_color = gtk.Button().get_style().bg[0]
+        self.inactive_color = Gtk.Button().get_style().bg[0]
         self.widget = self.build_widget()
 
     def build_widget(self):
-        vbox=gtk.VBox()
+        vbox=Gtk.VBox()
         for r in self.package.relations:
             v=RelationView(relation=r, controller=self.controller)
             self.relationviews.append(v)
-            vbox.pack_start(v.get_widget(), expand=False)
+            vbox.pack_start(v.get_widget(), False, False, 0)
         vbox.show_all()
         return vbox
 
@@ -127,9 +130,9 @@ class RelationsBox:
         bs = self.get_widget_for_relation (relation)
         for b in bs:
             b.active = True
-            for style in (gtk.STATE_ACTIVE, gtk.STATE_NORMAL,
-                          gtk.STATE_SELECTED, gtk.STATE_INSENSITIVE,
-                          gtk.STATE_PRELIGHT):
+            for style in (Gtk.StateType.ACTIVE, Gtk.StateType.NORMAL,
+                          Gtk.StateType.SELECTED, Gtk.StateType.INSENSITIVE,
+                          Gtk.StateType.PRELIGHT):
                 b.modify_bg (style, self.active_color)
         return True
 
@@ -138,9 +141,9 @@ class RelationsBox:
         bs = self.get_widget_for_relation (relation)
         for b in bs:
             b.active = True
-            for style in (gtk.STATE_ACTIVE, gtk.STATE_NORMAL,
-                          gtk.STATE_SELECTED, gtk.STATE_INSENSITIVE,
-                          gtk.STATE_PRELIGHT):
+            for style in (Gtk.StateType.ACTIVE, Gtk.StateType.NORMAL,
+                          Gtk.StateType.SELECTED, Gtk.StateType.INSENSITIVE,
+                          Gtk.StateType.PRELIGHT):
                 b.modify_bg (style, self.inactive_color)
         return True
 
@@ -155,7 +158,7 @@ class RelationsBox:
             if element in self.list:
                 v=RelationView(relation=element, controller=self.controller)
                 self.relationviews.append(v)
-                self.widget.pack_start(v.get_widget(), expand=False)
+                self.widget.pack_start(v.get_widget(), False, False, 0)
             return True
 
         bs = self.get_widget_for_relation (element)
@@ -171,15 +174,15 @@ class RelationsBox:
     def drag_sent(self, widget, context, selection, targetType, eventTime):
         #print "drag_sent event from %s" % widget.annotation.content.data
         if targetType == config.data.target_type['annotation']:
-            selection.set(selection.target, 8, widget.annotation.uri.encode('utf8'))
+            selection.set(selection.get_target(), 8, widget.annotation.uri.encode('utf8'))
         else:
-            print "Unknown target type for drag: %d" % targetType
+            logger.warn("Unknown target type for drag: %d" % targetType)
         return True
 
     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.package.annotations.get(unicode(selection.data, 'utf8').split('\n')[0])
+            source=self.package.annotations.get(unicode(selection.get_data(), 'utf8').split('\n')[0])
             dest=widget.annotation
             self.create_relation_popup(source, dest)
             # FIXME: TODO
@@ -198,5 +201,5 @@ class RelationsBox:
             #     # FIXME...
             #     rel=self.package.createRelation(chosen_relation, members=(source, dest))
         else:
-            print "Unknown target type for drop: %d" % targetType
+            logger.warn("Unknown target type for drop: %d" % targetType)
         return True
diff --git a/lib/advene/gui/views/relationdisplay.py b/lib/advene/gui/views/relationdisplay.py
index 8441448..c09110c 100644
--- a/lib/advene/gui/views/relationdisplay.py
+++ b/lib/advene/gui/views/relationdisplay.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@
 """Module displaying the contents of a relation
 """
 
-import gtk
+from gi.repository import Gtk
 from gettext import gettext as _
 
 from advene.gui.views import AdhocView
@@ -87,32 +87,32 @@ class RelationDisplay(AdhocView):
             self.label['title'].set_markup(title)
             self.label['contents'].set_text('')
             for a in self.relation.members:
-                self.members_widget.pack_start(AnnotationRepresentation(a, self.controller), expand=False)
+                self.members_widget.pack_start(AnnotationRepresentation(a, self.controller), False, False, 0)
             self.widget.show_all()
         return False
 
     def build_widget(self):
-        v=gtk.VBox()
+        v=Gtk.VBox()
 
         self.label={}
 
-        self.label['title']=gtk.Label()
-        v.pack_start(self.label['title'], expand=False)
+        self.label['title']=Gtk.Label()
+        v.pack_start(self.label['title'], False, True, 0)
 
-        exp=gtk.Expander()
+        exp=Gtk.Expander()
         exp.set_expanded(False)
         exp.set_label(_("Contents"))
-        c=self.label['contents']=gtk.Label()
+        c=self.label['contents']=Gtk.Label()
         c.set_line_wrap(True)
         c.set_selectable(True)
         c.set_single_line_mode(False)
         c.set_alignment(0.0, 0.0)
         exp.add(c)
-        v.pack_start(exp, expand=False)
+        v.pack_start(exp, False, True, 0)
 
-        f=gtk.Frame(_("Members"))
+        f=Gtk.Frame.new(_("Members"))
         #  Display members
-        self.members_widget=gtk.VBox()
+        self.members_widget=Gtk.VBox()
         f.add(self.members_widget)
 
         v.add(f)
diff --git a/lib/advene/gui/views/scroller.py b/lib/advene/gui/views/scroller.py
index 21bd229..1945f8b 100644
--- a/lib/advene/gui/views/scroller.py
+++ b/lib/advene/gui/views/scroller.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -23,7 +23,7 @@ from advene.gui.views import AdhocView
 
 from gettext import gettext as _
 
-import gtk
+from gi.repository import Gtk
 
 class ScrollerView(AdhocView):
     view_name = _("Scroller")
@@ -49,17 +49,17 @@ class ScrollerView(AdhocView):
         return True
 
     def build_widget(self):
-        v=gtk.HBox()
+        v=Gtk.HBox()
 
         style=v.get_style().copy()
         self.style = style
 
-        black=gtk.gdk.color_parse('black')
-        white=gtk.gdk.color_parse('white')
+        black=Gdk.color_parse('black')
+        white=Gdk.color_parse('white')
 
-        for state in (gtk.STATE_ACTIVE, gtk.STATE_NORMAL,
-                      gtk.STATE_SELECTED, gtk.STATE_INSENSITIVE,
-                      gtk.STATE_PRELIGHT):
+        for state in (Gtk.StateType.ACTIVE, Gtk.StateType.NORMAL,
+                      Gtk.StateType.SELECTED, Gtk.StateType.INSENSITIVE,
+                      Gtk.StateType.PRELIGHT):
             style.bg[state]=black
             style.fg[state]=white
             style.text[state]=white
@@ -67,17 +67,17 @@ class ScrollerView(AdhocView):
 
         v.set_style(style)
 
-        self.past_widget=gtk.VBox()
+        self.past_widget=Gtk.VBox()
         self.past_widget.set_style(style)
 
-        self.present_widget=gtk.VBox()
+        self.present_widget=Gtk.VBox()
         self.present_widget.set_style(style)
-        #self.present_alignment=gtk.Alignment(0.25, 0.25, 0, 0)
+        #self.present_alignment=Gtk.Alignment.new(0.25, 0.25, 0, 0)
         #self.present_alignment.add(self.present_widget)
         self.present_widget.set_style(style)
         #self.present_alignment.set_style(style)
 
-        self.future_widget=gtk.VBox()
+        self.future_widget=Gtk.VBox()
         self.future_widget.set_style(style)
 
         v.add(self.past_widget)
@@ -86,13 +86,13 @@ class ScrollerView(AdhocView):
         v.add(self.future_widget)
 
         def create_label(text, widget):
-            eb=gtk.EventBox()
-            l=gtk.Label(text)
+            eb=Gtk.EventBox()
+            l=Gtk.Label(label=text)
             l.set_single_line_mode(False)
             eb.add(l)
             l.set_style(style)
             eb.set_style(style)
-            widget.pack_start(eb)
+            widget.pack_start(eb, True, True, 0)
             return l
 
         self.present_label = create_label('present',
diff --git a/lib/advene/gui/views/singletonpopup.py b/lib/advene/gui/views/singletonpopup.py
index 04a8a4d..f54f2b6 100755
--- a/lib/advene/gui/views/singletonpopup.py
+++ b/lib/advene/gui/views/singletonpopup.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,7 +21,7 @@
 
 import time
 
-import gtk
+from gi.repository import Gtk
 
 from gettext import gettext as _
 from advene.gui.views import AdhocView
@@ -90,12 +90,12 @@ class SingletonPopup(AdhocView):
         return True
 
     def build_widget(self):
-        mainbox=gtk.VBox()
+        mainbox=Gtk.VBox()
 
-        self.vbox = gtk.VBox()
+        self.vbox = Gtk.VBox()
         mainbox.add(self.vbox)
 
-        self.widget=gtk.Label(_("Navigation popup"))
+        self.widget=Gtk.Label(label=_("Navigation popup"))
         self.vbox.add(self.widget)
 
         return mainbox
diff --git a/lib/advene/gui/views/table.py b/lib/advene/gui/views/table.py
index 9eb13b5..fa9cb1d 100644
--- a/lib/advene/gui/views/table.py
+++ b/lib/advene/gui/views/table.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,12 @@
 # along with Advene; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
-import gtk
+import logging
+logger = logging.getLogger(__name__)
+
+from gi.repository import Gdk
+from gi.repository import GdkPixbuf
+from gi.repository import Gtk
 import csv
 
 from gettext import gettext as _
@@ -56,15 +61,39 @@ class AnnotationTable(AdhocView):
     view_id = 'table'
     tooltip=_("Display annotations in a table")
 
-    def __init__(self, controller=None, parameters=None, custom_data=None, elements=None):
+    def __init__(self, controller=None, parameters=None, custom_data=None, elements=None, source=None):
+        """We can initialize the table using either a list of elements, or  a TALES source expression.
+
+        If both are specified, the list of elements takes precedence.
+        """
         super(AnnotationTable, self).__init__(controller=controller)
         self.registered_rules = []
         self.close_on_package_load = False
         self.contextual_actions = (
+            (_("Export as CSV"), self.csv_export),
             )
         self.controller=controller
-        self.elements=elements
-        self.options={}
+        self.source = source
+
+        opt, arg = self.load_parameters(parameters)
+        self.options.update(opt)
+        a=dict(arg)
+        if source is None and a.has_key('source'):
+            source=a['source']
+
+        if elements is None and source:
+            c=self.controller.build_context()
+            try:
+                elements = c.evaluateValue(source)
+                self.source = source
+            except Exception, e:
+                self.log(_("Error in source evaluation %(source)s: %(error)s") % {
+                    'source': self.source,
+                    'error': unicode(e) })
+                elements = []
+
+        self.elements = elements
+        self.options={ 'confirm-time-update': True }
 
         self.mouseover_annotation = None
         self.last_edited_path = None
@@ -80,8 +109,15 @@ class AnnotationTable(AdhocView):
                 self.controller.event_handler.remove_rule(r, type_="internal")
         self.widget.connect('destroy', unregister)
 
+    def get_save_arguments(self):
+        if self.source is not None:
+            arguments = [ ('source', self.source) ]
+        else:
+            arguments = []
+        return self.options, arguments
+
     def update_annotation(self, annotation=None, event=None):
-        if annotation in self.elements:
+        if self.elements and annotation in self.elements:
             if event.endswith('Delete'):
                 self.elements.remove(annotation)
             self.set_elements(self.elements)
@@ -117,8 +153,8 @@ class AnnotationTable(AdhocView):
         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)
+        args = (object, str, str, str, long, long, str, str, str, GdkPixbuf.Pixbuf, str) + custom(None)
+        l=Gtk.ListStore(*args)
         if not elements:
             return l
         for a in elements:
@@ -156,6 +192,8 @@ class AnnotationTable(AdhocView):
         tuple with the appropriate values for the annotation in the
         custom columns.
         """
+        if elements is None:
+            elements = []
         model=self.build_model(elements, custom_data)
         self.widget.treeview.set_model(model)
         self.model = model
@@ -163,25 +201,27 @@ class AnnotationTable(AdhocView):
         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)
+            path = self.last_edited_path.next()
             try:
                 self.model.get_iter(path)
-            except ValueError:
+            except (ValueError, TypeError):
                 path = self.last_edited_path
             self.widget.treeview.set_cursor(path,
-                                            focus_column=self.columns['content'],
-                                            start_editing=True)
+                                            self.columns['content'],
+                                            True)
+            self.widget.treeview.grab_focus()
             self.last_edited_path = None
 
     def motion_notify_event_cb(self, tv, event):
-        if not event.window is tv.get_bin_window():
+        if not event.get_window() is tv.get_bin_window():
             return False
         if event.is_hint:
-            x, y, state = event.window.get_pointer()
+            pointer = event.get_window().get_pointer()
+            x = pointer.x
+            y = pointer.y
         else:
             x = long(event.x)
             y = long(event.y)
-            state = event.state
         t = tv.get_path_at_pos(x, y)
         if t is not None:
             path, col, cx, cy = t
@@ -203,10 +243,10 @@ class AnnotationTable(AdhocView):
         return False
 
     def build_widget(self):
-        tree_view = gtk.TreeView(self.model)
+        tree_view = Gtk.TreeView(self.model)
 
         select = tree_view.get_selection()
-        select.set_mode(gtk.SELECTION_MULTIPLE)
+        select.set_mode(Gtk.SelectionMode.MULTIPLE)
 
         tree_view.connect('button-press-event', self.tree_view_button_cb)
         tree_view.connect('key-press-event', self.tree_view_key_cb)
@@ -224,7 +264,7 @@ class AnnotationTable(AdhocView):
 
         columns={}
 
-        columns['snapshot']=gtk.TreeViewColumn(_("Snapshot"), gtk.CellRendererPixbuf(), pixbuf=COLUMN_PIXBUF)
+        columns['snapshot']=Gtk.TreeViewColumn(_("Snapshot"), Gtk.CellRendererPixbuf(), pixbuf=COLUMN_PIXBUF)
         columns['snapshot'].set_reorderable(True)
         tree_view.append_column(columns['snapshot'])
 
@@ -234,18 +274,33 @@ class AnnotationTable(AdhocView):
                 return
             a = self.model.get_value (it, COLUMN_ELEMENT)
             new_content = helper.title2content(text,
-                                               a.content.data,
+                                               a.content,
                                                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.last_edited_path = Gtk.TreePath.new_from_string(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
 
+        def entry_editing_started(cell, editable, path):
+            if isinstance(editable, Gtk.Entry):
+                completion = Gtk.EntryCompletion()
+                it = self.model.get_iter_from_string(path)
+                if not it:
+                    return
+                el = self.model.get_value(it, COLUMN_ELEMENT)
+                # Build the completion list
+                store = Gtk.ListStore(str)
+                for c in self.controller.package._indexer.get_completions("", context=el):
+                    store.append([ c ])
+                completion.set_model(store)
+                completion.set_text_column(0)
+                editable.set_completion(completion)
+
         for (name, label, col) in (
             ('content', _("Content"), COLUMN_CONTENT),
             ('type', _("Type"), COLUMN_TYPE),
@@ -253,9 +308,10 @@ class AnnotationTable(AdhocView):
             ('end', _("End"), COLUMN_END_FORMATTED),
             ('duration', _("Duration"), COLUMN_DURATION),
             ('id', _("Id"), COLUMN_ID) ):
-            renderer = gtk.CellRendererText()
-            columns[name]=gtk.TreeViewColumn(label, renderer, text=col)
+            renderer = Gtk.CellRendererText()
+            columns[name]=Gtk.TreeViewColumn(label, renderer, text=col)
             if name == 'content':
+                renderer.connect('editing-started', entry_editing_started)
                 renderer.connect('edited', cell_edited)
                 renderer.props.editable = True
 
@@ -266,29 +322,29 @@ class AnnotationTable(AdhocView):
         # Column-specific settings
         columns['begin'].set_sort_column_id(COLUMN_BEGIN)
         columns['end'].set_sort_column_id(COLUMN_END)
-        self.model.set_sort_column_id(COLUMN_BEGIN, gtk.SORT_ASCENDING)
-        columns['type'].add_attribute(columns['type'].get_cell_renderers()[0],
+        self.model.set_sort_column_id(COLUMN_BEGIN, Gtk.SortType.ASCENDING)
+        columns['type'].add_attribute(columns['type'].get_cells()[0],
                                       'cell-background',
                                       COLUMN_COLOR)
 
         # Resizable columns: content, type
         for name in ('content', 'type', 'snapshot'):
-            columns[name].set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+            columns[name].set_sizing(Gtk.TreeViewColumnSizing.FIXED)
             columns[name].set_resizable(True)
             columns[name].set_min_width(40)
         columns['content'].set_expand(True)
+        columns['content'].set_max_width(800)
 
         # 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']
-                                  + config.data.drag_type['text-plain']
-                                  + config.data.drag_type['TEXT']
-                                  + config.data.drag_type['STRING']
-                                  ,
-                                  gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
+        tree_view.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                                  config.data.get_target_types('annotation',
+                                                               'text-plain',
+                                                               'TEXT',
+                                                               'STRING'),
+                                  Gdk.DragAction.LINK | Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
 
         def get_element():
             selection = tree_view.get_selection ()
@@ -311,32 +367,31 @@ 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):
+            if Gtk.drag_get_source_widget(context).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') ]
+                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
                 if sources:
                     self.set_elements(sources)
                 return True
             elif targetType == config.data.target_type['annotation-type']:
-                sources=[ self.controller.package.annotationTypes.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+                sources=[ self.controller.package.annotationTypes.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
                 if sources:
                     self.set_elements(sources[0].annotations)
                 return True
             return False
 
         tree_view.connect('drag-data-received', drag_received_cb)
-        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'],
-                        gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE)
-
-        sw = gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        tree_view.drag_dest_set(Gtk.DestDefaults.MOTION |
+                        Gtk.DestDefaults.HIGHLIGHT |
+                        Gtk.DestDefaults.ALL,
+                        config.data.get_target_types('annotation', 'annotation-type'),
+                        Gdk.DragAction.COPY | Gdk.DragAction.LINK | Gdk.DragAction.MOVE)
+
+        sw = Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         sw.add(tree_view)
 
         sw.treeview = tree_view
@@ -349,28 +404,40 @@ class AnnotationTable(AdhocView):
         els=[ model[p][COLUMN_ELEMENT] for p in paths ]
 
         if targetType == config.data.target_type['annotation']:
-            selection.set(selection.target, 8, "\n".join( e.uri.encode('utf8')
+            selection.set(selection.get_target(), 8, "\n".join( e.uri.encode('utf8')
                                                           for e in els
                                                           if isinstance(e, Annotation) ))
             return True
         elif (targetType == config.data.target_type['text-plain']
               or targetType == config.data.target_type['TEXT']
               or targetType == config.data.target_type['STRING']):
-            selection.set(selection.target, 8, "\n".join(e.content.data.encode('utf8')
+            selection.set(selection.get_target(), 8, "\n".join(e.content.data.encode('utf8')
                                                           for e in els
                                                           if isinstance(e, Annotation) ))
         else:
-            print "Unknown target type for drag: %d" % targetType
+            logger.warn("Unknown target type for drag: %d" % targetType)
         return True
 
-    def get_selected_nodes (self):
+    def get_selected_nodes(self, with_path=False):
+        """Return the currently selected nodes.
+        """
+        selection = self.widget.treeview.get_selection()
+        store, paths = selection.get_selected_rows()
+        if with_path:
+            return [ (store.get_value(store.get_iter(p), COLUMN_ELEMENT), p) for p in paths ]
+        else:
+            return [ store.get_value(store.get_iter(p), COLUMN_ELEMENT) for p in paths ]
+
+    def get_selected_node(self, with_path=False):
         """Return the currently selected node.
 
         None if no node is selected or multiple nodes are selected.
         """
-        selection = self.widget.treeview.get_selection ()
-        store, paths=selection.get_selected_rows()
-        return [ store.get_value (store.get_iter(p), COLUMN_ELEMENT) for p in paths ]
+        nodes = self.get_selected_nodes(with_path)
+        if len(nodes) != 1:
+            return None
+        else:
+            return nodes[0]
 
     def debug_cb (self, *p, **kw):
         print "Debug cb:\n"
@@ -381,8 +448,8 @@ class AnnotationTable(AdhocView):
         if name is None:
             name=dialog.get_filename(title=_("Export data to file..."),
                                               default_file="advene_data.csv",
-                                              action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                              button=gtk.STOCK_SAVE)
+                                              action=Gtk.FileChooserAction.SAVE,
+                                              button=Gtk.STOCK_SAVE)
         if name is None:
             return True
         try:
@@ -392,7 +459,7 @@ class AnnotationTable(AdhocView):
                                           % {
                         'filename': name,
                         'error': unicode(e),
-                        }), icon=gtk.MESSAGE_ERROR)
+                        }), icon=Gtk.MessageType.ERROR)
         w=csv.writer(f)
         tv=self.widget.treeview
         store, paths=tv.get_selection().get_selected_rows()
@@ -408,28 +475,53 @@ class AnnotationTable(AdhocView):
     def row_activated_cb(self, widget, path, view_column):
         """Edit the element on Return or double click
         """
-        nodes = self.get_selected_nodes ()
-        if len(nodes) != 1:
-            return True
-        node=nodes[0]
-        if node is not None:
-            self.controller.gui.edit_element(node)
+        ann = self.get_selected_node ()
+        if ann is not None:
+            self.controller.gui.edit_element(ann)
             return True
         return False
 
+    def set_time(self, attr):
+        """Sets the time of the current annotation to the current player time.
+        """
+        an, an_path = self.get_selected_node(with_path=True)
+        if an is None:
+            return
+        current_time = self.controller.player.current_position_value
+        confirm = True
+        if self.options['confirm-time-update']:
+            confirm = dialog.message_dialog(_("Set %(attr)s time to %(time)s") % {
+                'attr': _(attr),
+                'time': helper.format_time(current_time)
+                }, icon=Gtk.MessageType.QUESTION)
+        if confirm:
+            self.last_edited_path = an_path
+            self.controller.notify('EditSessionStart', element=an, immediate=True)
+            setattr(an.fragment, attr, current_time)
+            self.controller.notify("AnnotationEditEnd", annotation=an)
+            self.controller.notify('EditSessionEnd', element=an)
+
+
     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]
+        if event.keyval == Gdk.KEY_space or (event.keyval == Gdk.KEY_Return and event.get_state() & Gdk.ModifierType.CONTROL_MASK):
+            # Space or Control-return: goto annotation
+            ann = self.get_selected_node ()
+            if ann is not None:
                 self.controller.update_status (status="set", position=ann.fragment.begin)
                 self.controller.gui.set_current_annotation(ann)
                 return True
+        elif event.keyval == Gdk.KEY_less and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
+            # Control-< : set begin time
+            self.set_time('begin')
+            return True
+        elif event.keyval == Gdk.KEY_greater and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
+            # Control-> : set end time
+            self.set_time('end')
+            return True
         return False
 
     def tree_view_button_cb(self, widget=None, event=None):
-        if not event.window is widget.get_bin_window():
+        if not event.get_window() is widget.get_bin_window():
             return False
 
         retval = False
@@ -461,18 +553,43 @@ class GenericTable(AdhocView):
     view_id = 'generictable'
     tooltip=_("Display Advene elements in a table.")
 
-    def __init__(self, controller=None, parameters=None, elements=None):
+    def __init__(self, controller=None, parameters=None, elements=None, source=None):
         super(GenericTable, self).__init__(controller=controller)
         self.close_on_package_load = False
         self.contextual_actions = (
             )
         self.controller=controller
         self.elements=elements
-        self.options={}
+        self.source = source
+        self.options = { }
+
+        opt, arg = self.load_parameters(parameters)
+        self.options.update(opt)
+        a=dict(arg)
+        if source is None and a.has_key('source'):
+            source=a['source']
+
+        if elements is None and source:
+            c=self.controller.build_context()
+            try:
+                elements = c.evaluateValue(source)
+                self.source = source
+            except Exception, e:
+                self.log(_("Error in source evaluation %(source)s: %(error)s") % {
+                    'source': self.source,
+                    'error': unicode(e) })
+                elements = []
 
         self.model=self.build_model(elements)
         self.widget = self.build_widget()
 
+    def get_save_arguments(self):
+        if self.source is not None:
+            arguments = [ ('source', self.source) ]
+        else:
+            arguments = []
+        return self.options, arguments
+
     def get_elements(self):
         """Return the list of elements in their displayed order.
 
@@ -496,7 +613,7 @@ class GenericTable(AdhocView):
 
         Columns: element, content (title), type, id
         """
-        l=gtk.ListStore(object, str, str, str)
+        l=Gtk.ListStore(object, str, str, str)
         if not elements:
             return l
         for e in elements:
@@ -510,8 +627,8 @@ class GenericTable(AdhocView):
         if name is None:
             name=dialog.get_filename(title=_("Export data to file..."),
                                               default_file="advene_data.csv",
-                                              action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                              button=gtk.STOCK_SAVE)
+                                              action=Gtk.FileChooserAction.SAVE,
+                                              button=Gtk.STOCK_SAVE)
         if name is None:
             return True
         try:
@@ -522,7 +639,7 @@ class GenericTable(AdhocView):
                         'filename': name,
                         'error': unicode(e),
                         }),
-                                  icon=gtk.MESSAGE_ERROR)
+                                  icon=Gtk.MessageType.ERROR)
         w=csv.writer(f)
         tv=self.widget.treeview
         store, paths=tv.get_selection().get_selected_rows()
@@ -536,10 +653,10 @@ class GenericTable(AdhocView):
         self.log(_("Data exported to %s") % name)
 
     def build_widget(self):
-        tree_view = gtk.TreeView(self.model)
+        tree_view = Gtk.TreeView(self.model)
 
         select = tree_view.get_selection()
-        select.set_mode(gtk.SELECTION_MULTIPLE)
+        select.set_mode(Gtk.SelectionMode.MULTIPLE)
 
         tree_view.connect('button-press-event', self.tree_view_button_cb)
         tree_view.connect('row-activated', self.row_activated_cb)
@@ -557,22 +674,22 @@ class GenericTable(AdhocView):
             ('title', _("Title"), COLUMN_CONTENT),
             ('type', _("Type"), COLUMN_TYPE),
             ('id', _("Id"), COLUMN_ID) ):
-            columns[name]=gtk.TreeViewColumn(label, gtk.CellRendererText(), text=col)
+            columns[name]=Gtk.TreeViewColumn(label, Gtk.CellRendererText(), text=col)
             columns[name].set_reorderable(True)
             columns[name].set_sort_column_id(col)
             tree_view.append_column(columns[name])
 
-        self.model.set_sort_column_id(COLUMN_CONTENT, gtk.SORT_ASCENDING)
+        self.model.set_sort_column_id(COLUMN_CONTENT, Gtk.SortType.ASCENDING)
 
         # Resizable columns: title, type
         for name in ('title', 'type'):
-            columns[name].set_sizing(gtk.TREE_VIEW_COLUMN_FIXED)
+            columns[name].set_sizing(Gtk.TreeViewColumnSizing.FIXED)
             columns[name].set_resizable(True)
             columns[name].set_min_width(40)
         columns['title'].set_expand(True)
 
-        sw = gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+        sw = Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
         sw.add(tree_view)
 
         sw.treeview = tree_view
@@ -581,40 +698,51 @@ 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):
+            if Gtk.drag_get_source_widget(context).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') ]
+                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
                 if sources:
                     self.set_elements(sources)
                 return True
             elif targetType == config.data.target_type['annotation-type']:
-                sources=[ self.controller.package.annotationTypes.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+                sources=[ self.controller.package.annotationTypes.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
                 if sources:
                     self.set_elements(sources[0].annotations)
                 return True
             return False
 
         tree_view.connect('drag-data-received', drag_received_cb)
-        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'],
-                        gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE)
+        tree_view.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                Gtk.DestDefaults.HIGHLIGHT |
+                                Gtk.DestDefaults.ALL,
+                                config.data.get_target_types('annotation', 'annotation-type'),
+                                Gdk.DragAction.COPY | Gdk.DragAction.LINK | Gdk.DragAction.MOVE)
 
         return sw
 
-    def get_selected_nodes (self):
+    def get_selected_nodes(self, with_path=False):
+        """Return the currently selected nodes.
+        """
+        selection = self.widget.treeview.get_selection()
+        store, paths = selection.get_selected_rows()
+        if with_path:
+            return [ (store.get_value(store.get_iter(p), COLUMN_ELEMENT), p) for p in paths ]
+        else:
+            return [ store.get_value(store.get_iter(p), COLUMN_ELEMENT) for p in paths ]
+
+    def get_selected_node(self, with_path=False):
         """Return the currently selected node.
 
         None if no node is selected or multiple nodes are selected.
         """
-        selection = self.widget.treeview.get_selection ()
-        store, paths=selection.get_selected_rows()
-        return [ store.get_value (store.get_iter(p), COLUMN_ELEMENT) for p in paths ]
+        nodes = self.get_selected_nodes(with_path)
+        if len(nodes) != 1:
+            return None
+        else:
+            return nodes[0]
 
     def debug_cb (self, *p, **kw):
         print "Debug cb:\n"
@@ -624,11 +752,9 @@ class GenericTable(AdhocView):
     def row_activated_cb(self, widget, path, view_column):
         """Edit the element on Return or double click
         """
-        nodes = self.get_selected_nodes ()
-        if len(nodes) != 1:
-            return True
-        if nodes[0] is not None:
-            self.controller.gui.edit_element(nodes[0])
+        el = self.get_selected_node ()
+        if el  is not None:
+            self.controller.gui.edit_element(el)
             return True
         return False
 
@@ -639,7 +765,7 @@ class GenericTable(AdhocView):
         y = int(event.y)
 
         if button == 3 or button == 2:
-            if event.window is widget.get_bin_window():
+            if event.get_window() is widget.get_bin_window():
                 model = self.model
                 t = widget.get_path_at_pos(x, y)
                 if t is not None:
diff --git a/lib/advene/gui/views/tagbag.py b/lib/advene/gui/views/tagbag.py
index 90ee04a..14b4f75 100644
--- a/lib/advene/gui/views/tagbag.py
+++ b/lib/advene/gui/views/tagbag.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -29,6 +29,8 @@ Dragging a tag to an annotation with add the tag to the annotation's tag.
 Dragging an annotation to the tag bag will add the annotation tags to
 the presented list of tags.
 """
+import logging
+logger = logging.getLogger(__name__)
 
 # Advene part
 import advene.core.config as config
@@ -39,7 +41,8 @@ from advene.gui.util import dialog, get_small_stock_button, name2color
 from gettext import gettext as _
 
 import re
-import gtk
+from gi.repository import Gdk
+from gi.repository import Gtk
 
 from advene.gui.widget import TagWidget
 
@@ -119,27 +122,27 @@ class TagBag(AdhocView):
     def new_tag(self, *p):
         """Enter a new tag.
         """
-        d = gtk.Dialog(title=_("New tag name"),
-                       parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
-                                 gtk.STOCK_OK, gtk.RESPONSE_OK,
+        d = Gtk.Dialog(title=_("New tag name"),
+                       parent=self.controller.gui.gui.win,
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+                                 Gtk.STOCK_OK, Gtk.ResponseType.OK,
                                  ))
-        l=gtk.Label(_("Enter a new tag name and select its color."))
-        d.vbox.pack_start(l, expand=False)
-
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Name")), expand=False)
-        tagname=gtk.Entry()
-        hb.pack_start(tagname, expand=False)
-        d.vbox.pack_start(hb, expand=False)
-
-        hb=gtk.HBox()
-        hb.pack_start(gtk.Label(_("Color")), expand=False)
-        colorbutton=gtk.ColorButton()
-        colorbutton.set_color(gtk.gdk.color_parse('red'))
-        hb.pack_start(colorbutton, expand=False)
-        d.vbox.pack_start(hb, expand=False)
+        l=Gtk.Label(label=_("Enter a new tag name and select its color."))
+        d.vbox.pack_start(l, False, True, 0)
+
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Name")), False, False, 0)
+        tagname=Gtk.Entry()
+        hb.pack_start(tagname, False, True, 0)
+        d.vbox.pack_start(hb, False, True, 0)
+
+        hb=Gtk.HBox()
+        hb.pack_start(Gtk.Label(_("Color")), False, False, 0)
+        colorbutton=Gtk.ColorButton()
+        colorbutton.set_color(Gdk.color_parse('red'))
+        hb.pack_start(colorbutton, False, True, 0)
+        d.vbox.pack_start(hb, False, True, 0)
 
         d.connect('key-press-event', dialog.dialog_keypressed_cb)
         d.show_all()
@@ -147,9 +150,9 @@ class TagBag(AdhocView):
 
         res=d.run()
         ret=None
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             try:
-                tag=unicode(tagname.get_text())
+                tag=tagname.get_text().decode('utf-8')
             except ValueError:
                 tag=None
             color=colorbutton.get_color()
@@ -160,7 +163,7 @@ class TagBag(AdhocView):
         if tag and not tag in self.tags:
             if not re.match('^[\w\d_]+$', tag):
                 dialog.message_dialog(_("The tag contains invalid characters"),
-                                               icon=gtk.MESSAGE_ERROR)
+                                               icon=Gtk.MessageType.ERROR)
                 return True
             self.tags.append(tag)
             self.controller.package._tag_colors[tag]="#%04x%04x%04x" % (color.red, color.green, color.blue)
@@ -222,7 +225,7 @@ class TagBag(AdhocView):
             return True
 
         def set_color(widget, tag):
-            d=gtk.ColorSelectionDialog(_("Choose the color for tag %s") % tag)
+            d=Gtk.ColorSelectionDialog(_("Choose the color for tag %s") % tag)
             try:
                 color=self.get_element_color(tag)
                 if color:
@@ -231,7 +234,7 @@ class TagBag(AdhocView):
                 pass
 
             res=d.run()
-            if res == gtk.RESPONSE_OK:
+            if res == Gtk.ResponseType.OK:
                 col=d.colorsel.get_current_color()
                 self.controller.package._tag_colors[tag]="#%04x%04x%04x" % (col.red, col.green, col.blue)
                 self.controller.notify('TagUpdate', tag=tag)
@@ -240,108 +243,108 @@ class TagBag(AdhocView):
             return True
 
         def popup_menu(widget, event):
-            if not (event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS):
+            if not (event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS):
                 return False
 
-            menu=gtk.Menu()
+            menu=Gtk.Menu()
 
             for label, action in (
                 (_("Set color"), set_color),
                 (_("Remove"), remove)
                 ):
-                item = gtk.MenuItem(label, use_underline=False)
+                item = Gtk.MenuItem(label, use_underline=False)
                 item.connect('activate', action, t)
                 menu.append(item)
             menu.show_all()
-            menu.popup(None, None, None, 0, gtk.get_current_event_time())
+            menu.popup_at_pointer(None)
             return True
 
-        b.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                          config.data.drag_type['tag'],
-                          gtk.gdk.ACTION_LINK)
+        b.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                          config.data.get_target_types('tag'),
+                          Gdk.DragAction.LINK)
 
         b.connect('button-press-event', popup_menu)
         b.show()
-        self.mainbox.pack_start(b, expand=False)
+        self.mainbox.pack_start(b, False, True, 0)
 
     def build_widget(self):
 
         if self.vertical:
-            v=gtk.VBox()
-            mainbox=gtk.VBox()
+            v=Gtk.VBox()
+            mainbox=Gtk.VBox()
         else:
-            v=gtk.HBox()
-            mainbox=gtk.HBox()
+            v=Gtk.HBox()
+            mainbox=Gtk.HBox()
 
         mainbox.set_homogeneous(False)
-        sw=gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER)
+        sw=Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER)
         sw.add_with_viewport(mainbox)
         self.mainbox=mainbox
 
         def mainbox_drag_received(widget, context, x, y, selection, targetType, time):
             if targetType == config.data.target_type['annotation']:
-                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
                 for a in sources:
                     for tag in a.tags:
                         if not tag in self.tags:
                             self.tags.append(tag)
                 self.refresh()
             elif targetType == config.data.target_type['tag']:
-                tags=unicode(selection.data, 'utf8').split(',')
+                tags=unicode(selection.get_data(), 'utf8').split(',')
                 for tag in tags:
                     if not tag in self.tags:
                         self.tags.append(tag)
                 self.refresh()
             else:
-                self.log("Unknown target type for mainbox drop: %d" % targetType)
+                logger.warn("Unknown target type for mainbox drop: %d" % targetType)
             return True
 
-        self.mainbox.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                  gtk.DEST_DEFAULT_HIGHLIGHT |
-                                  gtk.DEST_DEFAULT_ALL,
-                                  config.data.drag_type['annotation']
-                                  + config.data.drag_type['tag']
-                                   , gtk.gdk.ACTION_LINK)
+        self.mainbox.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                   Gtk.DestDefaults.HIGHLIGHT |
+                                   Gtk.DestDefaults.ALL,
+                                   config.data.get_target_types('annotation', 'tag'),
+                                   Gdk.DragAction.LINK)
         self.mainbox.connect('drag-data-received', mainbox_drag_received)
 
         def remove_drag_received(widget, context, x, y, selection, targetType, time):
             if targetType == config.data.target_type['tag']:
-                tag=unicode(selection.data, 'utf8')
+                tag=unicode(selection.get_data(), 'utf8')
                 if tag in self.tags:
                     self.tags.remove(tag)
                 self.refresh()
             else:
-                self.log("Unknown target type for remove drop: %d" % targetType)
+                logger.warn("Unknown target type for remove drop: %d" % targetType)
             return True
 
 
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
         hb.set_homogeneous(False)
 
-        b=get_small_stock_button(gtk.STOCK_DELETE)
+        b=get_small_stock_button(Gtk.STOCK_DELETE)
 
         b.set_tooltip_text(_("Drop a tag here to remove it from the list"))
-        b.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                        gtk.DEST_DEFAULT_HIGHLIGHT |
-                        gtk.DEST_DEFAULT_ALL,
-                        config.data.drag_type['tag'], gtk.gdk.ACTION_LINK)
+        b.drag_dest_set(Gtk.DestDefaults.MOTION |
+                        Gtk.DestDefaults.HIGHLIGHT |
+                        Gtk.DestDefaults.ALL,
+                        config.data.get_target_types('tag'),
+                        Gdk.DragAction.LINK)
         b.connect('drag-data-received', remove_drag_received)
-        hb.pack_start(b, expand=False)
+        hb.pack_start(b, False, True, 0)
 
         for (stock, tip, method) in (
-            (gtk.STOCK_SAVE, _("Save as adhoc view"), self.save_view),
-            (gtk.STOCK_ADD, _("Add a new tag"), self.new_tag),
-            (gtk.STOCK_INDEX, _("Display all defined tags"), self.all_tags),
+            (Gtk.STOCK_SAVE, _("Save as adhoc view"), self.save_view),
+            (Gtk.STOCK_ADD, _("Add a new tag"), self.new_tag),
+            (Gtk.STOCK_INDEX, _("Display all defined tags"), self.all_tags),
             ):
             b=get_small_stock_button(stock)
             b.set_tooltip_text(tip)
             b.connect('clicked', method)
-            hb.pack_start(b, expand=False)
+            hb.pack_start(b, False, True, 0)
 
         v.buttonbox=hb
 
-        v.pack_start(hb, expand=False)
+        v.pack_start(hb, False, True, 0)
         v.add(sw)
 
         return v
diff --git a/lib/advene/gui/views/timeline.py b/lib/advene/gui/views/timeline.py
index 099da67..a1f3e22 100755
--- a/lib/advene/gui/views/timeline.py
+++ b/lib/advene/gui/views/timeline.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,17 +16,22 @@
 # along with Advene; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
-import sys
-import re
+import logging
+logger = logging.getLogger(__name__)
+
+from gettext import gettext as _
 import operator
-import urllib
+import re
+import sys
 import struct
-import gobject
-import gtk
-import cairo
-import pango
-from gettext import gettext as _
 from threading import Lock
+import urllib
+
+from gi.repository import GObject
+from gi.repository import Gdk
+from gi.repository import Gtk
+import cairo
+from gi.repository import Pango
 
 # Advene part
 import advene.core.config as config
@@ -48,20 +53,20 @@ name="Timeline view plugin"
 def register(controller):
     controller.register_viewclass(TimeLine)
 
-class QuickviewBar(gtk.HBox):
+class QuickviewBar(Gtk.HBox):
     def __init__(self, controller=None):
-        gtk.HBox.__init__(self)
+        GObject.GObject.__init__(self)
         self.controller=controller
-        self.begin=gtk.Label()
-        self.end=gtk.Label()
-        self.content=gtk.ProgressBar()
-        self.content.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
+        self.begin=Gtk.Label()
+        self.end=Gtk.Label()
+        self.content=Gtk.ProgressBar()
+        self.content.set_ellipsize(Pango.EllipsizeMode.MIDDLE)
 
         self.annotation=None
 
-        self.pack_start(self.content, expand=True)
-        self.pack_start(self.begin, expand=False)
-        self.pack_start(self.end, expand=False)
+        self.pack_start(self.content, True, True, 0)
+        self.pack_start(self.begin, False, True, 0)
+        self.pack_start(self.end, False, True, 0)
 
     def set_text(self, s, progress=0):
         self.begin.set_text("")
@@ -170,6 +175,13 @@ class TimeLine(AdhocView):
                 c=self.controller.build_context()
                 # Override a potentially existing value of elements
                 elements=c.evaluateValue(v)
+            elif n == 'element':
+                # Add to potential list of elements
+                a = self.controller.package.get_element_by_id(v)
+                if a is not None:
+                    if elements is None:
+                        elements = []
+                    elements.append(a)
             elif n == 'position':
                 default_position=int(float(v))
             elif n == 'zoom':
@@ -182,6 +194,11 @@ class TimeLine(AdhocView):
             annotationtypes=ats
 
         self.list = elements
+        if len(annotationtypes or []) != len(self.controller.package.annotationTypes):
+            # Selected annotation types (else we would use all package's types)
+            self.annotationtypes_selection = annotationtypes
+        else:
+            self.annotationtypes_selection = None
         self.annotationtypes = annotationtypes
 
         # package used when the update_model has been called from
@@ -190,7 +207,7 @@ class TimeLine(AdhocView):
 
         self.current_marker = None
         self.current_marker_scale = None
-        self.layout = gtk.Layout ()
+        self.layout = Gtk.Layout ()
 
         self.minimum = minimum
         self.maximum = maximum
@@ -202,7 +219,6 @@ class TimeLine(AdhocView):
 
         self.colors = {
             'active': name2color('#fdfd4b'),
-            'inactive': gtk.Button().get_style().bg[0],
             'background': name2color('red'),
             'white': name2color('white'),
             }
@@ -223,9 +239,9 @@ class TimeLine(AdhocView):
             callback=handle_autoscroll_combo)
 
         # Create annotation widget style:
-        self.annotation_font = pango.FontDescription("sans %d" % config.data.preferences['timeline']['font-size'])
+        self.annotation_font = Pango.FontDescription("sans %d" % config.data.preferences['timeline']['font-size'])
         self.annotation_type_font = self.annotation_font.copy()
-        self.annotation_type_font.set_style(pango.STYLE_ITALIC)
+        self.annotation_type_font.set_style(Pango.Style.ITALIC)
 
         # Maybe we should ask pango the height of 'l' plus margins
         self.button_height = config.data.preferences['timeline']['button-height']
@@ -234,22 +250,24 @@ class TimeLine(AdhocView):
         u2p = self.unit2pixel
 
         # How many units does a pixel represent ?
-        # self.scale.value = unit by pixel
+        # self.scale.get_value = unit by pixel
         # Unit = ms
-        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=sys.maxint,
-                                                step_incr=20,
-                                                page_incr=100)
+        self.scale = Gtk.Adjustment.new(value=((self.maximum - self.minimum) or 60 * 60 * 1000) / Gdk.get_default_root_window().get_width(),
+                                        lower=5,
+                                        upper=sys.maxint,
+                                        step_increment=20,
+                                        page_increment=100,
+                                        page_size=20)
         self.scale.connect('value-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,
-                                            lower=0.01,
-                                            upper=1.0,
-                                            step_incr=.01,
-                                            page_incr=.1)
+        self.fraction_adj = Gtk.Adjustment.new(value=1.0,
+                                               lower=0.01,
+                                               upper=1.0,
+                                               step_increment=.01,
+                                               page_increment=.1,
+                                               page_size=.1)
         self.fraction_adj.connect('value-changed', self.fraction_event)
         self.fraction_adj.connect('changed', self.fraction_event)
 
@@ -262,20 +280,20 @@ class TimeLine(AdhocView):
         # 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.layout.add_events( Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.BUTTON1_MOTION_MASK )
+        self.scale_layout = Gtk.Layout()
         self.scale_layout.height=0
         self.scale_layout.step=0
-        self.scale_layout.add_events( gtk.gdk.BUTTON_PRESS_MASK )
+        self.scale_layout.add_events( Gdk.EventMask.BUTTON_PRESS_MASK )
 
         # Memorize the current scale height, so that we can refresh it
         # when it is changed by a given amount (typically 10 or 16
         # pixels)
         self.current_scale_height=0
-        # Global pane is the VPaned holding the scale and the layout.
+        # Global pane is the Paned holding the scale and the layout.
         self.global_pane=None
 
-        self.legend = gtk.Layout ()
+        self.legend = Gtk.Layout ()
 
         self.layout.connect('key-press-event', self.layout_key_press_cb)
         self.scale_layout.connect('key-press-event', self.layout_key_press_cb)
@@ -291,21 +309,19 @@ class TimeLine(AdhocView):
         self.scale_layout.connect('button-press-event', self.scale_layout_button_press_cb)
 
         self.layout.connect('size-allocate', self.layout_resize_event)
-        self.layout.connect('expose-event', self.draw_background)
-        self.layout.connect_after('expose-event', self.draw_relation_lines)
-        self.scale_layout.connect_after('expose-event', self.draw_bookmarks)
+        self.layout.connect('draw', self.draw_background)
+        self.layout.connect_after('draw', self.draw_relation_lines)
+        self.scale_layout.connect_after('draw', self.draw_bookmarks)
 
         # The layout can receive drops
         self.layout.connect('drag-data-received', self.layout_drag_received)
-        self.layout.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 )
+        self.layout.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                  Gtk.DestDefaults.HIGHLIGHT |
+                                  Gtk.DestDefaults.ALL,
+                                  config.data.get_target_types('annotation', 'annotation-type', 'timestamp'),
+                                  Gdk.DragAction.COPY | Gdk.DragAction.LINK | Gdk.DragAction.MOVE | Gdk.DragAction.ASK )
 
-        self.old_scale_value = self.scale.value
+        self.old_scale_value = self.scale.get_value()
 
         # Lines to draw in order to indicate related annotations
         self.relations_to_draw = []
@@ -319,7 +335,7 @@ class TimeLine(AdhocView):
         self.transmuted_annotation = None
         # Adjustment corresponding to the Virtual display
         # The page_size is the really displayed area
-        self.adjustment = gtk.Adjustment ()
+        self.adjustment = Gtk.Adjustment()
 
         # Dictionary holding the vertical position for each type
         self.layer_position = {}
@@ -331,18 +347,19 @@ class TimeLine(AdhocView):
         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
+            self.fraction_adj.set_value(zoom)
             if pos >= self.minimum and pos <= self.maximum:
                 self.adjustment.set_value(u2p(pos, absolute=True))
             # 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
+                pane = self.widget.get_window().get_width() - 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)
+            if self.expose_signal:
+                self.widget.disconnect(self.expose_signal)
+                self.expose_signal = None
             self.update_model(from_init=True)
             return False
         # Convert values, that could be strings
@@ -351,34 +368,46 @@ class TimeLine(AdhocView):
         if pane_position is not None:
             pane_position=long(float(pane_position))
 
-        self.expose_signal=self.widget.connect('expose-event', set_default_parameters,
+        self.expose_signal=self.widget.connect('draw', 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 = []
+        if self.annotationtypes_selection:
+            arguments.append([ ('annotation-type', at.id) for at in self.annotationtypes_selection ])
+        if self.list:
+            arguments.append([ ('element', el.id) for el in self.list ])
         arguments.append( ('minimum', self.minimum ) )
         arguments.append( ('maximum', self.maximum ) )
-        arguments.append( ('position', self.pixel2unit(self.adjustment.value, absolute=True) ) )
-        arguments.append( ('zoom', self.fraction_adj.value) )
+        arguments.append( ('position', self.pixel2unit(self.adjustment.get_value(), absolute=True) ) )
+        arguments.append( ('zoom', self.fraction_adj.get_value()) )
         self.options['pane-position']=self.inspector_pane.get_position()
         return self.options, arguments
 
-    def draw_background(self, layout, event):
+    def draw_background(self, layout, context):
+        """Draw annotation type separating lines
+        """
         width, height = layout.get_size()
         i=config.data.preferences['timeline']['interline-height']
-        drawable=layout.bin_window
-        gc=drawable.new_gc(foreground=self.colors['background'], line_style=gtk.gdk.LINE_ON_OFF_DASH)
+        offset = layout.get_vadjustment().get_value()
+        context.set_source_rgb(.3, .3, .3)
+        context.set_line_width(1)
+        context.set_dash( (1, 3) )
         for p in sorted(self.layer_position.itervalues()):
-            # Draw a different background
-            drawable.draw_line(gc, 0, p - i / 2, width, p - i / 2)
+            y = p - offset - i / 2
+            if y >= 0:
+                context.move_to(0, y)
+                context.line_to(width, y)
+        context.stroke()
+        context.set_dash([])
         return False
 
     def update_relation_lines(self):
         self.layout.queue_draw()
 
-    def draw_relation_lines(self, layout, event):
+    def draw_relation_lines(self, layout, context):
         if self.bookmarks_to_draw:
-            self.draw_bookmarks(layout, event)
+            self.draw_bookmarks(layout, context)
         if self.options['display-all-relations']:
             to_draw = [ (self.get_widget_for_annotation(r.members[0]),
                          self.get_widget_for_annotation(r.members[1]),
@@ -388,8 +417,6 @@ class TimeLine(AdhocView):
             to_draw = self.relations_to_draw
         if not to_draw:
             return False
-        context=layout.bin_window.cairo_create()
-
         for b1, b2, r in to_draw:
             if b1 is None or b2 is None:
                 continue
@@ -447,45 +474,52 @@ class TimeLine(AdhocView):
         self.scale_layout.queue_draw()
         self.layout.queue_draw()
 
-    def draw_bookmarks(self, layout, event):
+    def draw_bookmarks(self, layout, context):
         if not self.bookmarks_to_draw:
             return False
         a=self.adjustment
-        begin=long(a.value)
-        end=long(a.value + a.page_size)
-        context=layout.bin_window.cairo_create()
-        h=layout.get_size ()[1]
+        begin=long(a.get_value())
+        end=long(a.get_value() + a.get_page_size())
+
+        w, h = layout.get_size()
 
         context.set_source_rgb(1.0, 0, 0)
         context.set_line_width(2)
 
         for t in self.bookmarks_to_draw:
             x=self.unit2pixel(t, absolute=True)
+            # There is a clipping area applied to the context which
+            # restricts drawing to the visible area. We have to use
+            # coordinates relative to the visible area to draw the
+            # marks
             if x < begin:
                 # The bookmark is outside. Draw an arrow.
-                context.move_to(begin + 16, 2)
-                context.line_to(begin + 16, 16)
-                context.line_to(begin + 2, 9)
+                context.move_to(16, 2)
+                context.line_to(16, 16)
+                context.line_to(2, 9)
                 context.fill()
             elif x > end:
+                # (x1, y2, x2, y2)
+                clip_extents = context.clip_extents()
+                width = clip_extents[2] - clip_extents[0]
                 # The bookmark is outside. Draw an arrow.
-                context.move_to(end - 16, 2)
-                context.line_to(end - 16, 16)
-                context.line_to(end - 2, 9)
+                context.move_to(width - 16, 2)
+                context.line_to(width - 16, 16)
+                context.line_to(width - 2, 9)
                 context.fill()
             else:
-                context.move_to(x, 0)
-                context.line_to(x, h)
+                context.move_to(x - begin, 0)
+                context.line_to(x - begin, h)
                 context.stroke()
         return False
 
     def dialog_too_many_annotations(self, n):
-        d = gtk.Dialog(title=_("%d annotations") % n,
-                       parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT,
-                       buttons=( _("Display all types"), gtk.RESPONSE_YES,
-                                 gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE ) )
-        l = gtk.Label(_("There are %d annotations.\nThe current timeline may take a long time to display them, so only the first two annotation types are displayed. Use the annotation type selector (second button in the timeline) to select other annotations types to display, or click on the 'Display all types' button below.") % n)
+        d = Gtk.Dialog(title=_("%d annotations") % n,
+                       parent=self.controller.gui.gui.win,
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT,
+                       buttons=( _("Display all types"), Gtk.ResponseType.YES,
+                                 Gtk.STOCK_CLOSE, Gtk.ResponseType.CLOSE ) )
+        l = Gtk.Label(_("There are %d annotations.\nThe current timeline may take a long time to display them, so only the first two annotation types are displayed. Use the annotation type selector (second button in the timeline) to select other annotations types to display, or click on the 'Display all types' button below.") % n)
         l.set_line_wrap(True)
         d.vbox.add(l)
         d.connect('key-press-event', dialog.dialog_keypressed_cb)
@@ -495,9 +529,10 @@ class TimeLine(AdhocView):
         dialog.center_on_mouse(d)
         def handle_response(d, res):
             d.destroy()
-            if res == gtk.RESPONSE_YES:
+            if res == Gtk.ResponseType.YES:
                 # Display all types
                 self.annotationtypes = list(self.controller.package.annotationTypes)
+                self.annotationtypes_selection = None
                 self.update_model(partial_update=True)
             return True
         d.connect('response', handle_response)
@@ -524,10 +559,9 @@ class TimeLine(AdhocView):
         if self.minimum > self.maximum:
             self.minimum, self.maximum = self.maximum, self.minimum
 
-        if self.maximum != oldmax and self.layout.window is not None:
+        if self.maximum != oldmax and self.layout.get_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) )
+            self.scale.set_value( (self.maximum - self.minimum) / float(self.layout.get_window().get_height()) )
 
     def update_model(self, package=None, partial_update=False, from_init=False):
         """Update the whole model.
@@ -537,44 +571,28 @@ class TimeLine(AdhocView):
         @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:
+        if not self.update_lock.acquire(False) or self.layout.get_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
-            if self.annotationtypes is None or self.list is None:
+            if self.list is not None:
+                # We specified a list of annotations. Display only the
+                # annotation types for annotations present in the set
+                self.annotationtypes = list(set([ a.type for a in self.list ]))
+            elif self.annotationtypes_selection is not None:
+                self.annotationtypes = self.annotationtypes_selection
+            else:
                 # We display the whole package, so display also
                 # empty annotation types
                 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 ]))
 
         # Clear the layouts
         self.layout.foreach(self.layout.remove)
@@ -590,8 +608,8 @@ class TimeLine(AdhocView):
         def finalize_callback():
             self.update_legend_widget(self.legend)
             self.legend.show_all()
-            if self.layout.window is not None:
-                self.fraction_event(widget=None, forced_window_width=self.layout.window.get_size()[0])
+            if self.layout.get_window() is not None:
+                self.fraction_event(widget=None, forced_window_width=self.layout.get_window().get_width())
             self.update_lock.release()
 
         self.populate(finalize_callback)
@@ -636,9 +654,9 @@ class TimeLine(AdhocView):
             self.bookmarks_to_draw = []
 
     def debug_cb (self, widget, data=None):
-        print "Debug event."
+        logger.debug("Debug event.")
         if data is not None:
-            print "Data: %s" % data
+            logger.debug("Data: %s", data)
         return False
 
     def get_widget_for_annotation (self, annotation):
@@ -663,12 +681,11 @@ class TimeLine(AdhocView):
         alloc = self.layout.get_allocation()
         pos = self.unit2pixel(position, absolute=True) - (alloc.width / 2)
         a = self.adjustment
-        if pos < a.lower:
-            pos = a.lower
-        elif pos >= a.upper - a.page_size:
-            pos = a.upper - a.page_size
-        if a.value != pos:
-            a.set_value (pos)
+        pos = helper.clamp(pos,
+                           a.get_lower(),
+                           a.get_upper() - a.get_page_size())
+        if a.get_value() != pos:
+            a.set_value(pos)
         return True
 
     def activate_annotation_handler (self, context, parameters):
@@ -711,10 +728,9 @@ class TimeLine(AdhocView):
                     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']))
+            GObject.timeout_add(100, duration_updated, long(context.globals['duration']))
         return True
 
     def media_change_handler(self, context, parameters):
@@ -732,7 +748,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:
@@ -845,15 +861,15 @@ class TimeLine(AdhocView):
 
     def unit2pixel (self, v, absolute=False):
         if absolute:
-            return (long( ( v - self.minimum) / self.scale.value )) or 1
+            return (long( ( v - self.minimum) / self.scale.get_value() )) or 1
         else:
-            return (long(v / self.scale.value)) or 1
+            return (long(v / self.scale.get_value())) or 1
 
     def pixel2unit (self, v, absolute=False):
         if absolute:
-            return long((v * self.scale.value) + self.minimum)
+            return long((v * self.scale.get_value()) + self.minimum)
         else:
-            return long(v * self.scale.value)
+            return long(v * self.scale.get_value())
 
     def get_element_color(self, element):
         """Return the gtk color for the given element.
@@ -903,10 +919,10 @@ class TimeLine(AdhocView):
         elif event == 'AnnotationCreate':
             pass
         else:
-            print "Unknown event %s" % event
+            logger.warn("Unknown event %s" % event)
         return True
 
-    def update_annotationtype (self, annotationtype=None, event=None):
+    def update_annotationtype(self, annotationtype=None, event=None):
         """Update an annotationtype's representation.
         """
         if event == 'AnnotationTypeCreate':
@@ -950,7 +966,7 @@ class TimeLine(AdhocView):
             z=1.0 * ann.fragment.duration / (self.maximum - self.minimum)
             if z < 0.05:
                 z=0.05
-            self.fraction_adj.value=z
+            self.fraction_adj.set_value(z)
 
             # Center on annotation
             self.center_on_position(ann.fragment.begin)
@@ -974,8 +990,8 @@ class TimeLine(AdhocView):
     def dump_adjustment (self, a=None):
         if a is None:
             a = self.adjustment
-        print ("Lower: %.1f\tUpper: %.1f\tValue: %.1f\tPage size: %.1f"
-               % (a.lower, a.upper, a.value, a.page_size))
+        logger.debug("Lower: %.1f\tUpper: %.1f\tValue: %.1f\tPage size: %.1f"
+                     % (a.get_lower(), a.get_upper(), a.get_value(), a.get_page_size()))
 
     def align_annotations(self, source, dest, mode):
         new={
@@ -989,7 +1005,7 @@ class TimeLine(AdhocView):
             for k in ('begin', 'end'):
                 new[k]=getattr(dest.fragment, k)
         else:
-            print "Unknown drag mode: %s" % mode
+            logger.warn("Unknown drag mode: %s" % mode)
 
 
         if new['begin'] < new['end']:
@@ -1006,7 +1022,7 @@ class TimeLine(AdhocView):
         @return: a fraction (float)
         """
         x, y = widget.get_pointer()
-        w = widget.allocation.width
+        w = widget.get_allocation().width
         f = 1.0 * x / w
         return f
 
@@ -1040,14 +1056,14 @@ class TimeLine(AdhocView):
 
     def annotation_drag_received(self, widget, context, x, y, selection, targetType, time):
         if targetType == config.data.target_type['annotation']:
-            source=self.controller.package.annotations.get(unicode(selection.data, 'utf8').split('\n')[0])
+            source=self.controller.package.annotations.get(unicode(selection.get_data(), 'utf8').split('\n')[0])
             dest=widget.annotation
 
             if source == dest:
                 return True
 
             # Popup a menu to propose the drop options
-            menu=gtk.Menu()
+            menu=Gtk.Menu()
 
             def create_relation(item, s, d, t):
                 self.create_relation(s, d, t)
@@ -1068,17 +1084,17 @@ class TimeLine(AdhocView):
             relationtypes=helper.matching_relationtypes(self.controller.package,
                                                         source.type,
                                                         dest.type)
-            item=gtk.MenuItem(_("Create a relation"))
+            item=Gtk.MenuItem(_("Create a relation"))
             menu.append(item)
 
-            sm=gtk.Menu()
+            sm=Gtk.Menu()
             for rt in relationtypes:
-                sitem=gtk.MenuItem(self.controller.get_title(rt), use_underline=False)
+                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=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)
@@ -1104,7 +1120,7 @@ class TimeLine(AdhocView):
                     def merge_annotations(widget, s, d):
                         self.controller.merge_annotations(s, d, extend_bounds=(s.type == d.type))
                         return True
-                    item=gtk.MenuItem(_("Merge with this annotation"))
+                    item=Gtk.MenuItem(_("Merge with this annotation"))
                     item.connect('activate', merge_annotations, source, dest)
                     menu.append(item)
 
@@ -1121,16 +1137,16 @@ class TimeLine(AdhocView):
                 ):
                 if not condition:
                     continue
-                item=gtk.ImageMenuItem(title)
-                im=gtk.Image()
+                item=Gtk.ImageMenuItem(title)
+                im=Gtk.Image()
                 im.set_from_file(config.data.advenefile( ( 'pixmaps', mode + '.png') ))
                 item.set_image(im)
                 item.connect('activate', align_annotations, source, dest, mode)
                 menu.append(item)
             menu.show_all()
-            menu.popup(None, None, None, 0, gtk.get_current_event_time())
+            menu.popup_at_pointer(None)
         elif targetType == config.data.target_type['tag']:
-            tags=unicode(selection.data, 'utf8').split(',')
+            tags=unicode(selection.get_data(), 'utf8').split(',')
             a=widget.annotation
             l=[t for t in tags if not t in a.tags ]
             self.controller.notify('EditSessionStart', element=a, immediate=True)
@@ -1138,10 +1154,10 @@ class TimeLine(AdhocView):
             self.controller.notify('AnnotationEditEnd', annotation=a)
             self.controller.notify('EditSessionEnd', element=a)
         else:
-            print "Unknown target type for drop: %d" % targetType
+            logger.warn("Unknown target type for drop: %d" % targetType)
         return True
 
-    def move_or_copy_annotations(self, sources, dest, position=None, action=gtk.gdk.ACTION_ASK):
+    def move_or_copy_annotations(self, sources, dest, position=None, action=Gdk.DragAction.ASK):
         """Display a popup menu to move or copy the sources annotation to the dest annotation type.
 
         If position is given (in ms), then the choice will also be
@@ -1156,7 +1172,7 @@ class TimeLine(AdhocView):
         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)
+                                      icon=Gtk.MessageType.WARNING)
                 return True
 
             self.transmuted_annotation=self.controller.transmute_annotation(an,
@@ -1195,7 +1211,7 @@ class TimeLine(AdhocView):
                                                     source.type,
                                                     dest)
 
-        if action == gtk.gdk.ACTION_COPY:
+        if action == Gdk.DragAction.COPY:
             # Direct copy
             if len(sources) > 1:
                 if source.type == dest:
@@ -1208,7 +1224,7 @@ class TimeLine(AdhocView):
                     position=None
                 copy_annotation(None, source, dest, position=position)
             return True
-        elif action == gtk.gdk.ACTION_MOVE:
+        elif action == Gdk.DragAction.MOVE:
             if len(sources) > 1:
                 if source.type == dest:
                     return True
@@ -1220,7 +1236,7 @@ class TimeLine(AdhocView):
                     position=None
                 move_annotation(None, source, dest, position=position)
             return True
-        elif action == gtk.gdk.ACTION_LINK:
+        elif action == Gdk.DragAction.LINK:
             # Copy and create a relation. Ignore the selection (?)
             if len(relationtypes) == 1:
                 copy_annotation(None, source, dest, relationtype=relationtypes[0])
@@ -1229,56 +1245,56 @@ class TimeLine(AdhocView):
                 self.log("FIXME: no valid relation type is defined")
             else:
                 # Multiple valid relationtypes.
-                menu=gtk.Menu()
-                item=gtk.MenuItem(_("Select the appropriate relation type"))
+                menu=Gtk.Menu()
+                item=Gtk.MenuItem(_("Select the appropriate relation type"))
                 menu.append(item)
                 item.set_sensitive(False)
                 for rt in relationtypes:
-                    sitem=gtk.MenuItem(self.controller.get_title(rt), use_underline=False)
+                    sitem=Gtk.MenuItem(self.controller.get_title(rt), use_underline=False)
                     sitem.connect('activate', copy_annotation, source, dest, None, rt)
                     menu.append(sitem)
                 menu.show_all()
-                menu.popup(None, None, None, 0, gtk.get_current_event_time())
+                menu.popup_at_pointer(None)
             return True
 
         # ACTION_ASK: Popup a menu to propose the drop options
-        menu=gtk.Menu()
+        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=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=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())
+            menu.popup_at_pointer(None)
             return True
 
         if source.type != dest:
-            item=gtk.MenuItem(_("Duplicate annotation to type %s") % dest_title, use_underline=False)
+            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=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)
 
         if position is not None and abs(position-source.fragment.begin) > 1000:
-            item=gtk.MenuItem(_("Duplicate to type %(type)s at %(position)s") % {
+            item=Gtk.MenuItem(_("Duplicate to type %(type)s at %(position)s") % {
                     'type': dest_title,
                     'position': helper.format_time(position) }, use_underline=False)
             item.connect('activate', copy_annotation, source, dest, position)
             menu.append(item)
 
-            item=gtk.MenuItem(_("Move to type %(type)s at %(position)s") % {
+            item=Gtk.MenuItem(_("Move to type %(type)s at %(position)s") % {
                         'type': dest_title,
                         'position': helper.format_time(position) }, use_underline=False)
             item.connect('activate', move_annotation, source, dest, position)
@@ -1288,29 +1304,29 @@ class TimeLine(AdhocView):
 
         if relationtypes:
             if source.type != dest:
-                item=gtk.MenuItem(_("Duplicate and create a relation"), use_underline=False)
+                item=Gtk.MenuItem(_("Duplicate and create a relation"), use_underline=False)
                 # build a submenu
-                sm=gtk.Menu()
+                sm=Gtk.Menu()
                 for rt in relationtypes:
-                    sitem=gtk.MenuItem(self.controller.get_title(rt), use_underline=False)
+                    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)
 
             if position is not None:
-                item=gtk.MenuItem(_("Duplicate at %s and create a relation") % helper.format_time(position), use_underline=False)
+                item=Gtk.MenuItem(_("Duplicate at %s and create a relation") % helper.format_time(position), use_underline=False)
                 # build a submenu
-                sm=gtk.Menu()
+                sm=Gtk.Menu()
                 for rt in relationtypes:
-                    sitem=gtk.MenuItem(self.controller.get_title(rt), use_underline=False)
+                    sitem=Gtk.MenuItem(self.controller.get_title(rt), use_underline=False)
                     sitem.connect('activate', copy_annotation, source, dest, position, 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())
+        menu.popup_at_pointer(None)
 
     def copy_annotation_type(self, source, dest):
         """Display a popup menu to copy the source annotation type to the dest annotation type.
@@ -1432,7 +1448,7 @@ class TimeLine(AdhocView):
             return True
 
         # Popup a menu to propose the drop options
-        menu=gtk.Menu()
+        menu=Gtk.Menu()
 
         source_title=self.controller.get_title(source)
         dest_title=self.controller.get_title(dest)
@@ -1452,42 +1468,42 @@ class TimeLine(AdhocView):
                 (_("Align all annotation contents using %s as reference") % source_title,
                  (DTWalign_annotations, source, dest, 'content', True) ),
                 ):
-                item=gtk.MenuItem(label, use_underline=False)
+                item=Gtk.MenuItem(label, use_underline=False)
                 item.connect('activate', *action)
                 menu.append(item)
 
         menu.show_all()
-        menu.popup(None, None, None, 0, gtk.get_current_event_time())
+        menu.popup_at_pointer(None)
 
     def annotation_type_drag_received_cb(self, widget, context, x, y, selection, targetType, time):
         if targetType == config.data.target_type['annotation']:
-            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
             dest=widget.annotationtype
             self.move_or_copy_annotations(sources, dest)
         elif targetType == config.data.target_type['annotation-type']:
             # Copy annotations
-            source=self.controller.package.annotationTypes.get(unicode(selection.data, 'utf8'))
+            source=self.controller.package.annotationTypes.get(unicode(selection.get_data(), 'utf8'))
             dest=widget.annotationtype
             self.copy_annotation_type(source, dest)
         elif targetType == config.data.target_type['color']:
             # Got a color
             # The structure consists in 4 unsigned shorts: r, g, b, opacity
-            (r, g, b, opacity)=struct.unpack('HHHH', selection.data)
+            (r, g, b, opacity)=struct.unpack('HHHH', selection.get_data())
             widget.annotationtype.setMetaData(config.data.namespace, 'color', u"string:#%04x%04x%04x" % (r, g, b))
             self.controller.notify('AnnotationTypeEditEnd', annotationtype=widget.annotationtype)
         elif targetType == config.data.target_type['timestamp']:
-            data=decode_drop_parameters(selection.data)
+            data=decode_drop_parameters(selection.get_data())
             begin=long(data['timestamp'])
             content=data.get('comment', None)
             # Create an annotation with the timestamp as begin
             self.controller.create_annotation(begin, widget.annotationtype, content=content)
         else:
-            print "Unknown target type for drop: %d" % targetType
+            logger.warn("Unknown target type for drop: %d" % targetType)
         return True
 
     def new_annotation_type_drag_received_cb(self, widget, context, x, y, selection, targetType, time):
         if targetType == config.data.target_type['annotation']:
-            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
             # Create a type
             dest=self.create_annotation_type()
             if dest is None:
@@ -1498,7 +1514,7 @@ class TimeLine(AdhocView):
         elif targetType == config.data.target_type['timestamp']:
             typ=self.create_annotation_type()
             if typ is not None:
-                data=decode_drop_parameters(selection.data)
+                data=decode_drop_parameters(selection.get_data())
                 begin=long(data['timestamp'])
                 content=data.get('comment', None)
                 # Create an annotation of type typ with the timestamp as begin
@@ -1509,12 +1525,12 @@ class TimeLine(AdhocView):
         """Handle the drop from an annotation-type to the legend
         """
         if targetType == config.data.target_type['annotation-type']:
-            source=self.controller.package.annotationTypes.get(unicode(selection.data, 'utf8'))
+            source=self.controller.package.annotationTypes.get(unicode(selection.get_data(), 'utf8'))
             # We received a drop. Determine the location.
             s = config.data.preferences['timeline']['interline-height']
 
             # Correct y value according to scrollbar position
-            y += widget.parent.get_vscrollbar().get_adjustment().get_value()
+            y += widget.get_parent().get_vscrollbar().get_adjustment().get_value()
 
             f=[ at
                 for (at, p) in self.layer_position.iteritems()
@@ -1530,6 +1546,7 @@ class TimeLine(AdhocView):
                 l.append(source)
                 l.extend(self.annotationtypes[j+1:])
                 self.annotationtypes=l
+                self.annotationtypes_selection = self.annotationtypes
                 self.update_model(partial_update=True)
             elif y < self.button_height + s:
                 # Drop at the beginning of the list.
@@ -1540,6 +1557,7 @@ class TimeLine(AdhocView):
                 l=[ source ]
                 l.extend(self.annotationtypes)
                 self.annotationtypes=l
+                self.annotationtypes_selection = self.annotationtypes
                 self.update_model(partial_update=True)
             elif y > max(self.layer_position.values() or (0,)):
                 # Drop at the end of the list
@@ -1548,6 +1566,7 @@ class TimeLine(AdhocView):
                         return True
                     self.annotationtypes.remove(source)
                 self.annotationtypes.append(source)
+                self.annotationtypes_selection = self.annotationtypes
                 self.update_model(partial_update=True)
             return True
         return False
@@ -1575,13 +1594,13 @@ class TimeLine(AdhocView):
         """Handle button presses on annotation widgets.
         """
         widget._single_click_guard=False
-        if event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS:
+        if event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
             self.annotation_cb(widget, annotation, event.x)
             return True
-        elif event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+        elif event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
             self.controller.gui.edit_element(annotation)
             return True
-        elif event.button == 1 and event.type == gtk.gdk.BUTTON_PRESS and event.state & gtk.gdk.CONTROL_MASK:
+        elif event.button == 1 and event.type == Gdk.EventType.BUTTON_PRESS and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             # Control + click : set annotation begin/end time to current time
             f=self.annotation_fraction(widget)
             if f < .40:
@@ -1599,15 +1618,15 @@ class TimeLine(AdhocView):
             self.controller.notify('EditSessionEnd', element=annotation)
             return True
         elif (event.button == 1
-              and event.type == gtk.gdk.BUTTON_PRESS
-              and event.state & gtk.gdk.SHIFT_MASK):
+              and event.type == Gdk.EventType.BUTTON_PRESS
+              and event.get_state() & Gdk.ModifierType.SHIFT_MASK):
             # Shift-click: toggle annotation selection/activation
             if widget.active:
                 self.desactivate_annotation (annotation, buttons=[ widget ])
             else:
                 self.activate_annotation (annotation, buttons=[ widget ])
             return True
-        elif event.button == 1 and event.type == gtk.gdk.BUTTON_PRESS:
+        elif event.button == 1 and event.type == Gdk.EventType.BUTTON_PRESS:
             widget._single_click_guard=True
             return True
         return False
@@ -1628,15 +1647,24 @@ class TimeLine(AdhocView):
             button.grab_focus()
             return True
 
-        e=gtk.Entry()
+        e=Gtk.Entry()
         # get_title will either return the content data, or the computed representation
         e.set_text(self.controller.get_title(annotation))
         e.set_activates_default(True)
 
+        completion = Gtk.EntryCompletion()
+        # Build the completion list
+        store = Gtk.ListStore(str)
+        for c in self.controller.package._indexer.get_completions("", context=annotation):
+            store.append([ c ])
+        completion.set_model(store)
+        completion.set_text_column(0)
+        e.set_completion(completion)
+
         def key_handler(widget, event, ann, cb, controller, close_eb):
-            if event.keyval == gtk.keysyms.Return:
-                r = helper.title2content(widget.get_text(),
-                                         ann.content.data,
+            if event.keyval == Gdk.KEY_Return:
+                r = helper.title2content(widget.get_text().decode('utf-8'),
+                                         ann.content,
                                          ann.type.getMetaData(config.data.namespace, "representation"))
                 if r is None:
                     self.controller.log(_("Cannot update the annotation, its representation is too complex"))
@@ -1650,16 +1678,16 @@ class TimeLine(AdhocView):
                         self.controller.notify('EditSessionEnd', element=ann)
                 close_eb(widget)
                 return True
-            elif event.keyval == gtk.keysyms.Escape:
+            elif event.keyval == Gdk.KEY_Escape:
                 # Abort and close the entry
                 if cb:
                     cb('cancel', ann)
                 close_eb(widget)
                 return True
-            elif event.keyval == gtk.keysyms.Tab:
+            elif event.keyval == Gdk.KEY_Tab:
                 # Validate the current annotation and go to the previous/next one
-                r = helper.title2content(widget.get_text(),
-                                         ann.content.data,
+                r = helper.title2content(widget.get_text().decode('utf-8'),
+                                         ann.content,
                                          ann.type.getMetaData(config.data.namespace, "representation"))
                 if r is None:
                     self.controller.log("Cannot update the annotation, its representation is too complex")
@@ -1673,7 +1701,7 @@ class TimeLine(AdhocView):
                         self.controller.notify('EditSessionEnd', element=ann)
                 # Navigate
                 b=ann.fragment.begin
-                if event.state & gtk.gdk.SHIFT_MASK:
+                if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                     # Previous.
                     l=[a
                        for a in ann.type.annotations
@@ -1705,15 +1733,15 @@ class TimeLine(AdhocView):
             # We have just create the annotation widget. Its child
             # properties wrt. layout are not yet updated. Simply
             # compute them again.
-            button.parent.put(e, self.unit2pixel(annotation.fragment.begin, absolute=True), self.layer_position[annotation.type])
+            button.get_parent().put(e, self.unit2pixel(annotation.fragment.begin, absolute=True), self.layer_position[annotation.type])
         else:
-            button.parent.put(e, al.x, al.y)
+            button.get_parent().put(e, al.x, al.y)
         e.connect('size-allocate', grab_focus)
         # Keep the inspector window open on the annotation
         self.set_annotation(annotation)
         if move_cursor:
-            d=gtk.gdk.display_get_default()
-            x,y=button.window.get_deskrelative_origin()
+            d=Gdk.Display.get_default()
+            x,y=button.get_window().get_deskrelative_origin()
             d.warp_pointer(d.get_default_screen(), x + 2, y + 2)
         return e
 
@@ -1723,21 +1751,21 @@ class TimeLine(AdhocView):
         if widget.keypress(widget, event, annotation):
             return True
 
-        if event.keyval == gtk.keysyms.Return and event.state & gtk.gdk.CONTROL_MASK:
+        if event.keyval == Gdk.KEY_Return and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             # Control-return: split at current player position
             self.controller.split_annotation(annotation, self.controller.player.current_position_value)
             return True
-        elif event.keyval == gtk.keysyms.a:
+        elif event.keyval == Gdk.KEY_a:
             self.controller.gui.adjust_annotation_bound(annotation, 'begin')
-        elif event.keyval == gtk.keysyms.A:
+        elif event.keyval == Gdk.KEY_A:
             self.controller.gui.adjust_annotation_bound(annotation, 'end')
-        elif event.keyval == gtk.keysyms.p:
+        elif event.keyval == Gdk.KEY_p:
             # Play
             f=self.annotation_fraction(widget)
             x, y = widget.get_pointer()
             if (x < 0 or y < 0
-                or x > widget.allocation.width
-                or y > widget.allocation.height):
+                or x > widget.get_allocation().width
+                or y > widget.get_allocation().height):
                 # We are outside the widget. Let the key_pressed_cb
                 # callback from layout handle the key
                 return False
@@ -1752,7 +1780,7 @@ class TimeLine(AdhocView):
             c.update_status (status="set", position=pos)
             c.gui.set_current_annotation(annotation)
             return True
-        elif event.keyval == gtk.keysyms.Return:
+        elif event.keyval == Gdk.KEY_Return:
             # Quick edit
             self.quick_edit(annotation, button=widget)
             return True
@@ -1826,8 +1854,8 @@ class TimeLine(AdhocView):
                 self.controller.player.status != self.controller.player.PlayingStatus):
                 # Check if the annotation is not already visible
                 a = self.adjustment
-                start=a.value
-                finish=a.value + a.page_size
+                start=a.get_value()
+                finish=a.get_value() + a.get_page_size()
                 begin = self.unit2pixel(annotation.fragment.begin, absolute=True)
                 if begin >= start and begin <= finish:
                     return False
@@ -1845,34 +1873,33 @@ class TimeLine(AdhocView):
         b.connect('drag-begin', self.annotation_drag_begin)
         # The button can receive drops (to create relations)
         b.connect('drag-data-received', self.annotation_drag_received)
-        b.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                        gtk.DEST_DEFAULT_HIGHLIGHT |
-                        gtk.DEST_DEFAULT_ALL,
-                        config.data.drag_type['annotation']
-                        + config.data.drag_type['tag']
-                        , gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE | gtk.gdk.ACTION_ASK )
+        b.drag_dest_set(Gtk.DestDefaults.MOTION |
+                        Gtk.DestDefaults.HIGHLIGHT |
+                        Gtk.DestDefaults.ALL,
+                        config.data.get_target_types('annotation', 'tag'),
+                        Gdk.DragAction.LINK | Gdk.DragAction.COPY | Gdk.DragAction.MOVE | Gdk.DragAction.ASK )
 
         def annotation_drag_motion(widget, drag_context, x, y, timestamp):
-            actions=drag_context.actions
+            actions=drag_context.get_actions()
             # Dragging an annotation. Set the default action to ASK.
-            if (config.data.drag_type['annotation'][0][0] in drag_context.targets
-                and not actions in ( gtk.gdk.ACTION_LINK, gtk.gdk.ACTION_COPY, gtk.gdk.ACTION_MOVE )):
+            if (config.data.drag_type['annotation'][0][0] in drag_context.list_targets()
+                and not actions in ( Gdk.DragAction.LINK, Gdk.DragAction.COPY, Gdk.DragAction.MOVE )):
                 # No single action was selected. Force ASK
-                drag_context.drag_status(gtk.gdk.ACTION_ASK, timestamp)
+                Gdk.drag_status(drag_context, Gdk.DragAction.ASK, timestamp)
         b.connect('drag-motion', annotation_drag_motion)
 
         # Handle scroll actions
         def handle_scroll_event(button, event):
-            if not (event.state & gtk.gdk.CONTROL_MASK):
+            if not (event.get_state() & Gdk.ModifierType.CONTROL_MASK):
                 return False
-            if event.state & gtk.gdk.SHIFT_MASK:
+            if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                 i='second-scroll-increment'
             else:
                 i='scroll-increment'
 
-            if event.direction == gtk.gdk.SCROLL_DOWN or event.direction == gtk.gdk.SCROLL_RIGHT:
+            if event.direction == Gdk.ScrollDirection.DOWN or event.direction == Gdk.ScrollDirection.RIGHT:
                 incr=-config.data.preferences[i]
-            elif event.direction == gtk.gdk.SCROLL_UP or event.direction == gtk.gdk.SCROLL_LEFT:
+            elif event.direction == Gdk.ScrollDirection.UP or event.direction == Gdk.ScrollDirection.LEFT:
                 incr=config.data.preferences[i]
 
             fr=self.annotation_fraction(button)
@@ -1881,7 +1908,7 @@ class TimeLine(AdhocView):
             self.controller.notify('EditSessionStart', element=button.annotation, immediate=True)
 
             newpos = None
-            if event.state & gtk.gdk.SHIFT_MASK:
+            if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
                 f.begin += incr
                 f.end += incr
                 newpos = f.begin
@@ -1954,8 +1981,8 @@ class TimeLine(AdhocView):
                     # 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 self.widget.get_window():
+                        self.inspector_pane.set_position(max((0, self.widget.get_window().get_width() - 160)))
                 if callback:
                     callback()
                 return False
@@ -1968,7 +1995,7 @@ class TimeLine(AdhocView):
                                         1.0 * count / length)
                 self.locked_inspector = True
             self.controller.gui.set_busy_cursor(True)
-            gobject.idle_add(create_annotations, l, length)
+            GObject.idle_add(create_annotations, l, length)
         elif callback:
             callback()
 
@@ -1981,7 +2008,7 @@ class TimeLine(AdhocView):
     def draw_current_mark (self):
         u2p = self.unit2pixel
 
-        red=gtk.gdk.color_parse('red2')
+        red=Gdk.color_parse('red2')
         a = GenericColorButtonWidget('layout_current_mark', container=self)
         a.default_size=(1, max(self.layer_position.values() or (0,)) + self.button_height)
         a.local_color=red
@@ -2027,8 +2054,8 @@ class TimeLine(AdhocView):
         elif (self.options['autoscroll'] == 2
             and (p.status == p.PlayingStatus or p.status == p.PauseStatus)):
             p=self.unit2pixel(pos, absolute=True)
-            begin=self.adjustment.value
-            end=begin + self.adjustment.page_size
+            begin=self.adjustment.get_value()
+            end=begin + self.adjustment.get_page_size()
             if p > end or p < begin:
                 self.center_on_position(pos)
         self.update_current_mark (pos)
@@ -2076,12 +2103,12 @@ class TimeLine(AdhocView):
             widget.set_from_pixbuf(png_to_pixbuf (png, height=max(20, h)))
             if widget.expose_signal is not None:
                 widget.disconnect(widget.expose_signal)
-                widget.expose_signal=None
+                widget.expose_signal = None
             return False
 
         # Remove previous images
         def remove_image(w):
-            if isinstance(w, gtk.Image):
+            if isinstance(w, Gtk.Image):
                 self.scale_layout.remove(w)
                 return True
         self.scale_layout.foreach(remove_image)
@@ -2101,9 +2128,9 @@ class TimeLine(AdhocView):
             u2p=self.unit2pixel
             while t <= self.maximum:
                 # Draw screenshots
-                i=gtk.Image()
+                i=Gtk.Image()
                 i.mark = t
-                i.expose_signal=i.connect('expose-event', display_image, height, step)
+                i.expose_signal=i.connect('draw', display_image, height, step)
                 i.pos = 20
                 # Real timestamp of the snapshot. If < 0 (and a
                 # large value, since it is after used to get best
@@ -2122,13 +2149,13 @@ class TimeLine(AdhocView):
         step = self.pixel2unit (110)
         t = self.minimum
 
-        font = pango.FontDescription("sans 10")
+        font = Pango.FontDescription("sans 10")
 
         while t <= self.maximum:
             x = u2p(t, absolute=True)
 
             # Draw label
-            l = gtk.Label ('|' + helper.format_time (t))
+            l = Gtk.Label(label='|' + helper.format_time (t))
             l.modify_font(font)
             l.mark = t
             l.pos = 1
@@ -2168,34 +2195,34 @@ class TimeLine(AdhocView):
         if event.keyval >= 49 and event.keyval <= 57:
             # 1-9 keys set the zoom factor
             pos=self.get_middle_position()
-            self.fraction_adj.value=1.0/pow(2, event.keyval-49)
+            self.fraction_adj.set_value(1.0/pow(2, event.keyval-49))
             self.set_middle_position(pos)
             return True
-        elif event.keyval == gtk.keysyms.plus and event.state & gtk.gdk.CONTROL_MASK:
+        elif event.keyval == Gdk.KEY_plus and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             # Zoom in
             a=self.fraction_adj
             pos=self.get_middle_position()
-            a.value=min(a.value + a.page_increment, a.upper)
+            a.set_value(min(a.get_value() + a.get_page_increment(), a.get_upper()))
             self.set_middle_position(pos)
-        elif event.keyval == gtk.keysyms.plus and event.state & gtk.gdk.CONTROL_MASK:
+        elif event.keyval == Gdk.KEY_plus and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             # Zoom out
             a=self.fraction_adj
             pos=self.get_middle_position()
-            a.value=max(a.value - a.page_increment, a.lower)
+            a.set_value(max(a.get_value() - a.get_page_increment(), a.get_lower()))
             self.set_middle_position(pos)
-        elif event.keyval == gtk.keysyms.e:
+        elif event.keyval == Gdk.KEY_e:
             if isinstance(self.quickview.annotation, Annotation):
                 self.controller.gui.edit_element(self.quickview.annotation)
                 return True
-        elif event.keyval == gtk.keysyms.c:
+        elif event.keyval == Gdk.KEY_c:
             self.center_on_position(self.current_position)
             return True
-        elif event.keyval == gtk.keysyms.p:
+        elif event.keyval == Gdk.KEY_p:
             # Play at the current position
             x, y = win.get_pointer()
             # Note: x is here relative to the visible portion of the window. Thus we must
-            # add self.adjustment.value
-            position=self.pixel2unit(self.adjustment.value + x, absolute=True)
+            # add self.adjustment.get_value
+            position=self.pixel2unit(self.adjustment.get_value() + x, absolute=True)
             c=self.controller
             pos = c.create_position (value=position,
                                      key=c.player.MediaTime,
@@ -2210,40 +2237,40 @@ class TimeLine(AdhocView):
         # We received a drop. Determine the location.
 
         # Correct y value according to scrollbar position
-        y += widget.parent.get_vscrollbar().get_adjustment().get_value()
+        y += widget.get_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']) ]
 
         if targetType == config.data.target_type['annotation']:
-            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_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
+                    ac=Gdk.DragAction.ASK
                 else:
-                    ac=context.actions
-                self.move_or_copy_annotations(sources, drop_types[0], position=self.pixel2unit(self.adjustment.value + x, absolute=True), action=ac)
+                    ac=context.get_actions()
+                self.move_or_copy_annotations(sources, drop_types[0], position=self.pixel2unit(self.adjustment.get_value() + x, absolute=True), action=ac)
             else:
                 # Maybe we should propose to create a new annotation-type ?
                 # Create a type
                 dest=self.create_annotation_type()
                 if dest is None:
                     return True
-                self.move_or_copy_annotations(sources, dest, position=self.pixel2unit(self.adjustment.value + x, absolute=True), action=context.actions)
+                self.move_or_copy_annotations(sources, dest, position=self.pixel2unit(self.adjustment.get_value() + x, absolute=True), action=context.get_actions())
             return True
         elif targetType == config.data.target_type['annotation-type']:
-            source=self.controller.package.annotationTypes.get(unicode(selection.data, 'utf8'))
+            source=self.controller.package.annotationTypes.get(unicode(selection.get_data(), 'utf8'))
             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),
+                    self.controller.create_annotation(position=self.pixel2unit(self.adjustment.get_value() + x, absolute=True),
                                                       type=source,
-                                                      duration=self.pixel2unit(context.get_source_widget().get_allocation().width),
+                                                      duration=self.pixel2unit(Gtk.drag_get_source_widget(context).get_allocation().width),
                                                       )
             else:
                 # Maybe we should propose to create a new annotation-type ?
@@ -2260,13 +2287,13 @@ class TimeLine(AdhocView):
             else:
                 typ=self.create_annotation_type()
             if typ is not None:
-                data=decode_drop_parameters(selection.data)
+                data=decode_drop_parameters(selection.get_data())
                 begin=long(data['timestamp'])
                 content=data.get('comment', None)
                 # Create an annotation of type typ with the timestamp as begin
                 self.controller.create_annotation(begin, typ, content=content)
         else:
-            print "Unknown target type for drop: %d" % targetType
+            logger.warn("Unknown target type for drop: %d" % targetType)
         return False
 
     def scale_layout_button_press_cb(self, widget=None, event=None):
@@ -2278,8 +2305,8 @@ class TimeLine(AdhocView):
         # Convert x, y (relative to the layout allocation) into
         # values relative to the whole layout size
         p=widget.get_parent()
-        x=long(p.get_hadjustment().value + x)
-        y=long(p.get_vadjustment().value + y)
+        x=long(p.get_hadjustment().get_value() + x)
+        y=long(p.get_vadjustment().get_value() + y)
 
         if event.button == 3:
             self.context_cb (timel=self, position=self.pixel2unit(x, absolute=True), height=y)
@@ -2318,18 +2345,18 @@ class TimeLine(AdhocView):
         # Convert x, y (relative to the layout allocation) into
         # values relative to the whole layout size
         p=widget.get_parent()
-        x=long(p.get_hadjustment().value + x)
-        y=long(p.get_vadjustment().value + y)
+        x=long(p.get_hadjustment().get_value() + x)
+        y=long(p.get_vadjustment().get_value() + y)
 
         if event.button == 3:
             self.context_cb (timel=self, position=self.pixel2unit(x, absolute=True), height=y)
             return True
         elif event.button == 1:
-            if event.state & gtk.gdk.CONTROL_MASK:
+            if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
                 # Control-click: create annotation + edit it
                 ats=[ at
-                    for (at, p) in self.layer_position.iteritems()
-                    if (y >= p and y <= p + self.button_height) ]
+                      for (at, pos) in self.layer_position.iteritems()
+                      if (y >= pos and y <= pos + self.button_height) ]
                 if not ats:
                     at = None
                 else:
@@ -2344,7 +2371,7 @@ class TimeLine(AdhocView):
                         self.quick_edit(el, button=b, callback=set_end_time)
                 return True
 
-            if event.type == gtk.gdk._2BUTTON_PRESS:
+            if event.type == Gdk.EventType._2BUTTON_PRESS:
                 # Double click in the layout: in all cases, goto the position
                 c=self.controller
                 pos = c.create_position (value=self.pixel2unit(x, absolute=True),
@@ -2375,8 +2402,8 @@ class TimeLine(AdhocView):
             # Convert x, y (relative to the layout allocation) into
             # values relative to the whole layout size
             p=widget.get_parent()
-            x=long(p.get_hadjustment().value + x)
-            y=long(p.get_vadjustment().value + y)
+            x=long(p.get_hadjustment().get_value() + x)
+            y=long(p.get_vadjustment().get_value() + y)
 
             if self.layout_selection[0][0] is None:
                 # Some bug here, should not happen except in the case
@@ -2393,7 +2420,7 @@ class TimeLine(AdhocView):
 
             if (abs(x2-x1) > 10 and abs(y2-y1) > 5):
                 # The cursor has been significantly moved. Consider it is a selection.
-                if not (event.state & gtk.gdk.CONTROL_MASK or event.state & gtk.gdk.SHIFT_MASK):
+                if not (event.get_state() & Gdk.ModifierType.CONTROL_MASK or event.get_state() & Gdk.ModifierType.SHIFT_MASK):
                     # Control or shift was not held: it is a new selection.
                     self.unselect_all()
 
@@ -2404,18 +2431,18 @@ class TimeLine(AdhocView):
                     #x=self.layout.child_get_property(widget, 'x')
                     #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
-                         and y >= y1 and y + h <= y2):
+                    w = widget.get_window()
+                    x, y = w.get_position()
+                    if ( x >= x1 and x + w.get_width() <= x2
+                         and y >= y1 and y + w.get_height() <= y2):
                         self.activate_annotation(widget.annotation, buttons=[ widget ])
                         res.append(widget)
 
                 if not res:
                     # No selected annotations. Propose to create a new one.
                     a=[ at
-                        for (at, p) in self.layer_position.iteritems()
-                        if (y1 >= p and y1 <= p + self.button_height) ]
+                        for (at, pos) in self.layer_position.iteritems()
+                        if (y1 >= pos and y1 <= pos + self.button_height) ]
                     at = None
                     if a:
                         at = a[0]
@@ -2434,7 +2461,7 @@ class TimeLine(AdhocView):
                                            self.pixel2unit(x2, absolute=True))
                         return True
 
-                    menu=gtk.Menu()
+                    menu=Gtk.Menu()
                     for (label, action) in (
                         (_("Create a new annotation"), create),
                         (_("Zoom on region"), zoom),
@@ -2442,25 +2469,27 @@ class TimeLine(AdhocView):
                         ):
                         if at is None and action == create:
                             continue
-                        i=gtk.MenuItem(label)
+                        i=Gtk.MenuItem(label)
                         i.connect('activate', action)
                         menu.append(i)
                     menu.show_all()
-                    menu.popup(None, None, None, 0, gtk.get_current_event_time())
+                    menu.popup_at_pointer(None)
                 return True
         return False
 
     def draw_selection_rectangle(self, invert=False):
-        drawable=self.layout.bin_window
-        gc=drawable.new_gc(line_width=1, line_style=gtk.gdk.LINE_ON_OFF_DASH)
+        drawable=self.layout.get_bin_window()
+        ctx = drawable.cairo_create()
+        ctx.set_line_width(1)
+        ctx.set_dash([ 10 ])
 
         if self.layout_selection[1][0] is not None:
             # Invert the previous selection
             #col=pixmap.get_colormap().alloc_color(self.color)
             if invert:
-                gc.set_function(gtk.gdk.INVERT)
+                ctx.set_operator(cairo.OPERATOR_XOR)
             else:
-                gc.set_function(gtk.gdk.COPY)
+                ctx.set_operator(cairo.OPERATOR_OVER)
 
             x1=min(self.layout_selection[0][0], self.layout_selection[1][0])
             x2=max(self.layout_selection[0][0], self.layout_selection[1][0])
@@ -2468,21 +2497,23 @@ class TimeLine(AdhocView):
             y2=max(self.layout_selection[0][1], self.layout_selection[1][1])
 
             # Display the starting mark
-            drawable.draw_rectangle(gc, False, x1, y1, x2-x1, y2-y1)
+            ctx.rectangle(x1, y1, x2-x1, y2-y1)
+        ctx.stroke()
         return True
 
     # Draw rectangle during mouse movement
     def layout_motion_notify_cb(self, widget, event):
         if event.is_hint:
-            x, y, state = event.window.get_pointer()
+            pointer = event.get_window().get_pointer()
+            x, y, state = pointer[1], pointer[2], pointer[3]
         else:
             x = event.x
             y = event.y
-            state = event.state
+            state = event.get_state()
 
-        if state & gtk.gdk.BUTTON1_MASK:
+        if state & Gdk.ModifierType.BUTTON1_MASK:
             # Display current time
-            self.set_annotation(self.pixel2unit(self.adjustment.value + x, absolute=True))
+            self.set_annotation(self.pixel2unit(self.adjustment.get_value() + x, absolute=True))
             if self.layout_selection[0][0] is None:
                 return False
             if self.layout_selection[1][0] is not None:
@@ -2495,23 +2526,23 @@ class TimeLine(AdhocView):
         return True
 
     def layout_drag_motion_cb(self, widget, drag_context, x, y, timestamp):
-        t=self.pixel2unit(self.adjustment.value +  x, absolute=True)
-        w=drag_context.get_source_widget()
+        t=self.pixel2unit(self.adjustment.get_value() +  x, absolute=True)
+        w=Gtk.drag_get_source_widget(drag_context)
         precision=max(20, self.pixel2unit(1, absolute=False))
         try:
             w._icon.set_cursor(t, precision)
         except AttributeError:
             pass
-        actions=drag_context.actions
+        actions=drag_context.get_actions()
         # Dragging an annotation. Set the default action to ASK.
-        if (config.data.drag_type['annotation'][0][0] in drag_context.targets
-            and not actions in ( gtk.gdk.ACTION_LINK, gtk.gdk.ACTION_COPY, gtk.gdk.ACTION_MOVE )):
+        if (config.data.drag_type['annotation'][0][0] in drag_context.list_targets()
+            and not actions in ( Gdk.DragAction.LINK, Gdk.DragAction.COPY, Gdk.DragAction.MOVE )):
             # No single action was selected. Force ASK
-            drag_context.drag_status(gtk.gdk.ACTION_ASK, timestamp)
+            Gdk.drag_status(drag_context, Gdk.DragAction.ASK, timestamp)
         return True
 
     def layout_drag_leave_cb(self, widget, drag_context, timestamp):
-        w=drag_context.get_source_widget()
+        w=Gtk.drag_get_source_widget(drag_context)
         try:
             w._icon.set_cursor()
         except AttributeError:
@@ -2524,7 +2555,7 @@ class TimeLine(AdhocView):
         # This callback is called on a right-mouse-button press
         # in the timeline display. It is called with the
         # current position (in ms)
-        menu = gtk.Menu()
+        menu = Gtk.Menu()
 
         def popup_goto (win, position):
             c=self.controller
@@ -2547,25 +2578,25 @@ class TimeLine(AdhocView):
             self.controller.create_annotation(position, at)
             return True
 
-        item = gtk.MenuItem(_("Position %s") % helper.format_time(position))
+        item = Gtk.MenuItem(_("Position %s") % helper.format_time(position))
         menu.append(item)
 
-        item = gtk.SeparatorMenuItem()
+        item = Gtk.SeparatorMenuItem()
         menu.append(item)
 
-        item = gtk.MenuItem(_("Go to..."))
+        item = Gtk.MenuItem(_("Go to..."))
         item.connect('activate', popup_goto, position)
         menu.append(item)
 
-        item = gtk.MenuItem(_("New annotation at player time"))
+        item = Gtk.MenuItem(_("New annotation at player time"))
         item.connect('activate', create_annotation, self.controller.player.current_position_value)
         menu.append(item)
 
-        item = gtk.MenuItem(_("New annotation at mouse position"))
+        item = Gtk.MenuItem(_("New annotation at mouse position"))
         item.connect('activate', create_annotation, position)
         menu.append(item)
 
-        item = gtk.MenuItem(_("Selection"))
+        item = Gtk.MenuItem(_("Selection"))
         if self.get_selected_annotation_widgets():
             item.set_submenu(self.selection_menu(popup=False))
         else:
@@ -2573,7 +2604,7 @@ class TimeLine(AdhocView):
         menu.append(item)
 
         menu.show_all()
-        menu.popup(None, None, None, 0, gtk.get_current_event_time())
+        menu.popup_at_pointer(None)
         return True
 
     def update_adjustment (self):
@@ -2584,27 +2615,25 @@ class TimeLine(AdhocView):
 
         width = self.maximum - self.minimum
 
-        #a.value=u2p(minimum)
-        a.lower=float(u2p(self.minimum, absolute=True))
-        a.upper=float(u2p(self.maximum, absolute=True))
-        a.step_increment=min(float(u2p(width / 100)), 10)
-        a.page_increment=float(u2p(width / 10))
-        a.page_size=min(a.upper, self.layout.get_allocation().width)
-        #print "Update: from %.2f to %.2f" % (a.lower, a.upper)
+        #a.set_value(u2p(minimum))
+        a.set_lower(float(u2p(self.minimum, absolute=True)))
+        a.set_upper(float(u2p(self.maximum, absolute=True)))
+        a.set_step_increment(min(float(u2p(width / 100)), 10))
+        a.set_page_increment(float(u2p(width / 10)))
+        a.set_page_size(min(a.get_upper(), self.layout.get_allocation().width))
+        #print "Update: from %.2f to %.2f" % (a.get_lower(), a.get_upper())
         a.changed ()
 
     def scale_event (self, widget=None, data=None):
-        if not self.update_lock.acquire(False) or self.layout.window is None:
+        if not self.update_lock.acquire(False) or self.layout.get_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)
-        (w, h) = self.layout.get_size ()
-        self.layout.set_size (width, h)
-        (w, h) = self.scale_layout.get_size ()
-        self.scale_layout.set_size (width, h)
+        self.layout.set_size (width, self.layout.get_size()[1])
+        self.scale_layout.set_size (width, self.scale_layout.get_size()[1])
 
         # Update the scale legend
         if config.data.preferences['expert-mode']:
@@ -2618,23 +2647,21 @@ class TimeLine(AdhocView):
     def layout_resize_event(self, widget=None, event=None, *p):
         """Recompute fraction_adj value when the layout size changes
         """
-        parent = self.layout.window
+        parent = self.layout.get_window()
         if not parent:
             return False
-        (w, h) = parent.get_size ()
         if self.maximum != self.minimum:
-            fraction=self.scale.value * float(w) / (self.maximum - self.minimum)
+            fraction=self.scale.get_value() * float(parent.get_width()) / (self.maximum - self.minimum)
             #print "Layout resize, reset fraction_adj to ", fraction, w
-            self.fraction_adj.value=fraction
-            self.zoom_combobox.child.set_text('%d%%' % long(100 * fraction))
+            self.fraction_adj.set_value(fraction)
+            self.zoom_combobox.get_child().set_text('%d%%' % long(100 * fraction))
         return False
 
     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
+        self.scale.set_value(1.3 * (end - begin) / self.layout.get_window().get_width())
 
         # Center on annotation
         self.center_on_position( (begin + end) / 2 )
@@ -2644,13 +2671,13 @@ class TimeLine(AdhocView):
         """Limit the timeline to the specified or currently displayed area.
         """
         if minimum is None:
-            minimum=self.pixel2unit(self.adjustment.value, absolute=True)
-            maximum=self.pixel2unit(self.adjustment.value + self.adjustment.page_size, absolute=True)
+            minimum=self.pixel2unit(self.adjustment.get_value(), absolute=True)
+            maximum=self.pixel2unit(self.adjustment.get_value() + self.adjustment.get_page_size(), absolute=True)
         # Cannot do the assignment immediately, since unit2pixel uses self.minimum
         self.minimum = minimum
         self.maximum = maximum
         self.update_model(partial_update=True)
-        self.fraction_adj.value=1.0
+        self.fraction_adj.set_value(1.0)
         self.limit_navtools.show()
         return True
 
@@ -2664,7 +2691,7 @@ class TimeLine(AdhocView):
             # Not valid data either. Use a default value.
             self.maximum=42000
         self.update_model(partial_update=True)
-        self.fraction_adj.value=1.0
+        self.fraction_adj.set_value(1.0)
         self.limit_navtools.hide()
         return True
 
@@ -2673,10 +2700,10 @@ class TimeLine(AdhocView):
 
         fraction is > 0 and <= 1.
         """
-        parent = self.layout.window
+        parent = self.layout.get_window()
         if not parent:
             return True
-        (w, h) = parent.get_size ()
+        w = parent.get_width()
         if forced_window_width != 0:
             w = forced_window_width
 
@@ -2686,7 +2713,7 @@ class TimeLine(AdhocView):
         if self.minimum == self.maximum:
             return True
 
-        fraction = self.fraction_adj.value
+        fraction = self.fraction_adj.get_value()
 
         v = (self.maximum - self.minimum) / float(w) * fraction
         # New width in pixel
@@ -2695,23 +2722,23 @@ class TimeLine(AdhocView):
             return True
 
         # Is it worth redrawing the whole timeline ?
-        if abs(v - self.scale.value) / float(self.scale.value) > 0.01:
+        if abs(v - self.scale.get_value()) / float(self.scale.get_value()) > 0.01:
             self.scale.set_value(v)
-        self.zoom_combobox.child.set_text('%d%%' % long(100 * fraction))
+        self.zoom_combobox.get_child().set_text('%d%%' % long(100 * fraction))
 
         return True
 
     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:
+        if event.direction == Gdk.ScrollDirection.RIGHT or event.direction == Gdk.ScrollDirection.LEFT:
             self.can_do_horizontal_scroll = True
 
-        zoom=event.state & gtk.gdk.CONTROL_MASK
+        zoom=event.get_state() & Gdk.ModifierType.CONTROL_MASK
         if zoom:
             # Control+scroll: zoom in/out
             a = self.fraction_adj
-            incr = a.page_increment
+            incr = a.get_page_increment()
             # Memorize mouse position (in units)
             # Get x, y (relative to the layout allocation)
             x,y=widget.get_pointer()
@@ -2719,32 +2746,27 @@ class TimeLine(AdhocView):
         else:
             # Plain scroll: scroll the timeline
             if (self.can_do_horizontal_scroll
-                and (event.direction == gtk.gdk.SCROLL_UP
-                     or event.direction == gtk.gdk.SCROLL_DOWN)):
+                and (event.direction == Gdk.ScrollDirection.UP
+                     or event.direction == Gdk.ScrollDirection.DOWN)):
                 # Vertical scroll with a device that knows how to do horizontal. Let's scroll vertically
                 a = self.vadjustment
-                incr = a.step_increment
+                incr = a.get_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
-            if val > a.upper - a.page_size:
-                val = a.upper - a.page_size
-            if val != a.value:
-                a.value = val
-
-        elif event.direction == gtk.gdk.SCROLL_UP or event.direction == gtk.gdk.SCROLL_LEFT:
-            val = a.value - incr
-            if val < a.lower:
-                val = a.lower
-            if val != a.value:
-                a.value = val
+                incr = a.get_step_increment()
+
+        if event.direction == Gdk.ScrollDirection.DOWN or event.direction == Gdk.ScrollDirection.RIGHT:
+            a.set_value(helper.clamp(a.get_value() + incr,
+                                     a.get_lower(),
+                                     a.get_upper() - a.get_page_size()))
+        elif event.direction == Gdk.ScrollDirection.UP or event.direction == Gdk.ScrollDirection.LEFT:
+            a.set_value(helper.clamp(a.get_value() - incr,
+                                     a.get_lower(),
+                                     a.get_upper() - a.get_page_size()))
 
         # Try to preserve the mouse position when zooming
         if zoom:
-            self.adjustment.value=self.unit2pixel(mouse_position, absolute=True) - x
+            self.adjustment.set_value(self.unit2pixel(mouse_position, absolute=True) - x)
         return True
 
     def redraw_event(self, widget=None, data=None):
@@ -2760,8 +2782,8 @@ class TimeLine(AdhocView):
                                   self.layer_position[w.annotation.type])
             return True
 
-        if self.old_scale_value != self.scale.value:
-            self.old_scale_value = self.scale.value
+        if self.old_scale_value != self.scale.get_value():
+            self.old_scale_value = self.scale.get_value()
             # Reposition all buttons
             self.layout.foreach(move_widget)
             self.layout.remove(self.current_marker)
@@ -2774,7 +2796,7 @@ class TimeLine(AdhocView):
         return False
 
     def resize_legend_widget(self, layout):
-        width=0
+        width=120
         for c in layout.get_children():
             if not isinstance(c, AnnotationTypeWidget):
                 continue
@@ -2805,7 +2827,7 @@ class TimeLine(AdhocView):
         if layout.get_parent() is not None:
             p = layout.get_parent().get_parent()
             if p is not None:
-                layout.get_parent().get_parent().set_position (width + 60)
+                p.set_position (width + 60)
 
     def restrict_playing(self, at, widget=None):
         """Restrict playing to the given annotation-type.
@@ -2836,7 +2858,6 @@ class TimeLine(AdhocView):
 
         Its content may have changed.
         """
-        width=0
         height=0
 
         def navigate(b, event, direction, typ):
@@ -2865,10 +2886,10 @@ class TimeLine(AdhocView):
         def annotationtype_keypress_handler(widget, event, at):
             if widget.keypress(widget, event, at):
                 return True
-            elif event.keyval == gtk.keysyms.a:
+            elif event.keyval == Gdk.KEY_a:
                 # Adjust bounds
                 self.controller.gui.adjust_annotationtype_bounds(at)
-            elif event.keyval == gtk.keysyms.Return:
+            elif event.keyval == Gdk.KEY_Return:
                 def set_end_time(action, an):
                     if action == 'validate':
                         v = self.controller.player.current_position_value
@@ -2896,7 +2917,7 @@ class TimeLine(AdhocView):
                     b.show()
                     self.quick_edit(el, button=b, callback=set_end_time)
                 return True
-            elif event.keyval == gtk.keysyms.space:
+            elif event.keyval == Gdk.KEY_space:
                 self.restrict_playing(at, widget)
                 return True
             return False
@@ -2904,7 +2925,7 @@ class TimeLine(AdhocView):
         def annotationtype_buttonpress_handler(widget, event, t):
             """Display the popup menu when right-clicking on annotation type.
             """
-            if event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS:
+            if event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
                 menu=advene.gui.popup.Menu(t, controller=self.controller)
                 menu.popup()
                 return True
@@ -2927,10 +2948,10 @@ class TimeLine(AdhocView):
 
                 a=self.legend.get_vadjustment()
                 y=self.legend.child_get_property(button, 'y')
-                if y < a.value:
-                    pos=max(a.lower, y)
-                elif y > a.value + a.page_size:
-                    pos=min(a.upper - a.page_size, y)
+                if y < a.get_value():
+                    pos=max(a.get_lower(), y)
+                elif y > a.get_value() + a.get_page_size():
+                    pos=min(a.get_upper() - a.get_page_size(), y)
                 else:
                     pos=None
                 if pos is not None:
@@ -2948,14 +2969,14 @@ class TimeLine(AdhocView):
 
             # The button can receive drops (to transmute annotations)
             b.connect('drag-data-received', self.annotation_type_drag_received_cb)
-            b.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'] +
-                            config.data.drag_type['color'],
-                            gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE)
+            b.drag_dest_set(Gtk.DestDefaults.MOTION |
+                            Gtk.DestDefaults.HIGHLIGHT |
+                            Gtk.DestDefaults.ALL,
+                            config.data.get_target_types('annotation',
+                                                         'annotation-type',
+                                                         'timestamp',
+                                                         'color'),
+                            Gdk.DragAction.COPY | Gdk.DragAction.LINK | Gdk.DragAction.MOVE)
             # The button can generate drags (to change annotation type order)
             enable_drag_source(b, t, self.controller)
 
@@ -2971,6 +2992,7 @@ class TimeLine(AdhocView):
 
             # At the left of the annotation type : restrict_playing button
             p=get_pixmap_button('play.png', restrict_playing, t, b)
+            p.get_style_context().add_class('restrict_playing_button')
             p.set_playing = set_playing.__get__(p)
             p.annotationtype=t
             p.set_size_request(20, self.button_height)
@@ -2978,22 +3000,22 @@ class TimeLine(AdhocView):
             layout.put (p, 0, self.layer_position[t])
 
             # At the right of the annotation type : prev/next buttons
-            nav=gtk.Arrow(gtk.ARROW_LEFT, gtk.SHADOW_IN)
+            nav=Gtk.Arrow(Gtk.ArrowType.LEFT, Gtk.ShadowType.IN)
             nav.set_size_request(16, self.button_height)
             nav.annotationtype=t
             nav.set_tooltip_text(_('Goto previous annotation'))
-            eb=gtk.EventBox()
+            eb=Gtk.EventBox()
             eb.connect('button-press-event', navigate, 'prev', t)
             eb.add(nav)
             eb.prev=True
             # Put it in an arbitrary location. It will be moved by resize_legend_widget
             layout.put (eb, 102, self.layer_position[t])
 
-            nav=gtk.Arrow(gtk.ARROW_RIGHT, gtk.SHADOW_IN)
+            nav=Gtk.Arrow(Gtk.ArrowType.RIGHT, Gtk.ShadowType.IN)
             nav.set_size_request(16, self.button_height)
             nav.annotationtype=t
             nav.set_tooltip_text(_('Goto next annotation'))
-            eb=gtk.EventBox()
+            eb=Gtk.EventBox()
             eb.connect('button-press-event', navigate, 'next', t)
             eb.add(nav)
             eb.next=True
@@ -3001,8 +3023,8 @@ class TimeLine(AdhocView):
             layout.put (eb, 112, self.layer_position[t])
 
         # Add the 'New type' button at the end
-        b=gtk.Button()
-        l=gtk.Label()
+        b=Gtk.Button()
+        l=Gtk.Label()
         l.set_markup('<b><span style="normal">%s</span></b>' % _('+'))
         l.modify_font(self.annotation_type_font)
         b.add(l)
@@ -3015,24 +3037,25 @@ class TimeLine(AdhocView):
         b.connect('clicked', self.create_annotation_type)
         # The button can receive drops (to create type and transmute annotations)
         b.connect('drag-data-received', self.new_annotation_type_drag_received_cb)
-        b.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_LINK | gtk.gdk.ACTION_MOVE)
-
-        layout.set_size (width + 20, height)
+        b.drag_dest_set(Gtk.DestDefaults.MOTION |
+                        Gtk.DestDefaults.HIGHLIGHT |
+                        Gtk.DestDefaults.ALL,
+                        config.data.get_target_types('annotation', 'timestamp'),
+                        Gdk.DragAction.LINK | Gdk.DragAction.MOVE)
+
+        # Set a default size. We will resize it anyway.
+        layout.set_size(200, height)
+        layout.show()
         self.resize_legend_widget(layout)
         return
 
     def get_full_widget(self):
         """Return the layout with its controllers.
         """
-        vbox = gtk.VBox()
+        vbox = Gtk.VBox()
         vbox.connect('key-press-event', self.layout_key_press_cb)
 
-        hb=gtk.HBox()
+        hb=Gtk.HBox()
         toolbar = self.get_toolbar()
         hb.add(toolbar)
 
@@ -3042,7 +3065,7 @@ class TimeLine(AdhocView):
         # but this prevents DND from working correctly.
         def drag_sent(widget, context, selection, targetType, eventTime, name):
             if targetType == config.data.target_type['adhoc-view']:
-                selection.set(selection.target, 8,
+                selection.set(selection.get_target(), 8,
                               urllib.urlencode( {
                             'name': name,
                             'master': self.controller.gui.get_adhoc_view_instance_id(self),
@@ -3060,29 +3083,29 @@ class TimeLine(AdhocView):
             v.set_master_view(self)
             return True
 
-        b=get_small_stock_button(gtk.STOCK_FIND, open_annotation_display)
+        b=get_small_stock_button(Gtk.STOCK_FIND, open_annotation_display)
         b.set_tooltip_text(_('Open an annotation display view'))
         b.connect('drag-data-get', drag_sent, 'annotationdisplay')
-        b.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                          config.data.drag_type['adhoc-view'], gtk.gdk.ACTION_COPY)
-        hb.pack_start(b, expand=False)
+        b.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                          config.data.get_target_types('adhoc-view'), Gdk.DragAction.COPY)
+        hb.pack_start(b, False, True, 0)
 
         b=get_pixmap_button('montage.png', open_slave_montage)
         b.set_tooltip_text(_('Open a slave montage view (coordinated zoom level)'))
         b.connect('drag-data-get', drag_sent, 'montage')
-        b.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                          config.data.drag_type['adhoc-view'], gtk.gdk.ACTION_COPY)
-        hb.pack_start(b, expand=False)
+        b.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                          config.data.get_target_types('adhoc-view'), Gdk.DragAction.COPY)
+        hb.pack_start(b, False, True, 0)
 
         if self.controller.gui:
             self.player_toolbar=self.controller.gui.get_player_control_toolbar()
             hb.add(self.player_toolbar)
 
-        vbox.pack_start(hb, expand=False)
+        vbox.pack_start(hb, False, True, 0)
 
         vbox.add (self.get_packed_widget())
 
-        vbox.pack_start(self.quickview, expand=False)
+        vbox.pack_start(self.quickview, False, True, 0)
 
         return vbox
 
@@ -3106,18 +3129,18 @@ class TimeLine(AdhocView):
                                                    label=_("<b>Statistics about current selection</b>\n\n"))
             return True
 
-        m=gtk.Menu()
+        m=Gtk.Menu()
         l=self.get_selected_annotation_widgets()
         n=len(l)
         if n == 0:
-            i=gtk.MenuItem(_('No selected annotation'))
+            i=Gtk.MenuItem(_('No selected annotation'))
             m.append(i)
             i.set_sensitive(False)
         else:
-            i=gtk.MenuItem(_('%d selected annotation(s)') % n)
+            i=Gtk.MenuItem(_('%d selected annotation(s)') % n)
             m.append(i)
             i.set_sensitive(False)
-            i=gtk.SeparatorMenuItem()
+            i=Gtk.SeparatorMenuItem()
             m.append(i)
 
             for (label, action) in (
@@ -3132,39 +3155,41 @@ class TimeLine(AdhocView):
                 (_('Merge annotations'), self.selection_merge),
                 (_('Display statistics'), display_stats),
                 ):
-                i=gtk.MenuItem(label)
+                i=Gtk.MenuItem(label)
                 i.connect('activate', action, l)
                 m.append(i)
 
         m.show_all()
         if popup:
-            m.popup(None, None, None, 0, gtk.get_current_event_time())
+            m.popup(None, None, None, 0, Gtk.get_current_event_time())
         return m
 
     def get_packed_widget (self):
         """Return the widget packed into a scrolledwindow."""
-        vbox = gtk.VBox ()
+        vbox = Gtk.VBox ()
 
-        content_pane = gtk.HPaned ()
+        content_pane = Gtk.Paned()
+        content_pane.set_name('content_pane')
 
         # The layout can receive drops
         self.legend.connect('drag-data-received', self.legend_drag_received)
-        self.legend.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                  gtk.DEST_DEFAULT_HIGHLIGHT |
-                                  gtk.DEST_DEFAULT_ALL,
-                                  config.data.drag_type['annotation-type'],
-                                  gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK)
-
-        sw_legend = gtk.ScrolledWindow ()
-        sw_legend.set_policy (gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
-        sw_legend.set_placement(gtk.CORNER_TOP_RIGHT)
+        self.legend.drag_dest_set(Gtk.DestDefaults.MOTION |
+                                  Gtk.DestDefaults.HIGHLIGHT |
+                                  Gtk.DestDefaults.ALL,
+                                  config.data.get_target_types('annotation-type'),
+                                  Gdk.DragAction.COPY | Gdk.DragAction.LINK)
+
+        sw_legend = Gtk.ScrolledWindow ()
+        sw_legend.set_name('sw_legend')
+        sw_legend.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.ALWAYS)
+        sw_legend.set_placement(Gtk.CornerType.TOP_RIGHT)
         sw_legend.add (self.legend)
         content_pane.add1 (sw_legend)
 
         # Vertical auto-scroll when DNDing
         def scroll_on_drag(widget, drag_context, x, y, timestamp, vertical=True):
             adj=widget.get_adjustment()
-            v=adj.value
+            v=adj.get_value()
             if vertical:
                 pointer=y
                 ref=widget.get_allocation().height / 2
@@ -3173,28 +3198,22 @@ class TimeLine(AdhocView):
                 ref=widget.get_allocation().width / 2
             if pointer > ref:
                 # Try to scroll down
-                v += max(adj.step_increment, adj.page_increment / 3)
+                v += max(adj.get_step_increment(), adj.get_page_increment() / 3)
             else:
-                v -= max(adj.step_increment, adj.page_increment / 3)
-            if v < 0:
-                v = 0
-            elif v > adj.upper - adj.page_size:
-                v=adj.upper - adj.page_size
-            adj.value=v
+                v -= max(adj.get_step_increment(), adj.get_page_increment() / 3)
+            adj.set_value(helper.clamp(v, 0, adj.get_upper() - adj.get_page_size()))
             return True
         sb=sw_legend.get_vscrollbar()
-        sb.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']
-                         + config.data.drag_type['annotation-type']
-                         ,
-                         gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
+        sb.drag_dest_set(Gtk.DestDefaults.MOTION |
+                         Gtk.DestDefaults.HIGHLIGHT |
+                         Gtk.DestDefaults.ALL,
+                         config.data.get_target_types('annotation', 'timestamp', 'annotation-type'),
+                         Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
         sb.connect('drag-motion', scroll_on_drag, True)
 
-        sw_layout = gtk.ScrolledWindow ()
-        sw_layout.set_policy (gtk.POLICY_ALWAYS, gtk.POLICY_AUTOMATIC)
+        sw_layout = Gtk.ScrolledWindow ()
+        sw_layout.set_name('sw_layout')
+        sw_layout.set_policy (Gtk.PolicyType.ALWAYS, Gtk.PolicyType.AUTOMATIC)
         sw_layout.set_hadjustment (self.adjustment)
         self.vadjustment = sw_legend.get_vadjustment()
         sw_layout.set_vadjustment (self.vadjustment)
@@ -3205,42 +3224,37 @@ class TimeLine(AdhocView):
         sw_layout.get_vadjustment().step_increment=10
 
         sb=sw_layout.get_hscrollbar()
-        sb.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']
-                         + config.data.drag_type['annotation-type']
-                         ,
-                         gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
+        sb.drag_dest_set(Gtk.DestDefaults.MOTION |
+                         Gtk.DestDefaults.HIGHLIGHT |
+                         Gtk.DestDefaults.ALL,
+                         config.data.get_target_types('annotation', 'timestamp', 'annotation-type'),
+                         Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
         sb.connect('drag-motion', scroll_on_drag, False)
 
         sb=sw_layout.get_vscrollbar()
-        sb.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']
-                         + config.data.drag_type['annotation-type']
-                         ,
-                         gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
+        sb.drag_dest_set(Gtk.DestDefaults.MOTION |
+                         Gtk.DestDefaults.HIGHLIGHT |
+                         Gtk.DestDefaults.ALL,
+                         config.data.get_target_types('annotation', 'timestamp', 'annotation-type'),
+                         Gdk.DragAction.COPY | Gdk.DragAction.MOVE)
         sb.connect('drag-motion', scroll_on_drag)
 
         # Now build the scale_pane
-        scale_pane = gtk.HPaned()
+        scale_pane = Gtk.Paned()
+        scale_pane.set_name('scale_pane')
 
-        vb=gtk.VBox()
-        self.scale_label = gtk.Label('Scale')
-        vb.pack_start(self.scale_label, expand=False)
+        vb=Gtk.VBox()
+        self.scale_label = Gtk.Label(label='Scale')
+        vb.pack_start(self.scale_label, False, True, 0)
         if not config.data.preferences['expert-mode']:
             self.scale_label.hide()
             self.scale_label.set_no_show_all(True)
 
-        self.limit_navtools = gtk.HBox()
+        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)
+            page_duration=self.pixel2unit(self.adjustment.get_page_size(), absolute=False)
             if direction == -1:
                 # Previous page
                 mi = max(self.minimum - page_duration, 0)
@@ -3253,25 +3267,25 @@ class TimeLine(AdhocView):
             return True
 
         # At the right of the annotation type : prev/next buttons
-        nav=gtk.Arrow(gtk.ARROW_LEFT, gtk.SHADOW_IN)
+        nav=Gtk.Arrow(Gtk.ArrowType.LEFT, Gtk.ShadowType.IN)
         nav.set_size_request(16, 16)
         nav.set_tooltip_text(_('Goto previous page'))
-        eb=gtk.EventBox()
+        eb=Gtk.EventBox()
         eb.connect('button-press-event', navigate, -1)
         eb.add(nav)
-        self.limit_navtools.pack_start(eb, expand=False)
+        self.limit_navtools.pack_start(eb, False, True, 0)
 
-        b=get_small_stock_button(gtk.STOCK_ZOOM_100, self.unlimit_display)
+        b=get_small_stock_button(Gtk.STOCK_ZOOM_100, self.unlimit_display)
         b.set_tooltip_text(_("Display whole movie"))
-        self.limit_navtools.pack_start(b, expand=False)
+        self.limit_navtools.pack_start(b, False, True, 0)
 
-        nav=gtk.Arrow(gtk.ARROW_RIGHT, gtk.SHADOW_IN)
+        nav=Gtk.Arrow(Gtk.ArrowType.RIGHT, Gtk.ShadowType.IN)
         nav.set_size_request(16, 16)
         nav.set_tooltip_text(_('Goto next page'))
-        eb=gtk.EventBox()
+        eb=Gtk.EventBox()
         eb.connect('button-press-event', navigate, +1)
         eb.add(nav)
-        self.limit_navtools.pack_start(eb, expand=False)
+        self.limit_navtools.pack_start(eb, False, True, 0)
 
         # Show contained widgets
         self.limit_navtools.show_all()
@@ -3282,8 +3296,9 @@ class TimeLine(AdhocView):
 
         scale_pane.add1(vb)
 
-        sw_scale=gtk.ScrolledWindow()
-        sw_scale.set_policy(gtk.POLICY_NEVER, gtk.POLICY_NEVER)
+        sw_scale=Gtk.ScrolledWindow()
+        sw_scale.set_name('sw_scale')
+        sw_scale.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER)
         sw_scale.set_hadjustment (sw_layout.get_hadjustment())
         sw_scale.add(self.scale_layout)
         scale_pane.add2(sw_scale)
@@ -3297,7 +3312,8 @@ class TimeLine(AdhocView):
         scale_pane.connect('button-press-event', ignore)
         scale_pane.connect('button-release-event', ignore)
 
-        self.global_pane=gtk.VPaned()
+        self.global_pane=Gtk.Paned.new(Gtk.Orientation.VERTICAL)
+        self.global_pane.set_name('global_pane')
 
         self.global_pane.add1(scale_pane)
         self.global_pane.add2(content_pane)
@@ -3307,15 +3323,15 @@ class TimeLine(AdhocView):
 
         vbox.add (self.global_pane)
 
-        (w, h) = self.legend.get_size ()
-        content_pane.set_position (max(w, 100))
+        content_pane.set_position (max(self.legend.get_size()[0], 100))
 
-        self.inspector_pane=gtk.HPaned()
+        self.inspector_pane=Gtk.Paned()
+        self.inspector_pane.set_name('inspector_pane')
         self.inspector_pane.pack1(vbox, resize=True, shrink=True)
         a=AnnotationDisplay(controller=self.controller)
-        self.inspector_frame=gtk.Frame()
-        hbox = gtk.HBox()
-        hbox.pack_start(gtk.Label(_('Inspector')), expand=False)
+        self.inspector_frame=Gtk.Frame()
+        hbox = Gtk.HBox()
+        hbox.pack_start(Gtk.Label(_('Inspector')), False, False, 0)
         def unlock(b):
             b.hide()
             self.locked_inspector = False
@@ -3323,7 +3339,7 @@ class TimeLine(AdhocView):
         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)
+        hbox.pack_start(self.locked_icon, False, True, 0)
         self.inspector_frame.set_label_widget(hbox)
 
         self.inspector_frame.add(a.widget)
@@ -3335,12 +3351,12 @@ class TimeLine(AdhocView):
         return self.inspector_pane
 
     def get_toolbar(self):
-        tb=gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
+        tb=Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
 
         def remove_drag_received(widget, context, x, y, selection, targetType, time):
             if targetType == config.data.target_type['annotation']:
-                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+                sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
                 if sources:
                     batch_id=object()
                     for a in sources:
@@ -3348,13 +3364,13 @@ class TimeLine(AdhocView):
                 return True
             return False
 
-        b=gtk.ToolButton(stock_id=gtk.STOCK_DELETE)
+        b=Gtk.ToolButton(stock_id=Gtk.STOCK_DELETE)
         b.set_tooltip_text(_('Delete the selected annotations or drop an annotation here to delete it.'))
-        b.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                        gtk.DEST_DEFAULT_HIGHLIGHT |
-                        gtk.DEST_DEFAULT_ALL,
-                        config.data.drag_type['annotation'],
-                        gtk.gdk.ACTION_MOVE )
+        b.drag_dest_set(Gtk.DestDefaults.MOTION |
+                        Gtk.DestDefaults.HIGHLIGHT |
+                        Gtk.DestDefaults.ALL,
+                        config.data.get_target_types('annotation'),
+                        Gdk.DragAction.MOVE )
         b.connect('drag-data-received', remove_drag_received)
         b.connect('clicked', self.selection_delete)
         tb.insert(b, -1)
@@ -3362,23 +3378,24 @@ class TimeLine(AdhocView):
         # Annotation-type selection button
         def annotationtype_selection_drag_received(widget, context, x, y, selection, targetType, time):
             if targetType == config.data.target_type['annotation-type']:
-                source=self.controller.package.annotationTypes.get(unicode(selection.data, 'utf8'))
+                source=self.controller.package.annotationTypes.get(unicode(selection.get_data(), 'utf8'))
                 if source in self.annotationtypes:
                     self.annotationtypes.remove(source)
+                    self.annotationtypes_selection = self.annotationtypes
                     self.update_model(partial_update=True)
             else:
-                print 'Unknown target type for drop: %d' % targetType
+                logger.warn('Unknown target type for drop: %d' % targetType)
             return True
 
-        b=gtk.ToolButton(stock_id=gtk.STOCK_SELECT_COLOR)
+        b=Gtk.ToolButton(stock_id=Gtk.STOCK_SELECT_COLOR)
         b.set_tooltip_text(_('Drag an annotation type here to remove it from display.\nClick to edit all displayed types'))
         b.connect('clicked', self.edit_annotation_types)
         b.connect('drag-data-received', annotationtype_selection_drag_received)
-        b.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                        gtk.DEST_DEFAULT_HIGHLIGHT |
-                        gtk.DEST_DEFAULT_ALL,
-                        config.data.drag_type['annotation-type'],
-                        gtk.gdk.ACTION_MOVE | gtk.gdk.ACTION_COPY)
+        b.drag_dest_set(Gtk.DestDefaults.MOTION |
+                        Gtk.DestDefaults.HIGHLIGHT |
+                        Gtk.DestDefaults.ALL,
+                        config.data.get_target_types('annotation-type'),
+                        Gdk.DragAction.MOVE | Gdk.DragAction.COPY)
         tb.insert(b, -1)
 
         # Selection menu
@@ -3392,28 +3409,28 @@ class TimeLine(AdhocView):
         def handle_toggle(b, option):
             self.options[option]=b.get_active()
             if option == 'display-all-relations':
-                region = self.layout.window.get_clip_region()
+                region = self.layout.get_window().get_clip_region()
                 if region:
-                    self.layout.window.invalidate_region(region, True)
+                    self.layout.get_window().invalidate_region(region, True)
             return True
 
-        self.display_relations_toggle=gtk.ToggleToolButton(stock_id=gtk.STOCK_REDO)
+        self.display_relations_toggle=Gtk.ToggleToolButton(stock_id=Gtk.STOCK_REDO)
         self.display_relations_toggle.set_tooltip_text(_('Display relations'))
         self.display_relations_toggle.set_active(self.options['display-relations'])
         self.display_relations_toggle.connect('toggled', handle_toggle, 'display-relations')
         tb.insert(self.display_relations_toggle, -1)
 
-        self.display_all_relations_toggle=gtk.ToggleToolButton(stock_id=gtk.STOCK_INFO)
+        self.display_all_relations_toggle=Gtk.ToggleToolButton(stock_id=Gtk.STOCK_INFO)
         self.display_all_relations_toggle.set_tooltip_text(_('Display all relations'))
         self.display_all_relations_toggle.set_active(self.options['display-all-relations'])
         self.display_all_relations_toggle.connect('toggled', handle_toggle, 'display-all-relations')
         tb.insert(self.display_all_relations_toggle, -1)
 
         # Separator
-        tb.insert(gtk.SeparatorToolItem(), -1)
+        tb.insert(Gtk.SeparatorToolItem(), -1)
 
         def zoom_entry(entry):
-            f=unicode(entry.get_text())
+            f=entry.get_text().decode('utf-8')
 
             i=re.findall(r'\d+', f)
             if i:
@@ -3421,7 +3438,7 @@ class TimeLine(AdhocView):
             else:
                 return True
             pos=self.get_middle_position()
-            self.fraction_adj.value=f
+            self.fraction_adj.set_value(f)
             self.set_middle_position(pos)
             return True
 
@@ -3429,22 +3446,22 @@ class TimeLine(AdhocView):
             v=combo.get_current_element()
             if isinstance(v, float):
                 pos=self.get_middle_position()
-                self.fraction_adj.value=v
+                self.fraction_adj.set_value(v)
                 self.set_middle_position(pos)
             return True
 
         def zoom(i, factor):
             pos=self.get_middle_position()
-            self.fraction_adj.set_value(self.fraction_adj.value * factor)
+            self.fraction_adj.set_value(self.fraction_adj.get_value() * factor)
             self.set_middle_position(pos)
             return True
 
-        i=gtk.ToolButton(stock_id=gtk.STOCK_ZOOM_OUT)
+        i=Gtk.ToolButton(stock_id=Gtk.STOCK_ZOOM_OUT)
         i.connect('clicked', zoom, 1.3)
         i.set_tooltip_text(_('Zoom out'))
         tb.insert(i, -1)
 
-        i=gtk.ToolButton(stock_id=gtk.STOCK_ZOOM_IN)
+        i=Gtk.ToolButton(stock_id=Gtk.STOCK_ZOOM_IN)
         i.connect('clicked', zoom, .7)
         i.set_tooltip_text(_('Zoom in'))
         tb.insert(i, -1)
@@ -3457,19 +3474,19 @@ class TimeLine(AdhocView):
                 ],
                                                        entry=True,
                                                        callback=zoom_change)
-        self.zoom_combobox.child.connect('activate', zoom_entry)
-        self.zoom_combobox.child.set_width_chars(4)
-        i=gtk.ToolItem()
+        self.zoom_combobox.get_child().connect('activate', zoom_entry)
+        self.zoom_combobox.get_child().set_width_chars(4)
+        i=Gtk.ToolItem()
         i.add(self.zoom_combobox)
         tb.insert(i, -1)
 
-        i=gtk.ToolButton(stock_id=gtk.STOCK_ZOOM_100)
+        i=Gtk.ToolButton(stock_id=Gtk.STOCK_ZOOM_100)
         i.connect('clicked', lambda i: self.fraction_adj.set_value(1.0))
         tb.insert(i, -1)
 
-        tb.insert(gtk.SeparatorToolItem(), -1)
+        tb.insert(Gtk.SeparatorToolItem(), -1)
 
-        i=gtk.ToolItem()
+        i=Gtk.ToolItem()
         i.add(self.autoscroll_choice)
         tb.insert(i, -1)
 
@@ -3480,10 +3497,10 @@ class TimeLine(AdhocView):
             return True
 
         for tooltip, icon, callback in (
-            (_('Preferences'), gtk.STOCK_PREFERENCES, self.edit_preferences),
-            (_('Center on current player position.'), gtk.STOCK_JUSTIFY_CENTER, center_on_current_position),
+            (_('Preferences'), Gtk.STOCK_PREFERENCES, self.edit_preferences),
+            (_('Center on current player position.'), Gtk.STOCK_JUSTIFY_CENTER, center_on_current_position),
             ):
-            b=gtk.ToolButton(stock_id=icon)
+            b=Gtk.ToolButton(stock_id=icon)
             b.set_tooltip_text(tooltip)
             b.connect('clicked', callback)
             tb.insert(b, -1)
@@ -3495,12 +3512,12 @@ class TimeLine(AdhocView):
                 self.controller.gui.player_toolbar.buttons['loop'].set_active(False)
             return True
 
-        self.loop_toggle_button=gtk.ToggleToolButton(stock_id=gtk.STOCK_REFRESH)
+        self.loop_toggle_button=Gtk.ToggleToolButton(stock_id=Gtk.STOCK_REFRESH)
         self.loop_toggle_button.connect('toggled', loop_toggle_cb)
         self.loop_toggle_button.set_tooltip_text(_('Automatically activate loop when clicking on an annotation'))
         tb.insert(self.loop_toggle_button, -1)
 
-        ti=gtk.SeparatorToolItem()
+        ti=Gtk.SeparatorToolItem()
         ti.set_expand(True)
         ti.set_property('draw', False)
         tb.insert(ti, -1)
@@ -3518,23 +3535,22 @@ class TimeLine(AdhocView):
         notselected_store, it = dialog.generate_list_model(
             [ (at, self.controller.get_title(at)) for at in notselected ])
 
-        hbox = gtk.HBox()
-        selectedtree = gtk.TreeView(model=selected_store)
-        cell = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_('Displayed'), cell, text=0)
+        hbox = Gtk.HBox()
+        selectedtree = Gtk.TreeView(model=selected_store)
+        cell = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_('Displayed'), cell, text=0)
         selectedtree.append_column(column)
 
         selectedtree.set_reorderable(True)
-        selectedtree.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
+        selectedtree.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
 
-        notselectedtree = gtk.TreeView(model=notselected_store)
-        cell = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_('Not displayed'), cell, text=0)
+        notselectedtree = Gtk.TreeView(model=notselected_store)
+        cell = Gtk.CellRendererText()
+        column = Gtk.TreeViewColumn(_('Not displayed'), cell, text=0)
         notselectedtree.append_column(column)
-        notselectedtree.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
+        notselectedtree.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
 
-        hbox.add(selectedtree)
-        actions = gtk.VBox()
+        actions = Gtk.VBox()
 
         def transfer(b, source, dest):
             selection = source.get_selection ()
@@ -3542,18 +3558,20 @@ class TimeLine(AdhocView):
                 return True
             store, paths = selection.get_selected_rows()
 
-            rows = [ gtk.TreeRowReference(store, path) for path in paths ]
+            # Keep a stable reference of the selected rows, since we
+            # will remove them iteratively from the source model
+            rows = [ Gtk.TreeRowReference(store, path) for path in paths ]
 
             m=dest.get_model()
             for r in rows:
                 path=r.get_path()
                 if path is None:
                     # Should not happen...
-                    print 'Strange...'
+                    logger.warn('Strange state in selection transfer...')
                     continue
                 it=store.get_iter(path)
                 # Add el to dest
-                m.append(store[path])
+                m.append(list(store[path]))
                 store.remove(it)
             return True
 
@@ -3564,7 +3582,7 @@ class TimeLine(AdhocView):
                 it=s.get_iter_first()
                 if it is None:
                     break
-                d.append(s[it])
+                d.append(list(s[it]))
                 s.remove(it)
             return True
 
@@ -3572,46 +3590,59 @@ class TimeLine(AdhocView):
             transfer(None, source, dest)
             return True
 
-        b=gtk.Button('<<<')
+        b=Gtk.Button('<<<')
         b.connect('clicked', transfer, notselectedtree, selectedtree)
         notselectedtree.connect('row_activated', row_activated, notselectedtree, selectedtree)
         actions.add(b)
 
-        b=gtk.Button(_('< All <'))
+        b=Gtk.Button(_('< All <'))
         b.connect('clicked', transferall, notselectedtree, selectedtree)
         actions.add(b)
 
-        b=gtk.Button(_('> All >'))
+        b=Gtk.Button(_('> All >'))
         b.connect('clicked', transferall, selectedtree, notselectedtree)
         actions.add(b)
 
-        b=gtk.Button('>>>')
+        b=Gtk.Button('>>>')
         b.connect('clicked', transfer, selectedtree, notselectedtree)
         selectedtree.connect('row-activated', row_activated, selectedtree, notselectedtree)
         actions.add(b)
 
-        hbox.add(actions)
+        sw1 = Gtk.ScrolledWindow()
+        sw1.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+        sw1.add(selectedtree)
+        hbox.add(sw1)
 
-        hbox.add(notselectedtree)
+        hbox.pack_start(actions, False, False, 0)
+
+        sw2 = Gtk.ScrolledWindow()
+        sw2.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+        sw2.add(notselectedtree)
+        hbox.add(sw2)
 
         hbox.show_all()
 
         # The widget is built. Put it in the dialog.
-        d = gtk.Dialog(title=_('Displayed annotation types'),
-                       parent=None,
-                       flags=gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_MODAL,
-                       buttons=( gtk.STOCK_OK, gtk.RESPONSE_OK,
-                                 gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL ))
-
-        d.vbox.add(hbox)
-
+        d = Gtk.Dialog(title=_('Displayed annotation types'),
+                       parent=self.controller.gui.gui.win,
+                       flags=Gtk.DialogFlags.DESTROY_WITH_PARENT | Gtk.DialogFlags.MODAL,
+                       buttons=( Gtk.STOCK_OK, Gtk.ResponseType.OK,
+                                 Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL ))
+
+        d.vbox.pack_start(hbox, True, True, 0)
+        hbox.set_size_request(600, 400)
         d.connect('key-press-event', dialog.dialog_keypressed_cb)
 
         d.show()
         dialog.center_on_mouse(d)
         res=d.run()
-        if res == gtk.RESPONSE_OK:
+        if res == Gtk.ResponseType.OK:
             self.annotationtypes = [ at[1] for at in selected_store ]
+            self.annotationtypes_selection = self.annotationtypes
+            if len(self.annotationtypes) == len(self.controller.package.annotationTypes):
+                # All types selected
+                self.annotationtypes_selection = None
+            self.package_from_init = None
             self.update_model(partial_update=True)
         d.destroy()
 
@@ -3635,7 +3666,7 @@ class TimeLine(AdhocView):
         """Return the current middle position, in ms.
         """
         a=self.adjustment
-        return self.pixel2unit( a.value + a.page_size / 2, absolute=True )
+        return self.pixel2unit( a.get_value() + a.get_page_size() / 2, absolute=True )
 
     def set_middle_position(self, pos):
         """Set the current middle position, in ms.
@@ -3718,7 +3749,7 @@ class TimeLine(AdhocView):
             return True
         if not re.match('^[\w\d_]+$', tag):
             dialog.message_dialog(_('The tag contains invalid characters'),
-                                  icon=gtk.MESSAGE_ERROR)
+                                  icon=Gtk.MessageType.ERROR)
             return True
         batch_id=object()
         for w in selection:
diff --git a/lib/advene/gui/views/transcription.py b/lib/advene/gui/views/transcription.py
index 2b5afc1..38b95cc 100755
--- a/lib/advene/gui/views/transcription.py
+++ b/lib/advene/gui/views/transcription.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,8 +21,9 @@
 
 import re
 
-import gtk
-import pango
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import Pango
 
 import advene.core.config as config
 
@@ -112,7 +113,7 @@ class TranscriptionView(AdhocView):
 
         # Try to determine a default representation
         try:
-            t=set([ a.type for a in self.model ])
+            t=set([ an.type for an in self.model ])
         except:
             t=[]
         if len(t) == 1:
@@ -202,7 +203,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)).strip(ZERO_WIDTH_NOBREAK_SPACE) != self.representation(a):
+                if b.get_text(beginiter, enditer, False).decode('utf-8').strip(ZERO_WIDTH_NOBREAK_SPACE) != self.representation(a):
                     modified.append(a)
             except TypeError:
                 # Some missing annotations
@@ -222,8 +223,8 @@ class TranscriptionView(AdhocView):
             if not m:
                 break
             enditer  = b.get_iter_at_mark(m)
-            new_content = helper.title2content(unicode(b.get_text(beginiter, enditer)).strip(ZERO_WIDTH_NOBREAK_SPACE),
-                                               a.content.data,
+            new_content = helper.title2content(b.get_text(beginiter, enditer, False).decode('utf-8').strip(ZERO_WIDTH_NOBREAK_SPACE),
+                                               a.content,
                                                a.type.getMetaData(config.data.namespace, 'representation') if self.options['default-representation'] else self.options['representation'])
             if new_content is None:
                 impossible.append(a)
@@ -264,42 +265,42 @@ class TranscriptionView(AdhocView):
         return True
 
     def build_widget(self):
-        mainbox = gtk.VBox()
+        mainbox = Gtk.VBox()
 
-        tb=gtk.Toolbar()
-        tb.set_style(gtk.TOOLBAR_ICONS)
+        tb=Gtk.Toolbar()
+        tb.set_style(Gtk.ToolbarStyle.ICONS)
 
         for icon, action, tip in (
-            (gtk.STOCK_SAVE, self.save_transcription, _("Save transcription to a text file")),
-            (gtk.STOCK_APPLY, self.validate, _("Apply the modifications")),
-            (gtk.STOCK_FIND, self.show_searchbox, _("Find text")),
-            (gtk.STOCK_REDO, self.quick_options_toggle, _("Quickly switch display options")),
-            (gtk.STOCK_REFRESH, self.refresh, _("Refresh the transcription")),
-            (gtk.STOCK_PREFERENCES, self.edit_options, _("Edit preferences")),
+            (Gtk.STOCK_SAVE, self.save_transcription, _("Save transcription to a text file")),
+            (Gtk.STOCK_APPLY, self.validate, _("Apply the modifications")),
+            (Gtk.STOCK_FIND, self.show_searchbox, _("Find text")),
+            (Gtk.STOCK_REDO, self.quick_options_toggle, _("Quickly switch display options")),
+            (Gtk.STOCK_REFRESH, self.refresh, _("Refresh the transcription")),
+            (Gtk.STOCK_PREFERENCES, self.edit_options, _("Edit preferences")),
             ):
-            b=gtk.ToolButton(stock_id=icon)
+            b=Gtk.ToolButton(stock_id=icon)
             b.set_tooltip_text(tip)
             b.connect('clicked', action)
             tb.insert(b, -1)
-        mainbox.pack_start(tb, expand=False)
+        mainbox.pack_start(tb, False, True, 0)
 
         #if self.controller.gui:
         #    self.player_toolbar=self.controller.gui.get_player_control_toolbar()
-        #    mainbox.pack_start(self.player_toolbar, expand=False)
+        #    mainbox.pack_start(self.player_toolbar, False, True, 0)
 
-        sw = gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-        sw.set_resize_mode(gtk.RESIZE_PARENT)
+        sw = Gtk.ScrolledWindow()
+        sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+        sw.set_resize_mode(Gtk.ResizeMode.PARENT)
         mainbox.add (sw)
 
-        self.textview = gtk.TextView()
+        self.textview = Gtk.TextView()
         # We could make it editable and modify the annotation
         self.textview.set_editable(True)
-        self.textview.set_wrap_mode (gtk.WRAP_WORD)
+        self.textview.set_wrap_mode (Gtk.WrapMode.WORD)
         b=self.textview.get_buffer()
 
         # Create useful tags
-        b.create_tag("activated", weight=pango.WEIGHT_BOLD)
+        b.create_tag("activated", weight=Pango.Weight.BOLD)
         b.create_tag("current", background="lightblue")
         b.create_tag("searched_string", background="green")
         b.create_tag("bound", editable=False)
@@ -314,7 +315,7 @@ class TranscriptionView(AdhocView):
 
         sw.add(self.textview)
 
-        self.searchbox=gtk.HBox()
+        self.searchbox=Gtk.HBox()
 
         def hide_searchbox(*p):
             # Clear the searched_string tags
@@ -324,41 +325,40 @@ class TranscriptionView(AdhocView):
             return True
 
         close_button=get_pixmap_button('small_close.png', hide_searchbox)
-        close_button.set_relief(gtk.RELIEF_NONE)
-        self.searchbox.pack_start(close_button, expand=False, fill=False)
+        close_button.set_relief(Gtk.ReliefStyle.NONE)
+        self.searchbox.pack_start(close_button, False, False, 0)
 
         def search_entry_cb(e):
-            self.highlight_search_forward(unicode(e.get_text()))
+            self.highlight_search_forward(e.get_text().decode('utf-8'))
             return True
 
         def search_entry_key_press_cb(e, event):
-            if event.keyval == gtk.keysyms.Escape:
+            if event.keyval == Gdk.KEY_Escape:
                 hide_searchbox()
                 return True
             return False
 
-        self.searchbox.entry=gtk.Entry()
+        self.searchbox.entry=Gtk.Entry()
         self.searchbox.entry.connect('activate', search_entry_cb)
-        self.searchbox.pack_start(self.searchbox.entry, expand=False, fill=False)
+        self.searchbox.pack_start(self.searchbox.entry, False, False, 0)
         self.searchbox.entry.connect('key-press-event', search_entry_key_press_cb)
 
 #        def find_next(b):
 #            # FIXME
 #            return True
 #
-#        b=get_small_stock_button(gtk.STOCK_GO_FORWARD, find_next)
-#        b.set_relief(gtk.RELIEF_NONE)
+#        b=get_small_stock_button(Gtk.STOCK_GO_FORWARD, find_next)
+#        b.set_relief(Gtk.ReliefStyle.NONE)
 #        b.set_tooltip_text(_("Find next occurrence"))
-#        self.searchbox.pack_start(b, expand=False, fill=False)
+#        self.searchbox.pack_start(b, False, False, 0)
 
-        fill=gtk.HBox()
-        self.searchbox.pack_start(fill, expand=True, fill=True)
+        fill=Gtk.HBox()
+        self.searchbox.pack_start(fill, True, True, 0)
 
-        mainbox.pack_start(self.searchbox, expand=False)
+        mainbox.pack_start(self.searchbox, False, True, 0)
 
-        self.statusbar=gtk.Statusbar()
-        self.statusbar.set_has_resize_grip(False)
-        mainbox.pack_start(self.statusbar, expand=False)
+        self.statusbar=Gtk.Statusbar()
+        mainbox.pack_start(self.statusbar, False, True, 0)
 
         mainbox.show_all()
 
@@ -432,7 +432,7 @@ class TranscriptionView(AdhocView):
         finished=False
 
         while not finished:
-            res=begin.forward_search(searched, gtk.TEXT_SEARCH_TEXT_ONLY)
+            res=begin.forward_search(searched, Gtk.TextSearchFlags.TEXT_ONLY)
             if not res:
                 finished=True
             else:
@@ -454,11 +454,11 @@ class TranscriptionView(AdhocView):
             return False
         menu.foreach(menu.remove)
 
-        item=gtk.SeparatorMenuItem()
+        item=Gtk.SeparatorMenuItem()
         item.show()
         menu.append(item)
 
-        item = gtk.MenuItem(_("Annotation %s") % self.currentannotation.id, use_underline=False)
+        item = Gtk.MenuItem(_("Annotation %s") % self.currentannotation.id, use_underline=False)
         menuc=advene.gui.popup.Menu(self.currentannotation,
                                     controller=self.controller)
         item.set_submenu(menuc.menu)
@@ -469,7 +469,7 @@ class TranscriptionView(AdhocView):
             self.play_annotation(a)
             return True
 
-        item = gtk.MenuItem(_("Play"))
+        item = Gtk.MenuItem(_("Play"))
         item.connect('activate', play_annotation, self.currentannotation)
         item.show()
         menu.append(item)
@@ -477,10 +477,10 @@ class TranscriptionView(AdhocView):
         return False
 
     def key_press_event_cb (self, textview, event):
-        if event.keyval == gtk.keysyms.F3:
+        if event.keyval == Gdk.KEY_F3:
             self.searchbox.show_all()
             return True
-        elif event.keyval == gtk.keysyms.Return and event.state & gtk.gdk.CONTROL_MASK:
+        elif event.keyval == Gdk.KEY_Return and event.get_state() & Gdk.ModifierType.CONTROL_MASK:
             # Control-return: goto annotation
             if self.currentannotation is not None:
                 self.play_annotation(self.currentannotation)
@@ -490,21 +490,21 @@ class TranscriptionView(AdhocView):
     def button_press_event_cb(self, textview, event):
         if event.button != 1:
             return False
-        textwin=textview.get_window(gtk.TEXT_WINDOW_TEXT)
-        if event.window != textwin:
+        textwin=textview.get_window(Gtk.TextWindowType.TEXT)
+        if event.get_window() != textwin:
             return False
 
-        (x, y) = textview.window_to_buffer_coords(gtk.TEXT_WINDOW_TEXT,
+        (x, y) = textview.window_to_buffer_coords(Gtk.TextWindowType.TEXT,
                                                   int(event.x),
                                                   int(event.y))
         it=textview.get_iter_at_location(x, y)
         if it is None:
             print "Error in get_iter_at_location"
             return False
-        textview.get_buffer().move_mark_by_name('insert', it)
-        textview.get_buffer().move_mark_by_name('selection_bound', it)
+        textview.get_buffer().move_mark_by_name('insert', it.iter)
+        textview.get_buffer().move_mark_by_name('selection_bound', it.iter)
         self.update_current_annotation()
-        if self.currentannotation is not None and event.type == gtk.gdk._2BUTTON_PRESS:
+        if self.currentannotation is not None and event.type == Gdk.EventType._2BUTTON_PRESS:
             # Double click -> goto annotation
             self.play_annotation(self.currentannotation)
         return False
@@ -646,7 +646,7 @@ class TranscriptionView(AdhocView):
             # Make sure that the annotation is visible
             m=self.textview.get_buffer().get_mark("b_%s" % a.id)
             if m:
-                self.textview.scroll_to_mark(m, 0.2)
+                self.textview.scroll_to_mark(m, 0.2, False, 0, 0)
 
         self.tag_annotation(a, "activated")
         return True
@@ -680,8 +680,8 @@ class TranscriptionView(AdhocView):
 
     def save_transcription(self, button=None):
         fname=dialog.get_filename(title= ("Save transcription to..."),
-                                           action=gtk.FILE_CHOOSER_ACTION_SAVE,
-                                           button=gtk.STOCK_SAVE)
+                                           action=Gtk.FileChooserAction.SAVE,
+                                           button=Gtk.STOCK_SAVE)
         if fname is not None:
             self.save_output(filename=fname)
             return True
@@ -689,8 +689,8 @@ 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)).replace(ZERO_WIDTH_NOBREAK_SPACE, '')
+        begin, end=b.get_bounds()
+        out=b.get_text(begin, end, False).decode('utf-8').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
deleted file mode 100755
index d12296e..0000000
--- a/lib/advene/gui/views/tree.py
+++ /dev/null
@@ -1,860 +0,0 @@
-#
-# Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 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
-#
-
-from gettext import gettext as _
-import gtk
-
-import advene.core.config as config
-
-from advene.model.package import Package
-from advene.model.annotation import Annotation, Relation
-from advene.model.schema import Schema, AnnotationType, RelationType
-from advene.model.bundle import AbstractBundle
-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, dialog
-
-import advene.gui.edit.elements
-import advene.gui.popup
-
-import advene.util.helper as helper
-
-name="Tree view plugin"
-
-def register(controller):
-    controller.register_viewclass(TreeWidget)
-
-class AdveneTreeModel(gtk.GenericTreeModel, gtk.TreeDragSource, gtk.TreeDragDest):
-    COLUMN_TITLE=0
-    COLUMN_ELEMENT=1
-    COLUMN_COLOR=2
-
-    def nodeParent (self, node):
-        raise Exception("This has to be implemented in subclasses.")
-
-    def nodeChildren (self, node):
-        raise Exception("This has to be implemented in subclasses.")
-
-    def nodeHasChildren (self, node):
-        raise Exception("This has to be implemented in subclasses.")
-
-    def __init__(self, controller=None, package=None):
-        gtk.GenericTreeModel.__init__(self)
-        self.clear_cache ()
-        self.controller=controller
-        if package is None and controller is not None:
-            package=controller.package
-        self.__package=package
-
-    def get_package(self):
-        return self.__package
-
-    def clear_cache (self):
-        self.childrencache = {}
-
-    def remove_element (self, e):
-        """Remove an element from the model.
-
-        The problem is that we do not know its previous path.
-        """
-        # FIXME: there is still a bug with ImportBundles (that are
-        # mutable and thus cannot be dict keys
-        #print "Removing element ", e.id
-
-        if isinstance(e, View):
-            # Remove the element from the list view and refresh list view
-            parent=self.nodeParent(e)
-            #parent=self.get_package().views
-            path=self.on_get_path(parent)
-            #print "before row changed"
-            self.row_changed(path, self.get_iter(path))
-            #print "after row changed"
-            return
-
-        parent=None
-        for p in self.childrencache:
-            if e in self.childrencache[p]:
-                parent=p
-                #print "Found parent ", str(parent)
-                break
-        if parent is None:
-            # Could not find the element in the cache.
-            # It was not yet displayed
-            pass
-        else:
-            # We can determine its path. Get the index for the deleted
-            # element from the childrencache.
-            path=self.on_get_path(parent)
-            if path is not None:
-                #print "Parent path", path
-                #print "cache", self.childrencache[parent]
-                try:
-                    idx=self.childrencache[parent].index(e)
-                except ValueError:
-                    # The children was not in the cache. Should not
-                    # normally happen, but who knows...
-                    idx=None
-                if idx is not None:
-                    path=path + (idx, )
-                    # Now that we have the old path for the deleted
-                    # element, we can notify the row_deleted signal.
-                    self.row_deleted(path)
-            del (self.childrencache[parent])
-        return True
-
-    def update_element(self, e, created=False):
-        """Update an element.
-
-        This is called when a element has been modified or created.
-        """
-        parent=self.nodeParent(e)
-        try:
-            del (self.childrencache[parent])
-        except KeyError:
-            pass
-        path=self.on_get_path(e)
-        if path is not None:
-            if created:
-                self.row_inserted(path, self.get_iter(path))
-            else:
-                self.row_changed(path, self.get_iter(path))
-        return path
-
-    def on_get_flags(self):
-        return 0
-
-    def on_get_n_columns(self):
-        return 3
-
-    def on_get_column_type(self, index):
-        types=(str, object, str)
-        return types[index]
-
-    # FIXME: maybe we could use TALES expressions as path
-    def on_get_path(self, node): # FIXME
-        # print "on_get_path()"
-        # print "node: " + str(node)
-        # node is either an Annotation or an AnnotationType
-        parent = self.nodeParent (node)
-        child = node
-        idx = []
-        while parent is not None:
-            children = self.nodeChildren(parent)
-            try:
-                i = children.index (child)
-            except ValueError:
-                # The element is not in the list
-                return None
-            idx.append (i)
-            child = parent
-            parent = self.nodeParent(parent)
-        idx.append(0)
-        idx.reverse()
-        return tuple(idx)
-
-    def on_get_iter(self, path):
-        """Return the node corresponding to the given path.
-        """
-        node = self.__package
-        for i in xrange(1, len(path)):
-            idx = path[i]
-            children = self.nodeChildren(node)
-            try:
-                node = children[idx]
-            except IndexError:
-                node=None
-        return node
-
-    def on_get_tree_path(self, node):
-        return self.on_get_path(node)
-
-    def title (self, node):
-        title=None
-        if self.controller:
-            title=self.controller.get_title(node)
-        if not title:
-            title = "???"
-            try:
-                title=node.id
-            except AttributeError:
-                pass
-        # FIXME: bad hardcoded value
-        #if len(title) > 50:
-        #    title=title[:50]
-        if isinstance(node, Annotation):
-            title="%s (%s, %s)" % (title,
-                                   helper.format_time(node.fragment.begin),
-                                   helper.format_time(node.fragment.end))
-        if ((hasattr(node, 'isImported') and node.isImported())
-            or (hasattr(node, 'schema') and node.schema.isImported())):
-            title += " (*)"
-        return title
-
-    def on_get_value(self, node, column):
-        def get_color(e):
-            if (isinstance(e, Annotation) or isinstance(e, Relation)
-                or isinstance(e, AnnotationType) or isinstance(e, RelationType)):
-                return self.controller.get_element_color(e)
-            else:
-                return None
-        if column == AdveneTreeModel.COLUMN_TITLE:
-            return self.title(node)
-        elif column == AdveneTreeModel.COLUMN_COLOR:
-            return get_color(node)
-        else:
-            return node
-
-    def on_iter_next(self, node):
-        """Return the next node at this level of the tree"""
-        parent = self.nodeParent(node)
-        next = None
-        if parent is not None:
-            children = self.nodeChildren(parent)
-            count = len(children)
-            idx = None
-            for i in xrange(len(children)):
-                child = children[i]
-                if child is node:
-                    idx = i + 1
-                    break
-            if idx is not None and idx < count:
-                next = children[idx]
-        return next
-
-    def on_iter_children(self, node):
-        """Return the first child of this node"""
-        children = self.nodeChildren(node)
-        if not children:
-            return None
-        else:
-            assert len(children), _("No children in on_iter_children()!")
-            return children[0]
-
-    def on_iter_has_child(self, node):
-        """returns true if this node has children"""
-        return self.nodeHasChildren(node)
-
-    def on_iter_n_children(self, node):
-        '''returns the number of children of this node'''
-        return len(self.nodeChildren(node))
-
-    def on_iter_nth_child(self, node, n):
-        """Returns the nth child of this node"""
-        child = None
-        children = self.nodeChildren(node)
-        assert len(children), _("No children in on_iter_nth_child()")
-        child = children[n]
-        return child
-
-    def on_iter_parent(self, node):
-        """Returns the parent of this node"""
-        return self.nodeParent(node)
-
-    def row_draggable(self, path):
-        print "row draggable %s" % str(path)
-        return True
-#         node = self.on_get_iter(path)
-#         if isinstance(node, Annotation):
-#             return True
-#         else:
-#             return False
-
-    def drag_data_delete(self, path):
-        print "drag delete %s" % str(path)
-        return False
-
-    def drag_data_received (self, *p, **kw):
-        print "drag data received: %s %s" % (str(p), str(kw))
-        return True
-
-    def drag_data_get(self, path, selection):
-        print "drag data get %s %s" % (str(path), str(selection))
-        node = self.on_get_iter(path)
-        print "Got selection:\ntype=%s\ntarget=%s" % (str(selection.type),
-                                                      str(selection.target))
-        selection.set(selection.target, 8, node.uri.encode('utf8'))
-        return True
-
-class VirtualNode:
-    """Virtual node.
-    """
-    def __init__(self, name, package, viewableType=None):
-        self.title=name
-        self.rootPackage=package
-        self.viewableType=viewableType
-
-class DetailedTreeModel(AdveneTreeModel):
-    """Detailed Tree Model.
-
-    In this model,
-       - Annotations and Relations depend on their types.
-       - Types depend on their schema
-       - Schemas depend on their package list of schemas
-       - Views depend on their package list of views
-       - Resources depend on the Resource node
-    """
-    def __init__(self, controller=None, package=None):
-        AdveneTreeModel.__init__(self, controller=controller, package=package)
-        self.virtual={}
-        self.virtual['views']=VirtualNode(_("List of views"), package, viewableType='view-list')
-        self.virtual['static']=VirtualNode(_("Static views"), package, viewableType='view-list')
-        self.virtual['dynamic']=VirtualNode(_("Dynamic views"), package, viewableType='view-list')
-        self.virtual['admin']=VirtualNode(_("Admin views"), package, viewableType='view-list')
-        self.virtual['adhoc']=VirtualNode(_("Adhoc views"), package)
-
-    def nodeParent (self, node):
-        #print "nodeparent %s" % node
-        if isinstance (node, Annotation):
-            parent = node.type
-        elif isinstance (node, Relation):
-            parent = node.type
-        elif isinstance (node, RelationType):
-            parent = node.schema
-        elif isinstance (node, AnnotationType):
-            parent = node.schema
-        elif isinstance (node, Schema):
-            parent = node.rootPackage.schemas
-        elif isinstance (node, View):
-            if node.id.startswith('_'):
-                parent=self.virtual['admin']
-            else:
-                t=helper.get_view_type(node)
-                parent=self.virtual[t]
-        elif isinstance (node, Query):
-            parent = node.rootPackage.queries
-        elif isinstance (node, Package):
-            parent = None
-        elif isinstance (node, AbstractBundle):
-            parent = node.rootPackage
-        elif isinstance (node, Resources):
-            parent = node.parent
-        elif isinstance (node, ResourceData):
-            parent = node.parent
-        elif node in (self.virtual['static'], self.virtual['dynamic'], self.virtual['adhoc'], self.virtual['admin']):
-            parent = self.virtual['views']
-        elif node == self.virtual['views']:
-            parent=node.rootPackage
-        else:
-            parent = None
-        return parent
-
-    def nodeChildren (self, node):
-        #print "nodechildren %s" % node
-        if isinstance (node, Annotation):
-            children = None
-        elif isinstance (node, Relation):
-            children = None
-        elif isinstance (node, AnnotationType):
-            if not node in self.childrencache:
-                self.childrencache[node] = node.annotations
-            children = self.childrencache[node]
-        elif isinstance (node, RelationType):
-            if not node in self.childrencache:
-                self.childrencache[node] = node.relations
-            children = self.childrencache[node]
-        elif isinstance (node, Schema):
-            # Do not cache these elements
-            l=list(node.annotationTypes)
-            l.extend(node.relationTypes)
-            children = l
-        elif isinstance (node, View):
-            children = None
-        elif isinstance (node, Query):
-            children = None
-        elif isinstance (node, Package):
-            if not node in self.childrencache:
-                self.childrencache[node] = [node.schemas, self.virtual['views'], node.queries, node.resources ]
-            children = self.childrencache[node]
-        elif isinstance (node, AbstractBundle):
-            children = node
-        elif isinstance (node, Resources):
-            if not node in self.childrencache:
-                self.childrencache[node] = node.children()
-            children = self.childrencache[node]
-        elif isinstance (node, ResourceData):
-            children = None
-        elif node == self.virtual['views']:
-            children=[ self.virtual['static'], self.virtual['dynamic'], self.virtual['adhoc'], self.virtual['admin'] ]
-        elif node is None:
-            children = [ self.get_package() ]
-        else:
-            children = None
-            if node == self.virtual['admin']:
-                children=sorted([ v
-                                  for v in node.rootPackage.views
-                                  if v.id.startswith('_') ],
-                                key=lambda e: (e.title or e.id).lower())
-            else:
-                for t in ('static', 'dynamic', 'adhoc'):
-                    if node == self.virtual[t]:
-                        children=sorted([ v
-                                          for v in node.rootPackage.views
-                                          if not v.id.startswith('_')
-                                          and helper.get_view_type(v) == t ],
-                                        key=lambda e: (e.title or e.id).lower())
-                        break
-        return children
-
-    def nodeHasChildren (self, node):
-        children = self.nodeChildren(node)
-        return (children is not None and children)
-
-class TreeWidget(AdhocView):
-    view_name = _("Tree view")
-    view_id = 'tree'
-    tooltip=("Display the package's content as a tree")
-    def __init__(self, controller=None, parameters=None, package=None, modelclass=DetailedTreeModel):
-        super(TreeWidget, self).__init__(controller=controller)
-        self.close_on_package_load = False
-        self.contextual_actions = (
-            (_("Refresh"), self.refresh),
-            )
-        self.controller=controller
-        self.options={}
-
-        if package is None:
-            package=controller.package
-        self.package = package
-        self.modelclass=modelclass
-
-        self.model = modelclass(controller=controller, package=package)
-
-        self.widget = self.build_widget()
-
-    def build_widget(self):
-        tree_view = gtk.TreeView(self.model)
-
-        select = tree_view.get_selection()
-        select.set_mode(gtk.SELECTION_SINGLE)
-
-        tree_view.connect('button-press-event', self.tree_view_button_cb)
-        tree_view.connect('row-activated', self.row_activated_cb)
-        tree_view.set_search_column(AdveneTreeModel.COLUMN_TITLE)
-
-        cell = gtk.CellRendererText()
-        column = gtk.TreeViewColumn(_("Package View"), cell,
-                                    text=AdveneTreeModel.COLUMN_TITLE,
-                                    cell_background=AdveneTreeModel.COLUMN_COLOR,
-                                    )
-        tree_view.append_column(column)
-
-        # Drag and drop for annotations
-        # Handle DND by ourselves to be able to determine the
-        # appropriate targetType from the selected item
-        self.drag_context=None
-        # drag_data contains (x, y, event) information when the button is pressed.
-        self.drag_data=None
-        tree_view.connect('button-press-event', self.on_treeview_button_press_event)
-        tree_view.connect('button-release-event', self.on_treeview_button_release_event)
-        tree_view.connect('motion-notify-event', self.on_treeview_motion_notify_event)
-
-        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)
-        except AttributeError:
-            pass
-
-        sw = gtk.ScrolledWindow()
-        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-        sw.add(tree_view)
-
-        sw.treeview = tree_view
-
-        return sw
-
-    def on_treeview_button_press_event(self, treeview, event):
-        if event.button == 1:
-            x, y = treeview.get_pointer()
-            row = treeview.get_dest_row_at_pos(int(x), int(y))
-            if row is None:
-                element=None
-            else:
-                element = treeview.get_model()[row[0]][AdveneTreeModel.COLUMN_ELEMENT]
-            self.drag_data=(int(x), int(y), event, element)
-
-    def on_treeview_button_release_event(self, treeview, event):
-        self.drag_data=None
-        self.drag_context=None
-
-    def on_treeview_motion_notify_event(self, treeview, event):
-        if (event.state == gtk.gdk.BUTTON1_MASK
-            and self.drag_context is None
-            and self.drag_data is not None
-            and self.drag_data[3] is not None):
-            x, y = treeview.get_pointer()
-            threshold = treeview.drag_check_threshold(
-                    self.drag_data[0], self.drag_data[1],
-                    int(x), int(y))
-            if threshold:
-                # A drag was started. Setup the appropriate target.
-                element=self.drag_data[3]
-                targets=get_target_types(element)
-                actions = gtk.gdk.ACTION_MOVE | gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_COPY
-                button = 1
-                self.drag_context = treeview.drag_begin(targets, actions, button, self.drag_data[2])
-                # This call does not affect the icon:
-                self.drag_context._element=element
-                contextual_drag_begin(treeview, self.drag_context, element, self.controller)
-
-
-    def get_selected_node (self, tree_view):
-        """Return the currently selected node.
-
-        None if no node is selected.
-        """
-        selection = tree_view.get_selection ()
-        if not selection:
-            return None
-        store, it = selection.get_selected()
-        node = None
-        if it is not None:
-            node = tree_view.get_model().get_value (it,
-                                                    AdveneTreeModel.COLUMN_ELEMENT)
-        return node
-
-    def debug_cb (self, *p, **kw):
-        print "Debug cb:\n"
-        print "Parameters: %s" % str(p)
-        print "KW: %s" % str(kw)
-
-    def row_activated_cb(self, widget, path, view_column):
-        """Edit the element on Return or double click
-        """
-        node = self.get_selected_node (widget)
-        if node is not None:
-            # If node is an adhoc-view, then open it.
-            if isinstance(node, View) and helper.get_view_type(node) == 'adhoc':
-                self.controller.gui.open_adhoc_view(node)
-            else:
-                self.controller.gui.edit_element(node)
-            return True
-        return False
-
-    def tree_view_button_cb(self, widget=None, event=None):
-        retval = False
-        button = event.button
-        x = int(event.x)
-        y = int(event.y)
-
-        if button == 3 or button == 2:
-            if event.window is widget.get_bin_window():
-                model = self.model
-                t = widget.get_path_at_pos(x, y)
-                if t is not None:
-                    path, col, cx, cy = t
-                    it = model.get_iter(path)
-                    node = model.get_value(it,
-                                           AdveneTreeModel.COLUMN_ELEMENT)
-                    widget.get_selection().select_path (path)
-                    if button == 3:
-                        menu = advene.gui.popup.Menu(node, controller=self.controller)
-                        menu.popup()
-                        retval = True
-                    elif button == 2:
-                        # Expand all children
-                        widget.expand_row(path, True)
-                        retval=True
-        return retval
-
-    def refresh(self, *p):
-        self.update_model(self.package)
-        return True
-
-    def update_element(self, element=None, event=None):
-        #print "Update element ", str(element), str(event)
-        if event.endswith('Create'):
-            self.model.update_element(element, created=True)
-        elif event.endswith('EditEnd'):
-            self.model.update_element(element, created=False)
-        elif event.endswith('Delete'):
-            # FIXME: remove_element is incorrect for the moment
-            #        so do a global update
-            #print "Remove element"
-            #self.model.remove_element (element)
-            self.update_model(element.rootPackage)
-        else:
-            return "Unknown event %s" % event
-        return
-
-    def update_annotation(self, annotation=None, event=None):
-        """Update the annotation.
-        """
-        if event.endswith('EditEnd'):
-            # Possibly update other annotations in the same time, in the
-            # case that only the order changed.
-            for a in annotation.type.annotations:
-                self.update_element(a, event)
-        else:
-            self.update_element(annotation, event)
-        return
-
-    def update_relation(self, relation=None, event=None):
-        """Update the relation.
-        """
-        self.update_element(relation, event)
-        return
-
-    def update_view(self, view=None, event=None):
-        self.update_element(view, event)
-        return
-
-    def update_query(self, query=None, event=None):
-        self.update_element(query, event)
-        return
-
-    def update_schema(self, schema=None, event=None):
-        self.update_element(schema, event)
-        return
-
-    def update_annotationtype(self, annotationtype=None, event=None):
-        self.update_element(annotationtype, event)
-        return
-
-    def update_relationtype(self, relationtype=None, event=None):
-        """Update the relationtype
-        """
-        self.update_element(relationtype, event)
-        return
-
-    def update_resource(self, resource=None, event=None):
-        self.update_element(resource, event)
-        return
-
-    def update_model(self, package):
-        """Update the model with a new package."""
-        #print "Treeview: update model %s" % str(package)
-        # Get current path
-        oldpath=self.widget.treeview.get_cursor()[0]
-        self.model = self.modelclass(controller=self.controller,
-                                     package=package)
-        self.widget.treeview.set_model(self.model)
-        # Return to old path if possible
-        if oldpath is not None:
-            self.widget.treeview.expand_to_path(oldpath)
-            self.widget.treeview.set_cursor(oldpath)
-        return
-
-    def drag_sent(self, widget, context, selection, targetType, eventTime):
-        #print "drag_sent event from %s" % widget.annotation.content.data
-        if targetType == config.data.target_type['annotation']:
-            selection.set(selection.target, 8, widget.annotation.uri.encode('utf8'))
-        else:
-            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):
-        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 9f519cd..ba38029 100644
--- a/lib/advene/gui/views/viewbook.py
+++ b/lib/advene/gui/views/viewbook.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,7 +21,8 @@
 
 import advene.core.config as config
 
-import gtk
+from gi.repository import Gdk
+from gi.repository import Gtk
 
 from gettext import gettext as _
 from advene.gui.views import AdhocView
@@ -103,7 +104,6 @@ class ViewBook(AdhocView):
 
         def relocate_view(item, v, d):
             # Reference the widget so that it is not destroyed
-            wid=v.widget
             if not self.detach_view(v):
                 return True
             if d == 'popup':
@@ -115,10 +115,10 @@ class ViewBook(AdhocView):
 
         def popup_menu(button, event, view):
             if event.button == 3:
-                menu = gtk.Menu()
+                menu = Gtk.Menu()
                 if not permanent:
                     # Relocation submenu
-                    submenu=gtk.Menu()
+                    submenu=Gtk.Menu()
 
                     for (label, destination) in (
                         (_("...in its own window"), 'popup'),
@@ -128,32 +128,31 @@ class ViewBook(AdhocView):
                         (_("...embedded at the right of the window"), 'fareast')):
                         if destination == self.location:
                             continue
-                        item = gtk.MenuItem(label)
+                        item = Gtk.MenuItem(label)
                         item.connect('activate', relocate_view,  view, destination)
                         submenu.append(item)
 
-                    item=gtk.MenuItem(_("Detach"))
+                    item=Gtk.MenuItem(_("Detach"))
                     item.set_submenu(submenu)
                     menu.append(item)
 
-                    item = gtk.MenuItem(_("Close"))
+                    item = Gtk.MenuItem(_("Close"))
                     item.connect('activate', close_view, view)
                     menu.append(item)
 
                 try:
                     for label, action in view.contextual_actions:
-                        item = gtk.MenuItem(label, use_underline=False)
-                        item.connect('activate', action, view)
+                        item = Gtk.MenuItem(label, use_underline=False)
+                        item.connect('activate', lambda w: action())
                         menu.append(item)
                 except AttributeError:
                     pass
 
                 menu.show_all()
-                menu.popup(None, None, None, 0, gtk.get_current_event_time())
+                menu.popup_at_pointer(None)
                 return True
-            elif event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+            elif event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
                 # Double click: propose to rename the view
-                label_widget=button.get_children()[0]
                 lab=dialog.entry_dialog(title=_("Rename the view"),
                                         text=_("Please enter the new name of the view"),
                                         default=view._label)
@@ -165,19 +164,19 @@ class ViewBook(AdhocView):
         def label_drag_sent(widget, context, selection, targetType, eventTime, v):
             if targetType == config.data.target_type['adhoc-view-instance']:
                 # This is not very robust, but allows to transmit a view instance reference
-                selection.set(selection.target, 8, self.controller.gui.get_adhoc_view_instance_id(v))
+                selection.set(selection.get_target(), 8, self.controller.gui.get_adhoc_view_instance_id(v))
                 self.detach_view(v)
                 return True
             return False
 
-        e=gtk.EventBox()
-        e.set_visible_window(False)
+        e=Gtk.EventBox()
+        e.set_visible_window(False)
         e.set_above_child(True)
         if len(name) > 13:
             shortname=unicode(name)[:12] + u'\u2026'
         else:
             shortname=name
-        l=gtk.Label()
+        l=Gtk.Label()
         l.set_markup("<small>%s</small>" % shortname)
         if self.controller.gui:
             e.set_tooltip_text(name)
@@ -187,31 +186,31 @@ class ViewBook(AdhocView):
         if not permanent:
             e.connect('drag-data-get', label_drag_sent, v)
             # The widget can generate drags
-            e.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                              config.data.drag_type['adhoc-view-instance'],
-                              gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK)
-        hb=gtk.HBox()
+            e.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                              config.data.get_target_types('adhoc-view-instance'),
+                              Gdk.DragAction.COPY | Gdk.DragAction.LINK)
+        hb=Gtk.HBox()
 
         if not permanent:
             b=get_pixmap_button('small_detach.png')
             b.set_tooltip_text(_("Detach view in its own window, or drag-and-drop to another zone"))
-            b.set_relief(gtk.RELIEF_NONE)
+            b.set_relief(Gtk.ReliefStyle.NONE)
             b.connect('clicked', relocate_view, v, 'popup')
             b.connect('drag-data-get', label_drag_sent, v)
             # The widget can generate drags
-            b.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                              config.data.drag_type['adhoc-view-instance'],
-                              gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK)
-            hb.pack_start(b, expand=False, fill=False)
+            b.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                              config.data.get_target_types('adhoc-view-instance'),
+                              Gdk.DragAction.COPY | Gdk.DragAction.LINK)
+            hb.pack_start(b, False, False, 0)
 
-        hb.pack_start(e, expand=False, fill=False)
+        hb.pack_start(e, False, False, 0)
 
         if not permanent:
             b=get_pixmap_button('small_close.png')
             b.set_tooltip_text(_("Close view"))
-            b.set_relief(gtk.RELIEF_NONE)
+            b.set_relief(Gtk.ReliefStyle.NONE)
             b.connect('clicked', close_view, v)
-            hb.pack_start(b, expand=False, fill=False)
+            hb.pack_start(b, False, False, 0)
         hb.show_all()
 
         self.widget.append_page(v.widget, hb)
@@ -251,7 +250,7 @@ class ViewBook(AdhocView):
             return True
 
         if targetType == config.data.target_type['adhoc-view']:
-            data=decode_drop_parameters(selection.data)
+            data=decode_drop_parameters(selection.get_data())
             label=None
             view=None
             if 'id' in data:
@@ -281,23 +280,23 @@ class ViewBook(AdhocView):
                             if v.content.mimetype == 'application/x-advene-adhoc-view'
                             and ET.parse(v.content.stream).getroot().attrib['id'] == name ]
 
-                if name == 'transcription':
-                    menu=gtk.Menu()
-                    i=gtk.MenuItem(_("Open a new transcription for..."))
+                if name == 'transcription' or name == 'table':
+                    menu=Gtk.Menu()
+                    i=Gtk.MenuItem(_("Open a new %s for...") % _(name))
                     menu.append(i)
-                    sm=gtk.Menu()
+                    sm=Gtk.Menu()
                     i.set_submenu(sm)
                     for at in self.controller.package.annotationTypes:
                         title=self.controller.get_title(at, max_size=40)
-                        i=gtk.MenuItem(title, use_underline=False)
+                        i=Gtk.MenuItem(title, use_underline=False)
                         i.connect('activate', lambda i, s, t: self.controller.gui.open_adhoc_view(name, source=s, label=t, destination=self.location), "here/annotationTypes/%s/annotations/sorted" % at.id, title)
                         sm.append(i)
                 elif saved:
-                    menu=gtk.Menu()
+                    menu=Gtk.Menu()
                     if name == 'comment':
-                        i=gtk.MenuItem(_("Create a new comment view"))
+                        i=Gtk.MenuItem(_("Create a new comment view"))
                     else:
-                        i=gtk.MenuItem(_("Open a new view"))
+                        i=Gtk.MenuItem(_("Open a new view"))
                     i.connect('activate', lambda i: self.controller.gui.open_adhoc_view(name, label=label, destination=self.location))
                     menu.append(i)
                 else:
@@ -305,19 +304,19 @@ class ViewBook(AdhocView):
 
                 if menu is not None:
                     if saved:
-                        i=gtk.MenuItem(_("Open a saved view"))
+                        i=Gtk.MenuItem(_("Open a saved view"))
                         menu.append(i)
-                        sm=gtk.Menu()
+                        sm=Gtk.Menu()
                         i.set_submenu(sm)
                         for v in saved:
-                            i=gtk.MenuItem(v.title, use_underline=False)
+                            i=Gtk.MenuItem(v.title, use_underline=False)
                             if name == 'comment':
                                 i.connect('activate', lambda i, vv: self.controller.gui.open_adhoc_view('edit', element=vv, destination=self.location), v)
                             else:
                                 i.connect('activate', lambda i, vv: self.controller.gui.open_adhoc_view(vv, label=vv.title, destination=self.location), v)
                             sm.append(i)
                     menu.show_all()
-                    menu.popup(None, None, None, 0, gtk.get_current_event_time())
+                    menu.popup_at_pointer(None)
                 else:
                     view=self.controller.gui.open_adhoc_view(name, label=label, destination=None)
                     if view is not None:
@@ -335,17 +334,16 @@ class ViewBook(AdhocView):
                 view.set_master_view(master)
             return True
         elif targetType == config.data.target_type['adhoc-view-instance']:
-            v=self.controller.gui.get_adhoc_view_instance_from_id(selection.data)
+            v=self.controller.gui.get_adhoc_view_instance_from_id(selection.get_data())
             if v is not None:
-                wid=v.widget
                 self.add_view(v, name=v._label)
                 if hasattr(v, 'reparent_done'):
                     v.reparent_done()
             else:
-                print "Cannot find view ", selection.data
+                print "Cannot find view ", selection.get_data()
             return True
         elif targetType == config.data.target_type['view']:
-            v=self.controller.package.views.get(unicode(selection.data, 'utf8'))
+            v=self.controller.package.views.get(unicode(selection.get_data(), 'utf8'))
             if helper.get_view_type(v) in ('static', 'dynamic'):
                 # Edit the view.
                 self.controller.gui.open_adhoc_view('edit', element=v, destination=self.location)
@@ -353,52 +351,53 @@ class ViewBook(AdhocView):
                 print "Unhandled case in viewbook: targetType=view"
             return True
         elif targetType == config.data.target_type['query']:
-            v=self.controller.package.queries.get(unicode(selection.data, 'utf8'))
+            v=self.controller.package.queries.get(unicode(selection.get_data(), 'utf8'))
             if v is not None:
                 self.controller.gui.open_adhoc_view('edit', element=v, destination=self.location)
             return True
         elif targetType == config.data.target_type['schema']:
-            v=self.controller.package.schemas.get(unicode(selection.data, 'utf8'))
+            v=self.controller.package.schemas.get(unicode(selection.get_data(), 'utf8'))
             if v is not None:
                 self.controller.gui.open_adhoc_view('edit', element=v, destination=self.location)
             return True
         elif targetType == config.data.target_type['relation']:
-            v=self.controller.package.relations.get(unicode(selection.data, 'utf8'))
+            v=self.controller.package.relations.get(unicode(selection.get_data(), 'utf8'))
             if v is not None:
                 self.controller.gui.open_adhoc_view('edit', element=v, destination=self.location)
             return True
         elif targetType == config.data.target_type['annotation-type']:
-            at=self.controller.package.annotationTypes.get(unicode(selection.data, 'utf8'))
+            at=self.controller.package.annotationTypes.get(unicode(selection.get_data(), 'utf8'))
             # Propose a menu to open various views for the annotation-type:
-            menu=gtk.Menu()
+            menu=Gtk.Menu()
             title=self.controller.get_title(at, max_size=40)
-            i=gtk.MenuItem(_("Use annotation-type %s :") % title, use_underline=False)
+            i=Gtk.MenuItem(_("Use annotation-type %s :") % title, use_underline=False)
+            talespath = 'here/annotationTypes/%s' % at.id
             menu.append(i)
             for label, action in (
                 (_("to edit it"), lambda i :self.controller.gui.open_adhoc_view('edit', element=at, destination=self.location)),
                 (_("to create a new static view"), lambda i: create_and_open_view([ at ])),
-                (_("as a transcription"), lambda i: self.controller.gui.open_adhoc_view('transcription', source='here/annotationTypes/%s/annotations/sorted' % at.id, destination=self.location, label=title)),
+                (_("as a transcription"), lambda i: self.controller.gui.open_adhoc_view('transcription', source='%s/annotations/sorted' % talespath, destination=self.location, label=title)),
                 (_("in a timeline"), lambda i: self.controller.gui.open_adhoc_view('timeline', elements=at.annotations, annotationtypes=[ at ], destination=self.location, label=title)),
                 (_("as a montage"), lambda i: self.controller.gui.open_adhoc_view('montage', elements=at.annotations, destination=self.location, label=title)),
-                (_("in a table"), lambda i: self.controller.gui.open_adhoc_view('table', elements=at.annotations, destination=self.location, label=title)),
+                (_("in a table"), lambda i: self.controller.gui.open_adhoc_view('table', elements=at.annotations, source='%s/annotations' % talespath, destination=self.location, label=title)),
                 (_("in a query"), lambda i: self.controller.gui.open_adhoc_view('interactivequery', here=at, destination=self.location, label=_("Query %s") % title)),
                 (_("in the TALES browser"), lambda i: self.controller.gui.open_adhoc_view('browser', element=at, destination=self.location, label=_("Browsing %s") % title)),
                 ):
-                i=gtk.MenuItem(u"    " + label, use_underline=False)
+                i=Gtk.MenuItem(u"    " + label, use_underline=False)
                 i.connect('activate', action)
                 menu.append(i)
             menu.show_all()
-            menu.popup(None, None, None, 0, gtk.get_current_event_time())
+            menu.popup_at_pointer(None)
             return True
         elif targetType == config.data.target_type['annotation']:
-            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+            sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.get_data(), 'utf8').split('\n') ]
             # Propose a menu to open various views for the annotation:
-            menu=gtk.Menu()
+            menu=Gtk.Menu()
 
             if len(sources) == 1:
                 a=sources[0]
                 title=self.controller.get_title(a, max_size=40)
-                i=gtk.MenuItem(_("Use annotation %s :") % title, use_underline=False)
+                i=Gtk.MenuItem(_("Use annotation %s :") % title, use_underline=False)
                 menu.append(i)
                 for label, action in (
                     (_("to edit it"), lambda i: edit_annotation(a)),
@@ -408,7 +407,7 @@ class ViewBook(AdhocView):
                     (_("to display its contents"), lambda i: self.controller.gui.open_adhoc_view('annotationdisplay', annotation=a, destination=self.location, label=_("%s") % title)) ,
                     (_("as a bookmark"), lambda i: self.controller.gui.open_adhoc_view('activebookmarks', elements=[ a.fragment.begin ], destination=self.location)),
                     ):
-                    i=gtk.MenuItem(u"    " + label, use_underline=False)
+                    i=Gtk.MenuItem(u"    " + label, use_underline=False)
                     i.connect('activate', action)
                     menu.append(i)
 
@@ -419,32 +418,32 @@ class ViewBook(AdhocView):
                     return True
 
                 if self.controller.package.queries:
-                    sm=gtk.Menu()
+                    sm=Gtk.Menu()
                     for q in self.controller.package.queries:
-                        i=gtk.MenuItem(self.controller.get_title(q, max_size=40), use_underline=False)
+                        i=Gtk.MenuItem(self.controller.get_title(q, max_size=40), use_underline=False)
                         i.connect('activate', apply_query, q)
                         sm.append(i)
-                    i=gtk.MenuItem(u"    " + _("as the context for the query..."), use_underline=False)
+                    i=Gtk.MenuItem(u"    " + _("as the context for the query..."), use_underline=False)
                     i.set_submenu(sm)
                     menu.append(i)
             else:
                 title=_("Set of annotations")
-                i=gtk.MenuItem(_("Use annotations:"), use_underline=False)
+                i=Gtk.MenuItem(_("Use annotations:"), use_underline=False)
                 menu.append(i)
                 for label, action in (
                     (_("to edit them"), lambda i: edit_selection(sources)),
-                    (_("in a table"), lambda i: self.controller.gui.open_adhoc_view('table', elements=sources)),
+                    (_("in a table"), lambda i: self.controller.gui.open_adhoc_view('table', elements=sources, destination=self.location)),
                     (_("to create a new static view"), lambda i: create_and_open_view(sources)),
                     (_("as bookmarks"), lambda i: self.controller.gui.open_adhoc_view('activebookmarks', elements=[ a.fragment.begin for a in sources ], destination=self.location)),
                     ):
-                    i=gtk.MenuItem(u"    " + label, use_underline=False)
+                    i=Gtk.MenuItem(u"    " + label, use_underline=False)
                     i.connect('activate', action)
                     menu.append(i)
             menu.show_all()
-            menu.popup(None, None, None, 0, gtk.get_current_event_time())
+            menu.popup_at_pointer(None)
             return True
         elif targetType == config.data.target_type['timestamp']:
-            data=decode_drop_parameters(selection.data)
+            data=decode_drop_parameters(selection.get_data())
             v=self.controller.gui.open_adhoc_view('activebookmarks', destination=self.location)
             v.append(long(data['timestamp']), comment=data.get('comment', ''))
             return True
@@ -453,25 +452,25 @@ class ViewBook(AdhocView):
         return False
 
     def build_widget(self):
-        notebook=gtk.Notebook()
-        notebook.set_tab_pos(gtk.POS_TOP)
+        notebook=Gtk.Notebook()
+        notebook.set_tab_pos(Gtk.PositionType.TOP)
         notebook.popup_disable()
         notebook.set_scrollable(True)
 
         notebook.connect('drag-data-received', self.drag_received)
-        notebook.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                               gtk.DEST_DEFAULT_HIGHLIGHT |
-                               gtk.DEST_DEFAULT_DROP |
-                               gtk.DEST_DEFAULT_ALL,
-                               config.data.drag_type['adhoc-view'] +
-                               config.data.drag_type['adhoc-view-instance'] +
-                               config.data.drag_type['view'] +
-                               config.data.drag_type['query'] +
-                               config.data.drag_type['schema'] +
-                               config.data.drag_type['annotation-type'] +
-                               config.data.drag_type['annotation'] +
-                               config.data.drag_type['relation'] +
-                               config.data.drag_type['timestamp'],
-                               gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE | gtk.gdk.ACTION_LINK)
+        notebook.drag_dest_set(Gtk.DestDefaults.MOTION |
+                               Gtk.DestDefaults.HIGHLIGHT |
+                               Gtk.DestDefaults.DROP |
+                               Gtk.DestDefaults.ALL,
+                               config.data.get_target_types('adhoc-view',
+                                                            'adhoc-view-instance',
+                                                            'view',
+                                                            'query',
+                                                            'schema',
+                                                            'annotation-type',
+                                                            'annotation',
+                                                            'relation',
+                                                            'timestamp'),
+                               Gdk.DragAction.COPY | Gdk.DragAction.MOVE | Gdk.DragAction.LINK)
 
         return notebook
diff --git a/lib/advene/gui/views/viewplugin.py b/lib/advene/gui/views/viewplugin.py
index 2d7c216..6d05136 100644
--- a/lib/advene/gui/views/viewplugin.py
+++ b/lib/advene/gui/views/viewplugin.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/widget.py b/lib/advene/gui/widget.py
index a7e509e..57a9c15 100644
--- a/lib/advene/gui/widget.py
+++ b/lib/advene/gui/widget.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -20,55 +20,53 @@
 
 Note that, contrary to a common pattern found in the Advene sources
 (where the real widget is stored as the self.widget attribute), each
-of the widgets defined in this module is a gtk.Widget.
+of the widgets defined in this module is a Gtk.Widget.
 
-Documentation:
-http://www.tortall.net/mu/wiki/CairoTutorial
-
-http://www.pygtk.org/pygtk2reference/class-pangocairocairocontext.html
-http://www.nabble.com/Image-Manipulation-under-pyGTK-t3484319.html
-http://lists.freedesktop.org/archives/cairo/2007-February/009810.html
-http://www.tortall.net/mu/wiki/CairoTutorial#understanding-text
-http://nzlinux.virtuozzo.co.nz/blogs/2005/08/18/using-pangocairo/
-http://laszlok2.blogspot.com/2006/05/prince-of-cairo_28.html
+Updated tutorial for gtk3:
+http://zetcode.com/gfx/pycairo/basicdrawing/
 """
+import logging
+logger = logging.getLogger(__name__)
 
 import struct
 import os
 
 from gettext import gettext as _
 
-import gtk
+import gi
 import cairo
-import pango
-import gobject
+from gi.repository import GObject
+from gi.repository import GdkPixbuf
+from gi.repository import Gdk
+from gi.repository import Gtk
+from gi.repository import Pango
 
 try:
-    import rsvg
+    gi.require_version('Rsvg', '2.0')
+    from gi.repository import Rsvg
 except ImportError:
-    import advene.util.ctypesrsvg as rsvg
+    import advene.util.ctypesrsvg as Rsvg
 
 # Advene part
 import advene.core.config as config
 from advene.core.imagecache import ImageCache
 
 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')
 
-class GenericColorButtonWidget(gtk.DrawingArea):
+class GenericColorButtonWidget(Gtk.DrawingArea):
     """ Widget emulating a color button widget
     """
     def __init__(self, element=None, container=None):
-        gtk.DrawingArea.__init__(self)
-        self.set_flags(self.flags() | gtk.CAN_FOCUS)
+        GObject.GObject.__init__(self)
+        self.set_can_focus(True)
         self.element=element
 
-        # If not None, it should contain a gtk.gdk.Color
+        # If not None, it should contain a Gdk.Color
         # which will override the normal color
         self.local_color=None
         # Alpha will be used to draw features
@@ -82,42 +80,43 @@ class GenericColorButtonWidget(gtk.DrawingArea):
             self.controller=container.controller
         else:
             self.controller=None
-        self.set_events(gtk.gdk.POINTER_MOTION_MASK |
-                        gtk.gdk.POINTER_MOTION_HINT_MASK |
-                        gtk.gdk.BUTTON_PRESS_MASK |
-                        gtk.gdk.BUTTON_RELEASE_MASK |
-                        gtk.gdk.BUTTON1_MOTION_MASK |
-                        gtk.gdk.KEY_PRESS_MASK |
-                        gtk.gdk.KEY_RELEASE_MASK |
-                        gtk.gdk.FOCUS_CHANGE_MASK |
-                        gtk.gdk.ENTER_NOTIFY_MASK |
-                        gtk.gdk.LEAVE_NOTIFY_MASK |
-                        gtk.gdk.SCROLL_MASK)
-
-        self.connect('expose-event', self.expose_cb)
+        self.set_events(Gdk.EventMask.POINTER_MOTION_MASK |
+                        Gdk.EventMask.POINTER_MOTION_HINT_MASK |
+                        Gdk.EventMask.BUTTON_PRESS_MASK |
+                        Gdk.EventMask.BUTTON_RELEASE_MASK |
+                        Gdk.EventMask.BUTTON1_MOTION_MASK |
+                        Gdk.EventMask.KEY_PRESS_MASK |
+                        Gdk.EventMask.KEY_RELEASE_MASK |
+                        Gdk.EventMask.FOCUS_CHANGE_MASK |
+                        Gdk.EventMask.ENTER_NOTIFY_MASK |
+                        Gdk.EventMask.LEAVE_NOTIFY_MASK |
+                        Gdk.EventMask.SCROLL_MASK)
+
+        self.connect('draw', self.draw_cb)
         self.connect('realize', self.realize_cb)
-        self.connect_after('size-request', self.size_request_cb)
+        self.connect_after('size-allocate', self.size_request_cb)
         self.connect('focus-in-event', self.update_widget)
         self.connect('focus-out-event', self.update_widget)
 
         #self.connect('event', self.debug_cb, "Event")
         #self.connect_after('event', self.debug_cb, "After")
 
-        self.cached_surface = None
-        self.cached_context = None
-
         self.default_size = (40, 10)
         # Initialize the size
         self.set_size_request(*self.needed_size())
 
     def _drag_begin(self, widget, context):
-        cm=gtk.gdk.colormap_get_system()
-        w,h=self.needed_size()
-        pixmap=gtk.gdk.Pixmap(None, w, h, cm.get_visual().depth)
-        cr=pixmap.cairo_create()
+        # see https://developer.gnome.org/gtk3/stable/ch26s02.html
+        w,h = self.needed_size()
+        pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB, True, 8, w, h)
+        surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, pixbuf.get_width(),
+                                     pixbuf.get_height())
+        cr = cairo.Context(surface)
         self.draw(cr, w, h)
-        cr.paint_with_alpha(0.0)
-        widget.drag_source_set_icon(cm, pixmap)
+        Gdk.cairo_set_source_pixbuf(cr, pixbuf, 0, 0)
+        cr.paint()
+        # FIXME3: use drag_source_set_icon_pixbuf
+        widget.drag_source_set_icon_pixbuf(pixbuf)
         def set_cursor(wid, t=None, precision=None):
             try:
                 self.container.set_annotation(t)
@@ -125,30 +124,24 @@ class GenericColorButtonWidget(gtk.DrawingArea):
                 # The container does not implement the set_annotation method.
                 return False
             return True
-        pixmap.set_cursor = set_cursor.__get__(w)
+        pixbuf.set_cursor = set_cursor.__get__(w)
         return True
 
     def reset_surface_size(self, width=None, height=None):
-        """Redimension the cached widget content.
+        """Redimension the widget content.
         """
-        if not self.window:
+        w = self.get_window()
+        if not w:
             return False
-        s=self.window.get_size()
         if width is None:
-            width=s[0]
+            width = w.get_width()
         if height is None:
-            height=s[1]
+            height = w.get_height()
         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
-            and self.cached_surface.get_height() == height):
-            return True
-        self.cached_surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
-        self.cached_context = cairo.Context(self.cached_surface)
         self.set_size_request(width, height)
-        self.window.lower()
+        #self.get_window().lower()
         return True
 
     def realize_cb(self, widget):
@@ -199,50 +192,24 @@ class GenericColorButtonWidget(gtk.DrawingArea):
     def update_widget(self, *p):
         """Update the widget.
         """
-        if not self.window:
-            return False
-        if self.cached_context is None:
+        if not self.get_window():
             return False
-
-        # First check width
-        w=self.needed_size()[0]
-        if w != self.cached_surface.get_width():
-            self.reset_surface_size(w, self.needed_size()[1])
-
-        bwidth=self.cached_surface.get_width()
-        bheight=self.cached_surface.get_height()
-
-        self.draw(self.cached_context, bwidth, bheight)
-
         self.refresh()
         return False
 
     def refresh(self):
         """Refresh the widget.
         """
-        if self.window and self.cached_surface:
-            self.window.invalidate_rect(gtk.gdk.Rectangle(self.allocation.x, self.allocation.y,
-                                                          self.allocation.width, self.allocation.height), False)
+        self.reset_surface_size(*self.needed_size())
+        self.queue_draw()
 
-    def expose_cb(self, widget, event):
-        """Handle the expose event.
+    def draw_cb(self, widget, context):
+        """Handle the draw event.
         """
-        if self.cached_surface is None:
-            return False
-
-        context = widget.window.cairo_create()
-
-        # Set a clip region for the expose event
-        context.rectangle(event.area.x, event.area.y,
-                          event.area.width, event.area.height)
-        context.clip()
-
-        # copy the annotation_surface onto this context
-        context.set_source_surface(self.cached_surface, 0, 0)
         context.paint_with_alpha(self.expose_alpha)
-        #self.draw(context, *widget.window.get_size())
+        self.draw(context, widget.get_window().get_width(), widget.get_window().get_height())
         return False
-gobject.type_register(GenericColorButtonWidget)
+GObject.type_register(GenericColorButtonWidget)
 
 class AnnotationWidget(GenericColorButtonWidget):
     """ Widget representing an annotation
@@ -274,31 +241,30 @@ class AnnotationWidget(GenericColorButtonWidget):
             widgets=self.container.get_selected_annotation_widgets()
             if not widget in widgets:
                 widgets=[]
-        except AttributeError:
+        except (AttributeError, RuntimeError):
             widgets=[]
 
-        w=gtk.Window(gtk.WINDOW_POPUP)
+        w=Gtk.Window(Gtk.WindowType.POPUP)
         w.set_decorated(False)
         # Set white on black background
-        style=get_color_style(w, 'black', 'white')
-        w.set_style(style)
-
-        v=gtk.VBox()
-        v.set_style(style)
-        h=gtk.HBox()
-        h.set_style(style)
-        begin=gtk.Image()
-        h.pack_start(begin, expand=False)
-        padding=gtk.HBox()
+        w.get_style_context().add_class('advene_drag_icon')
+
+        v=Gtk.VBox()
+        v.get_style_context().add_class('advene_drag_icon')
+        h=Gtk.HBox()
+        h.get_style_context().add_class('advene_drag_icon')
+        begin=Gtk.Image()
+        h.pack_start(begin, False, True, 0)
+        padding=Gtk.HBox()
         # Padding
-        h.pack_start(padding, expand=True)
-        end=gtk.Image()
-        h.pack_start(end, expand=False)
-        v.pack_start(h, expand=False)
-        l=gtk.Label()
-        l.set_ellipsize(pango.ELLIPSIZE_END)
-        l.set_style(style)
-        v.pack_start(l, expand=False)
+        h.pack_start(padding, True, True, 0)
+        end=Gtk.Image()
+        h.pack_start(end, False, True, 0)
+        v.pack_start(h, False, True, 0)
+        l=Gtk.Label()
+        l.set_ellipsize(Pango.EllipsizeMode.END)
+        l.get_style_context().add_class('advene_drag_icon')
+        v.pack_start(l, False, True, 0)
 
         def set_cursor(wid, t=None, precision=None):
             if t is None:
@@ -337,7 +303,7 @@ class AnnotationWidget(GenericColorButtonWidget):
         w.set_cursor()
         w.set_size_request(long(2.5 * config.data.preferences['drag-snapshot-width']), -1)
         widget._icon=w
-        context.set_icon_widget(w, 0, 0)
+        Gtk.drag_set_icon_widget(context, w, 0, 0)
         return True
 
     def set_active(self, b):
@@ -347,12 +313,12 @@ class AnnotationWidget(GenericColorButtonWidget):
     def keypress(self, widget, event, annotation):
         """Handle the key-press event.
         """
-        if event.keyval == gtk.keysyms.e:
+        if event.keyval == Gdk.KEY_e:
             try:
                 widgets=self.container.get_selected_annotation_widgets()
                 if not widget in widgets:
                     widgets=None
-            except AttributeError:
+            except (AttributeError, RuntimeError):
                 widgets=None
             if not widgets:
                 self.controller.gui.edit_element(annotation)
@@ -360,7 +326,7 @@ class AnnotationWidget(GenericColorButtonWidget):
                 for w in widgets:
                     self.controller.gui.edit_element(w.annotation)
             return True
-        elif event.keyval == gtk.keysyms.h:
+        elif event.keyval == Gdk.KEY_h:
             if self.active:
                 event="AnnotationDeactivate"
             else:
@@ -368,11 +334,11 @@ class AnnotationWidget(GenericColorButtonWidget):
             self.active=not self.active
             self.controller.notify(event, annotation=self.annotation)
             return True
-        elif event.keyval == gtk.keysyms.F11:
+        elif event.keyval == Gdk.KEY_F11:
             menu=advene.gui.popup.Menu(annotation, controller=self.controller)
             menu.popup()
             return True
-        elif event.keyval == gtk.keysyms.space:
+        elif event.keyval == Gdk.KEY_space:
             # Play the annotation
             c=self.controller
             pos = c.create_position (value=annotation.fragment.begin,
@@ -381,13 +347,13 @@ 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 or event.keyval == gtk.keysyms.BackSpace:
+        elif event.keyval == Gdk.KEY_Delete or event.keyval == Gdk.KEY_BackSpace:
             # Delete annotation or selection
             try:
                 widgets=self.container.get_selected_annotation_widgets()
                 if not widget in widgets:
                     widgets=None
-            except AttributeError:
+            except (AttributeError, RuntimeError):
                 widgets=None
             if not widgets:
                 self.controller.delete_element(annotation)
@@ -469,17 +435,19 @@ class AnnotationWidget(GenericColorButtonWidget):
             context.line_to(int(c), height)
             context.fill()
             return
-        elif self.annotation.content.mimetype == 'image/svg+xml' and rsvg is not None:
+        elif self.annotation.content.mimetype == 'image/svg+xml' and Rsvg is not None:
             if width < 6:
                 return
             if self.annotation.content.data:
                 try:
-                    s=rsvg.Handle(data=self.annotation.content.data)
-                    scale = 1.0 * height / s.get_dimension_data()[1]
+                    s = Rsvg.Handle.new_from_data(self.annotation.content.data.encode('utf-8'))
+                    scale = 1.0 * height / s.get_dimensions().height
                     context.set_matrix(cairo.Matrix( scale, 0, 0, scale, 0, 0 ))
                     s.render_cairo(context)
-                except:
-                    print "Error when rendering SVG timeline component"
+                except Exception, e:
+                    print "Error when rendering SVG timeline component", e
+                    import traceback
+                    traceback.print_exc(e)
                     pass
             return
 
@@ -521,7 +489,7 @@ class AnnotationWidget(GenericColorButtonWidget):
             context.line_to(x, height)
             context.stroke()
 
-gobject.type_register(AnnotationWidget)
+GObject.type_register(AnnotationWidget)
 
 class AnnotationTypeWidget(GenericColorButtonWidget):
     """ Widget representing an annotation type
@@ -551,7 +519,7 @@ class AnnotationTypeWidget(GenericColorButtonWidget):
     def keypress(self, widget, event, annotationtype):
         """Handle the key-press event.
         """
-        if event.keyval == gtk.keysyms.e:
+        if event.keyval == Gdk.KEY_e:
             self.controller.gui.edit_element(annotationtype)
             return True
         return False
@@ -561,7 +529,7 @@ class AnnotationTypeWidget(GenericColorButtonWidget):
 
         Method to be implemented by subclasses
         """
-        w=self.width or 60
+        w=self.width or 120
         return (w, self.container.button_height)
 
     def draw(self, context, width, height):
@@ -621,7 +589,7 @@ class AnnotationTypeWidget(GenericColorButtonWidget):
             if ext[2] != self.width:
                 self.width=long(ext[2]) + 5
                 self.reset_surface_size(self.width, self.container.button_height)
-gobject.type_register(AnnotationTypeWidget)
+GObject.type_register(AnnotationTypeWidget)
 
 class TagWidget(GenericColorButtonWidget):
     """ Widget representing a tag
@@ -633,24 +601,25 @@ class TagWidget(GenericColorButtonWidget):
         # drag_set_icon_cursor does not work on native Gtk on MacOS X
         if not (config.data.os == 'darwin' and not os.environ.get('DISPLAY')):
             self.connect('drag-begin', self._drag_begin)
-        self.drag_source_set(gtk.gdk.BUTTON1_MASK,
-                             config.data.drag_type['tag'],
-                             gtk.gdk.ACTION_LINK)
+        self.drag_source_set(Gdk.ModifierType.BUTTON1_MASK,
+                             config.data.get_target_types('tag'),
+                             Gdk.DragAction.LINK)
         # The button can generate drags
         self.connect('drag-data-get', self.drag_sent)
 
         # Allow the entry to get drops of type application/x-color
         self.connect('drag-data-received', self.drag_received)
-        self.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
-                                 gtk.DEST_DEFAULT_HIGHLIGHT |
-                                 gtk.DEST_DEFAULT_ALL,
-                                 config.data.drag_type['color'], gtk.gdk.ACTION_COPY)
+        self.drag_dest_set(Gtk.DestDefaults.MOTION |
+                           Gtk.DestDefaults.HIGHLIGHT |
+                           Gtk.DestDefaults.ALL,
+                           config.data.get_target_types('color'),
+                           Gdk.DragAction.COPY)
 
     def drag_sent(self, widget, context, selection, targetType, eventTime):
         if targetType == config.data.target_type['tag']:
-            selection.set(selection.target, 8, unicode(self.tag).encode('utf8'))
+            selection.set(selection.get_target(), 8, unicode(self.tag).encode('utf8'))
         else:
-            self.log("Unknown target type for drag: %d" % targetType)
+            logger.warn("Unknown target type for drag: %d" % targetType)
         return True
 
     def drag_received(self, widget, context, x, y, selection, targetType, time):
@@ -658,7 +627,7 @@ class TagWidget(GenericColorButtonWidget):
         """
         if targetType == config.data.target_type['color']:
             # The structure consists in 4 unsigned shorts: r, g, b, opacity
-            (r, g, b, opacity)=struct.unpack('HHHH', selection.data)
+            (r, g, b, opacity)=struct.unpack('HHHH', selection.get_data())
             if self.container is not None and hasattr(self.container, 'controller'):
                 c=self.container.controller
                 c.package._tag_colors[self.tag]="#%04x%04x%04x" % (r, g, b)
@@ -707,7 +676,7 @@ class TagWidget(GenericColorButtonWidget):
         if self.width != w:
             self.reset_surface_size(self.width, self.container.button_height)
             #print "Resetting width", self.width
-gobject.type_register(TagWidget)
+GObject.type_register(TagWidget)
 
 class TimestampMarkWidget(GenericColorButtonWidget):
     """ Widget representing an timestamp mark (for note-taking view)
@@ -736,9 +705,9 @@ class TimestampMarkWidget(GenericColorButtonWidget):
         context.line_to(2, height)
         context.fill()
         context.stroke()
-gobject.type_register(TimestampMarkWidget)
+GObject.type_register(TimestampMarkWidget)
 
-class AnnotationRepresentation(gtk.Button):
+class AnnotationRepresentation(Gtk.Button):
     """Representation for an annotation.
     """
     def __init__(self, annotation, controller):
@@ -754,17 +723,17 @@ class AnnotationRepresentation(gtk.Button):
         enable_drag_source(self, self.annotation, self.controller)
 
     def button_press_handler(self, widget, event, annotation):
-        if event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS:
+        if event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
             menu=advene.gui.popup.Menu(annotation, controller=self.controller)
             menu.popup()
             return True
-        elif event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+        elif event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
             self.controller.gui.edit_element(annotation)
             return True
         return False
-gobject.type_register(AnnotationRepresentation)
+GObject.type_register(AnnotationRepresentation)
 
-class RelationRepresentation(gtk.Button):
+class RelationRepresentation(Gtk.Button):
     """Representation for a relation.
     """
     if config.data.os == 'linux':
@@ -777,7 +746,7 @@ class RelationRepresentation(gtk.Button):
         self.controller=controller
         self.direction=direction
         super(RelationRepresentation, self).__init__()
-        l=gtk.Label()
+        l=Gtk.Label()
         self.add(l)
         l.show()
         self.refresh()
@@ -796,27 +765,27 @@ class RelationRepresentation(gtk.Button):
             l.set_text(t)
 
     def button_press_handler(self, widget, event, relation):
-        if event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS:
+        if event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS:
             menu=advene.gui.popup.Menu(relation, controller=self.controller)
             menu.popup()
             return True
-        elif event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+        elif event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
             self.controller.gui.edit_element(relation)
             return True
         return False
-gobject.type_register(RelationRepresentation)
+GObject.type_register(RelationRepresentation)
 
-class TimestampRepresentation(gtk.Button):
+class TimestampRepresentation(Gtk.Button):
     """Representation of a timestamp.
 
     It is a button with a representative image and the timestamp displayed under it.
 
     @ivar image: the image widget
-    @type image: gtk.Image
+    @type image: Gtk.Image
     @ivar label: the label (timestamp) widget
-    @type label: gtk.Label
+    @type label: Gtk.Label
     """
-    def __init__(self, value, controller, width=None, epsilon=None, comment_getter=None, visible_label=True, bgcolor=None, callback=None):
+    def __init__(self, value, controller, width=None, epsilon=None, comment_getter=None, visible_label=True, callback=None):
         """Instanciate a new TimestampRepresentation.
 
         @param value: the timestamp value
@@ -831,8 +800,6 @@ class TimestampRepresentation(gtk.Button):
         @type comment_getter: method
         @param visible_label: should the timestamp label be displayed?
         @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
         """
@@ -851,24 +818,21 @@ class TimestampRepresentation(gtk.Button):
         # element as parameter, and adds appropriate menu items.
         self.extend_popup_menu=None
         self.highlight=False
-        self._bgcolor = None
         # Displayed text.
         self._text = '<span size="xx-small">%(timestamp)s</span>'
         self.callback = callback
 
-        box=gtk.VBox()
-        self.image=gtk.Image()
-        self.label=gtk.Label()
-        box.pack_start(self.image, expand=False)
-        box.pack_start(self.label, expand=False)
+        box=Gtk.VBox()
+        self.image=Gtk.Image()
+        self.label=Gtk.Label()
+        box.pack_start(self.image, False, True, 0)
+        box.pack_start(self.label, False, True, 0)
         if not self.visible_label:
             self.label.set_no_show_all(True)
             self.label.hide()
         self.add(box)
         self.box=box
 
-        self._bgcolor = bgcolor
-
         self.refresh()
 
         self.connect('button-press-event', self._button_press_handler)
@@ -892,19 +856,13 @@ class TimestampRepresentation(gtk.Button):
                                                                         method=self.snapshot_update_cb))
         self.connect('destroy', self.remove_rules)
 
-    def get_bgcolor(self):
-        return self._bgcolor
-    def set_bgcolor(self, color):
-        if color is None:
-            color='black'
-        if color != self._bgcolor:
-            style = get_color_style(self, color, 'white')
-            self.set_style(style)
-            self.box.set_style(style)
-            self.image.set_style(style)
-            self.label.set_style(style)
-            self._bgcolor = color
-    bgcolor = property(get_bgcolor, set_bgcolor)
+    def add_class(self, cl):
+        for w in (self, self.box, self.image):
+            w.get_style_context().add_class(cl)
+
+    def remove_class(self, cl):
+        for w in (self, self.box, self.image):
+            w.get_style_context().remove_class(cl)
 
     def set_width(self, w):
         self._width = w
@@ -965,14 +923,14 @@ class TimestampRepresentation(gtk.Button):
                     # The image was updated. Refresh the display.
                     self.refresh()
                 return False
-            gobject.timeout_add (100, refresh_timeout)
+            GObject.timeout_add (100, refresh_timeout)
         return True
 
     def _button_press_handler(self, widget, event):
-        if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS and self._value is not None:
+        if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS and self._value is not None:
             self.goto_and_refresh()
             return True
-        elif event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS and self.popup_menu is not None:
+        elif event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS and self.popup_menu is not None:
             self.popup_menu()
             return True
         return False
@@ -997,7 +955,7 @@ class TimestampRepresentation(gtk.Button):
             self.image.show()
         ts=helper.format_time(self._value)
         self.label.set_markup(self._text % { 'timestamp': ts })
-        if self.visible_label and self.label.get_child_requisition()[0] <= 1.2 * self.image.get_child_requisition()[0]:
+        if self.visible_label and self.label.get_child_requisition().width <= 1.2 * self.image.get_child_requisition().width:
             self.label.show()
         else:
             self.label.hide()
@@ -1042,7 +1000,7 @@ class TimestampRepresentation(gtk.Button):
         """
         p=self.controller.player
 
-        menu = gtk.Menu()
+        menu = Gtk.Menu()
 
         def goto(it, t):
             c=self.controller
@@ -1056,26 +1014,26 @@ class TimestampRepresentation(gtk.Button):
             self.controller.gui.save_snapshot_as(self.value)
             return True
 
-        item = gtk.MenuItem(_("Play"))
+        item = Gtk.MenuItem(_("Play"))
         item.connect('activate', goto, self.value)
         menu.append(item)
 
-        item = gtk.MenuItem(_("Refresh snapshot"))
+        item = Gtk.MenuItem(_("Refresh snapshot"))
         item.connect('activate', self.refresh_snapshot)
         menu.append(item)
 
-        item = gtk.MenuItem(_("Save as..."))
+        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 = 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 = Gtk.MenuItem(_("Adjust timestamp"))
             item.connect('activate', lambda i: self.set_value(self.controller.gui.adjust_timestamp(self.get_value())))
             menu.append(item)
 
@@ -1085,10 +1043,10 @@ class TimestampRepresentation(gtk.Button):
         menu.show_all()
 
         if popup:
-            menu.popup(None, None, None, 0, gtk.get_current_event_time())
+            menu.popup_at_pointer(None)
         return menu
 
     def set_color(self, color):
         self.bgcolor = color
 
-gobject.type_register(TimestampRepresentation)
+GObject.type_register(TimestampRepresentation)
diff --git a/lib/advene/model/__init__.py b/lib/advene/model/__init__.py
index dc5e3f5..0e08aee 100644
--- a/lib/advene/model/__init__.py
+++ b/lib/advene/model/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/_impl.py b/lib/advene/model/_impl.py
index 6a30726..5992a1e 100644
--- a/lib/advene/model/_impl.py
+++ b/lib/advene/model/_impl.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/annotation.py b/lib/advene/model/annotation.py
index 4208da9..00956c1 100644
--- a/lib/advene/model/annotation.py
+++ b/lib/advene/model/annotation.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/bundle.py b/lib/advene/model/bundle.py
index b3137f9..c0f8185 100644
--- a/lib/advene/model/bundle.py
+++ b/lib/advene/model/bundle.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/constants.py b/lib/advene/model/constants.py
index 21b714d..3a10114 100644
--- a/lib/advene/model/constants.py
+++ b/lib/advene/model/constants.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/content.py b/lib/advene/model/content.py
index 3bd45a8..6f2cca6 100644
--- a/lib/advene/model/content.py
+++ b/lib/advene/model/content.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,6 +16,9 @@
 # along with Advene; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
+import logging
+logger = logging.getLogger(__name__)
+
 from cStringIO import StringIO
 import urllib
 try:
@@ -27,6 +30,7 @@ except ImportError:
     except ImportError:
         json = None
 
+import advene.core.config as config
 import advene.model.modeled as modeled
 import advene.model.viewable as viewable
 
@@ -114,18 +118,25 @@ class Content(modeled.Modeled,
         """Check if the data is textual, according to mimetype
         """
         mt = self.mimetype
-        return (mt.startswith('text') or 'x-advene' in mt or 'xml' in mt or 'javascript' in mt)
+        return (mt.startswith('text') or 'x-advene' in mt or 'xml' in mt or 'javascript' in mt or mt in config.data.text_mimetypes)
 
     def getData(self):
         """Return the data associated to the Content"""
-        data = StringIO()
-        advene.model.util.dom.printElementText(self._getModel(), data)
+        nodes = self._getModel().childNodes
+        if len(nodes) == 1 and nodes[0].nodeType == nodes[0].TEXT_NODE:
+            d = nodes[0].wholeText
+        else:
+            data = StringIO()
+            advene.model.util.dom.printElementText(self._getModel(), data)
+            d = data.getvalue()
         if self._getModel().hasAttributeNS(None, 'encoding'):
             encoding = self._getModel().getAttributeNS(None, 'encoding')
         else:
             encoding = 'utf-8'
-        d=data.getvalue().decode(encoding)
-        return d
+        if isinstance(d, unicode):
+            return d
+        else:
+            return d.decode(encoding)
 
     def setData(self, data):
         """Set the content's data"""
@@ -137,10 +148,13 @@ class Content(modeled.Modeled,
             self.delUri()
             if not self.isTextual():
                 encoding = 'base64'
+                data = data.encode(encoding)
             else:
                 encoding = 'utf-8'
+                if isinstance(data, str):
+                    data = data.decode('utf-8')
             self._getModel().setAttributeNS(None, 'encoding', encoding)
-            new = self._getDocument().createTextNode(data.encode(encoding))
+            new = self._getDocument().createTextNode(data)
             self._getModel().appendChild(new)
 
     def delData(self):
@@ -256,6 +270,11 @@ class Content(modeled.Modeled,
         It returns a Node object whose attributes are the different
         attributes and children of the node.
 
+        JSON data
+        =========
+
+        It returns the structure corresponding to the JSON data.
+
         @return: a data structure
         """
         # FIXME: the right way to implement this would be to subclass the Content
@@ -271,7 +290,11 @@ class Content(modeled.Modeled,
             return StructuredContent(self.data)
         elif self.mimetype == 'application/json':
             if json is not None:
-                return json.loads(self.data)
+                try:
+                    return json.loads(self.data)
+                except ValueError:
+                    logger.error("Cannot interpret content as json: %s", self.data)
+                    return self.data
             else:
                 return {'data': self.data}
         elif self.mimetype == 'application/x-advene-values':
@@ -394,4 +417,4 @@ class TestPlugin (ContentPlugin.withType ('text/*')):
     def hello(self):
         return "TEST (%s)" % self.__content.data
 
-ContentPlugin.register (TestPlugin, 'http://advene.liris.cnrs.fr/plugins/test')
+ContentPlugin.register (TestPlugin, 'http://advene.org/plugins/test')
diff --git a/lib/advene/model/context.py b/lib/advene/model/context.py
index 475632f..fbb0fa0 100644
--- a/lib/advene/model/context.py
+++ b/lib/advene/model/context.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/exception.py b/lib/advene/model/exception.py
index 7ed2a9c..ce941f9 100644
--- a/lib/advene/model/exception.py
+++ b/lib/advene/model/exception.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/fragment.py b/lib/advene/model/fragment.py
index fb6f505..a648b99 100644
--- a/lib/advene/model/fragment.py
+++ b/lib/advene/model/fragment.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/modeled.py b/lib/advene/model/modeled.py
index 9a3bd7a..a20e13f 100644
--- a/lib/advene/model/modeled.py
+++ b/lib/advene/model/modeled.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/package.py b/lib/advene/model/package.py
index a69509e..aa7aece 100644
--- a/lib/advene/model/package.py
+++ b/lib/advene/model/package.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/query.py b/lib/advene/model/query.py
index c0b15b6..5362696 100644
--- a/lib/advene/model/query.py
+++ b/lib/advene/model/query.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/resources.py b/lib/advene/model/resources.py
index bd58dae..6b7228f 100644
--- a/lib/advene/model/resources.py
+++ b/lib/advene/model/resources.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/schema.py b/lib/advene/model/schema.py
index 9df2ea5..a89e883 100644
--- a/lib/advene/model/schema.py
+++ b/lib/advene/model/schema.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/tal/__init__.py b/lib/advene/model/tal/__init__.py
index dc5e3f5..0e08aee 100644
--- a/lib/advene/model/tal/__init__.py
+++ b/lib/advene/model/tal/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/tal/context.py b/lib/advene/model/tal/context.py
index b20e203..9e256c4 100644
--- a/lib/advene/model/tal/context.py
+++ b/lib/advene/model/tal/context.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,6 +16,7 @@
 # along with Advene; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
+import copy
 import sys
 
 from cStringIO import StringIO
@@ -238,6 +239,18 @@ class AdveneContext(_advene_context):
 
     defaultMethods = staticmethod(defaultMethods)
 
+    def checkpoint(self):
+        """Checkpoint locals/globals variables to preserve state
+        """
+        self._cached_locals = copy.copy(self.locals)
+        self._cached_globals = copy.copy(self.globals)
+
+    def restore(self):
+        """Restore locals/globals from a previous checkpoint state.
+        """
+        self.locals = copy.copy(self._cached_locals)
+        self.globals = copy.copy(self._cached_globals)
+
     def __str__ (self):
         return u"<pre>AdveneContext\nGlobals:\n\t%s\nLocals:\n\t%s</pre>" % (
                 "\n\t".join([ "%s: %s" % (k, unicode(v).replace("<", "<"))
diff --git a/lib/advene/model/tal/global_methods.py b/lib/advene/model/tal/global_methods.py
index f297b56..02787d5 100644
--- a/lib/advene/model/tal/global_methods.py
+++ b/lib/advene/model/tal/global_methods.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -340,7 +340,6 @@ def formatted (target, context):
     """
     import advene.model.fragment
     from advene.util.helper import format_time
-    import time
 
     if isinstance(target, int) or isinstance(target, long):
         return format_time(target)
@@ -356,6 +355,8 @@ def formatted (target, context):
     for k in res.keys():
         t=getattr(target, k)
         res[k] = format_time(t)
+    res['begin_s'] = target.begin / 1000.
+    res['end_s'] = target.end / 1000.
     return res
 
 def first (target, context):
diff --git a/lib/advene/model/test.py b/lib/advene/model/test.py
index ee4ffbc..8bfa4e1 100644
--- a/lib/advene/model/test.py
+++ b/lib/advene/model/test.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/util/__init__.py b/lib/advene/model/util/__init__.py
index dc5e3f5..0e08aee 100644
--- a/lib/advene/model/util/__init__.py
+++ b/lib/advene/model/util/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/util/auto_properties.py b/lib/advene/model/util/auto_properties.py
index 1b58752..6de0ba6 100644
--- a/lib/advene/model/util/auto_properties.py
+++ b/lib/advene/model/util/auto_properties.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/util/choice_tree.py b/lib/advene/model/util/choice_tree.py
index 1588d9a..e8bf132 100644
--- a/lib/advene/model/util/choice_tree.py
+++ b/lib/advene/model/util/choice_tree.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/util/dom.py b/lib/advene/model/util/dom.py
index 8238a2f..359f0fb 100644
--- a/lib/advene/model/util/dom.py
+++ b/lib/advene/model/util/dom.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/util/locale_cmp.py b/lib/advene/model/util/locale_cmp.py
index b0f133c..ae0407f 100644
--- a/lib/advene/model/util/locale_cmp.py
+++ b/lib/advene/model/util/locale_cmp.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/util/mimetype.py b/lib/advene/model/util/mimetype.py
index 33ae1af..51ed7d6 100644
--- a/lib/advene/model/util/mimetype.py
+++ b/lib/advene/model/util/mimetype.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/util/uri.py b/lib/advene/model/util/uri.py
index 3e158a7..f9af2d7 100644
--- a/lib/advene/model/util/uri.py
+++ b/lib/advene/model/util/uri.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/view.py b/lib/advene/model/view.py
index f26b74d..df7f2bf 100644
--- a/lib/advene/model/view.py
+++ b/lib/advene/model/view.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/viewable.py b/lib/advene/model/viewable.py
index 6c49005..cad4c38 100644
--- a/lib/advene/model/viewable.py
+++ b/lib/advene/model/viewable.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/model/zippackage.py b/lib/advene/model/zippackage.py
index 5a19579..14aa84e 100644
--- a/lib/advene/model/zippackage.py
+++ b/lib/advene/model/zippackage.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -275,7 +275,7 @@ class ZipPackage:
 
         for (dirpath, dirnames, filenames) in os.walk(self._tempdir):
             # Ignore RCS directory paths
-            for d in ('.svn', 'CVS', '_darcs', '.bzr'):
+            for d in ('.svn', 'CVS', '_darcs', '.bzr', '.git'):
                 if d in dirnames:
                     dirnames.remove(d)
 
diff --git a/lib/advene/player/__init__.py b/lib/advene/player/__init__.py
index dc5e3f5..0e08aee 100644
--- a/lib/advene/player/__init__.py
+++ b/lib/advene/player/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/player/dummy.py b/lib/advene/player/dummy.py
index b017224..edaf5c9 100644
--- a/lib/advene/player/dummy.py
+++ b/lib/advene/player/dummy.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -300,7 +300,7 @@ class Player:
     def set_visual(self, xid):
         """Set the window id for the video output.
 
-        It is widget.window.xid on X, widget.window.handle on Win32.
+        It is widget.get_window().xid on X, widget.get_window().handle on Win32.
         """
         return True
 
diff --git a/lib/advene/player/gstreamer.py b/lib/advene/player/gstreamer.py
index be5cf7c..245a9ee 100644
--- a/lib/advene/player/gstreamer.py
+++ b/lib/advene/player/gstreamer.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,9 +18,7 @@
 #
 """Gstreamer player interface.
 
-Based on gst >= 0.10 API.
-
-See http://pygstdocs.berlios.de/pygst-reference/index.html for API
+Based on gst >= 1.0 API.
 
 Use appsink to get data out of a pipeline:
 https://thomas.apestaart.org/thomas/trac/browser/tests/gst/crc/crc.py
@@ -33,10 +31,6 @@ from advene.util.helper import format_time
 import os
 import time
 
-import gobject
-gobject.threads_init()
-
-import gtk
 import sys
 
 if config.data.os == 'win32':
@@ -55,29 +49,29 @@ if config.data.os == 'win32':
         os.environ['PATH'] = os.pathsep.join( (os.path.join( binpath, 'bin'), gstpath) ).encode(fsenc)
 
 try:
-    import pygst
-    pygst.require('0.10')
-    import gst
+    import gi
+    gi.require_version('Gst', '1.0')
+    gi.require_version('GstVideo', '1.0')
+    from gi.repository import GObject, Gst
+    from gi.repository import GstVideo
+    if config.data.os == 'linux':
+        from gi.repository import GdkX11
+    from gi.repository import Gdk
+    from gi.repository import Gtk
     from advene.util.snapshotter import Snapshotter
-    svgelement = None
-    # First try rsvgoverlay
-    if gst.element_factory_find('rsvgoverlay'):
-        svgelement = 'rsvgoverlay'
-    else:
-        # Not compiled. Try to fallback on the python version.
-        try:
-            import advene.util.svgoverlay
-            svgelement = 'pysvgoverlay'
-        except ImportError:
-            print "SVG overlay support not present"
-    print "SVG: Using %s element" % (svgelement or "None")
+    svgelement = 'rsvgoverlay'
+    GObject.threads_init()
+    Gst.init(None)
+    if True or not hasattr(Gst.Structure, '__getitem__'):
+        # Monkey patch __getitem__
+        Gst.Structure.__getitem__ = Gst.Structure.get_value
 except ImportError:
-    gst=None
+    Gst=None
 
 name="GStreamer video player"
 
 def register(controller):
-    if gst is None:
+    if Gst is None:
         return False
     controller.register_player(Player)
     return True
@@ -216,13 +210,13 @@ class Player:
         if config.data.os == 'win32':
             sink='directdrawsink'
 
-        self.player = gst.element_factory_make("playbin", "player")
+        self.player = Gst.ElementFactory.make("playbin", "player")
 
-        self.video_sink = gst.Bin()
+        self.video_sink = Gst.Bin()
 
         # TextOverlay does not seem to be present in win32 installer. Do without it.
         try:
-            self.captioner=gst.element_factory_make('textoverlay', 'captioner')
+            self.captioner=Gst.ElementFactory.make('textoverlay', 'captioner')
             # FIXME: move to config.data
             self.captioner.props.font_desc='Sans 24'
             #self.caption.props.text="Foobar"
@@ -232,42 +226,41 @@ class Player:
         self.imageoverlay=None
         if config.data.player['svg'] and svgelement:
             try:
-                self.imageoverlay=gst.element_factory_make(svgelement, 'overlay')
+                self.imageoverlay=Gst.ElementFactory.make(svgelement, 'overlay')
                 self.imageoverlay.props.fit_to_frame = True
             except:
                 pass
 
-        self.imagesink = gst.element_factory_make(sink, 'sink')
+        self.imagesink = Gst.ElementFactory.make(sink, 'sink')
 
         elements=[]
         if self.captioner is not None:
             elements.append(self.captioner)
         if self.imageoverlay is not None:
-            elements.append(gst.element_factory_make('queue'))
-            elements.append(gst.element_factory_make('ffmpegcolorspace'))
+            elements.append(Gst.ElementFactory.make('queue', None))
+            elements.append(Gst.ElementFactory.make('videoconvert', None))
             elements.append(self.imageoverlay)
-            # Note: do not remove the (seemingly superfluous)
-            # ffmpegcolorspace here, else it blocks the pipeline for
-            # some unknown reason.
-            elements.append(gst.element_factory_make('ffmpegcolorspace'))
+            elements.append(Gst.ElementFactory.make('videoconvert', None))
 
         if sink == 'xvimagesink':
             # Imagesink accepts both rgb/yuv and is able to do scaling itself.
             elements.append( self.imagesink )
         else:
-            csp=gst.element_factory_make('ffmpegcolorspace')
+            csp=Gst.ElementFactory.make('videoconvert', None)
             elements.extend( (csp, self.imagesink) )
 
-        self.video_sink.add(*elements)
+        for el in elements:
+            self.video_sink.add(el)
         if len(elements) >= 2:
-            gst.element_link_many(*elements)
+            for src, dst in zip(elements, elements[1:]):
+                src.link(dst)
 
         self.log("gstreamer: using " + sink)
 
         # Note: it is crucial to make ghostpad an attribute, so that
         # it is not garbage-collected at the end of the build_pipeline
         # method.
-        self._video_ghostpad = gst.GhostPad('sink', elements[0].get_pad('video_sink') or elements[0].get_pad('sink'))
+        self._video_ghostpad = Gst.GhostPad.new('sink', elements[0].get_static_pad('video_sink') or elements[0].get_static_pad('sink'))
         # Idem for elements
         self._video_elements = elements
 
@@ -275,20 +268,24 @@ class Player:
 
         self.player.props.video_sink=self.video_sink
 
-        if gst.element_factory_find('scaletempo'):
+        scaletempo = Gst.ElementFactory.make('scaletempo', None)
+        if scaletempo:
             # The scaletempo element is present. Use it.
-            self.audio_sink = gst.Bin()
+            self.audio_sink = Gst.Bin()
             elements = [
-                gst.element_factory_make('scaletempo'),
-                gst.element_factory_make('autoaudiosink'),
+                scaletempo,
+                Gst.ElementFactory.make('autoaudiosink', None),
                 ]
-            self.audio_sink.add(*elements)
+            for el in elements:
+                self.audio_sink.add(el)
             if len(elements) >= 2:
-                gst.element_link_many(*elements)
+                for src, dst in zip(elements, elements[1:]):
+                    src.link(dst)
+
             self.player.props.audio_sink = self.audio_sink
             # Keep a ref. on elements
             self._audio_elements = elements
-            self._audio_ghostpad = gst.GhostPad('sink', elements[0].get_pad('audio_sink') or elements[0].get_pad('sink'))
+            self._audio_ghostpad = Gst.GhostPad.new('sink', elements[0].get_static_pad('audio_sink') or elements[0].get_static_pad('sink'))
             self.audio_sink.add_pad(self._audio_ghostpad)
 
 
@@ -311,10 +308,10 @@ class Player:
         return long(v)
 
     def current_status(self):
-        st=self.player.get_state()[1]
-        if st == gst.STATE_PLAYING:
+        st = self.player.get_state(100)[1]
+        if st == Gst.State.PLAYING:
             return self.PlayingStatus
-        elif st == gst.STATE_PAUSED:
+        elif st == Gst.State.PAUSED:
             return self.PauseStatus
         else:
             return self.UndefinedStatus
@@ -323,11 +320,12 @@ class Player:
         """Returns the current position in ms.
         """
         try:
-            pos, format = self.player.query_position(gst.FORMAT_TIME)
-        except:
+            pos = self.player.query_position(Gst.Format.TIME)[1]
+        except Exception, e:
+            print "Current position exception", e
             position = 0
         else:
-            position = pos * 1.0 / gst.MSECOND
+            position = pos * 1.0 / Gst.MSECOND
         return position
 
     def dvd_uri(self, title=None, chapter=None):
@@ -336,11 +334,11 @@ class Player:
         return "dvd://"
 
     def check_uri(self):
-        uri=self.player.get_property('uri')
-        if uri and gst.uri_is_valid(uri):
+        uri = self.player.get_property('current-uri') or self.player.get_property('uri')
+        if uri and Gst.uri_is_valid(uri):
             return True
         else:
-            self.log(u"Invalid URI" + unicode(uri))
+            self.log(u"Invalid URI " + unicode(uri))
             return False
 
     def get_media_position(self, origin, key):
@@ -350,13 +348,9 @@ class Player:
         if not self.check_uri():
             return
         if self.current_status() == self.UndefinedStatus:
-            self.player.set_state(gst.STATE_PAUSED)
-        p = long(self.position2value(position) * gst.MSECOND)
-        event = gst.event_new_seek(self.rate, gst.FORMAT_TIME,
-                                   gst.SEEK_FLAG_FLUSH | gst.SEEK_FLAG_ACCURATE,
-                                   gst.SEEK_TYPE_SET, p,
-                                   gst.SEEK_TYPE_NONE, 0)
-        res = self.player.send_event(event)
+            self.player.set_state(Gst.State.PAUSED)
+        p = long(self.position2value(position) * Gst.MSECOND)
+        res = self.player.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.ACCURATE, p)
         if not res:
             raise InternalException
 
@@ -365,15 +359,15 @@ class Player:
             return
         if position != 0:
             self.set_media_position(position)
-        self.player.set_state(gst.STATE_PLAYING)
+        self.player.set_state(Gst.State.PLAYING)
 
     def pause(self, position=0):
         if not self.check_uri():
             return
         if self.status == self.PlayingStatus:
-            self.player.set_state(gst.STATE_PAUSED)
+            self.player.set_state(Gst.State.PAUSED)
         else:
-            self.player.set_state(gst.STATE_PLAYING)
+            self.player.set_state(Gst.State.PLAYING)
 
     def resume(self, position=0):
         self.pause(position)
@@ -381,10 +375,10 @@ class Player:
     def stop(self, position=0):
         if not self.check_uri():
             return
-        self.player.set_state(gst.STATE_READY)
+        self.player.set_state(Gst.State.READY)
 
     def exit(self):
-        self.player.set_state(gst.STATE_NULL)
+        self.player.set_state(Gst.State.NULL)
 
     def playlist_add_item(self, item):
         self.videofile=item
@@ -411,16 +405,9 @@ class Player:
         else:
             return [ ]
 
-    def fullres_snapshot_taken(self, buffer):
+    def fullres_snapshot_taken(self, data):
         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 } )
+            s=Snapshot(data)
             self.fullres_snapshot_callback(snapshot=s)
             self.fullres_snapshot_callback = None
 
@@ -442,16 +429,9 @@ class Player:
                 self.fullres_snapshotter.start()
         self.fullres_snapshotter.enqueue(position)
 
-    def snapshot_taken(self, buffer):
+    def snapshot_taken(self, data):
         if self.snapshot_notify:
-            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 } )
+            s=Snapshot(data)
             self.snapshot_notify(s)
 
     def async_snapshot(self, position):
@@ -463,10 +443,10 @@ class Player:
             # value minus 50 and 20ms (the async snapshotter goes to the
             # specified position then takes the video buffer which may then
             # be later) and its value aligned to a frame boundary
-            for pos in sorted((t - 50,
-                               t - 20,
-                               t / config.data.preferences['default-fps'] * config.data.preferences['default-fps'],
-                               t)):
+            for pos in sorted((max(20, t - 50),
+                               max(20, t - 20),
+                               max(20, t / config.data.preferences['default-fps'] * config.data.preferences['default-fps']),
+                               max(20, t))):
                 self.snapshotter.enqueue(pos)
 
     def snapshot(self, position):
@@ -508,11 +488,11 @@ class Player:
             s.url=self.videofile
 
         try:
-            dur, format = self.player.query_duration(gst.FORMAT_TIME)
+            dur = self.player.query_duration(Gst.Format.TIME)[1]
         except:
             duration = 0
         else:
-            duration = dur * 1.0 / gst.MSECOND
+            duration = dur * 1.0 / Gst.MSECOND
 
         s.length=duration
         s.position=self.current_position()
@@ -647,9 +627,9 @@ class Player:
         if xid:
             self.log("Reparent " + hex(xid))
 
-            gtk.gdk.display_get_default().sync()
+            Gdk.Display().get_default().sync()
 
-            self.imagesink.set_xwindow_id(xid)
+            self.imagesink.set_window_handle(xid)
         self.imagesink.set_property('force-aspect-ratio', True)
         self.imagesink.expose()
         #gtk.gdk.threads_leave()
@@ -662,12 +642,14 @@ class Player:
         return True
 
     def set_widget(self, widget):
+        # For win32, see
+        # http://stackoverflow.com/questions/25823541/get-the-window-handle-in-pygi
         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)
+        self.player.set_state(Gst.State.READY)
         # Rebuild the pipeline
         self.build_pipeline()
         if self.videofile is not None:
@@ -676,9 +658,10 @@ class Player:
         return True
 
     def on_sync_message(self, bus, message):
-        if message.structure is None:
+        s = message.get_structure() 
+        if s is None:
             return True
-        if message.structure.get_name() == 'prepare-xwindow-id':
+        if s.get_name() == 'prepare-window-handle':
             self.reparent(self.xid)
         return True
 
@@ -702,14 +685,14 @@ class Player:
             return
         self.rate = rate
         try:
-            p = self.player.query_position(gst.FORMAT_TIME)[0]
-        except gst.QueryError:
+            p = self.player.query_position(Gst.Format.TIME)[1]
+        except Gst.QueryError:
             self.log("Error in set_rate (query position)")
             return
-        event = gst.event_new_seek(self.rate, gst.FORMAT_TIME,
-                                   gst.SEEK_FLAG_FLUSH,
-                                   gst.SEEK_TYPE_SET, long(p),
-                                   gst.SEEK_TYPE_NONE, 0)
+        event = Gst.Event.new_seek(self.rate, Gst.Format.TIME,
+                                   Gst.SeekFlags.FLUSH,
+                                   Gst.SeekType.SET, long(p),
+                                   Gst.SeekType.NONE, 0)
         if event:
             res = self.player.send_event(event)
             if not res:
@@ -733,42 +716,40 @@ class Player:
     def fullscreen(self, connect=None):
 
         def keypress(widget, event):
-            if event.keyval == gtk.keysyms.Escape:
+            if event.keyval == Gdk.KEY_Escape:
                 self.unfullscreen()
                 return True
             return False
 
         def buttonpress(widget, event):
-            if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
+            if event.button == 1 and event.type == Gdk.EventType._2BUTTON_PRESS:
                 self.unfullscreen()
                 return True
             return False
 
         if self.fullscreen_window is None:
-            self.fullscreen_window=gtk.Window()
-            self.fullscreen_window.add_events(gtk.gdk.BUTTON_PRESS_MASK |
-                                              gtk.gdk.BUTTON_RELEASE_MASK |
-                                              gtk.gdk.KEY_PRESS_MASK |
-                                              gtk.gdk.KEY_RELEASE_MASK |
-                                              gtk.gdk.SCROLL_MASK)
+            self.fullscreen_window=Gtk.Window()
+            self.fullscreen_window.set_name("fullscreen_player")
+            self.fullscreen_window.add_events(Gdk.EventMask.BUTTON_PRESS_MASK |
+                                              Gdk.EventMask.BUTTON_RELEASE_MASK |
+                                              Gdk.EventMask.KEY_PRESS_MASK |
+                                              Gdk.EventMask.KEY_RELEASE_MASK |
+                                              Gdk.EventMask.SCROLL_MASK)
             self.fullscreen_window.connect('key-press-event', keypress)
             self.fullscreen_window.connect('button-press-event', buttonpress)
             self.fullscreen_window.connect('destroy', self.unfullscreen)
             if connect is not None:
                 connect(self.fullscreen_window)
 
-            style=self.fullscreen_window.get_style().copy()
-            black=gtk.gdk.color_parse('black')
-            for state in (gtk.STATE_ACTIVE, gtk.STATE_NORMAL,
-                          gtk.STATE_SELECTED, gtk.STATE_INSENSITIVE,
-                          gtk.STATE_PRELIGHT):
-                style.bg[state]=black
-                style.base[state]=black
-            self.fullscreen_window.set_style(style)
+            # Use black background
+            css_provider = Gtk.CssProvider()
+            css_provider.load_from_data("#fullscreen_player { color:#fff; background-color: #000; }")
+            context = Gtk.StyleContext()
+            context.add_provider_for_screen(Gdk.Screen.get_default(), css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
 
         if config.data.os == 'darwin':
             # Get geometry of the first monitor
-            r = gtk.gdk.screen_get_default().get_monitor_geometry(0)
+            r = Gdk.screen_get_default().get_monitor_geometry(0)
             self.fullscreen_window.set_decorated(False)
             self.fullscreen_window.set_size_request(r.width, r.height)
             #self.fullscreen_window.move(r.x, r.y)
@@ -776,21 +757,21 @@ class Player:
             self.fullscreen_window.show()
         else:
             self.fullscreen_window.show()
-            self.fullscreen_window.window.fullscreen()
+            self.fullscreen_window.get_window().fullscreen()
 
         self.fullscreen_window.grab_focus()
 
         if config.data.os == 'win32':
-            self.reparent(self.fullscreen_window.window.handle)
+            self.reparent(self.fullscreen_window.get_window().get_handle())
         else:
-            self.reparent(self.fullscreen_window.window.xid)
+            self.reparent(self.fullscreen_window.get_window().get_xid())
 
     def unfullscreen(self, *p):
         self.reparent(self.xid)
         if not self.overlay.data and self.imageoverlay:
             # Reset imageoverlay data in any case
             self.imageoverlay.props.data = None
-        if self.fullscreen_window.window:
+        if self.fullscreen_window.get_window():
             self.fullscreen_window.hide()
         else:
             # It has been destroyed
@@ -821,7 +802,7 @@ class Player:
         indentstr = depth * 8 * ' '
 
         # print element path and factory
-        path = e.get_path_string() + (isinstance(e, gst.Bin) and '/' or '')
+        path = e.get_path_string() + (isinstance(e, Gst.Bin) and '/' or '')
         factory = e.get_factory()
         if factory is not None:
             ret.append( '%s%s (%s)' % (indentstr, path, factory.get_name()) )
@@ -833,8 +814,8 @@ class Player:
             name = p.get_name()
 
             # negotiated capabilities
-            caps = p.get_negotiated_caps()
-            if caps: capsname = caps[0].get_name()
+            caps = p.get_current_caps()
+            if caps: capsname = caps.get_structure(0).get_name()
             elif showcaps: capsname = '; '.join(s.to_string() for s in set(p.get_caps()))
             else: capsname = None
 
@@ -844,7 +825,7 @@ class Player:
             if p.is_blocked(): flags.append('BLOCKED')
 
             # direction
-            direc = (p.get_direction() is gst.PAD_SRC) and "=>" or "<="
+            direc = (p.get_direction() is Gst.PadDirection.SRC) and "=>" or "<="
 
             # peer
             peer = p.get_peer()
@@ -852,7 +833,7 @@ class Player:
             else: peerpath = None
 
             # ghost target
-            if isinstance(p, gst.GhostPad):
+            if isinstance(p, Gst.GhostPad):
                 target = p.get_target()
                 if target: ghostpath = target.get_path_string()
                 else: ghostpath = None
@@ -868,7 +849,7 @@ class Player:
 
             #if peerpath and peerpath.find('proxy')!=-1: print peer
             ret.append( ''.join(line) )
-        if recurse and isinstance(e, gst.Bin):
+        if recurse and isinstance(e, Gst.Bin):
             ret.extend( self.dump_bin(e, depth+1, recurse) )
         return ret
 
diff --git a/lib/advene/player/gstrecorder.py b/lib/advene/player/gstrecorder.py
index b799dbc..29e487c 100644
--- a/lib/advene/player/gstrecorder.py
+++ b/lib/advene/player/gstrecorder.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@
 #
 """Gstreamer recorder interface.
 
-Based on gst >= 0.10 API.
+Based on gst >= 1.0 API.
 """
 
 import tempfile
@@ -26,22 +26,22 @@ import time
 
 import advene.core.config as config
 
-import gobject
-gobject.threads_init()
+from gi.repository import GObject
+GObject.threads_init()
 
 try:
-    import pygst
-    pygst.require('0.10')
-    import gst
+    import gi
+    gi.require_version('Gst', '1.0')
+    from gi.repository import Gst
 except ImportError:
-    gst=None
+    Gst=None
 
 import os
 
 name="GStreamer video recorder"
 
 def register(controller=None):
-    if gst is None:
+    if Gst is None:
         return False
     controller.register_player(Player)
     return True
@@ -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.5 ! 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')
@@ -148,9 +148,10 @@ class Player:
         bus = self.pipeline.get_bus()
         bus.enable_sync_message_emission()
         def on_sync_message(bus, message):
-            if message.structure is None:
+            s = message.get_structure()
+            if s is None:
                 return
-            if message.structure.get_name() == 'prepare-xwindow-id' and self.xid is not None:
+            if s.get_name() == 'prepare-xwindow-id' and self.xid is not None:
                 message.src.set_xwindow_id(self.xid)
                 if hasattr(message.src.props, 'force-aspect-ratio'):
                     message.src.set_property("force-aspect-ratio", True)
@@ -174,9 +175,9 @@ class Player:
         if self.player is None:
             return self.UndefinedStatus
         st=self.player.get_state()[1]
-        if st == gst.STATE_PLAYING:
+        if st == Gst.State.PLAYING:
             return self.PlayingStatus
-        elif st == gst.STATE_PAUSED:
+        elif st == Gst.State.PAUSED:
             return self.PauseStatus
         else:
             return self.UndefinedStatus
@@ -187,11 +188,11 @@ class Player:
         if self.player is None:
             return 0
         try:
-            pos, format = self.player.query_position(gst.FORMAT_TIME)
+            pos, format = self.player.query_position(Gst.Format.TIME)
         except:
             position = 0
         else:
-            position = pos * 1.0 / gst.MSECOND
+            position = pos * 1.0 / Gst.MSECOND
         return position
 
     def dvd_uri(self, title=None, chapter=None):
@@ -218,7 +219,7 @@ class Player:
         self.build_pipeline()
         if self.player is None:
             return
-        self.player.set_state(gst.STATE_PLAYING)
+        self.player.set_state(Gst.State.PLAYING)
 
     def pause(self, position=None):
         # Ignore
@@ -232,12 +233,12 @@ class Player:
         self.stream_duration=self.current_position
         if self.player is None:
             return
-        self.player.set_state(gst.STATE_NULL)
+        self.player.set_state(Gst.State.NULL)
 
     def exit(self):
         if self.player is None:
             return
-        self.player.set_state(gst.STATE_NULL)
+        self.player.set_state(Gst.State.NULL)
 
     def playlist_add_item(self, item):
         if item is None:
@@ -358,8 +359,8 @@ class Player:
 
     def set_visual(self, xid):
         self.xid = xid
-        if self.imagesink.implements_interface(gst.interfaces.XOverlay):
-            realsink = autovideosink.get_by_interface(gst.interfaces.XOverlay)
+        if self.imagesink.implements_interface(Gst.interfaces.XOverlay):
+            realsink = self.autovideosink.get_by_interface(Gst.interfaces.XOverlay)
             if realsink:
                 realsink.set_xwindow_id(self.xid)
                 if hasattr(realsink.props, 'force-aspect-ratio'):
@@ -368,7 +369,7 @@ class Player:
 
     def restart_player(self):
         # FIXME: destroy the previous player
-        self.player.set_state(gst.STATE_READY)
+        self.player.set_state(Gst.State.READY)
         # Rebuilt the pipeline
         self.build_pipeline()
         self.playlist_add_item(self.videofile)
diff --git a/lib/advene/player/vlcctypes.py b/lib/advene/player/vlcctypes.py
index dc2e46e..7d8418e 100644
--- a/lib/advene/player/vlcctypes.py
+++ b/lib/advene/player/vlcctypes.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2009-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2009-2017 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/__init__.py b/lib/advene/plugins/__init__.py
index dc5e3f5..0e08aee 100644
--- a/lib/advene/plugins/__init__.py
+++ b/lib/advene/plugins/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/aeidon_import.py b/lib/advene/plugins/aeidon_import.py
index df563df..ebe437c 100644
--- a/lib/advene/plugins/aeidon_import.py
+++ b/lib/advene/plugins/aeidon_import.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/annotationgraph.py b/lib/advene/plugins/annotationgraph.py
index bfbf8ac..5c31fcd 100644
--- a/lib/advene/plugins/annotationgraph.py
+++ b/lib/advene/plugins/annotationgraph.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/anvil.py b/lib/advene/plugins/anvil.py
index 775fd79..3bf537c 100644
--- a/lib/advene/plugins/anvil.py
+++ b/lib/advene/plugins/anvil.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/brltty.py b/lib/advene/plugins/brltty.py
index 09d05c4..d7dc88a 100644
--- a/lib/advene/plugins/brltty.py
+++ b/lib/advene/plugins/brltty.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@
 #
 
 from gettext import gettext as _
-import gobject
+from gi.repository import GObject
 
 try:
     import brlapi
@@ -69,8 +69,8 @@ def register(controller=None):
         try:
             engine.init_brlapi()
             if engine.brlconnection is not None:
-                gobject.io_add_watch(engine.brlconnection.fileDescriptor,
-                                     gobject.IO_IN,
+                GObject.io_add_watch(engine.brlconnection.fileDescriptor,
+                                     GObject.IO_IN,
                                      engine.input_handler)
                 method=engine.action_brldisplay
                 engine.brldisplay("Advene connected")
diff --git a/lib/advene/plugins/cinelab.py b/lib/advene/plugins/cinelab.py
index a275217..1d49263 100644
--- a/lib/advene/plugins/cinelab.py
+++ b/lib/advene/plugins/cinelab.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2010-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2010-2017 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/cutter.py b/lib/advene/plugins/cutter.py
index a2d256e..87cff15 100644
--- a/lib/advene/plugins/cutter.py
+++ b/lib/advene/plugins/cutter.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -24,8 +24,8 @@ from gettext import gettext as _
 import os
 import urllib
 
-import gobject
-import gst
+from gi.repository import GObject
+from gi.repository import Gst
 
 import advene.core.config as config
 from advene.util.importer import GenericImporter
@@ -71,8 +71,8 @@ class CutterImporter(GenericImporter):
 
     def on_bus_message(self, bus, message):
         def finalize():
-            pos = self.pipeline.query_position(gst.FORMAT_TIME)[0] / gst.MSECOND
-            gobject.idle_add(lambda: self.pipeline.set_state(gst.STATE_NULL) and False)
+            pos = self.pipeline.query_position(Gst.Format.TIME)[0] / Gst.MSECOND
+            GObject.idle_add(lambda: self.pipeline.set_state(Gst.State.NULL) and False)
             self.convert( {
                     'begin': begin,
                     'end': end,
@@ -82,27 +82,27 @@ class CutterImporter(GenericImporter):
             self.end_callback()
             return True
 
-        if message.type == gst.MESSAGE_EOS:
+        s = message.get_structure()
+        if message.type == Gst.MessageType.EOS:
             finalize()
-        ##elif message.type == gst.MESSAGE_STATE_CHANGED:
+        ##elif message.type == Gst.MessageType.STATE_CHANGED:
         ##    old, new, pending = message.parse_state_changed()
-        ##    if old == gst.STATE_READY and new == gst.STATE_PAUSED:
+        ##    if old == Gst.State.READY and new == Gst.State.PAUSED:
         ##        # There has been a problem. Cancel.
         ##        self.progress(1.0, _("Problem when running detection"))
         ##        print "Undetermined problem when running silence detection."
         ##        self.end_callback()
-        ##        gobject.idle_add(lambda: self.pipeline.set_state(gst.STATE_NULL) and False)
-        ##    #if new == gst.STATE_NULL:
+        ##        GObject.idle_add(lambda: self.pipeline.set_state(Gst.State.NULL) and False)
+        ##    #if new == Gst.State.NULL:
         ##    #    self.end_callback()
-        elif message.structure:
-            s=message.structure
+        elif s:
             #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),
                                                                                                                     'time': helper.format_time(s['current'] * 1000) }):
                     finalize()
             elif s.get_name() == 'cutter':
-                t = s['timestamp'] / gst.MSECOND
+                t = s['timestamp'] / Gst.MSECOND
                 if s['above']:
                     self.last_above = t
                 else:
@@ -120,7 +120,7 @@ class CutterImporter(GenericImporter):
         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.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')
         self.report = self.pipeline.get_by_name('report')
         bus = self.pipeline.get_bus()
@@ -136,5 +136,5 @@ class CutterImporter(GenericImporter):
         else:
             self.decoder.props.uri = 'file://' + os.path.abspath(unicode(filename))
         self.progress(.1, _("Starting silence detection"))
-        self.pipeline.set_state(gst.STATE_PLAYING)
+        self.pipeline.set_state(Gst.State.PLAYING)
         return self.package
diff --git a/lib/advene/plugins/dcp.py b/lib/advene/plugins/dcp.py
index abf3874..4f9bf13 100644
--- a/lib/advene/plugins/dcp.py
+++ b/lib/advene/plugins/dcp.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/fcp.py b/lib/advene/plugins/fcp.py
index f8342d8..0260699 100644
--- a/lib/advene/plugins/fcp.py
+++ b/lib/advene/plugins/fcp.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/featuredetect.py b/lib/advene/plugins/featuredetect.py
index eaa711e..59fba1f 100644
--- a/lib/advene/plugins/featuredetect.py
+++ b/lib/advene/plugins/featuredetect.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/goodshotdetector.py b/lib/advene/plugins/goodshotdetector.py
index c113269..8856cda 100644
--- a/lib/advene/plugins/goodshotdetector.py
+++ b/lib/advene/plugins/goodshotdetector.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/hpi.py b/lib/advene/plugins/hpi.py
new file mode 100644
index 0000000..edc75e3
--- /dev/null
+++ b/lib/advene/plugins/hpi.py
@@ -0,0 +1,210 @@
+#
+# Advene: Annotate Digital Videos, Exchange on the NEt
+# Copyright (C) 2017 Olivier Aubert <contact at olivieraubert.net>
+#
+# 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="HPI plugin"
+
+import logging
+logger = logging.getLogger(__name__)
+
+from gettext import gettext as _
+
+import base64
+import json
+import requests
+
+import advene.core.config as config
+from advene.util.importer import GenericImporter
+
+def register(controller=None):
+    controller.register_importer(HPIImporter)
+    return True
+
+class HPIImporter(GenericImporter):
+    name = _("HPI concept extraction")
+    annotation_filter = True
+
+    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.
+        """
+        return 80
+    can_handle=staticmethod(can_handle)
+
+    def __init__(self, author=None, package=None, defaulttype=None,
+                 controller=None, callback=None, annotation_type=None):
+        GenericImporter.__init__(self, author, package, defaulttype,
+                                 controller, callback)
+
+        self.atype = annotation_type.id if annotation_type else self.controller.package.annotationTypes[0].id
+        self.confidence = 0.0
+        self.detected_position = True
+        self.split_types = False
+        self.markup = False
+        self.create_relations = False
+        self.url = "http://localhost:9000/"
+
+        self.optionparser.add_option(
+            "-t", "--type", action="store", type="choice", dest="atype",
+            choices=[at.id for at in self.controller.package.annotationTypes],
+            default=self.atype,
+            help=_("Type of annotation to analyze"),
+            )
+        self.optionparser.add_option(
+            "-u", "--url", action="store", type="string",
+            dest="url", default=self.url,
+            help=_("URL of the webservice"),
+            )
+        self.optionparser.add_option(
+            "-c", "--min-confidence", action="store", type="float",
+            dest="confidence", default=0.0,
+            help=_("Minimum confidence level (between 0.0 and 1.0)"),
+            )
+        self.optionparser.add_option(
+            "-p", "--position", action="store_true",
+            dest="detected_position", default=self.detected_position,
+            help=_("Use detected position for created annotations"),
+            )
+        self.optionparser.add_option(
+            "-x", "--split-types", action="store_true",
+            dest="split_types", default=self.split_types,
+            help=_("Split by entity type"),
+            )
+        self.optionparser.add_option(
+            "-m", "--markup", action="store_true",
+            dest="markup", default=self.markup,
+            help=_("Store results as markup in the annotation text"),
+            )
+        self.optionparser.add_option(
+            "-r", "--relations", action="store_true",
+            dest="create_relations", default=self.create_relations,
+            help=_("Create relations between the original annotations and the new ones"),
+            )
+
+    @staticmethod
+    def can_handle(fname):
+        """
+        """
+        if 'http' in fname:
+            return 100
+        else:
+            return 0
+
+    def process_file(self, _filename):
+        self.convert(self.iterator())
+
+    def iterator(self):
+        """I iterate over the created annotations.
+        """
+        src_atype = self.controller.package.get_element_by_id(self.atype)
+        minconf = self.confidence
+
+        # Make sure that we have all appropriate screenshots
+        missing_screenshots = []
+        for a in src_atype.annotations:
+            for t in (a.fragment.begin, (a.fragment.begin + a.fragment.end) / 2, a.fragment.end):
+                if not self.controller.package.imagecache.is_initialized(t):
+                    self.controller.update_snapshot(t)
+                    missing_screenshots.append(t)
+        if len(missing_screenshots) > 0:
+            self.output_message = _("Cannot run concept extraction, %d screenshots are missing. Wait for extraction to complete.") % len(missing_screenshots)
+            return
+
+        self.progress(.1, "Concept extraction")
+        if self.split_types:
+            # Dict indexed by entity type name
+            new_atypes = {}
+        else:
+            new_atype = self.ensure_new_type(
+                "concept_%s" % self.atype,
+                title = _("Concepts for %s" % (self.atype)))
+            new_atype.mimetype = 'application/json'
+            new_atype.setMetaData(config.data.namespace, "representation",
+                                  'here/content/parsed/label')
+        if self.create_relations:
+            schema = self.create_schema('s_concept')
+            # FIXME: may crash when invoking multiple times
+            rtype = schema.createRelationType(ident='concept_relation')
+            rtype.author = config.data.get_userid()
+            rtype.date = self.timestamp
+            rtype.title = "Related concept"
+            rtype.mimetype='text/plain'
+            rtype.setHackedMemberTypes( ('*', '*') )
+            schema.relationTypes.append(rtype)
+            self.update_statistics('relation-type')
+
+        # Use a requests.session to use a KeepAlive connection to the server
+        session = requests.session()
+        self.progress(.2, "Parsing results")
+
+        progress = .2
+        step = .8 / (len(src_atype.annotations) or 1)
+
+        for a in src_atype.annotations:
+            headers = {"Content-Type": "application/json", "Accept": "application/json"}
+            response = session.post(self.url, headers=headers, json={ 'annotationid': a.id,
+                                                                      'begin': a.fragment.begin,
+                                                                      'end': a.fragment.end,
+                                                                      'minimum_confidence': minconf,
+                                                                      'frames': [
+                                                                          {
+                                                                              'screenshot': base64.encodestring(str(self.controller.package.imagecache.get(t))),
+                                                                              'timecode': t
+                                                                          } for t in (a.fragment.begin, (a.fragment.begin + a.fragment.end) / 2, a.fragment.end)
+                                                                      ]
+            })
+            output = response.json()
+            for item in output['data']:
+                # Should not happen, since we pass the parameter to the server
+                if item["confidence"] < minconf:
+                    continue
+                if self.detected_position:
+                    begin = item['timecode']
+                else:
+                    begin = a.fragment.begin
+                end = a.fragment.end
+                t = item.get('label')
+                if t and self.split_types:
+                    at = new_atypes.get(t)
+                    if at is None:
+                        # Not defined yet. Create a new one.
+                        at = self.ensure_new_type(t, title = _("%s concept" % t))
+                        at.mimetype = 'application/json'
+                        at.setMetaData(config.data.namespace, "representation",
+                                       'here/content/parsed/label')
+                        new_atypes[t] = at
+                        new_atype = at
+                an = (yield {
+                    'type': new_atype,
+                    'begin': begin,
+                    'end': end,
+                    'content': json.dumps(item)
+                })
+                if an is not None and self.create_relations:
+                    r = self.package.createRelation(
+                        ident='_'.join( ('r', a.id, an.id) ),
+                        type=rtype,
+                        author=config.data.get_userid(),
+                        date=self.timestamp,
+                        members=(a, an))
+                    r.title = "Relation between %s and %s" % (a.id, an.id)
+                    self.package.relations.append(r)
+                    self.update_statistics('relation')
+                self.progress(progress)
+                progress += step
diff --git a/lib/advene/plugins/montagerenderer.py b/lib/advene/plugins/montagerenderer.py
index 31e3bdd..d91681b 100644
--- a/lib/advene/plugins/montagerenderer.py
+++ b/lib/advene/plugins/montagerenderer.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -92,6 +92,7 @@ class MontageRenderer(object):
         sink.set_property("location", outputfile)
 
         def on_bus_message(bus, message):
+            s = message.get_structure()
             if message.type == gst.MESSAGE_STATE_CHANGED:
                 old, new, pending = message.parse_state_changed()
                 print "STATE", old.value_nick, new.value_nick, pending.value_nick
@@ -99,8 +100,7 @@ class MontageRenderer(object):
                 print " EOS"
                 pipe.set_state(gst.STATE_NULL)
                 progress_callback(None)
-            elif message.structure:
-                s=message.structure
+            elif s:
                 print "MSG " + bus.get_name() + ": " + s.to_string()
                 if s.get_name() == 'progress' and progress_callback is not None:
                     progress_callback(s['percent-double'] / 100)
diff --git a/lib/advene/plugins/mpeg7.py b/lib/advene/plugins/mpeg7.py
index 7e34372..2988e2a 100644
--- a/lib/advene/plugins/mpeg7.py
+++ b/lib/advene/plugins/mpeg7.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/owl_import.py b/lib/advene/plugins/owl_import.py
new file mode 100644
index 0000000..3245de3
--- /dev/null
+++ b/lib/advene/plugins/owl_import.py
@@ -0,0 +1,112 @@
+#
+# Advene: Annotate Digital Videos, Exchange on the NEt
+# Copyright (C) 2017 Olivier Aubert <contact at olivieraubert.net>
+#
+# 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
+#
+
+# OWL importer
+
+name="OWL importer"
+
+from gettext import gettext as _
+import os
+
+import advene.core.config as config
+from advene.util.importer import GenericImporter
+try:
+    import ontospy
+except ImportError:
+    ontospy = None
+
+def register(controller=None):
+    if ontospy is not None:
+        controller.register_importer(OWLImporter)
+    return True
+
+class OWLImporter(GenericImporter):
+    name = _("OWL (schema) importer")
+
+    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 [ '.owl' ]:
+            return 90
+        return 0
+    can_handle=staticmethod(can_handle)
+
+    def process_file(self, filename, dest=None):
+        model = ontospy.Ontospy(filename)
+        p, at = self.init_package(filename=dest)
+        p.setMetaData(config.data.namespace_prefix['dc'],
+                      'description',
+                      _("Converted from %s") % filename)
+        self.convert(self.iterator(model))
+        self.progress(1.0)
+        return self.package
+
+    def iterator(self, model):
+        """Iterate through the loaded OWL.
+
+        Assumptions:
+        - there is a toplevel element (AnnotationConcept) in the model toplayer
+        - the first level of children defines schemas
+        - the leaf elements for each schema define annotation types
+        """
+        progress=0.01
+        self.progress(progress, "Starting conversion")
+        root = model.toplayer[0]
+        schemas = root.children()
+        incr=0.98/len(schemas)
+        for s in schemas:
+            progress += incr
+            # Create the schema
+            schema = self.create_schema(s.qname.strip(':'), title=s.bestLabel(), description=s.bestDescription())
+            if not self.progress(progress, "Creating schema %s" % schema.title):
+                break
+            for c in s.descendants():
+                if not c.children():
+                    # We consider only leaf nodes
+                    self.create_annotation_type(schema, c.qname.strip(':'), title=c.bestLabel(), description=c.bestDescription())
+        self.progress(1.0)
+        # Hack: we have an empty iterator (no annotations here), but
+        # if the yield instruction is not present in the method code,
+        # it will not be considered as an iterator. So the following 2
+        # lines mark the end of the iterator, and its iterator status.
+        return
+        yield None
+
+if __name__ == "__main__":
+    import sys
+    if ontospy is None:
+        print("Cannot import required ontospy module")
+        sys.exit(1)
+    if len(sys.argv) < 3:
+        print "Should provide a file name and a package name"
+        sys.exit(1)
+
+    fname=sys.argv[1]
+    pname=sys.argv[2]
+
+    i = OWLImporter()
+
+    i.process_options(sys.argv[1:])
+    print "Converting %s to %s using %s" % (fname, pname, i.name)
+    p=i.process_file(fname)
+    p.save(pname)
+    print i.statistics_formatted()
diff --git a/lib/advene/plugins/pocketsphinx.py b/lib/advene/plugins/pocketsphinx.py
index 00a7ad1..7b16a8b 100644
--- a/lib/advene/plugins/pocketsphinx.py
+++ b/lib/advene/plugins/pocketsphinx.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -22,16 +22,16 @@ name="Speech recognition"
 from gettext import gettext as _
 
 import os
-import gobject
-import gst
+from gi.repository import GObject
+from gi.repository 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')):
+    if (Gst.ElementFactory.find('vader')
+         and Gst.ElementFactory.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."))
@@ -98,14 +98,14 @@ class PocketSphinxImporter(GenericImporter):
     def on_vader_start(self, vader, pos):
         """Store start position.
         """
-        self.start_position = pos / gst.MSECOND
+        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.buffer_list.append( (self.start_position, pos / Gst.MSECOND, self.text) )
             self.text = None
             self.start_position = 0
         return True
@@ -129,16 +129,16 @@ class PocketSphinxImporter(GenericImporter):
         def finalize():
             """Finalize data creation.
             """
-            gobject.idle_add(lambda: self.pipeline.set_state(gst.STATE_NULL) and False)
+            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:
+        s = message.get_structure()
+        if message.type == Gst.MessageType.EOS:
             finalize()
-        elif message.structure:
-            s = message.structure
+        elif s:
             #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") % {
@@ -163,9 +163,9 @@ class PocketSphinxImporter(GenericImporter):
                 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' % ( {
+        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,
+                'silence': self.silence * Gst.MSECOND,
                 'pocketsphinxargs': args }))
         self.decoder = self.pipeline.get_by_name('decoder')
 
@@ -189,5 +189,5 @@ class PocketSphinxImporter(GenericImporter):
         else:
             self.decoder.props.uri = 'file://' + os.path.abspath(filename)
         self.progress(0, _("Recognizing speech"))
-        self.pipeline.set_state(gst.STATE_PLAYING)
+        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 7185a51..5898d93 100644
--- a/lib/advene/plugins/shotdetect.py
+++ b/lib/advene/plugins/shotdetect.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/shotdetectapp.py b/lib/advene/plugins/shotdetectapp.py
index a2fe6c6..254350f 100644
--- a/lib/advene/plugins/shotdetectapp.py
+++ b/lib/advene/plugins/shotdetectapp.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -25,7 +25,7 @@ import sys
 import re
 import tempfile
 
-import gobject
+from gi.repository import GObject
 
 import advene.util.helper as helper
 
@@ -38,6 +38,13 @@ def register(controller=None):
     return True
 
 class ShotdetectAppImporter(ExternalAppImporter):
+    """Shot detection.
+
+    The threshold parameter is used to specify the sensitivity of the
+    algorithm, and should typically be between 50 and 80. If too many
+    shots are detected, try to increase its value.
+    """
+
     name = _("ShotdetectApp importer")
 
     def __init__(self, *p, **kw):
@@ -90,8 +97,8 @@ class ShotdetectAppImporter(ExternalAppImporter):
                      '-o', self.tempdir.encode('utf8', sys.getfilesystemencoding()),
                      '-s', str(self.sensitivity) ]
         else:
-            args = [ '-i', gobject.filename_from_utf8(filename.encode('utf8')),
-                     '-o', gobject.filename_from_utf8(self.tempdir.encode('utf8')),
+            args = [ '-i', GObject.filename_from_utf8(filename.encode('utf8')),
+                     '-o', GObject.filename_from_utf8(self.tempdir.encode('utf8')),
                      '-s', str(self.sensitivity) ]
         return args
 
@@ -128,8 +135,7 @@ class ShotdetectAppImporter(ExternalAppImporter):
                 yield {
                     'content': str(num),
                     'begin': begin,
-                    # Offset the end timecode by 1 frame.
-                    'end': ts - (1000 / config.data.preferences['default-fps'])
+                    'end': ts
                     }
                 begin = ts
                 num += 1
diff --git a/lib/advene/plugins/soundenveloppe.py b/lib/advene/plugins/soundenveloppe.py
index 406f713..9c67288 100644
--- a/lib/advene/plugins/soundenveloppe.py
+++ b/lib/advene/plugins/soundenveloppe.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -23,21 +23,14 @@ from gettext import gettext as _
 
 import os
 import sys
-import urllib
-import gobject
-import gst
+from gi.repository import GObject
+from gi.repository import Gst
 
 import advene.core.config as config
 from advene.util.importer import GenericImporter
 import advene.util.helper as helper
 
-try:
-    from math import isinf, isnan
-except ImportError:
-    # python <= 2.5
-    def isnan(f):
-        return repr(f) == 'nan'
-    isinf = isnan
+from math import isinf, isnan
 
 def register(controller=None):
     controller.register_importer(SoundEnveloppeImporter)
@@ -55,6 +48,9 @@ class SoundEnveloppeImporter(GenericImporter):
         self.count = 1000
         self.channel = 'both'
 
+        # Lower bound for db values, to avoid a too large value range
+        self.lower_db_limit = -80
+
         self.optionparser.add_option("-i", "--interval",
                                      action="store", type="int", dest="interval", default=self.interval,
                                      help=_("Interval (in ms) at which to take samples."))
@@ -93,30 +89,30 @@ class SoundEnveloppeImporter(GenericImporter):
             self.convert( [ {
                         'begin': tup[0],
                         'end': tup[1],
-                        'content': " ".join("%.02f" % (factor * (f -m)) for f in tup[2]),
+                        'content': " ".join("%.02f" % (factor * (f - m)) for f in tup[2]),
                         } ])
 
     def on_bus_message(self, bus, message):
         def finalize():
-            pos = self.pipeline.query_position(gst.FORMAT_TIME)[0] / gst.MSECOND
-            gobject.idle_add(lambda: self.pipeline.set_state(gst.STATE_NULL) and False)
+            pos = self.pipeline.query_position(Gst.Format.TIME)[0] / Gst.MSECOND
+            GObject.idle_add(lambda: self.pipeline.set_state(Gst.State.NULL) and False)
             # Add last buffer data
-            self.buffer_list.append((self.first_item_time, pos, list(self.buffer)))
+            if self.buffer and pos > self.first_item_time:
+                self.buffer_list.append((self.first_item_time, pos, list(self.buffer)))
             self.generate_normalized_annotations()
             self.end_callback()
             return True
 
-        if message.type == gst.MESSAGE_EOS:
+        s = message.get_structure()
+        if message.type == Gst.MessageType.EOS:
             finalize()
-        elif message.structure:
-            s=message.structure
-            #print "MSG " + bus.get_name() + ": " + s.to_string()
+        elif s:
             if s.get_name() == 'progress' and self.progress is not None:
                 if not self.progress(s['percent-double'] / 100, _("At %s") % helper.format_time(s['current'] * 1000)):
                     finalize()
             elif s.get_name() == 'level':
                 if not self.buffer:
-                    self.first_item_time = s['stream-time'] / gst.MSECOND
+                    self.first_item_time = s['stream-time'] / Gst.MSECOND
                 rms = s['rms']
                 v = rms[0]
                 if len(rms) > 1:
@@ -124,7 +120,7 @@ class SoundEnveloppeImporter(GenericImporter):
                         v = rms[1]
                     elif self.channel == 'both':
                         v = (rms[0] + rms[1]) / 2
-                if isinf(v) or isnan(v):
+                if isinf(v) or isnan(v) or v < self.lower_db_limit:
                     v = self.lastval
                 if v < self.min:
                     self.min = v
@@ -133,7 +129,7 @@ class SoundEnveloppeImporter(GenericImporter):
                 self.lastval = v
                 self.buffer.append(v)
                 if len(self.buffer) >= self.count:
-                    self.buffer_list.append((self.first_item_time, s['endtime'] / gst.MSECOND, list(self.buffer)))
+                    self.buffer_list.append((self.first_item_time, s['endtime'] / Gst.MSECOND, list(self.buffer)))
                     self.buffer = []
         return True
 
@@ -145,7 +141,7 @@ class SoundEnveloppeImporter(GenericImporter):
         at.setMetaData(config.data.namespace_prefix['dc'], "description", _("Sound enveloppe"))
 
         # Build pipeline
-        self.pipeline = gst.parse_launch('uridecodebin name=decoder ! audioconvert ! level name=level interval=%s ! progressreport silent=true update-freq=1 name=report ! fakesink' % str(self.interval * gst.MSECOND))
+        self.pipeline = Gst.parse_launch('uridecodebin name=decoder ! audioconvert ! level name=level interval=%s ! progressreport silent=true update-freq=1 name=report ! fakesink' % str(self.interval * Gst.MSECOND))
         self.decoder = self.pipeline.get_by_name('decoder')
         bus = self.pipeline.get_bus()
         # Enabling sync_message_emission will in fact force the
@@ -160,5 +156,5 @@ class SoundEnveloppeImporter(GenericImporter):
         else:
             self.decoder.props.uri = 'file://' + os.path.abspath(filename)
         self.progress(0, _("Extracting sound enveloppe"))
-        self.pipeline.set_state(gst.STATE_PLAYING)
+        self.pipeline.set_state(Gst.State.PLAYING)
         return self.package
diff --git a/lib/advene/plugins/ted.py b/lib/advene/plugins/ted.py
index 4fa1be1..0fd289d 100644
--- a/lib/advene/plugins/ted.py
+++ b/lib/advene/plugins/ted.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2009-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2009-2017 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/tracebuilder.py b/lib/advene/plugins/tracebuilder.py
index d7906e8..13ae8de 100644
--- a/lib/advene/plugins/tracebuilder.py
+++ b/lib/advene/plugins/tracebuilder.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8 -*-
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -29,7 +29,7 @@ import os
 
 from threading import Thread
 import Queue
-import gobject
+from gi.repository import GObject
 import time
 import socket
 import urllib
@@ -127,7 +127,7 @@ class TraceBuilder(Thread):
 
         # FIXME: this does not belong here. It should be in a
         # view-related module, which would allow use to directly store
-        # gtk.gdk.Color instances.
+        # Gdk.Color instances.
         self.colormodel = {'events':{},
                             'operations':{},
                             'actions':{ 'Annotation': "#444488",
@@ -295,7 +295,7 @@ class TraceBuilder(Thread):
         # oid : objects id
         # ocontent : objects content
         temp=Trace()
-        temp.rename('Results for \'%s\' in %s' % (words, trace.name))
+        temp.rename('Results for \'%s\' in %s' % (words, trace.name))
         temp.start = trace.start
         for e in trace.levels['events']:
             etemp = e.copy()
@@ -325,7 +325,7 @@ class TraceBuilder(Thread):
             if len(atemp.operations)<=0:
                 temp.remove_from_trace('actions', atemp)
         self.traces.append(temp)
-        self.alert_registered(None, None, None)
+        self.alert_registered(None, None, None)
         return temp
 
     def convert_old_trace(self, fname):
@@ -419,7 +419,7 @@ class TraceBuilder(Thread):
         if hasattr(tr, 'name'):
             self.traces[-1].rename('%s (imported)' % tr.name)
         else:
-            self.traces[-1].rename('No Name (imported)')
+            self.traces[-1].rename('No Name (imported)')
         if hasattr(tr, 'start'):
             self.traces[-1].start=float(tr.start)
         events = tr
@@ -527,8 +527,8 @@ class TraceBuilder(Thread):
         ev_activity_time = (time.time() - self.trace.start) * 1000
         ev_name = obj['event_name']
         ev_movie = self.controller.package.getMetaData(config.data.namespace, "mediafile")
-        ev_movie_time = self.controller.player.current_position_value
-        if not ev_movie_time:
+        ev_movie_time = self.controller.player.current_position_value
+        if not ev_movie_time:
             ev_movie_time=0
         ev_content = ''
         elem = None
@@ -640,19 +640,19 @@ class TraceBuilder(Thread):
                 elem_id=elem.title
                 elem_type = advene.model.package.Package
         elif 'position' in obj:
-            #event related to the player
-            if obj['position'] is None:
-                obj['position']=0
-            if obj['position_before'] is None:
+            #event related to the player
+            if obj['position'] is None:
+                obj['position']=0
+            if obj['position_before'] is None:
                 obj['position_before']=0
             ev_content=str(time.strftime("%H:%M:%S", time.gmtime(obj['position_before']/1000)))
-            ev_content+= '\n'
-            ev_content+=str(time.strftime("%H:%M:%S", time.gmtime(obj['position']/1000)))
-            if not obj['event_name'].find('Set')>0:
-                #not a PlayerSet
-                ev_movie_time=obj['position_before']
-            else:
-                ev_movie_time=obj['position']
+            ev_content+= '\n'
+            ev_content+=str(time.strftime("%H:%M:%S", time.gmtime(obj['position']/1000)))
+            if not obj['event_name'].find('Set')>0:
+                #not a PlayerSet
+                ev_movie_time=obj['position_before']
+            else:
+                ev_movie_time=obj['position']
         #TODO undo ?
         ev_undo=False
         if 'undone' in obj:
@@ -671,8 +671,8 @@ class TraceBuilder(Thread):
         #for i in obj:
         #    print "%s : %s" % (i,obj[i])
         op_movie = self.controller.package.getMetaData(config.data.namespace, "mediafile")
-        op_movie_time = self.controller.player.current_position_value
-        if not op_movie_time:
+        op_movie_time = self.controller.player.current_position_value
+        if not op_movie_time:
             op_movie_time=0
         op_content = None
         elem = None
@@ -785,19 +785,19 @@ class TraceBuilder(Thread):
                 elem_id=elem.title
                 elem.type=advene.model.package.Package
         elif 'position' in obj:
-            #event related to the player
-            if obj['position'] is None:
-                obj['position']=0
-            if obj['position_before'] is None:
+            #event related to the player
+            if obj['position'] is None:
+                obj['position']=0
+            if obj['position_before'] is None:
                 obj['position_before']=0
             op_content=str(time.strftime("%H:%M:%S", time.gmtime(obj['position_before']/1000)))
-            op_content+= '\n'
-            op_content+=str(time.strftime("%H:%M:%S", time.gmtime(obj['position']/1000)))
-            if not obj['event_name'].find('Set')>0:
-                #not a PlayerSet
-                op_movie_time=obj['position_before']
-            else:
-                op_movie_time=obj['position']
+            op_content+= '\n'
+            op_content+=str(time.strftime("%H:%M:%S", time.gmtime(obj['position']/1000)))
+            if not obj['event_name'].find('Set')>0:
+                #not a PlayerSet
+                op_movie_time=obj['position_before']
+            else:
+                op_movie_time=obj['position']
         if self.trace.levels['operations']:
             prev = self.trace.levels['operations'][-1]
             if op_name in self.editEndNames and prev.name in self.editEndNames and prev.concerned_object['id'] == elem_id:
@@ -843,7 +843,7 @@ class TraceBuilder(Thread):
 
     def alert_registered(self, event, operation, action):
         for i in self.registered_views:
-            gobject.idle_add(i.receive, self.trace, event, operation, action)
+            GObject.idle_add(i.receive, self.trace, event, operation, action)
         return
 
     def register_view(self, view):
diff --git a/lib/advene/plugins/youtubeannotations.py b/lib/advene/plugins/transcript.py
similarity index 66%
rename from lib/advene/plugins/youtubeannotations.py
rename to lib/advene/plugins/transcript.py
index b425230..1d8ff6a 100644
--- a/lib/advene/plugins/youtubeannotations.py
+++ b/lib/advene/plugins/transcript.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2013 Olivier Aubert <contact at olivieraubert.net>
+# Copyright (C) 2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -17,20 +17,19 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #
 
-name="Youtube Annotations XML importer"
+name="Youtube XML importer"
 
 from gettext import gettext as _
 
 from advene.util.importer import GenericImporter
 import xml.etree.ElementTree as ET
-import HTMLParser
 
 def register(controller=None):
-    controller.register_importer(XMLYoutubeImporter)
+    controller.register_importer(TranscriptImporter)
     return True
 
-class XMLYoutubeImporter(GenericImporter):
-    name = _("Youtube XML annotations importer")
+class TranscriptImporter(GenericImporter):
+    name = _("Youtube XML importer")
 
     def can_handle(fname):
         """Return a score between 0 and 100.
@@ -40,46 +39,47 @@ class XMLYoutubeImporter(GenericImporter):
         if fname.endswith('.xml'):
             return 80
         return 0
-    can_handle = staticmethod(can_handle)
+    can_handle=staticmethod(can_handle)
 
     def process_file(self, filename, dest=None):
         tree = ET.parse(filename)
         root = tree.getroot()
 
         p, at = self.init_package(filename=dest,
-                                  schemaid='youtube', annotationtypeid='transcript')
-        at.mimetype = 'text/plain'
-        at.title = "Youtube Transcript"
-
-        self.package=p
+                                  annotationtypeid='transcript')
+        at.mimetype='text/plain'
+        at.title = "Transcript"
 
+        self.at = at
+        self.package = p
         self.convert(self.iterator(root))
         self.progress(1.0)
         return self.package
 
     def iterator(self, root):
-        parser = HTMLParser.HTMLParser()
-
         if root.tag != 'transcript':
             print "Invalid Youtube XML file format: ", root.tag
             return
 
-        progress = 0.01
+        progress=0.01
         self.progress(progress)
 
-        l = root.findall('.//text')
+        l=root.findall('.//text')
         if l:
-            self.progress(progress, _("Importing annotations"))
-            incr = 1.0 / len(l)
+            self.progress(progress, _("Importing transcript"))
+            incr = 0.5 / len(l)
             for e in l:
                 progress += incr
                 self.progress(progress)
+                begin = long(float(e.attrib['start']) * 1000)
+                end = begin + long(float(e.attrib['dur']) * 1000)
                 yield {
-                    'content': parser.unescape(e.text),
-                    'begin': long(float(e.attrib.get('start')) * 1000),
-                    'duration': long(float(e.attrib.get('dur')) * 1000),
+                    'type': self.at,
+                    'content': e.text,
+                    'begin': begin,
+                    'end': end
                     }
         else:
             progress = 1.0
 
-        self.progress(progress)
+        self.progress(1.0)
diff --git a/lib/advene/plugins/ttl.py b/lib/advene/plugins/ttl.py
index 5e5f766..e4bedb5 100644
--- a/lib/advene/plugins/ttl.py
+++ b/lib/advene/plugins/ttl.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/tts.py b/lib/advene/plugins/tts.py
index 778f400..b0f76db 100644
--- a/lib/advene/plugins/tts.py
+++ b/lib/advene/plugins/tts.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/plugins/undomanager.py b/lib/advene/plugins/undomanager.py
index fa5b28c..29e6149 100644
--- a/lib/advene/plugins/undomanager.py
+++ b/lib/advene/plugins/undomanager.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -87,7 +87,7 @@ class UndoHistory:
         """
         d={}
         if hasattr(el, 'content'):
-            d['content']=str(el.content.data)
+            d['content']=unicode(el.content.data)
             d['mimetype']=el.content.mimetype
         if hasattr(el, 'fragment'):
             d['begin']=long(el.fragment.begin)
diff --git a/lib/advene/rules/__init__.py b/lib/advene/rules/__init__.py
index dc5e3f5..0e08aee 100644
--- a/lib/advene/rules/__init__.py
+++ b/lib/advene/rules/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/rules/actions.py b/lib/advene/rules/actions.py
index 6e04f6b..368fb4f 100644
--- a/lib/advene/rules/actions.py
+++ b/lib/advene/rules/actions.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -224,7 +224,7 @@ def register(controller=None):
             method=ac.OpenURL,
             description=_("Open a URL in the web browser"),
             parameters={'url': _("URL")},
-            defaults={'url': 'string:http://liris.cnrs.fr/advene/'},
+            defaults={'url': 'string:http://advene.org/'},
             category='external',
             )
                                )
diff --git a/lib/advene/rules/ecaengine.py b/lib/advene/rules/ecaengine.py
index 4901929..dc95590 100755
--- a/lib/advene/rules/ecaengine.py
+++ b/lib/advene/rules/ecaengine.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/rules/elements.py b/lib/advene/rules/elements.py
index 4e390c9..ca58ad6 100755
--- a/lib/advene/rules/elements.py
+++ b/lib/advene/rules/elements.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/rules/importer.py b/lib/advene/rules/importer.py
index 19985cc..9507dfe 100644
--- a/lib/advene/rules/importer.py
+++ b/lib/advene/rules/importer.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/util/__init__.py b/lib/advene/util/__init__.py
index dc5e3f5..0e08aee 100644
--- a/lib/advene/util/__init__.py
+++ b/lib/advene/util/__init__.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/util/audio.py b/lib/advene/util/audio.py
index b4436ca..3c5274d 100644
--- a/lib/advene/util/audio.py
+++ b/lib/advene/util/audio.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -29,7 +29,7 @@ if config.data.os == 'win32':
     fsenc = sys.getfilesystemencoding()
     ppath = unicode(os.getenv('GST_PLUGIN_PATH', ""), fsenc)
     if not ppath or not os.path.exists(ppath):
-        os.environ['GST_PLUGIN_PATH'] = os.path.join(config.data.path['advene'], 'gst', 'lib', 'gstreamer-0.10').encode(fsenc)
+        os.environ['GST_PLUGIN_PATH'] = os.path.join(config.data.path['advene'], 'gst', 'lib', 'gstreamer-1.0').encode(fsenc)
         gstpath = unicode(os.getenv('PATH', ""), fsenc)
         os.environ['PATH'] = os.pathsep.join( ( os.path.join(config.data.path['advene'], 'gst', 'bin'), gstpath) ).encode(fsenc)
     else:
@@ -40,11 +40,13 @@ if config.data.os == 'win32':
         os.environ['PATH'] = os.pathsep.join( (os.path.join( binpath, 'bin'), gstpath) ).encode(fsenc)
 
 try:
-    import pygst
-    pygst.require('0.10')
-    import gst
+    import gi
+    gi.require_version('Gst', '1.0')
+    from gi.repository import GObject, Gst
+    GObject.threads_init()
+    Gst.init(None)
 except ImportError:
-    gst=None
+    Gst=None
 
 import advene.core.config as config
 
@@ -63,16 +65,16 @@ class SoundPlayer:
             uri = 'file:' + urllib.pathname2url(fname)
         else:
             uri = 'file://' + os.path.abspath(fname)
-        pipe = gst.parse_launch('uridecodebin name=decode uri=%s ! audioconvert ! audiopanorama panorama=%f ! audioamplify name=amplify amplification=%f ! autoaudiosink' % (uri, float(balance), int(volume) / 100.0 ))
+        pipe = Gst.parse_launch('uridecodebin name=decode uri=%s ! audioconvert ! audiopanorama panorama=%f ! audioamplify name=amplify amplification=%f ! autoaudiosink' % (uri, float(balance), int(volume) / 100.0 ))
         bus = pipe.get_bus()
         bus.add_signal_watch()
 
         def eos_cb(b, m):
             if m.src == pipe:
-                pipe.set_state(gst.STATE_NULL)
+                pipe.set_state(Gst.State_NULL)
 
         bus.connect('message::eos', eos_cb)
-        pipe.set_state(gst.STATE_PLAYING)
+        pipe.set_state(Gst.State.PLAYING)
         # FIXME: since we do not reuse the pipeline, we maybe should clean it up on state_change -> READY
         return True
 
@@ -108,7 +110,6 @@ class SoundPlayer:
 
         It ignores the balance parameter.
         """
-        import objc
         import AppKit
         sound = AppKit.NSSound.alloc().initWithContentsOfFile_byReference_(fname, True)
         sound.setVolume( volume / 100.0 )
@@ -119,7 +120,7 @@ class SoundPlayer:
         os.waitpid(-1, os.WNOHANG)
         return True
 
-    if gst is not None:
+    if Gst is not None:
         play = gst_play
         print "Using gstreamer to play sounds"
     elif config.data.os == 'win32':
@@ -131,4 +132,3 @@ class SoundPlayer:
         if not os.path.exists('/usr/bin/aplay'):
             print "Error: aplay is not installed. Advene will be unable to play sounds."
         play=linux_play
-
diff --git a/lib/advene/util/ctypesrsvg.py b/lib/advene/util/ctypesrsvg.py
index e6f88f1..b56d144 100644
--- a/lib/advene/util/ctypesrsvg.py
+++ b/lib/advene/util/ctypesrsvg.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/util/expat.py b/lib/advene/util/expat.py
index 9ba511d..a3fca99 100755
--- a/lib/advene/util/expat.py
+++ b/lib/advene/util/expat.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/util/helper.py b/lib/advene/util/helper.py
index 8bffb11..f045a02 100755
--- a/lib/advene/util/helper.py
+++ b/lib/advene/util/helper.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -18,6 +18,8 @@
 #
 """Generic helper functions."""
 
+
+import json
 import time
 import StringIO
 import inspect
@@ -584,18 +586,54 @@ Description:
         }
     return m
 
-def get_annotations_statistics(annotations):
-    data = [ format_element_name('annotation', len(annotations)) ]
-    if annotations:
-        data.extend( "%s : %s" % (label, value)
-                     for label, value in (
-                             (_("Min duration"), format_time(min( a.fragment.duration for a in annotations))),
-                             (_("Max duration"), format_time(max( a.fragment.duration for a in annotations))),
-                             (_("Mean duration"), format_time(sum( a.fragment.duration for a in annotations) / len(annotations))),
-                             (_("Total duration"), format_time(sum( a.fragment.duration for a in annotations)))
-                     )
-                 )
-    return "\n".join(data)
+def median(values):
+    """Return the median value of a list of values.
+    """
+    if not values:
+        return None
+    values = sorted(values)
+    n = len(values)
+    if n % 2:
+        return values[(n + 1) / 2 - 1]
+    else:
+        return sum(values[n / 2 - 1: n / 2 + 1]) / 2.0
+
+def get_annotations_statistics(annotations, format='text'):
+    """Return some statistics about the given annotations.
+
+    The returned format can be either text or dict
+    """
+    if not annotations:
+        if format == 'text':
+            return _("No annotation")
+        else:
+            return {
+                'min': 0,
+                'max': 0,
+                'mean': 0,
+                'median': 0,
+                'total': 0
+            }
+    total_duration = sum(a.fragment.duration for a in annotations)
+    res = {
+        'min': min(a.fragment.duration for a in annotations),
+        'max': max(a.fragment.duration for a in annotations),
+        'mean': total_duration / len(annotations),
+        'median': median(a.fragment.duration for a in annotations),
+        'total': total_duration
+    }
+    if format == 'text':
+        for k in res:
+            res[k] = format_time(res[k])
+        res['count'] = format_element_name('annotation', len(annotations))
+        return """Count: %(count)s
+Min duration: %(min)s
+Max duration: %(max)s
+Mean duration: %(mean)s
+Median duration: %(median)s
+Total duration: %(total)s""" % res
+    else:
+        return res
 
 element_declinations={
     'schema': (_('schema'), _('schemas')),
@@ -808,24 +846,36 @@ def title2content(new_title, original_content, representation):
 
     @return the new content or None if the content could not be updated.
     """
+    new_title = unicode(new_title, 'utf-8')
     r = None
     if representation is None or empty_representation.match(representation):
-        r = unicode(new_title)
+        r = 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')
+            new_title = 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)
+
+            if original_content.mimetype == 'application/x-advene-structured':
+                reg = re.compile('^' + name + '=(.*?)$', re.MULTILINE)
+                if reg.search(original_content):
+                    r = reg.sub(name + '=' + new_title, original_content)
                 else:
-                    r = "%s=%s" % (name, new_title)
+                    # 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)
+            elif original_content.mimetype == 'application/json':
+                data = json.loads(original_content.data)
+                data[name] = new_title
+                r = json.dumps(data)
         # else: too complex representation. Return None as default value.
     return r
+
+def clamp(x, minimum, maximum):
+    """Clamp given value between minimum and maximum.
+    """
+    return max(minimum, min(x, maximum))
diff --git a/lib/advene/util/importer.py b/lib/advene/util/importer.py
index 925ceb6..a642b75 100644
--- a/lib/advene/util/importer.py
+++ b/lib/advene/util/importer.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -49,6 +49,9 @@ The general idea is:
 im.statistics hold a dictionary containing the creation statistics.
 """
 
+import logging
+logger = logging.getLogger(__name__)
+
 import sys
 import time
 import re
@@ -59,7 +62,8 @@ import urllib
 
 from gettext import gettext as _
 
-import gobject
+from gi.repository import GObject
+
 import shutil
 import subprocess
 import signal
@@ -108,7 +112,7 @@ def get_valid_importers(fname):
             invalid.append(i)
     # reverse sort along matching scores
     valid.sort(lambda a, b: cmp(b[1], a[1]))
-    return [ i for (i, v) in valid ], invalid
+    return [ i for (i, r) in valid ], invalid
 
 def get_importer(fname, **kw):
     """Return the first/best valid importer.
@@ -154,6 +158,9 @@ class GenericImporter(object):
             'view': 0,
             'package': 0,
             }
+        # Optional output message that can be set by the importer to
+        # provide feedback to the user
+        self.output_message = ""
 
         # The convention for OptionParser is to have the "dest"
         # attribute of the same name as the Importer attribute
@@ -185,11 +192,26 @@ class GenericImporter(object):
             return True
 
     def set_options(self, options):
-        for k in (n
-                  for n in dir(options)
-                  if not n.startswith('_')):
-            if hasattr(self, k):
+       """Set importer options (attributes) according to the given options.
+
+       options may be either an option object from OptionParser (where
+       options are attributes of the object) or a dictionary.
+       """
+       if isinstance(options, dict):
+          for k, v in options.iteritems():
+             if hasattr(self, k):
+                logger.info("Set option %s %s", k, v)
+                setattr(self, k, v)
+             else:
+                logger.info("Unknown option %s", k)
+       else:
+          for k in (n
+                    for n in dir(options)
+                    if not n.startswith('_')):
+             if hasattr(self, k):
                 setattr(self, k, getattr(options, k))
+             else:
+                logger.info("Unknown option %s", k)
 
     def process_options(self, source):
         (options, args) = self.optionparser.parse_args(args=source)
@@ -506,7 +528,7 @@ class ExternalAppImporter(GenericImporter):
             msg = unicode(e.args)
             raise Exception(_("Could not run %(appname)s: %(msg)s") % locals())
 
-        self.progress(.01, _("Processing %s") % gobject.filename_display_name(filename))
+        self.progress(.01, _("Processing %s") % GObject.filename_display_name(filename))
 
         def execute_process():
             self.convert(self.iterator())
@@ -516,7 +538,7 @@ class ExternalAppImporter(GenericImporter):
             end_callback()
             return True
 
-        # Note: the "proper" way would be to use gobject.io_add_watch,
+        # Note: the "proper" way would be to use Gobject.io_add_watch,
         # but last time I tried, this had cross-platform issues. The
         # threading approach seems to work across platforms, so "if it
         # ain't broke, don't fix it".
diff --git a/lib/advene/util/merger.py b/lib/advene/util/merger.py
index 5ddf865..80fe04a 100644
--- a/lib/advene/util/merger.py
+++ b/lib/advene/util/merger.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/util/slicebuffer.py b/lib/advene/util/slicebuffer.py
index ce4438b..3110659 100755
--- a/lib/advene/util/slicebuffer.py
+++ b/lib/advene/util/slicebuffer.py
@@ -2,7 +2,7 @@
 
 """Gstreamer SliceBuffer element
 
-Copyright 2011-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+Copyright 2011-2017 Olivier Aubert <contact at olivieraubert.net>
 
 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
@@ -32,7 +32,7 @@ import cairo
 class SliceBuffer(gst.Element):
     __gtype_name__ = 'SliceBuffer'
     __gstdetails__ = ("Slice buffer", "Filter/Editor/Video", "Buffers slices of data",
-                      "Olivier Aubert <olivier.aubert at liris.cnrs.fr>")
+                      "Olivier Aubert <contact at olivieraubert.net>")
 
     __gproperties__ = {
         'slicewidth':  ( gobject.TYPE_INT, 'slicewidth', 'Width of slices', 0, 65536, 0, gobject.PARAM_WRITABLE ),
@@ -172,9 +172,10 @@ if __name__ == '__main__':
 
 
     def on_msg(bus, msg):
-        if msg.structure is None:
+        s = msg.get_structure()
+        if s is None:
             return True
-        if msg.structure.has_field('gerror'):
+        if s.has_field('gerror'):
             print "MSG", msg.structure['debug']
 
     def on_eos (bus, msg):
diff --git a/lib/advene/util/snapshotter.py b/lib/advene/util/snapshotter.py
index 07e7542..c02c548 100755
--- a/lib/advene/util/snapshotter.py
+++ b/lib/advene/util/snapshotter.py
@@ -1,7 +1,7 @@
 #! /usr/bin/python
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2009-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2009-2017 Olivier Aubert <contact at olivieraubert.net>
 #
 # Advene is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -30,64 +30,101 @@ snapshotter.py file://uri/to/movie/file.avi 1200 2400 4600
 This will capture snapshots for the given timestamps (in ms) and save them into /tmp.
 """
 import sys
-import os
 
-import gobject
-import gst
-import gtk
-gtk.gdk.threads_init ()
+import gi
+gi.require_version('Gst', '1.0')
+gi.require_version('GstBase', '1.0')
+from gi.repository import GObject, GLib, GstBase, Gst
+GObject.threads_init()
+Gst.init(None)
 
 from threading import Event, Thread
 import Queue
 from Queue import PriorityQueue
 import heapq
 
+import logging
+logger = logging.getLogger(__name__)
+
 try:
     from evaluator import Evaluator
 except ImportError:
     Evaluator=None
 
-class NotifySink(gst.BaseSink):
+def debug(f):
+    def wrap(*args):
+        print f.__name__, args
+        return f(*args)
+    return wrap
+
+class NotifySink(GstBase.BaseSink):
+
+    __gstmetadata__ = ("Notify sink", "Sink", "Notifying sink",
+                       "Olivier Aubert <contact at olivieraubert.net>")
+
     __gsttemplates__ = (
-        gst.PadTemplate("sink",
-                        gst.PAD_SINK,
-                        gst.PAD_ALWAYS,
-                        gst.caps_new_any()),
+        Gst.PadTemplate.new("sink",
+                            Gst.PadDirection.SINK,
+                            Gst.PadPresence.ALWAYS,
+                            Gst.Caps.new_any()),
         )
 
-    __gstdetails__ = ("Notify sink", "Sink", "Notifying sink",
-                      "Olivier Aubert <olivier.aubert at liris.cnrs.fr>")
-
     __gproperties__ = {
-        'notify': ( gobject.TYPE_PYOBJECT, 'notify', 'The notify method', gobject.PARAM_READWRITE ),
+        'notify': ( GObject.TYPE_PYOBJECT, 'notify', 'The notify method', GObject.ParamFlags.READWRITE ),
         }
 
     def __init__(self):
-        gst.BaseSink.__init__(self)
+        GstBase.BaseSink.__init__(self)
         self.set_sync(False)
         self._notify=None
 
-    #def do_render(self, buffer):
-    #    return gst.FLOW_OK
-
     def do_preroll(self, buffer):
         if self._notify is not None:
-            self._notify(buffer)
-        return gst.FLOW_OK
+            self._notify(self.buffer_as_struct(buffer))
+        return Gst.FlowReturn.OK
 
     def do_set_property(self, key, value):
         if key.name == 'notify':
             self._notify=value
         else:
-            print "No property %s" % key.name
+            logger.info("No property %s" % key.name)
 
     def do_get_property(self, key):
         if key.name == 'notify':
             return self._notify
         else:
-            print "No property %s" % key.name
-gst.element_register(NotifySink, 'notifysink')
-gobject.type_register(NotifySink)
+            logger.info("No property %s" % key.name)
+
+    def buffer_as_struct(self, buffer):
+        (res, mapinfo) = buffer.map(Gst.MapFlags.READ)
+        if not res:
+            logger.warn("Error in converting buffer")
+            res = None
+        else:
+            pos = self.query_position(Gst.Format.TIME)[1]
+            res = {
+                'data': bytes(mapinfo.data),
+                'type': 'PNG',
+                'date': pos / Gst.MSECOND,
+                'pts': buffer.pts / 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 }
+        buffer.unmap(mapinfo)
+        return res
+
+__gstelementfactory__ = ("notifysink", Gst.Rank.NONE, NotifySink)
+def plugin_init(plugin, userarg):
+    NotifySinkType = GObject.type_register(NotifySink)
+    Gst.Element.register(plugin, 'notifysink', 0, NotifySinkType)
+    return True
+
+version = Gst.version()
+reg = Gst.Plugin.register_static_full(version[0], version[1],
+                                      'notify_plugin', 'Notify plugin',
+                                      plugin_init, '1.0', 'Proprietary', 'abc', 'def', 'ghi', None)
 
 class UniquePriorityQueue(Queue.PriorityQueue):
     """PriorityQueue with unique elements.
@@ -112,20 +149,22 @@ class UniquePriorityQueue(Queue.PriorityQueue):
 class Snapshotter(object):
     """Snapshotter class.
 
-    Basic idea: define a "notify" method, which will get a gst.Buffer
-    as parameter. The buffer contains the PNG-encoded snapshot (and
-    its timestamp in buffer.timestamp).
+    Basic idea: define a "notify" method, which will get a dict as
+    parameter. The dict contains the PNG-encoded snapshot ['data']
+    and its timestamp ['date'].
 
     When you need to have a snapshot at a specific timestamp, call
-    s.enqueue class with the timestamp. You notify method will be
+    s.enqueue class with the timestamp. Your notify method will be
     called with the result.
 
     Setup note: the Snapshotter class runs a daemon thread
     continuously waiting for timestamps to process. Thus you should:
-    * call gtk.gdk.threads_init() at the beginning of you application
+    * call GObject.threads_init() at the beginning of you application
     * invoke the "start" method to start the thread.
+
     """
     def __init__(self, notify=None, width=None):
+        self.active = False
         self.notify=notify
         # Snapshot queue handling
         self.timestamp_queue=UniquePriorityQueue()
@@ -135,32 +174,40 @@ class Snapshotter(object):
         self.should_clear = False
 
         # Pipeline building
-        self.videobin=gst.Bin()
+        self.videobin = Gst.Bin()
+        self.videobin.set_name('videosink')
+
+        self.player = Gst.ElementFactory.make("playbin")
 
-        self.player=gst.element_factory_make("playbin")
+        csp = Gst.ElementFactory.make('videoconvert')
+        pngenc = Gst.ElementFactory.make('pngenc')
+        queue = Gst.ElementFactory.make('queue')
+        sink = NotifySink()
 
-        csp=gst.element_factory_make('ffmpegcolorspace')
-        pngenc=gst.element_factory_make('pngenc')
-        queue=gst.element_factory_make('queue')
-        sink=gst.element_factory_make('notifysink')
+        fakesink = Gst.ElementFactory.make('fakesink', 'audiosink')
+        self.player.set_property('audio-sink', fakesink)
 
         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')
-            l=(csp, scale, filter, pngenc, queue, sink)
+            caps = Gst.Caps.from_string("video/x-raw,width=%d,pixel-aspect-ratio=(fraction)1/1" % width)
+            filter_ = Gst.ElementFactory.make("capsfilter", "filter")
+            filter_.set_property("caps", caps)
+            scale=Gst.ElementFactory.make('videoscale')
+            l=(csp, scale, filter_, pngenc, queue, sink)
         else:
             l=(csp, pngenc, queue, sink)
 
-        self.videobin.add(*l)
-        gst.element_link_many(*l)
+        for el in l:
+            self.videobin.add(el)
+        for src, dst in zip(l, l[1:]):
+            src.link(dst)
         # Keep a reference on all pipeline elements, so that they are not garbage-collected
         self._elements = l
 
-        self._ghostpad = gst.GhostPad('sink', csp.get_pad('sink'))
+        self._ghostpad = Gst.GhostPad.new('sink', csp.get_static_pad('sink'))
+        self._ghostpad.set_active(True)
         self.videobin.add_pad(self._ghostpad)
 
-        self.player.props.video_sink=self.videobin
+        self.player.set_property('video-sink', self.videobin)
 
         bus=self.player.get_bus()
         bus.enable_sync_message_emission()
@@ -169,46 +216,52 @@ class Snapshotter(object):
         sink.props.notify=self.queue_notify
 
     def set_uri(self, uri):
-        self.player.set_state(gst.STATE_NULL)
-        self.player.props.uri=uri
-        self.player.set_state(gst.STATE_PAUSED)
+        if uri:
+            self.player.set_state(Gst.State.NULL)
+            self.player.set_property('uri', uri)
+            self.active = True
+            self.player.set_state(Gst.State.PAUSED)
 
     def on_bus_message(self, bus, message):
-        if message.structure is None:
+        s = message.get_structure()
+        if s is None:
             return
-        if message.structure.get_name() != 'missing-plugin':
-            print "Bus message::", message.structure.get_name()
+        if s.get_name() != 'missing-plugin':
+            logger.debug("Bus message::", s.get_name())
 
-    def simple_notify(self, buffer):
+    def simple_notify(self, struct):
         """Basic single-snapshot method.
 
         Used for debugging.
         """
-        t=(buffer.timestamp / gst.MSECOND)
+        if struct is None:
+            logger.warn("Snapshotter: invalid struct")
+            return True
+        logger.info("Timecode %010d - pts %010d" % (struct['date'],
+                                                    struct['pts']))
+        t = struct['date']
         fname='/tmp/%010d.png' % t
-        f=open(fname, 'w')
-        f.write(buffer.data)
+        f=open(fname, 'wb')
+        f.write(struct['data'])
         f.close()
-        print "Snapshot written to", fname
+        logger.info("Snapshot written to" + fname)
         return True
 
     def snapshot(self, t):
         """Set movie time to a specific time.
         """
-        p = long(t * gst.MSECOND)
-        event = gst.event_new_seek(1.0, gst.FORMAT_TIME,
-                                   gst.SEEK_FLAG_FLUSH | gst.SEEK_FLAG_ACCURATE,
-                                   gst.SEEK_TYPE_SET, p,
-                                   gst.SEEK_TYPE_NONE, 0)
-        self.player.set_state(gst.STATE_PAUSED)
-        res = self.player.send_event(event)
+        p = long(t * Gst.MSECOND)
+        self.player.set_state(Gst.State.PAUSED)
+        res = self.player.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.ACCURATE, p)
         if not res:
-            print "snapshotter: error when sending event"
+            logger.warn("snapshotter: error when sending event %s", res)
         return True
 
     def enqueue(self, *l):
         """Enqueue timestamps to capture.
         """
+        if not self.active:
+            return
         for t in l:
             self.timestamp_queue.put_nowait( (t, t) )
         self.snapshot_ready.set()
@@ -220,9 +273,9 @@ class Snapshotter(object):
         """
         self.thread_running=True
         while True:
-            #print "Waiting for event"
+            logger.debug("Waiting for event")
             self.snapshot_ready.wait()
-            #print "Getting timestamp"
+            logger.debug("Getting timestamp")
             if self.should_clear:
                 # Clear the queue
                 self.should_clear = False
@@ -235,9 +288,9 @@ class Snapshotter(object):
                     except Queue.Empty:
                         break
             (t, dummy) = self.timestamp_queue.get()
-            #print "Clearing event"
+            logger.debug("Clearing event")
             self.snapshot_ready.clear()
-            #print "Snapshot", t
+            logger.debug("Snapshot %d", t)
             self.snapshot(t)
         return True
 
@@ -268,12 +321,13 @@ class Snapshotter(object):
         t.start()
 
 if __name__ == '__main__':
+    logging.basicConfig(level=logging.DEBUG)
     try:
         uri=sys.argv[1]
         if uri.startswith('/'):
             uri='file://'+uri
     except IndexError:
-        uri='file:///media/video/Bataille.avi'
+        uri='file:///data/video/Bataille.avi'
 
     s=Snapshotter(width=160)
     s.set_uri(uri)
@@ -284,30 +338,26 @@ if __name__ == '__main__':
         # Timestamps have been specified. Non-interactive version.
         s.enqueue( *(long(t) for t in sys.argv[2:]) )
 
-        loop=gobject.MainLoop()
+        loop=GObject.MainLoop()
         def wait_for_completion():
             if s.timestamp_queue.empty():
                 # Quit application
                 s.snapshot_ready.wait()
                 loop.quit()
             return True
-        gobject.idle_add(wait_for_completion)
+        GLib.idle_add(wait_for_completion)
         loop.run()
     else:
         if Evaluator is None:
-            print "Missing evaluator module.\nFetch it from http://svn.gna.org/viewcvs/advene/trunk/lib/advene/gui/evaluator.py."
+            print "Missing evaluator module.\nFetch it from https://github.com/oaubert/advene/tree/master/lib/advene/gui/evaluator.py"
             sys.exit(0)
 
         # Adding the following lines breaks the code, with a warning:
         #    sys:1: Warning: cannot register existing type `GstSelectorPad'
         #    sys:1: Warning: g_object_new: assertion `G_TYPE_IS_OBJECT (object_type)' failed
-        #pipe=gst.parse_launch('playbin uri=file:///media/video/Bataille.avi')
-        #pipe.set_state(gst.STATE_PLAYING)
+        #pipe=Gst.parse_launch('playbin uri=file:///media/video/Bataille.avi')
+        #pipe.set_state(Gst.State.PLAYING)
 
         ev=Evaluator(globals_=globals(), locals_=locals())
-        ev.locals_['self']=ev
-        window=ev.popup(embedded=False)
         ev.set_expression('s.enqueue(12000, 24000, 36000)')
-        window.connect ("destroy", lambda e: gtk.main_quit())
-
-        gtk.main()
+        ev.run()
diff --git a/lib/advene/util/spawn.py b/lib/advene/util/spawn.py
index 4553c83..86d9e3a 100644
--- a/lib/advene/util/spawn.py
+++ b/lib/advene/util/spawn.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/util/svgoverlay.py b/lib/advene/util/svgoverlay.py
index ca25608..1cf74b6 100755
--- a/lib/advene/util/svgoverlay.py
+++ b/lib/advene/util/svgoverlay.py
@@ -2,7 +2,7 @@
 
 """Gstreamer SVGOverlay element
 
-Copyright 2009-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+Copyright 2009-2017 Olivier Aubert <contact at olivieraubert.net>
 
 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
@@ -39,7 +39,7 @@ except ImportError:
 class SVGOverlay(gst.Element):
     __gtype_name__ = 'SVGOverlay'
     __gstdetails__ = ("SVG overlay", "Filter/Editor/Video", "Overlays SVG content over the video",
-                      "Olivier Aubert <olivier.aubert at liris.cnrs.fr>")
+                      "Olivier Aubert <contact at olivieraubert.net>")
 
     __gproperties__ = {
         'data': ( gobject.TYPE_STRING, 'data', 'SVG data to overlay', None, gobject.PARAM_WRITABLE ),
@@ -113,9 +113,9 @@ class SVGOverlay(gst.Element):
         Use None to reset.
         """
         if data is not None:
-            self.svg=rsvg.Handle(data=data)
+            self.svg=rsvg.Handle.new_from_data(data=data)
         elif filename is not None:
-            self.svg=rsvg.Handle(filename)
+            self.svg=rsvg.Handle.new_from_file(filename)
         else:
             self.svg=None
 
diff --git a/lib/advene/util/website_export.py b/lib/advene/util/website_export.py
index 39ff6ed..f00b33d 100644
--- a/lib/advene/util/website_export.py
+++ b/lib/advene/util/website_export.py
@@ -1,6 +1,6 @@
 #
 # Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008-2012 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+# Copyright (C) 2008-2016 Olivier Aubert <contact at olivieraubert.net>
 #
 # 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/mac/Cillop/LICENSE b/mac/Cillop/LICENSE
deleted file mode 100644
index 5b6e7c6..0000000
--- a/mac/Cillop/LICENSE
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-

-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-

-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-

-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-

-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-

-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/mac/Cillop/gtk-2.0/arrow-down-ins.png b/mac/Cillop/gtk-2.0/arrow-down-ins.png
deleted file mode 100644
index a85e48c..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-down-ins.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-down-pre.png b/mac/Cillop/gtk-2.0/arrow-down-pre.png
deleted file mode 100644
index 0ce6b11..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-down-pre.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-down.png b/mac/Cillop/gtk-2.0/arrow-down.png
deleted file mode 100644
index d9a7cd7..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-down.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-left-ins.png b/mac/Cillop/gtk-2.0/arrow-left-ins.png
deleted file mode 100644
index da6c6e7..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-left-ins.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-left-pre.png b/mac/Cillop/gtk-2.0/arrow-left-pre.png
deleted file mode 100644
index 978cd91..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-left-pre.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-left.png b/mac/Cillop/gtk-2.0/arrow-left.png
deleted file mode 100644
index db058ab..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-left.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-pre.svg b/mac/Cillop/gtk-2.0/arrow-pre.svg
deleted file mode 100644
index 658dc14..0000000
--- a/mac/Cillop/gtk-2.0/arrow-pre.svg
+++ /dev/null
@@ -1,87 +0,0 @@
-<?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://web.resource.org/cc/"
-   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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16px"
-   height="16px"
-   id="svg4837"
-   sodipodi:version="0.32"
-   inkscape:version="0.45"
-   inkscape:export-filename="/home/emrah/.themes/Cillop-2/gtk-2.0/arrow-left-pre.png"
-   inkscape:export-xdpi="101.25"
-   inkscape:export-ydpi="101.25"
-   sodipodi:docname="arrow-pre.svg"
-   sodipodi:docbase="/home/emrah/.themes/Cillop-2/gtk-2.0"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   sodipodi:modified="TRUE">
-  <defs
-     id="defs4839">
-    <filter
-       inkscape:collect="always"
-       id="filter5864">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="0.28425268"
-         id="feGaussianBlur5866" />
-    </filter>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="8"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="920"
-     inkscape:window-height="658"
-     inkscape:window-x="106"
-     inkscape:window-y="158" />
-  <metadata
-     id="metadata4842">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <g
-       id="g5892"
-       transform="matrix(0,1,-1,0,16.022526,-2.2525707e-2)">
-      <path
-         transform="matrix(-1.1058064,0,0,-1,16.868977,16)"
-         style="opacity:1;fill:#8296af;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.49938306;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51953125;filter:url(#filter5864)"
-         d="M 12.044843,11 L 8.4991505,5.3370109 C 8.2264333,4.9255196 7.8357389,4.8887617 7.6041217,5.238238 C 7.6041217,5.238238 3.9619867,10.81816 3.9551575,11 L 12.044843,11 z "
-         id="path4885"
-         sodipodi:nodetypes="ccccc"
-         inkscape:export-xdpi="101.25"
-         inkscape:export-ydpi="101.25" />
-      <path
-         inkscape:export-ydpi="101.25"
-         inkscape:export-xdpi="101.25"
-         sodipodi:nodetypes="ccccc"
-         id="rect4845"
-         d="M 5.016085,5.753461 L 7.671263,9.9941693 C 7.8754863,10.302313 8.1680563,10.329839 8.341502,10.068135 C 8.341502,10.068135 11.068901,5.889631 11.074015,5.753461 L 5.016085,5.753461 z "
-         style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.4079119;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51953125" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/arrow-right-ins.png b/mac/Cillop/gtk-2.0/arrow-right-ins.png
deleted file mode 100644
index ec4f250..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-right-ins.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-right-pre.png b/mac/Cillop/gtk-2.0/arrow-right-pre.png
deleted file mode 100644
index ebbdfbb..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-right-pre.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-right.png b/mac/Cillop/gtk-2.0/arrow-right.png
deleted file mode 100644
index 68c295a..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-right.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-rleft-ins.png b/mac/Cillop/gtk-2.0/arrow-rleft-ins.png
deleted file mode 100644
index da6c6e7..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-rleft-ins.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-up-ins.png b/mac/Cillop/gtk-2.0/arrow-up-ins.png
deleted file mode 100644
index 740bf9c..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-up-ins.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-up-pre.png b/mac/Cillop/gtk-2.0/arrow-up-pre.png
deleted file mode 100644
index 4983e11..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-up-pre.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow-up.png b/mac/Cillop/gtk-2.0/arrow-up.png
deleted file mode 100644
index 536b960..0000000
Binary files a/mac/Cillop/gtk-2.0/arrow-up.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/arrow.svg b/mac/Cillop/gtk-2.0/arrow.svg
deleted file mode 100644
index d97fe64..0000000
--- a/mac/Cillop/gtk-2.0/arrow.svg
+++ /dev/null
@@ -1,66 +0,0 @@
-<?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://web.resource.org/cc/"
-   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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16px"
-   height="16px"
-   id="svg4837"
-   sodipodi:version="0.32"
-   inkscape:version="0.45"
-   inkscape:export-filename="/home/emrah/.themes/Cillop-2/gtk-2.0/arrow-up.png"
-   inkscape:export-xdpi="101.25"
-   inkscape:export-ydpi="101.25"
-   sodipodi:docname="arrow.svg"
-   sodipodi:docbase="/home/emrah/.themes/Cillop-2/gtk-2.0"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   sodipodi:modified="TRUE">
-  <defs
-     id="defs4839" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="8"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="920"
-     inkscape:window-height="658"
-     inkscape:window-x="76"
-     inkscape:window-y="147" />
-  <metadata
-     id="metadata4842">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <path
-       style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.4079119;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.51953125"
-       d="M 11.028965,10.246539 L 8.373787,6.0058307 C 8.1695637,5.697687 7.8769937,5.670161 7.703548,5.931865 C 7.703548,5.931865 4.976149,10.110369 4.971035,10.246539 L 11.028965,10.246539 z "
-       id="rect4845"
-       sodipodi:nodetypes="ccccc"
-       inkscape:export-xdpi="101.25"
-       inkscape:export-ydpi="101.25" />
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/bg.png b/mac/Cillop/gtk-2.0/bg.png
deleted file mode 100644
index c7e7590..0000000
Binary files a/mac/Cillop/gtk-2.0/bg.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/button-default.png b/mac/Cillop/gtk-2.0/button-default.png
deleted file mode 100644
index 6711b0b..0000000
Binary files a/mac/Cillop/gtk-2.0/button-default.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/button-default.svg b/mac/Cillop/gtk-2.0/button-default.svg
deleted file mode 100644
index ef2edc2..0000000
--- a/mac/Cillop/gtk-2.0/button-default.svg
+++ /dev/null
@@ -1,78 +0,0 @@
-<?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://web.resource.org/cc/"
-   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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="36"
-   height="36"
-   id="svg1872"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/Desktop/Cillop-Mediterranean/gtk-2.0"
-   sodipodi:docname="button-default.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   inkscape:export-filename="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0/button-default.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90"
-   version="1.0">
-  <defs
-     id="defs1874">
-    <filter
-       inkscape:collect="always"
-       id="filter5818">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.2025014"
-         id="feGaussianBlur5820" />
-    </filter>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="14.78125"
-     inkscape:cx="20.9115"
-     inkscape:cy="16.525099"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1024"
-     inkscape:window-height="714"
-     inkscape:window-x="0"
-     inkscape:window-y="29" />
-  <metadata
-     id="metadata1877">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <rect
-       ry="2.7852964"
-       rx="2.7852964"
-       y="0.96874326"
-       x="0.96874332"
-       height="30.062511"
-       width="30.062513"
-       id="rect2778"
-       style="opacity:1;fill:#6889a6;fill-opacity:1;stroke:none;stroke-width:1.93748653;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter5818)"
-       transform="matrix(1.1309766,0,0,1.0644486,-9.5626027e-2,0.9688226)" />
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/button-insensitive.svg b/mac/Cillop/gtk-2.0/button-insensitive.svg
deleted file mode 100644
index bc98dbd..0000000
--- a/mac/Cillop/gtk-2.0/button-insensitive.svg
+++ /dev/null
@@ -1,225 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="32px"
-   height="32px"
-   id="svg1872"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="button-insensitive.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   inkscape:export-filename="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0/button-normal.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="14.78125"
-     inkscape:cx="20.9115"
-     inkscape:cy="13.669618"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1024"
-     inkscape:window-height="714"
-     inkscape:window-x="0"
-     inkscape:window-y="29" />
-  <defs
-     id="defs1874">
-    <linearGradient
-       id="linearGradient3699">
-      <stop
-         offset="0"
-         id="stop3701"
-         style="stop-color:#ffffff;stop-opacity:0.86274511;" />
-      <stop
-         offset="1"
-         id="stop3703"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2798">
-      <stop
-         offset="0"
-         id="stop2800"
-         style="stop-color:white;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop2802"
-         style="stop-color:white;stop-opacity:0.1375" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2788">
-      <stop
-         offset="0"
-         id="stop2790"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop2783"
-         style="stop-color:#c4cf9e;stop-opacity:1;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient2404"
-       r="14.0625"
-       gradientTransform="matrix(1.6911078,0,0,0.9270546,-11.057726,1.1649887)"
-       cx="16"
-       cy="0.48806855"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3699"
-       fy="0.48806855"
-       fx="16" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2407"
-       x1="28.094524"
-       y1="27.046463"
-       gradientTransform="matrix(0.9633036,0,0,0.9311933,1.0687977,1.0987694)"
-       x2="22.080519"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient2798"
-       y2="3.8279345" />
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient2410"
-       r="16"
-       gradientTransform="matrix(1.4257733,0,0,0.9713742,-6.4588664,-1.726213)"
-       cx="15.285574"
-       cy="33.370087"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient2788"
-       fy="33.370087"
-       fx="15.285574" />
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient2410-268"
-       r="16"
-       gradientTransform="matrix(1.4257733,0,0,0.9713742,-6.4588664,-1.726213)"
-       cx="15.285574"
-       cy="33.370087"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient2788-379"
-       fy="33.370087"
-       fx="15.285574" />
-    <linearGradient
-       id="linearGradient2788-379">
-      <stop
-         offset="0"
-         id="stop2195"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop2197"
-         style="stop-color:#c6c6c6;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient2407-170"
-       y2="3.8279345"
-       y1="27.046463"
-       gradientTransform="matrix(0.9633036,0,0,0.9311933,1.0687977,1.0987694)"
-       x2="22.080519"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient2798-995"
-       x1="28.094524" />
-    <linearGradient
-       id="linearGradient2798-995">
-      <stop
-         offset="0"
-         id="stop2201"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop2203"
-         style="stop-color:#ffffff;stop-opacity:0.1375" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient2404-832"
-       r="14.0625"
-       gradientTransform="matrix(1.6911078,0,0,0.9270546,-11.057726,1.1649887)"
-       cx="16"
-       cy="0.48806855"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3699-438"
-       fy="0.48806855"
-       fx="16" />
-    <linearGradient
-       id="linearGradient3699-438">
-      <stop
-         offset="0"
-         id="stop2207"
-         style="stop-color:#ffffff;stop-opacity:0.86274511;" />
-      <stop
-         offset="1"
-         id="stop2209"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-  </defs>
-  <metadata
-     id="metadata1877">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <g
-       id="g2173">
-      <rect
-         id="rect2203"
-         x="1.6902257"
-         y="2.6385322"
-         width="28.619549"
-         height="26.722933"
-         ry="1.2525004"
-         rx="1.3183649"
-         style="opacity:0.8;fill:#ededed;fill-opacity:1;stroke:#ffffff;stroke-width:1.27706504;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <rect
-         id="rect1880"
-         x="1.5370671"
-         y="2.4661219"
-         width="28.925865"
-         height="27.063478"
-         ry="2.0389581"
-         rx="2.6329918"
-         style="opacity:0.5;fill:url(#radialGradient2410-268);fill-opacity:1;stroke:#767676;stroke-width:0.93462706;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <path
-         d="M 2.0321011,28.103374 L 2.210298,3.3391456 L 29.967899,3.3391456 C 29.967899,28.417649 2.0321011,3.3591153 2.0321011,28.103374 z "
-         id="path2796"
-         style="opacity:0.5;fill:url(#linearGradient2407-170);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         sodipodi:nodetypes="cccc" />
-      <rect
-         id="rect2812"
-         x="2.5230951"
-         y="3.4521499"
-         width="26.95381"
-         height="25.091421"
-         ry="1.2801028"
-         rx="1.2766985"
-         style="opacity:0.5;fill:none;fill-opacity:1;stroke:url(#radialGradient2404-832);stroke-width:1.05212986;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/button-normal.svg b/mac/Cillop/gtk-2.0/button-normal.svg
deleted file mode 100644
index 03ad38d..0000000
--- a/mac/Cillop/gtk-2.0/button-normal.svg
+++ /dev/null
@@ -1,178 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="32px"
-   height="32px"
-   id="svg1872"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="button-normal.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   inkscape:export-filename="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0/button-normal.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs1874">
-    <linearGradient
-       id="linearGradient3804">
-      <stop
-         id="stop3806"
-         offset="0"
-         style="stop-color:#000000;stop-opacity:0.08627451;" />
-      <stop
-         id="stop3808"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0.39215687;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3699">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.86274511;"
-         offset="0"
-         id="stop3701" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop3703" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2798">
-      <stop
-         style="stop-color:white;stop-opacity:1;"
-         offset="0"
-         id="stop2800" />
-      <stop
-         style="stop-color:white;stop-opacity:0.1375"
-         offset="1"
-         id="stop2802" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2788">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop2790" />
-      <stop
-         id="stop2783"
-         offset="1"
-         style="stop-color:#c9cccc;stop-opacity:1;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3699"
-       id="radialGradient3150"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.6988924,0,0,0.9313219,-11.182277,1.0988487)"
-       cx="16"
-       cy="0.48806855"
-       fx="16"
-       fy="0.48806855"
-       r="14.0625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2798"
-       id="linearGradient3153"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9677379,0,0,0.9354797,1.0000667,1.0323245)"
-       x1="28.094524"
-       y1="27.046463"
-       x2="22.080519"
-       y2="3.8279345" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2788"
-       id="radialGradient3156"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.4323363,0,0,0.9758456,-6.5622485,-1.8056618)"
-       cx="15.285574"
-       cy="33.370087"
-       fx="15.285574"
-       fy="33.370087"
-       r="16" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3804"
-       id="linearGradient3159"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9352346,0,0,0.9516616,1.0362475,0.5184487)"
-       x1="12.36174"
-       y1="5.0757694"
-       x2="12.970619"
-       y2="28.980885" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="14.78125"
-     inkscape:cx="20.9115"
-     inkscape:cy="19.08188"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1024"
-     inkscape:window-height="716"
-     inkscape:window-x="0"
-     inkscape:window-y="52" />
-  <metadata
-     id="metadata1877">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <rect
-       ry="2.0837767"
-       rx="2.6444187"
-       y="1.4848689"
-       x="1.4848689"
-       height="29.030262"
-       width="29.030262"
-       id="rect2778"
-       style="fill:none;fill-opacity:1;stroke:url(#linearGradient3159);stroke-width:0.96973777;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       style="fill:url(#radialGradient3156);fill-opacity:1;stroke:#636363;stroke-width:0.93892932;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect1880"
-       width="29.059017"
-       height="27.188057"
-       x="1.4704916"
-       y="2.4059711"
-       rx="2.6451118"
-       ry="2.0483439" />
-    <path
-       style="fill:url(#linearGradient3153);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 1.9678043,28.161236 L 2.1468215,3.2830136 L 30.032195,3.2830136 C 30.032195,28.476959 1.9678043,3.3030752 1.9678043,28.161236 z "
-       id="path2796"
-       sodipodi:nodetypes="cccc" />
-    <rect
-       style="fill:none;fill-opacity:1;stroke:url(#radialGradient3150);stroke-width:1.0569731;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2812"
-       width="27.077885"
-       height="25.206923"
-       x="2.4610584"
-       y="3.396538"
-       rx="1.2825754"
-       ry="1.2859955" />
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/button-prelight.svg b/mac/Cillop/gtk-2.0/button-prelight.svg
deleted file mode 100644
index 613288a..0000000
--- a/mac/Cillop/gtk-2.0/button-prelight.svg
+++ /dev/null
@@ -1,178 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="32px"
-   height="32px"
-   id="svg1872"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="button-prelight.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   inkscape:export-filename="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0/button-normal.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs1874">
-    <linearGradient
-       id="linearGradient7212">
-      <stop
-         style="stop-color:#6889a6;stop-opacity:0.94117647;"
-         offset="0"
-         id="stop7214" />
-      <stop
-         style="stop-color:#6889a6;stop-opacity:0.56470591;"
-         offset="1"
-         id="stop7216" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3804">
-      <stop
-         id="stop3806"
-         offset="0"
-         style="stop-color:#000000;stop-opacity:0.08627451;" />
-      <stop
-         id="stop3808"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0.39215687;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2798">
-      <stop
-         style="stop-color:white;stop-opacity:1;"
-         offset="0"
-         id="stop2800" />
-      <stop
-         style="stop-color:white;stop-opacity:0.1375"
-         offset="1"
-         id="stop2802" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2788">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop2790" />
-      <stop
-         id="stop2783"
-         offset="1"
-         style="stop-color:#c9cccc;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2798"
-       id="linearGradient4222"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9677378,0,0,0.9354797,1.0000667,1.0323245)"
-       x1="28.094524"
-       y1="27.046463"
-       x2="22.080519"
-       y2="3.8279345" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2788"
-       id="radialGradient4225"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.4323861,0,0,0.975845,-6.563547,-1.8056508)"
-       cx="15.285574"
-       cy="33.370087"
-       fx="15.285574"
-       fy="33.370087"
-       r="16" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3804"
-       id="linearGradient4228"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9352346,0,0,0.9516616,1.0362475,0.5184487)"
-       x1="12.36174"
-       y1="5.0757694"
-       x2="12.970619"
-       y2="28.980885" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient7212"
-       id="linearGradient8189"
-       x1="16"
-       y1="14.672915"
-       x2="15.158279"
-       y2="17.016605"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0701465,0,0,1.0789276,-1.1223443,-33.262838)" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="14.78125"
-     inkscape:cx="20.9115"
-     inkscape:cy="15.194934"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1024"
-     inkscape:window-height="714"
-     inkscape:window-x="0"
-     inkscape:window-y="29" />
-  <metadata
-     id="metadata1877">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <rect
-       ry="2.0837765"
-       rx="2.6444187"
-       y="1.4848689"
-       x="1.4848689"
-       height="29.030262"
-       width="29.030262"
-       id="rect2778"
-       style="fill:none;fill-opacity:1;stroke:url(#linearGradient4228);stroke-width:0.96973777;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       style="fill:url(#radialGradient4225);fill-opacity:1;stroke:#646464;stroke-width:0.93894541;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect1880"
-       width="29.060026"
-       height="27.188042"
-       x="1.4694726"
-       y="2.4059796"
-       rx="2.6452036"
-       ry="2.0483427" />
-    <path
-       style="fill:url(#linearGradient4222);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 1.9678043,28.161235 L 2.1468215,3.2830136 L 30.032195,3.2830136 C 30.032195,28.476958 1.9678043,3.3030752 1.9678043,28.161235 z "
-       id="path2796"
-       sodipodi:nodetypes="cccc" />
-    <rect
-       style="opacity:0.7;fill:none;fill-opacity:0.33333334;stroke:url(#linearGradient8189);stroke-width:2.67401385;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect2812"
-       width="25.300497"
-       height="23.736408"
-       x="3.3497515"
-       y="-27.868204"
-       rx="0.47712848"
-       ry="0.48104355"
-       transform="scale(1,-1)" />
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/button-pressed.svg b/mac/Cillop/gtk-2.0/button-pressed.svg
deleted file mode 100644
index af9635e..0000000
--- a/mac/Cillop/gtk-2.0/button-pressed.svg
+++ /dev/null
@@ -1,178 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="32px"
-   height="32px"
-   id="svg1872"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="button-pressed.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   inkscape:export-filename="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0/button-normal.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="14.78125"
-     inkscape:cx="20.776193"
-     inkscape:cy="15.814739"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1024"
-     inkscape:window-height="714"
-     inkscape:window-x="0"
-     inkscape:window-y="29" />
-  <defs
-     id="defs1874">
-    <linearGradient
-       id="linearGradient3277">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.73725492"
-         id="stop3279"
-         offset="0" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0"
-         id="stop3281"
-         offset="1" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3804-579">
-      <stop
-         offset="0"
-         id="stop8547"
-         style="stop-color:#000000;stop-opacity:0.1254902;" />
-      <stop
-         offset="1"
-         id="stop8549"
-         style="stop-color:#e5e5e5;stop-opacity:0.78431374;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2788-132">
-      <stop
-         offset="0"
-         id="stop8553"
-         style="stop-color:#c9cccc;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop8555"
-         style="stop-color:#939999;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2798-608">
-      <stop
-         offset="0"
-         id="stop8559"
-         style="stop-color:#e5e5e5;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop8561"
-         style="stop-color:#e5e5e5;stop-opacity:0.1375" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2798-608"
-       id="linearGradient2298"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9051724,0,0,0.9375,1.9698276,0.9999999)"
-       x1="28.211048"
-       y1="28.798056"
-       x2="22.794416"
-       y2="7.8858352" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2788-132"
-       id="radialGradient2301"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.4100044,0,0,0.9783908,-6.2104735,-1.8521039)"
-       cx="15.285574"
-       cy="33.370087"
-       fx="15.285574"
-       fy="33.370087"
-       r="16" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3804-579"
-       id="linearGradient2304"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9372544,0,0,0.9537169,1.0039314,0.4850143)"
-       x1="12.36174"
-       y1="5.0757694"
-       x2="12.970619"
-       y2="28.980885" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3277"
-       id="radialGradient3275"
-       cx="16"
-       cy="2.3449633"
-       fx="16"
-       fy="2.3449633"
-       r="14.0625"
-       gradientTransform="matrix(2.1257995,0,0,0.9333333,-18.012792,1.0666677)"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <metadata
-     id="metadata1877">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <rect
-       id="rect2778"
-       x="1.4535216"
-       y="1.4535215"
-       width="29.092957"
-       height="29.092957"
-       ry="2.0882769"
-       rx="2.6501296"
-       style="fill:none;fill-opacity:1;stroke:url(#linearGradient2304);stroke-width:0.90704322;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       id="rect1880"
-       x="1.697026"
-       y="2.3705142"
-       width="28.605949"
-       height="27.258972"
-       ry="2.0536864"
-       rx="2.6038711"
-       style="fill:url(#radialGradient2301);fill-opacity:1;stroke:#424242;stroke-width:0.9375;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <path
-       id="path2796"
-       d="M 2.875,28.1875 L 3.0424436,3.2555496 L 29.125,3.2555496 C 29.125,28.503904 2.875,3.2756546 2.875,28.1875 z "
-       style="fill:url(#linearGradient2298);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       sodipodi:nodetypes="cccc" />
-    <rect
-       id="rect2812"
-       x="2.4318194"
-       y="3.3693192"
-       width="27.136362"
-       height="25.26136"
-       ry="1.2887727"
-       rx="1.2853452"
-       style="fill:none;fill-opacity:1;stroke:url(#radialGradient3275);stroke-width:0.98863864;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/comboarrow.png b/mac/Cillop/gtk-2.0/comboarrow.png
deleted file mode 100644
index fa1492b..0000000
Binary files a/mac/Cillop/gtk-2.0/comboarrow.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/gtkrc b/mac/Cillop/gtk-2.0/gtkrc
deleted file mode 100644
index 5f1dd1e..0000000
--- a/mac/Cillop/gtk-2.0/gtkrc
+++ /dev/null
@@ -1,832 +0,0 @@
-# Cillop GTK2 Theme
-# Emrah  Ünal - 2006, 2007
-# eunall at gmail.com
-
-gtk-color-scheme = "bg_color: #D6D6D6\nfg_color: #000\nbase_color: #fff\ntext_color: #000\nselected_bg_color: #8E9499\nselected_fg_color: #000"
-style "default"
-{
-GtkRange::trough_border              = 0
-GtkPaned::handle_size                = 6
-GtkRange::slider_width               = 14
-GtkRange::stepper_size               = 10
-GtkScrollbar::trough_border          = 2
-GtkScrollbar::min_slider_length      = 24
-GtkScrollbar::slider_width	     = 14
-GtkScrollbar::stepper_size	     = 12
-GtkCheckButton::indicator_size       = 12
-GtkRadioButton::indicator_size       = 12
-GtkMenuBar::internal-padding         = 1
-GtkTreeView::expander_size           = 14
-GtkExpander::expander_size           = 14
-GtkWidget::interior_focus            = 1
-GtkWidget::focus_padding             = 0
-GtkScale::slider_length              = 30
-  
-# color definitions
-bg[NORMAL]		= @bg_color
-#bg_pixmap[NORMAL]	= "bg.png"
-bg[PRELIGHT]		= shade (0.8, @bg_color)
-bg[ACTIVE]		= shade (0.85, @bg_color)
-bg[SELECTED]		= mix (0.65, @selected_bg_color, @bg_color)
-bg[INSENSITIVE]	        = shade (0.85, @bg_color)
-fg[NORMAL]		= @fg_color
-fg[PRELIGHT]		= @fg_color
-fg[ACTIVE]		= @fg_color
-fg[SELECTED]		= @selected_fg_color
-fg[INSENSITIVE]	        = mix (0.4, @fg_color, shade (0.85, @bg_color)) #shaded to bg[INSENSITIVE]
-base[NORMAL]		= @base_color
-base[PRELIGHT]	        = @base_color #XXX
-base[ACTIVE]		= mix (0.45, @selected_bg_color, @base_color)
-base[SELECTED]	        = @selected_bg_color
-base[INSENSITIVE]	= mix (0.90, @base_color, @text_color)
-text[NORMAL]		= @text_color
-text[PRELIGHT]	        = @text_color #XXX
-text[ACTIVE]		= @selected_fg_color
-text[SELECTED]	        = @selected_fg_color
-text[INSENSITIVE]	= mix (0.5, @text_color, @base_color)
-
-}
-
-style "default"
-{
-  engine "pixmap"
-  {
-	image
-	{
-	function          	= BOX
-	shadow            	= IN
-	file              	= "null.svg"
-	border           	= { 1, 1, 1, 1 }
-	stretch           	= TRUE
-	}
-
-	image
-	{
-	function          	= BOX
-	shadow            	= OUT
-	file              	= "null.svg"
-	border            	= { 1, 1, 1, 1 }
-	stretch           	= TRUE
-	}
-
-	image
-	{
-	function		= ARROW
-	state			= NORMAL
-	file			= "arrow-up.png"
-	border	= { 0, 0, 0, 0 }
-	stretch	= TRUE
-	arrow_direction	= UP
-	}
-
-	image
-	{
-	function		= ARROW
-	state			= PRELIGHT
-	file			= "arrow-up-pre.png"
-	border	= { 0, 0, 0, 0 }
-	stretch	= TRUE
-	arrow_direction	= UP
-	}
-
-	image
-	{
-	function		= ARROW
-	state			= INSENSITIVE
-	file		= "arrow-up-ins.png"
-	border	= { 0, 0, 0, 0 }
-	stretch	= TRUE
-	arrow_direction	= UP
-	}
-
-	image
-	{
-	function			= ARROW
-	state				= NORMAL
-	file		= "arrow-down.png"
-	border	= { 0, 0, 0, 0 }
-	stretch	= TRUE
-	arrow_direction	= DOWN
-	}
-	image
-	{
-	function			= ARROW
-	state				= PRELIGHT
-	file		= "arrow-down-pre.png"
-	border	= { 0, 0, 0, 0 }
-	stretch	= TRUE
-	arrow_direction	= DOWN
-	}
-	image
-	{
-	function			= ARROW
-	state				= INSENSITIVE
-	file		= "arrow-down-ins.png"
-	border	= { 0, 0, 0, 0 }
-	stretch	= TRUE
-	arrow_direction	= DOWN
-	}
-	image
-	{
-	function			= ARROW
-	file				= "null.svg"
-	state				= NORMAL
-	overlay_file		= "arrow-left.png"
-        overlay_border	= { 0, 0, 0, 0 }
-        overlay_stretch	= FALSE
-        arrow_direction	= LEFT
-       }
-        image
-       {
-        function		= ARROW
-        state				= PRELIGHT
-        file				= "null.svg"
-        overlay_file		= "arrow-left-pre.png"
-        overlay_border	= { 0, 0, 0, 0 }
-        overlay_stretch	= FALSE
-        arrow_direction	= LEFT
-       }
-        image
-       {
-        function			= ARROW
-        state				= INSENSITIVE
-        overlay_file		= "arrow-left-ins.png"
-        overlay_border	= { 0, 0, 0, 0 }
-        overlay_stretch	= FALSE
-        arrow_direction	= LEFT
-       }
-        image
-       {
-        function			= ARROW
-        file				= "null.svg"
-        state				= NORMAL
-        overlay_file		= "arrow-right.png"
-        overlay_border	= { 0, 0, 0, 0 }
-        overlay_stretch	= FALSE
-        arrow_direction	= RIGHT
-       } 
-        image
-       {
-        function		= ARROW
-        state				= PRELIGHT
-        file				= "null.svg"
-        overlay_file		= "arrow-right-pre.png"
-        overlay_border	= { 0, 0, 0, 0 }
-        overlay_stretch	= FALSE
-        arrow_direction	= RIGHT
-       }
-        image
-       {
-        function		= ARROW
-        state			= INSENSITIVE
-        overlay_file		= "arrow-right-ins.png"
-        overlay_border		= { 0, 0, 0, 0 }
-        overlay_stretch		= FALSE
-        arrow_direction		= RIGHT
-       }
-
-   }
-}
-class "GtkWidget"          style "default"
-
-style "button"			= "default"
-{
-  xthickness			= 4
-  ythickness			= 4
-  engine "pixmap"
-  {
-
-      image
-     {
-      function			= BOX
-      detail			= "buttondefault"
-      file			= "button-default.png"
-      border			= { 4, 4, 4, 4 }
-      stretch			= TRUE
-     }
-
-      image 
-     {
-      function			= BOX
-      state			= NORMAL
-      recolorable		= TRUE
-      file			= "button-normal.svg"
-      border			= { 15, 15, 8, 8 }
-      stretch			= TRUE
-     }	
-      image
-     {
-      function			= BOX
-      state			= PRELIGHT
-      recolorable		= TRUE      
-      file			= "button-prelight.svg"
-      border			= { 8, 8, 8, 8 }
-      stretch			= TRUE
-     }
-      image
-     {
-      function			= BOX
-      state			= ACTIVE
-      recolorable		= TRUE
-      file			= "button-pressed.svg"
-      border			= { 15,15,8,8 }
-      stretch			= TRUE
-     }	
-      image 
-     {
-      function			= BOX
-      state			= INSENSITIVE
-      recolorable		= TRUE
-      file			= "button-insensitive.svg"
-      border			= { 15,15,8,8 }
-      stretch			= TRUE
-     }
-      image 
-     {
-      function			= BOX
-      recolorable		= TRUE
-      file			= "button-normal.svg"
-      border			= { 15, 15, 8, 8 }
-      stretch			= TRUE
-     }
-
-  }
-}
-
-style "optionmenu"		= "default"
-{
-  xthickness			= 4
-  ythickness			= 4
-  engine "pixmap"
-  {
-      image
-     {
-      function			= BOX
-      state			= NORMAL
-      file			= "button-normal.svg"
-      border			= { 15,15,8,8 }
-      stretch			= TRUE
-     }
-      image
-     {
-      function			= BOX
-      state			= PRELIGHT
-      file			= "button-prelight.svg"
-      border			= { 8,8,8,8 }
-      stretch			= TRUE
-     }
-      image
-     {
-      function			= BOX
-      state			= INSENSITIVE
-      file			= "button-insensitive.svg"
-      border			= { 8,8,8,8}
-      stretch			= TRUE
-     }
-
-      image
-     {
-      function			= BOX
-      state			= INSENSITIVE
-      file			= "button-insensitive.svg"
-      border			= { 8,8,8,8}
-      stretch			= TRUE
-     }
-
-
-      image
-     {
-      function			= TAB
-      state			= NORMAL
-      overlay_file		= "comboarrow.png"
-      overlay_stretch		= FALSE
-     }
-
-  }
-}
-
-
-
-
-
-style "scrollbar"
-{
-
-  engine "pixmap" 
-  {
-      image 
-     {
-      function			= BOX
-      detail			= "trough"
-      file			= "trough2.svg"
-      border			= { 6, 6, 6, 6 }
-      stretch			= TRUE
-      orientation		= VERTICAL
-     }
-      image 
-     {
-      function			= BOX
-      detail			= "trough"
-      file			= "trough2-h.svg"
-      border			= { 6, 6, 6, 6 }
-      stretch			= TRUE
-      orientation		= HORIZONTAL
-     }
-      image 
-     {
-      function			= SLIDER
-      state           		= NORMAL
-      file			= "slider-h.svg" 
-      border			= { 6, 6, 2, 2 }
-      stretch			= TRUE
-      orientation		= HORIZONTAL
-     }
-      image 
-     {
-      function			= SLIDER
-      state           		= PRELIGHT
-      file			= "slider-h-pre.svg" 
-      border			= { 6, 6, 2, 2 }
-      stretch			= TRUE
-      orientation		= HORIZONTAL
-     }
-      image 
-     {
-      function			= SLIDER
-      state           		= INSENSITIVE
-      file			= "slider-h-ins.svg"
-      border			= { 6,6,2,2 }
-      stretch			= TRUE
-      orientation		= HORIZONTAL
-     }
-      image 
-     {
-      function			= SLIDER
-      state           		= NORMAL
-      file			= "slider-v.svg" 
-      border			= { 2, 2, 6, 6 }
-      stretch			= TRUE
-      orientation		= VERTICAL
-	
-	
-      
-     }
-      image 
-     {
-      function			= SLIDER
-      state           		= PRELIGHT
-      file			= "slider-v-pre.svg" 
-      border			= { 2, 2, 6, 6 }
-      stretch			= TRUE
-      orientation		= VERTICAL
-     }
-      image 
-     {
-      function			= SLIDER
-      state           		= INSENSITIVE
-      file			= "slider-v-ins.svg"
-      border			= { 2, 2, 6, 6 }
-      stretch			= TRUE
-      orientation		= VERTICAL
-     }
-      image 
-     {
-      function			= STEPPER
-      state			= NORMAL
-      file			= "null.svg"
-      border			= { 1, 1, 4, 4 }
-      stretch			= TRUE
-      arrow_direction		= UP
-      overlay_file		= "arrow-up.png"
-      overlay_stretch		= FALSE
-     }
-      image 
-     {
-      function			= STEPPER
-      state			= PRELIGHT
-      file			= "null.svg"
-      border			= { 1, 1, 4, 4 }
-      stretch			= TRUE
-      arrow_direction		= UP
-      overlay_file		= "arrow-up-pre.png"
-      overlay_stretch		= FALSE
-     }
-      image
-     {
-      function			= STEPPER
-      state			= ACTIVE
-      file			= "null.svg"
-      border			= { 1, 1, 4, 4 }
-      stretch			= TRUE
-      arrow_direction		= UP
-      overlay_file		= "arrow-up.png"
-      overlay_stretch		= FALSE
-     }
-      image 
-     {
-      function			= STEPPER
-      state			= INSENSITIVE
-      file			= "null.svg"
-      border			= { 1, 1, 4, 4 }
-      stretch			= TRUE
-      arrow_direction		= UP
-      overlay_file		= "arrow-up-ins.png"
-      overlay_stretch		= FALSE
-     }
-      image 
-     {
-      function			= STEPPER
-      state			= NORMAL
-      file			= "null.svg"
-      border			= { 1, 1, 4, 4 }
-      stretch			= TRUE
-      arrow_direction		= DOWN
-      overlay_file		= "arrow-down.png"
-      overlay_stretch		= FALSE
-     }
-      image 
-     {
-      function			= STEPPER
-      state			= PRELIGHT
-      file			= "null.svg"
-      border			= { 1, 1, 4, 4 }
-      stretch			= TRUE
-      arrow_direction		= DOWN
-      overlay_file		= "arrow-down-pre.png"
-      overlay_stretch		= FALSE
-     }
-      image
-     {
-      function			= STEPPER
-      state			= ACTIVE
-      file			= "null.svg"
-      border			= { 1, 1, 4, 4 }
-      stretch			= TRUE
-      arrow_direction		= DOWN
-      overlay_file		= "arrow-down.png"
-      overlay_stretch		= FALSE
-     }
-      image 
-     {
-      function			= STEPPER
-      state			= INSENSITIVE
-      file			= "null.svg"
-      border			= { 1, 1, 4, 4 }
-      stretch			= TRUE
-      arrow_direction		= DOWN
-      overlay_file		= "arrow-down-ins.png"
-      overlay_stretch		= FALSE
-     }
-      image 
-     {
-      function			= STEPPER
-      state			= NORMAL
-      file			= "null.svg"
-      border			= { 4, 4, 1, 1 }
-      stretch			= TRUE
-      arrow_direction		= RIGHT
-      overlay_file		= "arrow-right.png"
-      overlay_stretch		= FALSE
-     }
-      image 
-     {
-      function			= STEPPER
-      state			= PRELIGHT
-      file			= "null.svg"
-      border			= { 4, 4, 1, 1 }
-      stretch			= TRUE
-      arrow_direction		= RIGHT
-      overlay_file		= "arrow-right-pre.png"
-      overlay_stretch		= FALSE
-     }
-      image
-     {
-      function			= STEPPER
-      state			= ACTIVE
-      file			= "null.svg"
-      border			= { 4, 4, 1, 1 }
-      stretch			= TRUE
-      arrow_direction		= RIGHT
-      overlay_file		= "arrow-right.png"
-      overlay_stretch		= FALSE
-     }
-      image
-     {
-      function			= STEPPER
-      state			= INSENSITIVE
-      file			= "null.svg"
-      border			= { 4, 4, 1, 1 }
-      stretch			= TRUE
-      arrow_direction		= RIGHT
-      overlay_file		= "arrow-right-ins.png"
-      overlay_stretch		= FALSE
-     }
-    image 
-    {
-      function			= STEPPER
-      state			= NORMAL
-      file			= "null.svg"
-      border			= { 4,4,1,1 }
-      stretch			= TRUE
-      arrow_direction		= LEFT
-      overlay_file		= "arrow-left.png"
-      overlay_stretch		= FALSE
-   }
-   image 
-   {
-      function			= STEPPER
-      state			= PRELIGHT
-      file			= "null.svg"
-      border			= { 4,4,1,1 }
-      stretch			= TRUE
-      arrow_direction		= LEFT
-      overlay_file		= "arrow-left-pre.png"
-      overlay_stretch		= FALSE
-   }
-     image 
-     {
-      function			= STEPPER
-      state			= ACTIVE
-      file			= "null.svg"
-      border			= { 4,4,1,1 }
-      stretch			= TRUE
-      arrow_direction		= LEFT
-      overlay_file		= "arrow-left.png"
-      overlay_stretch		= FALSE
-     }
-     image 
-     {
-      function			= STEPPER
-      state			= INSENSITIVE
-      file			= "null.svg"
-      border			= { 4,4,1,1 }
-      stretch			= TRUE
-      arrow_direction		= LEFT
-      overlay_file		= "arrow-left-ins.png"
-      overlay_stretch		= FALSE
-     }
-  }
-}
-
-style "range"			= "default"
-{
-  engine "pixmap" 
-     {
-     image
-     {
-      function			= FOCUS
-      file			= "rangetrough-focus.png"
-      border			= { 6, 6, 6, 6 }
-      stretch			= TRUE
-     }	
-     image 
-     {
-      function			= BOX
-      detail			= "trough"
-      file			= "pbtroughh.svg"
-      border			= { 6, 6, 6, 6 }
-      stretch			= TRUE
-      orientation		= HORIZONTAL
-      }	
-      image 
-      {
-       function			= BOX
-       detail			= "trough"
-       file			= "pbtroughv.svg"
-       border			= { 6, 6, 6, 6 }
-       stretch			= TRUE
-       orientation		= VERTICAL
-      }
-      image 
-      {
-       function			= SLIDER
-       state           		= NORMAL
-       file			= "rangeslider.svg"
-       border			= { 6, 6, 6, 6 }
-       stretch			= TRUE
-       overlay_file		= "rangegrip-h.png"
-       overlay_stretch		= FALSE
-       orientation		= HORIZONTAL
-      }
-      image 
-      {
-       function			= SLIDER
-       state          	 	= PRELIGHT
-       file			= "rangeslider-pre.svg"
-       border			= { 6, 6, 6, 6 }
-       stretch			= TRUE
-       overlay_file		= "rangegrip-h.png"
-       overlay_stretch		= FALSE
-       orientation		= HORIZONTAL
-      }
-      image 
-      {
-       function			= SLIDER
-       state         	  	= ACTIVE
-       file			= "rangeslider-pre.svg"
-       border			= { 6, 6, 6, 6 }
-       stretch			= TRUE
-       overlay_file		= "rangegrip-h.png"
-       overlay_stretch		= FALSE
-       orientation		= HORIZONTAL
-      }
-      image 
-      {
-       function			= SLIDER
-       state           		= INSENSITIVE
-       file			= "rangeslider-ins.svg"
-       border			= { 6, 6, 6, 6 }
-       stretch			= TRUE
-       overlay_file		= "rangegrip-h.png"
-       overlay_stretch		= FALSE
-       orientation		= HORIZONTAL
-      }
-      image 
-      {
-       function			= SLIDER
-       state	           	= NORMAL
-       file			= "rangeslider-v.svg"
-       border			= { 6, 6, 6, 6 }
-       stretch			= TRUE
-       overlay_file		= "rangegrip-v.png"
-       overlay_stretch		= FALSE
-       orientation		= VERTICAL
-      }
-      image 
-      {
-       function			= SLIDER
-       state           		= PRELIGHT
-       file			= "rangeslider-v-pre.svg"
-       border			= { 6, 6, 6, 6 }
-       stretch			= TRUE
-       overlay_file=		"rangegrip-v.png"
-       overlay_stretch		= FALSE
-       orientation		= VERTICAL
-      }
-      image 
-      {
-       function			= SLIDER
-       state           		= ACTIVE
-       file			= "rangeslider-v-pre.svg"
-       border			= { 6, 6, 6, 6 }
-       stretch			= TRUE
-       overlay_file		= "rangegrip-v.png"
-       overlay_stretch		= FALSE
-       orientation		= VERTICAL
-      }
-      image 
-      {
-       function			= SLIDER
-       state           		= INSENSITIVE
-       file			= "rangeslider-v-ins.svg"
-       border			= { 6, 6, 6, 6 }
-       stretch			= TRUE
-       overlay_file		= "rangegrip-v.png"
-       overlay_stretch		= FALSE
-       orientation		= VERTICAL
-      }
-  }
-}
-
-
-
-style "menuitem"
-{
-  xthickness			= 2
-  ythickness			= 2
-  fg[PRELIGHT] = @selected_fg_color
-  text[PRELIGHT] = @selected_fg_color
-  engine "clearlooks"
-  {
-  radius = 0.0
-  style = GLOSSY
-  }
-}
-
-
-style "menubar"
-{
-  xthickness = 0
-  ythickness = 0
-  engine "pixmap"
-  {
-      image
-      {
-       function			= BOX
-       state			= NORMAL
-       file			= "menubar.svg"
-       border			= { 8,8,15,15 }
-       stretch			= TRUE
-      }	
-  }
-}
-class "GtkMenuBar" style "menubar"
-
-
-style "list-header"
-{
-   GtkTreeView::odd_row_color = "#F5F5FA"
-   GtkTreeView::even_row_color = "#FFFFFF"
-  xthickness			= 3
-  ythickness			= 2
-   engine "clearlooks" 
-  {
-	
-  }
-}
-
-
-
-style "shallow"
-{
-	xthickness=0
-	ythickness=0
-	engine "clearlooks"	
-	{
-	radius =0.0
-	style = GLOSSY
-	}
-}
-
-style "progressbar" 
-{
-xthickness = 1
-ythickness = 1
- engine "clearlooks"
- {
- style             = GLOSSY
- }
-}
-
-style "spinbutton" 
-{
-xthickness=3
-ythickness=3
- engine "clearlooks"	
- {
- }
-}
-
-style "gtkentry" 
-{
-xthickness=4
-ythickness=4
- engine "clearlooks"	
- {
- radius = 4.0
- style = GLOSSY
- }
-}
-
-style "checkbox"
-{
- engine "clearlooks" 
- {
- }
-}
-
-style "radiobutton"	= "default"
-{
- engine "clearlooks" 
- {
- }
-}
-
-style "notebook"
-{
-	xthickness=2
-	ythickness=2
-	engine "clearlooks"
-	{
-	}
-}
-
-class "GtkButton"          			style "button"
-class "GtkOptionMenu"      			style "optionmenu"
-class "GtkRuler"           			style "shallow"
-class "GtkScrollbar"       			style "scrollbar"
-class "GtkProgressBar"     			style "progressbar"
-class "GtkRange"         			style "range"
-class "GtkMenu"       				style "shallow"
-class "GtkItem"           			style "menuitem"
-class "GtkTearoffMenuItem"			style "menuitem"
-class "GtkNotebook"      			style "notebook"
-class "GtkHandleBox"    			style "gtkentry"
-class "GtkEventBox"    				style "notebook"
-class "GtkPaned"       				style "gtkentry"
-widget "gtk-tooltips"  				style "shallow"
-class "GtkWidget" 				style "notebook"
-class "GtkEntry"  				style "gtkentry"
-class "GtkFrame"  				style "gtkentry"
-class "GtkCheckButton"     			style "checkbox"
-class "GtkStatusbar"   				style "shallow"
-class "GtkSpinButton"   	 		style "spinbutton"
-class "GTKComboEntry"				style	"gtkentry"
-widget_class "*.GtkFrame.GtkLabel" 		style "shallow"
-widget_class "*.GtkFrame.GtkLabel" 		style "shallow"
-widget_class "BasePWidget.GtkEventBox.GtkTable.GtkFrame" style "shallow"
-class "GtkRadioButton"     			style "radiobutton"
-class "GtkRadioMenuItem"    			style "radiobutton"
-class "GtkEditable"				style "gtkentry"
-widget_class "*OptionMenu*"     	style "optionmenu"
-
diff --git a/mac/Cillop/gtk-2.0/lineh.png b/mac/Cillop/gtk-2.0/lineh.png
deleted file mode 100644
index a4e7802..0000000
Binary files a/mac/Cillop/gtk-2.0/lineh.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/linev.png b/mac/Cillop/gtk-2.0/linev.png
deleted file mode 100644
index ecb8fbe..0000000
Binary files a/mac/Cillop/gtk-2.0/linev.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/menubar.svg b/mac/Cillop/gtk-2.0/menubar.svg
deleted file mode 100644
index 00034fc..0000000
--- a/mac/Cillop/gtk-2.0/menubar.svg
+++ /dev/null
@@ -1,88 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="32px"
-   height="32px"
-   id="svg1872"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0"
-   sodipodi:docname="menubar.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs1874">
-    <linearGradient
-       id="linearGradient2780">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="0"
-         id="stop2782" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.58823532;"
-         offset="1"
-         id="stop2784" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2780"
-       id="linearGradient5897"
-       x1="15.570325"
-       y1="14.152994"
-       x2="15.570325"
-       y2="-0.0031868482"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,1.0153383,0,-32)" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#868686"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="14.78125"
-     inkscape:cx="21.046807"
-     inkscape:cy="23.346497"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1016"
-     inkscape:window-height="695"
-     inkscape:window-x="0"
-     inkscape:window-y="28" />
-  <metadata
-     id="metadata1877">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <rect
-       style="fill:url(#linearGradient5897);fill-opacity:1;stroke:none;stroke-width:0.96682161;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect1880"
-       width="32"
-       height="32"
-       x="0"
-       y="-32"
-       rx="1.9319962"
-       ry="1.8775963"
-       transform="scale(1,-1)" />
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/null.svg b/mac/Cillop/gtk-2.0/null.svg
deleted file mode 100644
index 2872d25..0000000
--- a/mac/Cillop/gtk-2.0/null.svg
+++ /dev/null
@@ -1,55 +0,0 @@
-<?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://web.resource.org/cc/"
-   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:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="48"
-   height="48"
-   id="svg1307"
-   sodipodi:version="0.32"
-   inkscape:version="0.43"
-   sodipodi:docbase="/home/emrah/.themes/Polycarbonate-0.5/gtk-2.0"
-   sodipodi:docname="null.svg"
-   version="1.0">
-  <defs
-     id="defs1309" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="8.0000005"
-     inkscape:cx="38.653926"
-     inkscape:cy="25.803528"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1270"
-     inkscape:window-height="930"
-     inkscape:window-x="0"
-     inkscape:window-y="27"
-     borderlayer="top" />
-  <metadata
-     id="metadata1312">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer" />
-</svg>
diff --git a/mac/Cillop/gtk-2.0/pbtroughh.svg b/mac/Cillop/gtk-2.0/pbtroughh.svg
deleted file mode 100644
index d2e12be..0000000
--- a/mac/Cillop/gtk-2.0/pbtroughh.svg
+++ /dev/null
@@ -1,128 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg1307"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/Desktop/Cillop-Mediterranean/gtk-2.0"
-   sodipodi:docname="pbtroughh.svg"
-   version="1.0"
-   inkscape:export-filename="/home/emrah/.themes/Polycarbonate-0.5/gtk-2.0/trough2.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs1309">
-    <linearGradient
-       id="linearGradient5808">
-      <stop
-         style="stop-color:#969696;stop-opacity:1;"
-         offset="0"
-         id="stop5810" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="1"
-         id="stop5812" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient16819">
-      <stop
-         id="stop16821"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.19607843;" />
-      <stop
-         id="stop16823"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0.19607843;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient16819"
-       id="linearGradient4913"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8654669,0,0,0.1605019,-0.9417338,2.1849467)"
-       x1="-13.393001"
-       y1="30.000002"
-       x2="-0.59684116"
-       y2="30.000002" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5808"
-       id="linearGradient4915"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8654669,0,0,0.1605019,-0.9417338,2.1849467)"
-       x1="-0.56191593"
-       y1="35.137894"
-       x2="-12.579332"
-       y2="35.0508" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.483333"
-     inkscape:cx="6.9999998"
-     inkscape:cy="5.6168359"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1012"
-     inkscape:window-height="698"
-     inkscape:window-x="4"
-     inkscape:window-y="42"
-     borderlayer="top" />
-  <metadata
-     id="metadata1312">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <g
-       id="g4909"
-       transform="matrix(0.9603408,0,0,0.9603408,0.2776142,0.2776142)">
-      <rect
-         transform="matrix(0,-1,1,0,0,0)"
-         ry="4.7064815"
-         rx="4.7064824"
-         y="2.2935202"
-         x="-11.706485"
-         height="9.4129629"
-         width="9.4129658"
-         id="rect4896"
-         style="fill:url(#linearGradient4913);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4915);stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.56000004;stroke-opacity:1" />
-      <rect
-         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.56000004;stroke-opacity:0.20209973"
-         id="rect2230"
-         width="7.8454762"
-         height="7.8454738"
-         x="-10.92274"
-         y="3.0772645"
-         rx="3.9227378"
-         ry="3.9227369"
-         transform="matrix(0,-1,1,0,0,0)" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/pbtroughv.svg b/mac/Cillop/gtk-2.0/pbtroughv.svg
deleted file mode 100644
index 9e6703a..0000000
--- a/mac/Cillop/gtk-2.0/pbtroughv.svg
+++ /dev/null
@@ -1,128 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg1307"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0"
-   sodipodi:docname="pbtroughv.svg"
-   version="1.0"
-   inkscape:export-filename="/home/emrah/.themes/Polycarbonate-0.5/gtk-2.0/trough2.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs1309">
-    <linearGradient
-       id="linearGradient5808">
-      <stop
-         style="stop-color:#969696;stop-opacity:1;"
-         offset="0"
-         id="stop5810" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="1"
-         id="stop5812" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient16819">
-      <stop
-         id="stop16821"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.19607843;" />
-      <stop
-         id="stop16823"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0.19607843;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5808"
-       id="linearGradient5814"
-       x1="-0.56191593"
-       y1="35.137894"
-       x2="-12.579332"
-       y2="35.0508"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8654669,0,0,0.1605019,-0.9417338,2.1849467)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient16819"
-       id="linearGradient5816"
-       x1="-13.393001"
-       y1="30.000002"
-       x2="-0.59684116"
-       y2="30.000002"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8654669,0,0,0.1605019,-0.9417338,2.1849467)" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#dddddd"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.483333"
-     inkscape:cx="6.9999998"
-     inkscape:cy="5.6168359"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1012"
-     inkscape:window-height="654"
-     inkscape:window-x="4"
-     inkscape:window-y="46"
-     borderlayer="top" />
-  <metadata
-     id="metadata1312">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <g
-       id="g3279"
-       transform="matrix(0,-1,1,0,-2.3841858e-7,14.000004)">
-      <rect
-         transform="matrix(0,-1,1,0,0,0)"
-         ry="4.7064815"
-         rx="4.7064824"
-         y="2.2935202"
-         x="-11.706485"
-         height="9.4129629"
-         width="9.4129658"
-         id="rect4896"
-         style="fill:url(#linearGradient5816);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5814);stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.56000004;stroke-opacity:1" />
-      <rect
-         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.56000004;stroke-opacity:0.20209973"
-         id="rect2230"
-         width="7.8454762"
-         height="7.8454738"
-         x="-10.92274"
-         y="3.0772645"
-         rx="3.9227378"
-         ry="3.9227369"
-         transform="matrix(0,-1,1,0,0,0)" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/rangegrip-h.png b/mac/Cillop/gtk-2.0/rangegrip-h.png
deleted file mode 100644
index 310b58e..0000000
Binary files a/mac/Cillop/gtk-2.0/rangegrip-h.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/rangegrip-h.svg b/mac/Cillop/gtk-2.0/rangegrip-h.svg
deleted file mode 100644
index 59e6178..0000000
--- a/mac/Cillop/gtk-2.0/rangegrip-h.svg
+++ /dev/null
@@ -1,131 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="12"
-   height="8"
-   id="svg2160"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   version="1.0"
-   sodipodi:docbase="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0"
-   sodipodi:docname="rangegrip-h.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   inkscape:export-filename="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0/rangegrip-h.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs2162">
-    <linearGradient
-       id="linearGradient3143">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.47058824;"
-         offset="0"
-         id="stop3145" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.22147651;"
-         offset="1"
-         id="stop3147" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3143"
-       id="linearGradient2363"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7927787,0,0,0.5208771,0.964286,1.4999998)"
-       x1="3.6274586"
-       y1="2.3718197"
-       x2="6.3548536"
-       y2="2.3718197" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3143"
-       id="linearGradient2431"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7927787,0,0,0.5208771,0.964286,5.4999998)"
-       x1="3.6274586"
-       y1="2.3718197"
-       x2="6.3548536"
-       y2="2.3718197" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3143"
-       id="linearGradient2435"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7927787,0,0,0.5208771,0.964286,9.4999998)"
-       x1="3.6274586"
-       y1="2.3718197"
-       x2="6.3548536"
-       y2="2.3718197" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="8"
-     inkscape:current-layer="svg2160"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1016"
-     inkscape:window-height="653"
-     inkscape:window-x="6"
-     inkscape:window-y="49" />
-  <metadata
-     id="metadata2165">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer" />
-  <rect
-     style="opacity:0.38642297;fill:#ffffff;fill-opacity:0.45595853;stroke:url(#linearGradient2363);stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-     id="rect3185"
-     width="2"
-     height="1"
-     x="3"
-     y="1.5"
-     rx="0"
-     ry="0"
-     transform="matrix(0,1,1,0,0,0)" />
-  <rect
-     transform="matrix(0,1,1,0,0,0)"
-     ry="0"
-     rx="0"
-     y="5.5"
-     x="3"
-     height="1"
-     width="2"
-     id="rect2429"
-     style="opacity:0.38642297;fill:#ffffff;fill-opacity:0.45595853;stroke:url(#linearGradient2431);stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-  <rect
-     style="opacity:0.38642297;fill:#ffffff;fill-opacity:0.45595853;stroke:url(#linearGradient2435);stroke-width:2;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-     id="rect2433"
-     width="2"
-     height="1"
-     x="3"
-     y="9.5"
-     rx="0"
-     ry="0"
-     transform="matrix(0,1,1,0,0,0)" />
-</svg>
diff --git a/mac/Cillop/gtk-2.0/rangegrip-v.png b/mac/Cillop/gtk-2.0/rangegrip-v.png
deleted file mode 100644
index 2dab166..0000000
Binary files a/mac/Cillop/gtk-2.0/rangegrip-v.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/rangeslider-ins.svg b/mac/Cillop/gtk-2.0/rangeslider-ins.svg
deleted file mode 100644
index a11d9df..0000000
--- a/mac/Cillop/gtk-2.0/rangeslider-ins.svg
+++ /dev/null
@@ -1,127 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45"
-   sodipodi:docbase="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0"
-   sodipodi:docname="rangeslider-ins.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0"
-   sodipodi:modified="true">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="7.7007336"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="678"
-     inkscape:window-x="488"
-     inkscape:window-y="214" />
-  <defs
-     id="defs3806">
-    <linearGradient
-       id="linearGradient3665">
-      <stop
-         offset="0"
-         id="stop3667"
-         style="stop-color:#ebebeb;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop3669"
-         style="stop-color:#a5a5a5;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4704-951-989">
-      <stop
-         offset="0"
-         id="stop6373"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop6375"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient4879"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.0143772,0,0,-1.0472177,43.790224,13.986294)"
-       cx="14.527122"
-       cy="6.8330836"
-       fx="14.527122"
-       fy="6.8330836"
-       r="7.3700495" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient4881"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <g
-       id="g4875"
-       transform="matrix(0.8576401,0,0,0.8588311,0.9975735,0.9886584)">
-      <path
-         transform="matrix(0,0.9506982,-0.9402534,0,13.68145,0.2959886)"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         sodipodi:ry="6.937624"
-         sodipodi:rx="6.8700495"
-         sodipodi:cy="7.1074257"
-         sodipodi:cx="7.0502477"
-         id="path4881"
-         style="fill:url(#radialGradient4879);fill-opacity:1;fill-rule:nonzero;stroke:#848484;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         transform="matrix(0,0.5993913,-0.6482327,0,11.197098,1.1010356)"
-         d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-         sodipodi:ry="6.171782"
-         sodipodi:rx="4.0769801"
-         sodipodi:cy="6.4767327"
-         sodipodi:cx="4.3923268"
-         id="path6875"
-         style="fill:url(#radialGradient4881);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/rangeslider-pre.svg b/mac/Cillop/gtk-2.0/rangeslider-pre.svg
deleted file mode 100644
index 08cea94..0000000
--- a/mac/Cillop/gtk-2.0/rangeslider-pre.svg
+++ /dev/null
@@ -1,125 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="rangeslider-pre.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="7.7007336"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="698"
-     inkscape:window-x="8"
-     inkscape:window-y="52" />
-  <defs
-     id="defs3806">
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient2171-951"
-       r="7.3700495"
-       gradientTransform="matrix(-1.1290972,0,0,-1.2063514,30.929654,15.073668)"
-       cx="13.594742"
-       cy="6.8330836"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3665-855"
-       fy="6.8330836"
-       fx="13.594742" />
-    <linearGradient
-       id="linearGradient3665-855">
-      <stop
-         offset="0"
-         id="stop2226"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop2228"
-         style="stop-color:#b0b6bd;stop-opacity:0.94117647;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient2173-31"
-       r="4.0769801"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient4704-951-989-495"
-       fy="6.4767327"
-       fx="0.31534672" />
-    <linearGradient
-       id="linearGradient4704-951-989-495">
-      <stop
-         offset="0"
-         id="stop2232"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop2234"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <g
-       id="g2167">
-      <path
-         id="path4881"
-         sodipodi:cx="7.0502477"
-         sodipodi:cy="7.1074257"
-         transform="matrix(0,0.8141794,-0.8066345,0,12.731763,1.2584802)"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient2171-951);fill-opacity:1;fill-rule:nonzero;stroke:#6e6e6e;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:ry="6.937624"
-         sodipodi:rx="6.8700495" />
-      <path
-         id="path6875"
-         sodipodi:cx="4.3923268"
-         sodipodi:cy="6.4767327"
-         transform="matrix(0,0.5133196,-0.5561127,0,10.600461,1.9479236)"
-         d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient2173-31);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:ry="6.171782"
-         sodipodi:rx="4.0769801" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/rangeslider-v-ins.svg b/mac/Cillop/gtk-2.0/rangeslider-v-ins.svg
deleted file mode 100644
index 6e6a5b3..0000000
--- a/mac/Cillop/gtk-2.0/rangeslider-v-ins.svg
+++ /dev/null
@@ -1,126 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="rangeslider-v-ins.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="7.7007336"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="698"
-     inkscape:window-x="8"
-     inkscape:window-y="42" />
-  <defs
-     id="defs3806">
-    <linearGradient
-       id="linearGradient3665">
-      <stop
-         offset="0"
-         id="stop3667"
-         style="stop-color:#ebebeb;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop3669"
-         style="stop-color:#a5a5a5;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4704-951-989">
-      <stop
-         offset="0"
-         id="stop6373"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop6375"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient4879"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.0143772,0,0,-1.0472177,43.790224,13.986294)"
-       cx="14.527122"
-       cy="6.8330836"
-       fx="14.527122"
-       fy="6.8330836"
-       r="7.3700495" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient4881"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <g
-       id="g4875"
-       transform="matrix(0,-0.8576401,0.8588311,0,0.9892574,13.001653)">
-      <path
-         transform="matrix(0,0.9506982,-0.9402534,0,13.68145,0.2959886)"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         sodipodi:ry="6.937624"
-         sodipodi:rx="6.8700495"
-         sodipodi:cy="7.1074257"
-         sodipodi:cx="7.0502477"
-         id="path4881"
-         style="fill:url(#radialGradient4879);fill-opacity:1;fill-rule:nonzero;stroke:#848484;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         transform="matrix(0,0.5993913,-0.6482327,0,11.197098,1.1010356)"
-         d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-         sodipodi:ry="6.171782"
-         sodipodi:rx="4.0769801"
-         sodipodi:cy="6.4767327"
-         sodipodi:cx="4.3923268"
-         id="path6875"
-         style="fill:url(#radialGradient4881);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/rangeslider-v-pre.svg b/mac/Cillop/gtk-2.0/rangeslider-v-pre.svg
deleted file mode 100644
index fdf17ac..0000000
--- a/mac/Cillop/gtk-2.0/rangeslider-v-pre.svg
+++ /dev/null
@@ -1,192 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="rangeslider-v-pre.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="7.7007336"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="698"
-     inkscape:window-x="8"
-     inkscape:window-y="42" />
-  <defs
-     id="defs3806">
-    <linearGradient
-       id="linearGradient3665">
-      <stop
-         offset="0"
-         id="stop3667"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop3669"
-         style="stop-color:#9ea4aa;stop-opacity:0.94117647;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4704-951-989">
-      <stop
-         offset="0"
-         id="stop6373"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop6375"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient4879"
-       r="7.3700495"
-       gradientTransform="matrix(-1.1290972,0,0,-1.2063514,30.929654,15.073668)"
-       cx="13.594742"
-       cy="6.8330836"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3665"
-       fy="6.8330836"
-       fx="13.594742" />
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient4881"
-       r="4.0769801"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient4704-951-989"
-       fy="6.4767327"
-       fx="0.31534672" />
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient2171"
-       r="7.3700495"
-       gradientTransform="matrix(-1.1290972,0,0,-1.2063514,30.929654,15.073668)"
-       cx="13.594742"
-       cy="6.8330836"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3665"
-       fy="6.8330836"
-       fx="13.594742" />
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient2173"
-       r="4.0769801"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient4704-951-989"
-       fy="6.4767327"
-       fx="0.31534672" />
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient2171-951"
-       r="7.3700495"
-       gradientTransform="matrix(-1.1290972,0,0,-1.2063514,30.929654,15.073668)"
-       cx="13.594742"
-       cy="6.8330836"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3665-855"
-       fy="6.8330836"
-       fx="13.594742" />
-    <linearGradient
-       id="linearGradient3665-855">
-      <stop
-         offset="0"
-         id="stop2226"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop2228"
-         style="stop-color:#b0b6bd;stop-opacity:0.94117647;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       id="radialGradient2173-31"
-       r="4.0769801"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient4704-951-989-495"
-       fy="6.4767327"
-       fx="0.31534672" />
-    <linearGradient
-       id="linearGradient4704-951-989-495">
-      <stop
-         offset="0"
-         id="stop2232"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop2234"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <g
-       transform="matrix(0,-1,1,0,2.1615327e-5,13.997315)"
-       id="g2167">
-      <path
-         id="path4881"
-         sodipodi:cx="7.0502477"
-         sodipodi:cy="7.1074257"
-         transform="matrix(0,0.8141794,-0.8066345,0,12.731763,1.2584802)"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient2171-951);fill-opacity:1;fill-rule:nonzero;stroke:#6e6e6e;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:ry="6.937624"
-         sodipodi:rx="6.8700495" />
-      <path
-         id="path6875"
-         sodipodi:cx="4.3923268"
-         sodipodi:cy="6.4767327"
-         transform="matrix(0,0.5133196,-0.5561127,0,10.600461,1.9479236)"
-         d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient2173-31);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:ry="6.171782"
-         sodipodi:rx="4.0769801" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/rangeslider-v.svg b/mac/Cillop/gtk-2.0/rangeslider-v.svg
deleted file mode 100644
index 3b67cdf..0000000
--- a/mac/Cillop/gtk-2.0/rangeslider-v.svg
+++ /dev/null
@@ -1,148 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="rangeslider-v.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="7.7007336"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="698"
-     inkscape:window-x="8"
-     inkscape:window-y="42" />
-  <defs
-     id="defs3806">
-    <linearGradient
-       id="linearGradient3665">
-      <stop
-         offset="0"
-         id="stop3667"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop3669"
-         style="stop-color:#8e9499;stop-opacity:0.94117647;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4704-951-989">
-      <stop
-         offset="0"
-         id="stop6373"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop6375"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient4879"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.1290972,0,0,-1.2063514,30.929654,15.073668)"
-       cx="13.594742"
-       cy="6.8330836"
-       fx="13.594742"
-       fy="6.8330836"
-       r="7.3700495" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient4881"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient2171"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.1290972,0,0,-1.2063514,30.929654,15.073668)"
-       cx="13.594742"
-       cy="6.8330836"
-       fx="13.594742"
-       fy="6.8330836"
-       r="7.3700495" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient2173"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <g
-       id="g2167"
-       transform="matrix(0,-1,1,0,2.1615327e-5,13.997315)">
-      <path
-         transform="matrix(0,0.8141794,-0.8066345,0,12.731763,1.2584802)"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         sodipodi:ry="6.937624"
-         sodipodi:rx="6.8700495"
-         sodipodi:cy="7.1074257"
-         sodipodi:cx="7.0502477"
-         id="path4881"
-         style="fill:url(#radialGradient2171);fill-opacity:1;fill-rule:nonzero;stroke:#636363;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         transform="matrix(0,0.5133196,-0.5561127,0,10.600461,1.9479236)"
-         d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-         sodipodi:ry="6.171782"
-         sodipodi:rx="4.0769801"
-         sodipodi:cy="6.4767327"
-         sodipodi:cx="4.3923268"
-         id="path6875"
-         style="fill:url(#radialGradient2173);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/rangeslider.svg b/mac/Cillop/gtk-2.0/rangeslider.svg
deleted file mode 100644
index 8dc2faa..0000000
--- a/mac/Cillop/gtk-2.0/rangeslider.svg
+++ /dev/null
@@ -1,125 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="rangeslider.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="7.7007336"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="698"
-     inkscape:window-x="8"
-     inkscape:window-y="52" />
-  <defs
-     id="defs3806">
-    <linearGradient
-       id="linearGradient3665">
-      <stop
-         offset="0"
-         id="stop3667"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop3669"
-         style="stop-color:#8e9499;stop-opacity:0.94117647;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4704-951-989">
-      <stop
-         offset="0"
-         id="stop6373"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop6375"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient2171"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.1290972,0,0,-1.2063514,30.929654,15.073668)"
-       cx="13.594742"
-       cy="6.8330836"
-       fx="13.594742"
-       fy="6.8330836"
-       r="7.3700495" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient2173"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <g
-       id="g2167">
-      <path
-         transform="matrix(0,0.8141794,-0.8066345,0,12.731763,1.2584802)"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         sodipodi:ry="6.937624"
-         sodipodi:rx="6.8700495"
-         sodipodi:cy="7.1074257"
-         sodipodi:cx="7.0502477"
-         id="path4881"
-         style="fill:url(#radialGradient2171);fill-opacity:1;fill-rule:nonzero;stroke:#636363;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         transform="matrix(0,0.5133196,-0.5561127,0,10.600461,1.9479236)"
-         d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-         sodipodi:ry="6.171782"
-         sodipodi:rx="4.0769801"
-         sodipodi:cy="6.4767327"
-         sodipodi:cx="4.3923268"
-         id="path6875"
-         style="fill:url(#radialGradient2173);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/rangetrough-focus.png b/mac/Cillop/gtk-2.0/rangetrough-focus.png
deleted file mode 100644
index 47a3429..0000000
Binary files a/mac/Cillop/gtk-2.0/rangetrough-focus.png and /dev/null differ
diff --git a/mac/Cillop/gtk-2.0/rangetrough-focus.svg b/mac/Cillop/gtk-2.0/rangetrough-focus.svg
deleted file mode 100644
index 545fb36..0000000
--- a/mac/Cillop/gtk-2.0/rangetrough-focus.svg
+++ /dev/null
@@ -1,174 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg1307"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0"
-   sodipodi:docname="rangetrough-focus.svg"
-   version="1.0"
-   inkscape:export-filename="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0/rangetrough-focus.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs1309">
-    <linearGradient
-       id="linearGradient5808">
-      <stop
-         style="stop-color:#969696;stop-opacity:1;"
-         offset="0"
-         id="stop5810" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="1"
-         id="stop5812" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient16819">
-      <stop
-         id="stop16821"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.19607843;" />
-      <stop
-         id="stop16823"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0.19607843;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5808"
-       id="linearGradient5814"
-       x1="-0.56191593"
-       y1="35.137894"
-       x2="-12.579332"
-       y2="35.0508"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8654669,0,0,0.1605019,-0.9417338,2.1849467)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient16819"
-       id="linearGradient5816"
-       x1="-13.393001"
-       y1="30.000002"
-       x2="-0.59684116"
-       y2="30.000002"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8654669,0,0,0.1605019,-0.9417338,2.1849467)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient16819"
-       id="linearGradient4913"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8654669,0,0,0.1605019,-0.9417338,2.1849467)"
-       x1="-13.393001"
-       y1="30.000002"
-       x2="-0.59684116"
-       y2="30.000002" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5808"
-       id="linearGradient4915"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8654669,0,0,0.1605019,-0.9417338,2.1849467)"
-       x1="-0.56191593"
-       y1="35.137894"
-       x2="-12.579332"
-       y2="35.0508" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient16819"
-       id="linearGradient4921"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8654669,0,0,0.1605019,-0.9417338,2.1849467)"
-       x1="-13.393001"
-       y1="30.000002"
-       x2="-0.59684116"
-       y2="30.000002" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5808"
-       id="linearGradient4923"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8654669,0,0,0.1605019,-0.9417338,2.1849467)"
-       x1="-0.56191593"
-       y1="35.137894"
-       x2="-12.579332"
-       y2="35.0508" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient16819"
-       id="linearGradient5896"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.1636007,0,0,0.215791,1.1452032,0.5262733)"
-       x1="-13.393001"
-       y1="30.000002"
-       x2="-0.59684116"
-       y2="30.000002" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5808"
-       id="linearGradient5898"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.1636007,0,0,0.215791,1.1452032,0.5262733)"
-       x1="-0.56191593"
-       y1="35.137894"
-       x2="-12.579332"
-       y2="35.0508" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.483333"
-     inkscape:cx="6.9999998"
-     inkscape:cy="5.6168359"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1012"
-     inkscape:window-height="689"
-     inkscape:window-x="341"
-     inkscape:window-y="94"
-     borderlayer="top" />
-  <metadata
-     id="metadata1312">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <rect
-       transform="matrix(0,-1,1,0,0,0)"
-       ry="6.3277531"
-       rx="6.3277593"
-       y="0.67224783"
-       x="-13.327762"
-       height="12.655506"
-       width="12.655519"
-       id="rect4917"
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#6889a6;stroke-width:1.34447694;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.56000004;stroke-opacity:1" />
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/slider-h-ins.svg b/mac/Cillop/gtk-2.0/slider-h-ins.svg
deleted file mode 100644
index 797162e..0000000
--- a/mac/Cillop/gtk-2.0/slider-h-ins.svg
+++ /dev/null
@@ -1,127 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45"
-   sodipodi:docbase="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0"
-   sodipodi:docname="slider-h-ins.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0"
-   sodipodi:modified="true">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="7.7007336"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="678"
-     inkscape:window-x="488"
-     inkscape:window-y="214" />
-  <defs
-     id="defs3806">
-    <linearGradient
-       id="linearGradient3665">
-      <stop
-         offset="0"
-         id="stop3667"
-         style="stop-color:#ebebeb;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop3669"
-         style="stop-color:#a5a5a5;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4704-951-989">
-      <stop
-         offset="0"
-         id="stop6373"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop6375"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient7267"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.0143772,0,0,-1.0472177,43.790224,13.986294)"
-       cx="14.527122"
-       cy="6.8330836"
-       fx="14.527122"
-       fy="6.8330836"
-       r="7.3700495" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient7269"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <g
-       id="g7263"
-       transform="matrix(0,1,-1,0,13.997315,-2.2298696e-5)">
-      <path
-         transform="matrix(0.9506982,0,0,0.9402534,0.2960109,0.3158652)"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         sodipodi:ry="6.937624"
-         sodipodi:rx="6.8700495"
-         sodipodi:cy="7.1074257"
-         sodipodi:cx="7.0502477"
-         id="path4881"
-         style="fill:url(#radialGradient7267);fill-opacity:1;fill-rule:nonzero;stroke:#848484;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         transform="matrix(0.5993913,0,0,0.6482327,1.1010579,2.8002167)"
-         d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-         sodipodi:ry="6.171782"
-         sodipodi:rx="4.0769801"
-         sodipodi:cy="6.4767327"
-         sodipodi:cx="4.3923268"
-         id="path6875"
-         style="fill:url(#radialGradient7269);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/slider-h-pre.svg b/mac/Cillop/gtk-2.0/slider-h-pre.svg
deleted file mode 100644
index 7421e8b..0000000
--- a/mac/Cillop/gtk-2.0/slider-h-pre.svg
+++ /dev/null
@@ -1,221 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="slider-h-pre.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="9.8375039"
-     inkscape:cy="5.8987534"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="698"
-     inkscape:window-x="8"
-     inkscape:window-y="42" />
-  <defs
-     id="defs3806">
-    <linearGradient
-       id="linearGradient12110">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop12112" />
-      <stop
-         id="stop12118"
-         offset="0.5"
-         style="stop-color:#ffffff;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="1"
-         id="stop12114" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient2788">
-      <stop
-         style="stop-color:#c5d0a0;stop-opacity:1;"
-         offset="0"
-         id="stop2790" />
-      <stop
-         id="stop2783"
-         offset="1"
-         style="stop-color:#b5c385;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7212">
-      <stop
-         style="stop-color:#6889a6;stop-opacity:0.94117647;"
-         offset="0"
-         id="stop7214" />
-      <stop
-         style="stop-color:#6889a6;stop-opacity:0.56470591;"
-         offset="1"
-         id="stop7216" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3665">
-      <stop
-         offset="0"
-         id="stop3667"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop3669"
-         style="stop-color:#8e9499;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4704-951-989">
-      <stop
-         offset="0"
-         id="stop6373"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop6375"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient7046"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.0143772,0,0,-1.0472177,43.790224,13.986294)"
-       cx="14.527122"
-       cy="6.8330836"
-       fx="14.527122"
-       fy="6.8330836"
-       r="7.3700495" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient7048"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2788"
-       id="linearGradient4348"
-       x1="-0.075772679"
-       y1="6.9986464"
-       x2="14.07311"
-       y2="6.9986464"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12110"
-       id="linearGradient12116"
-       x1="-1.2000418"
-       y1="7.1074257"
-       x2="15.300537"
-       y2="7.1074257"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient13094"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.0143772,0,0,-1.0472177,43.790224,13.986294)"
-       cx="14.527122"
-       cy="6.8330836"
-       fx="14.527122"
-       fy="6.8330836"
-       r="7.3700495" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12110"
-       id="linearGradient13096"
-       gradientUnits="userSpaceOnUse"
-       x1="-1.2000418"
-       y1="7.1074257"
-       x2="15.300537"
-       y2="7.1074257" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient13098"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <g
-       id="g3158">
-      <path
-         transform="matrix(0,0.9506982,-0.9402534,0,13.68145,0.2959884)"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         sodipodi:ry="6.937624"
-         sodipodi:rx="6.8700495"
-         sodipodi:cy="7.1074257"
-         sodipodi:cx="7.0502477"
-         id="path4881"
-         style="fill:url(#radialGradient13094);fill-opacity:1;fill-rule:nonzero;stroke:#646464;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="opacity:0.5;fill:url(#linearGradient13096);fill-opacity:1;fill-rule:nonzero;stroke:#f0ede4;stroke-width:2.76047993;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="path3365"
-         sodipodi:cx="7.0502477"
-         sodipodi:cy="7.1074257"
-         sodipodi:rx="6.8700495"
-         sodipodi:ry="6.937624"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         transform="matrix(-0.728533,0,0,-0.7205127,12.135007,12.119637)" />
-      <path
-         transform="matrix(0,0.5993913,-0.6482327,0,11.197098,1.1010354)"
-         d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-         sodipodi:ry="6.171782"
-         sodipodi:rx="4.0769801"
-         sodipodi:cy="6.4767327"
-         sodipodi:cx="4.3923268"
-         id="path6875"
-         style="fill:url(#radialGradient13098);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/slider-h.svg b/mac/Cillop/gtk-2.0/slider-h.svg
deleted file mode 100644
index 8f03045..0000000
--- a/mac/Cillop/gtk-2.0/slider-h.svg
+++ /dev/null
@@ -1,148 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="slider-h.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="7.7007336"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="698"
-     inkscape:window-x="8"
-     inkscape:window-y="42" />
-  <defs
-     id="defs3806">
-    <linearGradient
-       id="linearGradient3665">
-      <stop
-         offset="0"
-         id="stop3667"
-         style="stop-color:#eaecec;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop3669"
-         style="stop-color:#81888d;stop-opacity:0.94117647;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4704-951-989">
-      <stop
-         offset="0"
-         id="stop6373"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop6375"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient7061"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.0143772,0,0,-1.0472177,43.790224,13.986294)"
-       cx="14.527122"
-       cy="6.8330836"
-       fx="14.527122"
-       fy="6.8330836"
-       r="7.3700495" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient7063"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient2171"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.0143772,0,0,-1.0472177,43.790224,13.986294)"
-       cx="14.527122"
-       cy="6.8330836"
-       fx="14.527122"
-       fy="6.8330836"
-       r="7.3700495" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient2173"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <g
-       id="g2167"
-       transform="matrix(0,1,-1,0,13.997315,-2.2298696e-5)">
-      <path
-         transform="matrix(0.9506982,0,0,0.9402534,0.2960109,0.3158652)"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         sodipodi:ry="6.937624"
-         sodipodi:rx="6.8700495"
-         sodipodi:cy="7.1074257"
-         sodipodi:cx="7.0502477"
-         id="path4881"
-         style="fill:url(#radialGradient2171);fill-opacity:1;fill-rule:nonzero;stroke:#646464;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         transform="matrix(0.5993913,0,0,0.6482327,1.1010579,2.8002167)"
-         d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-         sodipodi:ry="6.171782"
-         sodipodi:rx="4.0769801"
-         sodipodi:cy="6.4767327"
-         sodipodi:cx="4.3923268"
-         id="path6875"
-         style="fill:url(#radialGradient2173);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/slider-v-ins.svg b/mac/Cillop/gtk-2.0/slider-v-ins.svg
deleted file mode 100644
index 8ca1011..0000000
--- a/mac/Cillop/gtk-2.0/slider-v-ins.svg
+++ /dev/null
@@ -1,123 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45"
-   sodipodi:docbase="/home/emrah/.themes/Cillop-Mediterranean/gtk-2.0"
-   sodipodi:docname="slider-v-ins.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0"
-   sodipodi:modified="true">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="7.7007336"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="678"
-     inkscape:window-x="488"
-     inkscape:window-y="214" />
-  <defs
-     id="defs3806">
-    <linearGradient
-       id="linearGradient3665">
-      <stop
-         offset="0"
-         id="stop3667"
-         style="stop-color:#ebebeb;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop3669"
-         style="stop-color:#a5a5a5;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4704-951-989">
-      <stop
-         offset="0"
-         id="stop6373"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop6375"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient7061"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.0143772,0,0,-1.0472177,43.790224,13.986294)"
-       cx="14.527122"
-       cy="6.8330836"
-       fx="14.527122"
-       fy="6.8330836"
-       r="7.3700495" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient7063"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient7061);fill-opacity:1;fill-rule:nonzero;stroke:#848484;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="path4881"
-       sodipodi:cx="7.0502477"
-       sodipodi:cy="7.1074257"
-       sodipodi:rx="6.8700495"
-       sodipodi:ry="6.937624"
-       d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-       transform="matrix(0.9506982,0,0,0.9402534,0.2960109,0.3158652)" />
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient7063);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="path6875"
-       sodipodi:cx="4.3923268"
-       sodipodi:cy="6.4767327"
-       sodipodi:rx="4.0769801"
-       sodipodi:ry="6.171782"
-       d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-       transform="matrix(0.5993913,0,0,0.6482327,1.1010579,2.8002167)" />
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/slider-v-pre.svg b/mac/Cillop/gtk-2.0/slider-v-pre.svg
deleted file mode 100644
index 3f3c9a2..0000000
--- a/mac/Cillop/gtk-2.0/slider-v-pre.svg
+++ /dev/null
@@ -1,160 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="slider-v-pre.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="9.8375039"
-     inkscape:cy="5.8987534"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="698"
-     inkscape:window-x="8"
-     inkscape:window-y="52" />
-  <defs
-     id="defs3806">
-    <linearGradient
-       id="linearGradient12110">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop12112" />
-      <stop
-         id="stop12118"
-         offset="0.5"
-         style="stop-color:#ffffff;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="1"
-         id="stop12114" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3665">
-      <stop
-         offset="0"
-         id="stop3667"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop3669"
-         style="stop-color:#8e9499;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4704-951-989">
-      <stop
-         offset="0"
-         id="stop6373"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop6375"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient3163"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.0143772,0,0,-1.0472177,43.790224,13.986294)"
-       cx="14.527122"
-       cy="6.8330836"
-       fx="14.527122"
-       fy="6.8330836"
-       r="7.3700495" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12110"
-       id="linearGradient3165"
-       gradientUnits="userSpaceOnUse"
-       x1="-1.2000418"
-       y1="7.1074257"
-       x2="15.300537"
-       y2="7.1074257" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient3167"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <g
-       id="g3158"
-       transform="matrix(0,-1,1,0,2.2661333e-5,13.997315)">
-      <path
-         transform="matrix(0,0.9506982,-0.9402534,0,13.68145,0.2959884)"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         sodipodi:ry="6.937624"
-         sodipodi:rx="6.8700495"
-         sodipodi:cy="7.1074257"
-         sodipodi:cx="7.0502477"
-         id="path4881"
-         style="fill:url(#radialGradient3163);fill-opacity:1;fill-rule:nonzero;stroke:#646464;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="opacity:0.5;fill:url(#linearGradient3165);fill-opacity:1;fill-rule:nonzero;stroke:#f0ede4;stroke-width:2.76047993;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="path3365"
-         sodipodi:cx="7.0502477"
-         sodipodi:cy="7.1074257"
-         sodipodi:rx="6.8700495"
-         sodipodi:ry="6.937624"
-         d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-         transform="matrix(-0.728533,0,0,-0.7205127,12.135007,12.119637)" />
-      <path
-         transform="matrix(0,0.5993913,-0.6482327,0,11.197098,1.1010354)"
-         d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-         sodipodi:ry="6.171782"
-         sodipodi:rx="4.0769801"
-         sodipodi:cy="6.4767327"
-         sodipodi:cx="4.3923268"
-         id="path6875"
-         style="fill:url(#radialGradient3167);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         sodipodi:type="arc" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/slider-v.svg b/mac/Cillop/gtk-2.0/slider-v.svg
deleted file mode 100644
index 02986ef..0000000
--- a/mac/Cillop/gtk-2.0/slider-v.svg
+++ /dev/null
@@ -1,122 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg3804"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="slider-v.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="7.7007336"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1008"
-     inkscape:window-height="698"
-     inkscape:window-x="8"
-     inkscape:window-y="42" />
-  <defs
-     id="defs3806">
-    <linearGradient
-       id="linearGradient3665">
-      <stop
-         offset="0"
-         id="stop3667"
-         style="stop-color:#eaecec;stop-opacity:1;" />
-      <stop
-         offset="1"
-         id="stop3669"
-         style="stop-color:#81888d;stop-opacity:0.94117647;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4704-951-989">
-      <stop
-         offset="0"
-         id="stop6373"
-         style="stop-color:#ffffff;stop-opacity:1" />
-      <stop
-         offset="1"
-         id="stop6375"
-         style="stop-color:#ffffff;stop-opacity:0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3665"
-       id="radialGradient7061"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.0143772,0,0,-1.0472177,43.790224,13.986294)"
-       cx="14.527122"
-       cy="6.8330836"
-       fx="14.527122"
-       fy="6.8330836"
-       r="7.3700495" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4704-951-989"
-       id="radialGradient7063"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1811017,0,0,2.4431506,-0.3724566,-9.3469007)"
-       cx="0.31534672"
-       cy="6.4767327"
-       fx="0.31534672"
-       fy="6.4767327"
-       r="4.0769801" />
-  </defs>
-  <metadata
-     id="metadata3809">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:groupmode="layer"
-     id="layer1"
-     inkscape:label="Layer 1">
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient7061);fill-opacity:1;fill-rule:nonzero;stroke:#646464;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="path4881"
-       sodipodi:cx="7.0502477"
-       sodipodi:cy="7.1074257"
-       sodipodi:rx="6.8700495"
-       sodipodi:ry="6.937624"
-       d="M 13.920297 7.1074257 A 6.8700495 6.937624 0 1 1  0.18019819,7.1074257 A 6.8700495 6.937624 0 1 1  13.920297 7.1074257 z"
-       transform="matrix(0.9506982,0,0,0.9402534,0.2960109,0.3158652)" />
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient7063);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="path6875"
-       sodipodi:cx="4.3923268"
-       sodipodi:cy="6.4767327"
-       sodipodi:rx="4.0769801"
-       sodipodi:ry="6.171782"
-       d="M 8.4693069 6.4767327 A 4.0769801 6.171782 0 1 1  0.31534672,6.4767327 A 4.0769801 6.171782 0 1 1  8.4693069 6.4767327 z"
-       transform="matrix(0.5993913,0,0,0.6482327,1.1010579,2.8002167)" />
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/trough2-h.svg b/mac/Cillop/gtk-2.0/trough2-h.svg
deleted file mode 100644
index 090eabb..0000000
--- a/mac/Cillop/gtk-2.0/trough2-h.svg
+++ /dev/null
@@ -1,140 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg1307"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="trough2-h.svg"
-   version="1.0"
-   inkscape:export-filename="/home/emrah/.themes/Polycarbonate-0.5/gtk-2.0/trough2.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs1309">
-    <linearGradient
-       id="linearGradient5808">
-      <stop
-         style="stop-color:#000000;stop-opacity:0.43055555;"
-         offset="0"
-         id="stop5810" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.47058824;"
-         offset="1"
-         id="stop5812" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient16819">
-      <stop
-         id="stop16821"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         id="stop16823"
-         offset="1"
-         style="stop-color:#c0c1bb;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient16819"
-       id="linearGradient2182"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.1929542,0,0,0.2212349,1.3506792,-13.637044)"
-       x1="-13.393001"
-       y1="30.000002"
-       x2="-0.59684116"
-       y2="30.000002" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5808"
-       id="linearGradient2184"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.1929542,0,0,0.2212349,1.3506792,-13.637044)"
-       x1="-0.56191593"
-       y1="35.137894"
-       x2="-12.579332"
-       y2="35.0508" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5808"
-       id="linearGradient2186"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0113854,0,0,0.1875627,14.079697,-12.626879)"
-       x1="-0.56191593"
-       y1="35.137894"
-       x2="-12.579332"
-       y2="35.0508" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#dddddd"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="1"
-     inkscape:pageshadow="2"
-     inkscape:zoom="32.142857"
-     inkscape:cx="7"
-     inkscape:cy="7"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1024"
-     inkscape:window-height="689"
-     inkscape:window-x="2"
-     inkscape:window-y="52"
-     borderlayer="top"
-     showguides="true"
-     inkscape:guide-bbox="true" />
-  <metadata
-     id="metadata1312">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <g
-       id="g2178"
-       transform="matrix(0,1,1,0,0,0)">
-      <rect
-         transform="scale(-1,-1)"
-         ry="6.4873867"
-         rx="6.4873862"
-         y="-13.487387"
-         x="-13.487387"
-         height="12.974773"
-         width="12.974773"
-         id="rect4896"
-         style="fill:url(#linearGradient2182);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2184);stroke-width:1.00000012;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.56000004;stroke-opacity:1" />
-      <rect
-         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2186);stroke-width:1.00000012;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.56000004;stroke-opacity:1"
-         id="rect3294"
-         width="11"
-         height="11"
-         x="1.5"
-         y="-12.5"
-         rx="5.4999995"
-         ry="5.5"
-         transform="scale(1,-1)" />
-    </g>
-  </g>
-</svg>
diff --git a/mac/Cillop/gtk-2.0/trough2.svg b/mac/Cillop/gtk-2.0/trough2.svg
deleted file mode 100644
index 3f0745e..0000000
--- a/mac/Cillop/gtk-2.0/trough2.svg
+++ /dev/null
@@ -1,136 +0,0 @@
-<?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://web.resource.org/cc/"
-   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="14"
-   height="14"
-   id="svg1307"
-   sodipodi:version="0.32"
-   inkscape:version="0.45.1"
-   sodipodi:docbase="/home/emrah/.themes/Cillop/gtk-2.0"
-   sodipodi:docname="trough2.svg"
-   version="1.0"
-   inkscape:export-filename="/home/emrah/.themes/Polycarbonate-0.5/gtk-2.0/trough2.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape">
-  <defs
-     id="defs1309">
-    <linearGradient
-       id="linearGradient5808">
-      <stop
-         style="stop-color:#000000;stop-opacity:0.43055555;"
-         offset="0"
-         id="stop5810" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.47058824;"
-         offset="1"
-         id="stop5812" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient16819">
-      <stop
-         id="stop16821"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:1;" />
-      <stop
-         id="stop16823"
-         offset="1"
-         style="stop-color:#c0c1bb;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient16819"
-       id="linearGradient3290"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.1929542,0,0,0.2212349,1.3506792,-13.637044)"
-       x1="-13.393001"
-       y1="30.000002"
-       x2="-0.59684116"
-       y2="30.000002" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5808"
-       id="linearGradient3292"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.1929542,0,0,0.2212349,1.3506792,-13.637044)"
-       x1="-0.56191593"
-       y1="35.137894"
-       x2="-12.579332"
-       y2="35.0508" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5808"
-       id="linearGradient3298"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0113854,0,0,0.1875627,14.079697,-12.626879)"
-       x1="-0.56191593"
-       y1="35.137894"
-       x2="-12.579332"
-       y2="35.0508" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#dddddd"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="1"
-     inkscape:pageshadow="2"
-     inkscape:zoom="45.933332"
-     inkscape:cx="8.0984692"
-     inkscape:cy="7.229651"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1024"
-     inkscape:window-height="716"
-     inkscape:window-x="0"
-     inkscape:window-y="52"
-     borderlayer="top"
-     showguides="true"
-     inkscape:guide-bbox="true" />
-  <metadata
-     id="metadata1312">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <rect
-       style="fill:url(#linearGradient3290);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3292);stroke-width:1.00000012;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.56000004;stroke-opacity:1"
-       id="rect4896"
-       width="12.974773"
-       height="12.974773"
-       x="-13.487387"
-       y="-13.487387"
-       rx="6.4873862"
-       ry="6.4873867"
-       transform="scale(-1,-1)" />
-    <rect
-       transform="scale(1,-1)"
-       ry="5.5"
-       rx="5.4999995"
-       y="-12.5"
-       x="1.5"
-       height="11"
-       width="11"
-       id="rect3294"
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3298);stroke-width:1.00000012;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1.56000004;stroke-opacity:1" />
-  </g>
-</svg>
diff --git a/po/POTFILES b/po/POTFILES
index 9db036f..b87066d 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -1,90 +1,90 @@
-../lib/advene/model/zippackage.py
 ../lib/advene/model/bundle.py
-../lib/advene/core/controller.py
-../lib/advene/core/webcherry.py
-../lib/advene/util/website_export.py
-../lib/advene/util/importer.py
-../lib/advene/util/helper.py
-../lib/advene/plugins/cinelab.py
-../lib/advene/plugins/shotdetectapp.py
-../lib/advene/plugins/youtubeannotations.py
-../lib/advene/plugins/brltty.py
-../lib/advene/plugins/goodshotdetector.py
-../lib/advene/plugins/anvil.py
-../lib/advene/plugins/annotationgraph.py
-../lib/advene/plugins/fcp.py
-../lib/advene/plugins/tracebuilder.py
-../lib/advene/plugins/dcp.py
-../lib/advene/plugins/ttl.py
-../lib/advene/plugins/aeidon_import.py
-../lib/advene/plugins/soundenveloppe.py
-../lib/advene/plugins/cutter.py
-../lib/advene/plugins/montagerenderer.py
-../lib/advene/plugins/mpeg7.py
-../lib/advene/plugins/transcriber.py
-../lib/advene/plugins/featuredetect.py
-../lib/advene/plugins/pocketsphinx.py
-../lib/advene/plugins/barcode.py
-../lib/advene/plugins/nerd_plugin.py
-../lib/advene/plugins/ted.py
-../lib/advene/plugins/shotdetect.py
-../lib/advene/plugins/tts.py
-../lib/advene/player/gstreamer.py
-../lib/advene/rules/importer.py
-../lib/advene/rules/actions.py
-../lib/advene/rules/elements.py
-../lib/advene/gui/util/initialconfig.py
-../lib/advene/gui/util/__init__.py
-../lib/advene/gui/util/dialog.py
+../lib/advene/model/zippackage.py
+../lib/advene/gui/widget.py
+../lib/advene/gui/main.py
 ../lib/advene/gui/plugins/shotvalidation.py
+../lib/advene/gui/plugins/eventaccumulator.py
+../lib/advene/gui/plugins/htmlcontenhandler.py
 ../lib/advene/gui/plugins/tracetimeline.py
-../lib/advene/gui/plugins/kinect.py
+../lib/advene/gui/plugins/logmessages.py
 ../lib/advene/gui/plugins/actions.py
-../lib/advene/gui/plugins/eventaccumulator.py
+../lib/advene/gui/plugins/kinect.py
 ../lib/advene/gui/plugins/contenthandlers.py
-../lib/advene/gui/plugins/videoplayer.py
 ../lib/advene/gui/plugins/tracepreview.py
-../lib/advene/gui/plugins/htmlcontenhandler.py
-../lib/advene/gui/plugins/logmessages.py
-../lib/advene/gui/edit/dvdselect.py
-../lib/advene/gui/edit/merge.py
-../lib/advene/gui/edit/properties.py
-../lib/advene/gui/edit/importer.py
-../lib/advene/gui/edit/schemaeditor.py
-../lib/advene/gui/edit/rules.py
-../lib/advene/gui/edit/shapewidget.py
-../lib/advene/gui/edit/timeadjustment.py
-../lib/advene/gui/edit/create.py
-../lib/advene/gui/edit/imports.py
-../lib/advene/gui/edit/montage.py
-../lib/advene/gui/edit/frameselector.py
-../lib/advene/gui/edit/transcribe.py
-../lib/advene/gui/edit/elements.py
-../lib/advene/gui/views/browser.py
-../lib/advene/gui/views/accumulatorpopup.py
-../lib/advene/gui/views/editionhistory.py
-../lib/advene/gui/views/logwindow.py
+../lib/advene/gui/plugins/videoplayer.py
+../lib/advene/gui/views/singletonpopup.py
+../lib/advene/gui/views/caption.py
+../lib/advene/gui/views/html.py
+../lib/advene/gui/views/annotationdisplay.py
+../lib/advene/gui/views/relationdisplay.py
+../lib/advene/gui/views/viewplugin.py
 ../lib/advene/gui/views/checker.py
-../lib/advene/gui/views/tagbag.py
-../lib/advene/gui/views/transcription.py
-../lib/advene/gui/views/activebookmarks.py
+../lib/advene/gui/views/table.py
+../lib/advene/gui/views/accumulatorpopup.py
 ../lib/advene/gui/views/bookmarks.py
-../lib/advene/gui/views/viewplugin.py
-../lib/advene/gui/views/interactivequery.py
-../lib/advene/gui/views/relationdisplay.py
-../lib/advene/gui/views/html.py
 ../lib/advene/gui/views/viewbook.py
-../lib/advene/gui/views/singletonpopup.py
+../lib/advene/gui/views/transcription.py
+../lib/advene/gui/views/browser.py
 ../lib/advene/gui/views/timeline.py
-../lib/advene/gui/views/tree.py
-../lib/advene/gui/views/editaccumulator.py
 ../lib/advene/gui/views/relation.py
-../lib/advene/gui/views/caption.py
-../lib/advene/gui/views/scroller.py
-../lib/advene/gui/views/finder.py
-../lib/advene/gui/views/annotationdisplay.py
+../lib/advene/gui/views/editionhistory.py
+../lib/advene/gui/views/tagbag.py
 ../lib/advene/gui/views/__init__.py
-../lib/advene/gui/views/table.py
-../lib/advene/gui/widget.py
-../lib/advene/gui/main.py
+../lib/advene/gui/views/finder.py
+../lib/advene/gui/views/editaccumulator.py
+../lib/advene/gui/views/activebookmarks.py
+../lib/advene/gui/views/scroller.py
+../lib/advene/gui/views/logwindow.py
+../lib/advene/gui/views/interactivequery.py
 ../lib/advene/gui/popup.py
+../lib/advene/gui/util/initialconfig.py
+../lib/advene/gui/util/__init__.py
+../lib/advene/gui/util/dialog.py
+../lib/advene/gui/edit/rules.py
+../lib/advene/gui/edit/properties.py
+../lib/advene/gui/edit/frameselector.py
+../lib/advene/gui/edit/create.py
+../lib/advene/gui/edit/imports.py
+../lib/advene/gui/edit/shapewidget.py
+../lib/advene/gui/edit/importer.py
+../lib/advene/gui/edit/dvdselect.py
+../lib/advene/gui/edit/merge.py
+../lib/advene/gui/edit/montage.py
+../lib/advene/gui/edit/timeadjustment.py
+../lib/advene/gui/edit/elements.py
+../lib/advene/gui/edit/transcribe.py
+../lib/advene/core/webcherry.py
+../lib/advene/core/controller.py
+../lib/advene/plugins/featuredetect.py
+../lib/advene/plugins/ted.py
+../lib/advene/plugins/cutter.py
+../lib/advene/plugins/ttl.py
+../lib/advene/plugins/shotdetect.py
+../lib/advene/plugins/pocketsphinx.py
+../lib/advene/plugins/brltty.py
+../lib/advene/plugins/transcript.py
+../lib/advene/plugins/aeidon_import.py
+../lib/advene/plugins/anvil.py
+../lib/advene/plugins/fcp.py
+../lib/advene/plugins/tracebuilder.py
+../lib/advene/plugins/goodshotdetector.py
+../lib/advene/plugins/webannotation_import.py
+../lib/advene/plugins/montagerenderer.py
+../lib/advene/plugins/transcriber.py
+../lib/advene/plugins/tts.py
+../lib/advene/plugins/soundenveloppe.py
+../lib/advene/plugins/barcode.py
+../lib/advene/plugins/dcp.py
+../lib/advene/plugins/nerd_plugin.py
+../lib/advene/plugins/annotationgraph.py
+../lib/advene/plugins/shotdetectapp.py
+../lib/advene/plugins/mpeg7.py
+../lib/advene/plugins/cinelab.py
+../lib/advene/plugins/owl_import.py
+../lib/advene/player/gstreamer.py
+../lib/advene/rules/actions.py
+../lib/advene/rules/importer.py
+../lib/advene/rules/elements.py
+../lib/advene/util/helper.py
+../lib/advene/util/website_export.py
+../lib/advene/util/importer.py
diff --git a/po/advene.pot b/po/advene.pot
index 7129fe0..8938316 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: 2014-07-09 17:25+0200\n"
+"POT-Creation-Date: 2017-05-09 11:32+0200\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"
@@ -17,17 +17,6 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
-#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
-#, python-format
-msgid "File %s is not an Advene zip package."
-msgstr ""
-
-#: ../lib/advene/model/zippackage.py:243
-#, python-format
-msgid "Directory %s is not an extracted Advene zip package."
-msgstr ""
-
 #: ../lib/advene/model/bundle.py:296
 #, python-format
 msgid "%s not in bundle"
@@ -42,3024 +31,2685 @@ msgstr ""
 msgid "List of %s elements"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:263 ../lib/advene/rules/actions.py:36
-#: ../lib/advene/gui/plugins/actions.py:40
-msgid "Display a message"
+#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
+#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
+#, python-format
+msgid "File %s is not an Advene zip package."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:264
-#: ../lib/advene/gui/plugins/actions.py:41
-#: ../lib/advene/gui/plugins/actions.py:53
-#: ../lib/advene/gui/plugins/actions.py:71
-#: ../lib/advene/gui/plugins/actions.py:86
-#: ../lib/advene/gui/plugins/actions.py:102
-#: ../lib/advene/gui/plugins/actions.py:203
-msgid "String to display."
+#: ../lib/advene/model/zippackage.py:243
+#, python-format
+msgid "Directory %s is not an extracted Advene zip package."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:362
-msgid "Exception (traceback in console):"
+#: ../lib/advene/gui/widget.py:293
+#, python-format
+msgid "Set of %s annotations"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:393
-msgid "No available GUI"
+#: ../lib/advene/gui/widget.py:1017
+#: ../lib/advene/gui/views/transcription.py:472
+#: ../lib/advene/gui/edit/montage.py:60
+msgid "Play"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:412
-msgid "No available event handler"
+#: ../lib/advene/gui/widget.py:1021 ../lib/advene/gui/edit/timeadjustment.py:77
+msgid "Refresh snapshot"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:420
-msgid "No available gui"
+#: ../lib/advene/gui/widget.py:1025
+msgid "Save as..."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:436
-#, python-format
-msgid "Warning: redefining an existing feature %s"
+#: ../lib/advene/gui/widget.py:1030
+msgid "Use current player position"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:568
-msgid "All annotations"
+#: ../lib/advene/gui/widget.py:1036
+msgid "Adjust timestamp"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:569 ../lib/advene/gui/edit/rules.py:358
-#, python-format
-msgid "Annotations of type %s"
+#: ../lib/advene/gui/main.py:189 ../lib/advene/gui/main.py:298
+msgid "_Select player"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/imports.py:129
-#: ../lib/advene/gui/edit/imports.py:130
-msgid "Views"
+#: ../lib/advene/gui/main.py:191 ../lib/advene/gui/main.py:283
+msgid "_View"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/elements.py:521
-msgid "Tags"
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:300
+msgid "Packages"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:570
-msgid "Ids"
+#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:242
+msgid "Open recent"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:747
-#, python-format
-msgid ""
-"Cannot start the webserver\n"
-"The following processes seem to use the %(port)s port: %(processes)s"
+#: ../lib/advene/gui/main.py:236
+msgid "Input from the keyboard (function keys)"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:797 ../lib/advene/core/controller.py:808
-#, python-format
-msgid "Loaded %(uri)s as %(alias)s"
+#: ../lib/advene/gui/main.py:239
+msgid "_File"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:799 ../lib/advene/core/controller.py:811
-#, python-format
-msgid "Cannot load package from file %(uri)s: %(error)s"
+#: ../lib/advene/gui/main.py:240
+msgid "_New package"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:850
-msgid "Deactivating web server"
+#: ../lib/advene/gui/main.py:240
+msgid "Create a new package"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:970
-#, python-format
-msgid "Cannot get audio volume: %s"
+#: ../lib/advene/gui/main.py:241
+msgid "_Open package"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1020
-#, python-format
-msgid "Cannot open Advene URL %s: the webserver is not running."
+#: ../lib/advene/gui/main.py:241
+msgid "Open a package"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1128 ../lib/advene/gui/edit/merge.py:272
-msgid "None"
+#: ../lib/advene/gui/main.py:242
+msgid "Show recently opened packages"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1222
-#, python-format
-msgid "Found matching video file in moviepath: %s"
+#: ../lib/advene/gui/main.py:243
+msgid "_Save package"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1263 ../lib/advene/core/controller.py:1265
-msgid "Analysis of "
+#: ../lib/advene/gui/main.py:243
+msgid "Save the package"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1465
-msgid "Cannot split the annotation: the given position is outside."
+#: ../lib/advene/gui/main.py:244
+msgid "Save package as..."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1630
-#, python-format
-msgid "Cannot find the template package %(filename)s: %(error)s"
+#: ../lib/advene/gui/main.py:244
+msgid "Save the package as..."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1672
-#, python-format
-msgid "Cannot read the imported package %(uri)s: %(error)s"
+#: ../lib/advene/gui/main.py:245
+msgid "Close package"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1907
-msgid "Package URI has changed. Reloading package with new URI."
+#: ../lib/advene/gui/main.py:245
+msgid "Close the package"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1925
-msgid ""
-"Cannot load package: the following annotations do not have Millisecond "
-"fragments:"
+#: ../lib/advene/gui/main.py:247
+msgid "Save session"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1952
-#, python-format
-msgid "Cannot handle master attribute, the package %s is not imported."
+#: ../lib/advene/gui/main.py:247
+msgid "Save the current session (list of opened packages)"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1954
-#, python-format
-msgid "Checking master package %s for not yet imported elements."
+#: ../lib/advene/gui/main.py:248
+msgid "Save workspace"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1994
-msgid "Standard summary"
+#: ../lib/advene/gui/main.py:249
+msgid "...as package view"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1999
-msgid "Default view"
+#: ../lib/advene/gui/main.py:250
+msgid "...as standard workspace"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2041
-#, python-format
-msgid ""
-"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
+#: ../lib/advene/gui/main.py:250
+msgid "Use the current layout as standard workspace in the future"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2131
-#, python-format
-msgid "Got exception %s when stopping player."
+#: ../lib/advene/gui/main.py:252
+msgid "Associate a video _File"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2214
-#, python-format
-msgid "Raised exception in update_status: %s"
+#: ../lib/advene/gui/main.py:252
+msgid "Associate a video file"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2241
-msgid "Unable to start the player."
+#: ../lib/advene/gui/main.py:253
+msgid "Associate a _DVD"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2448
-#, python-format
-msgid "Comment on set of %d annotations"
+#: ../lib/advene/gui/main.py:253
+msgid "Associate a chapter from a DVD"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2450
-#, python-format
-msgid "Comment on %s"
+#: ../lib/advene/gui/main.py:254
+msgid "Associate a _Video stream"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2454
-#, python-format
-msgid ""
-"<h1>Comment on %(title)s</h1>\n"
-"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
-"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
-"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
-"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
-"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
-"\"%(imgurl)s\" ></img></a></span>"
+#: ../lib/advene/gui/main.py:254
+msgid "Enter a video stream address"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2464
-#, python-format
-msgid "List of %s annotations"
+#: ../lib/advene/gui/main.py:256
+msgid "_Import File"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2499
-#, python-format
-msgid "Cannot export to %(filename)s: %(e)s"
+#: ../lib/advene/gui/main.py:256
+msgid "Import data from an external source"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2514 ../lib/advene/core/controller.py:2523
-#, python-format
-msgid "Error when exporting: %s"
+#: ../lib/advene/gui/main.py:257
+msgid "_Process video"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2525 ../lib/advene/gui/views/table.py:406
-#: ../lib/advene/gui/views/table.py:536
-#, python-format
-msgid "Data exported to %s"
+#: ../lib/advene/gui/main.py:257
+msgid "Import data from video processing algorithms"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:51
-msgid "The webserver requires version 3.0 of CherryPy at least."
+#: ../lib/advene/gui/main.py:259
+msgid "Merge package"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:167
-#, python-format
-msgid ""
-"\n"
-"            <p>\n"
-"            <a href=\"/admin\">Server administration</a> |\n"
-"            <a href=\"/media\">Media control</a> |\n"
-"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
-"            </p>\n"
-"            Location: %(locationbar)s\n"
-"            <hr>\n"
-"            "
+#: ../lib/advene/gui/main.py:259
+msgid "Merge elements from another package"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:227
-msgid "Unspecified Error"
+#: ../lib/advene/gui/main.py:260
+msgid "Import _DVD chapters"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:228
-#, python-format
-msgid ""
-"\n"
-"        <h1>Error</h1>\n"
-"        <p>An error occurred:</p>\n"
-"        %s\n"
-"        "
+#: ../lib/advene/gui/main.py:260
+msgid "Create annotations based on DVD chapters"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:261
-msgid "<h1>No available mediaplayer</h1>"
+#: ../lib/advene/gui/main.py:262
+msgid "_Export..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:265
-#, python-format
-msgid ""
-"\n"
-"            <h1>Current STBV: %(currentstbv)s</h1>\n"
-"\n"
-"            <h1>Player status</h1>\n"
-"            <table border=\"1\">\n"
-"            <tr>\n"
-"            <td>Current position</td><td>%(position)s</td>\n"
-"            <td>Duration</td><td>%(duration)s</td>\n"
-"            <td>Player status</td><td>%(status)s</td>\n"
-"            </tr>\n"
-"            </table>\n"
-"            "
+#: ../lib/advene/gui/main.py:262
+msgid "Export data to another format"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:284
-msgid "<h1>No playlist</h1>"
+#: ../lib/advene/gui/main.py:263
+msgid "_Website export..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:286
-#, python-format
-msgid ""
-"<h1>Current playlist</h1>\n"
-"                <ul>%s</ul>"
+#: ../lib/advene/gui/main.py:263
+msgid "Export views to a website"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:288
-msgid ""
-"\n"
-"                <form action=\"/media/play\" method=\"GET\">\n"
-"                Starting pos: <input type=\"text\" name=\"position\" value="
-"\"0\">\n"
-"                <input type=\"submit\" value=\"Play\">\n"
-"                </form>\n"
-"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
-"\">Pause</a><br>\n"
-"                "
+#: ../lib/advene/gui/main.py:265
+msgid "_Quit"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:295
-msgid ""
-"<hr />\n"
-"            <form action=\"/media/load\" method=\"GET\">\n"
-"            Add a new file (<em>dvd</em> to play a DVD):\n"
-"            <input type=\"text\" name=\"filename\">\n"
-"            <input type=\"submit\" value=\"Add\">\n"
-"            </form>"
+#: ../lib/advene/gui/main.py:267
+msgid "_Edit"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:301
-msgid ""
-"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
+#: ../lib/advene/gui/main.py:268
+msgid "_Undo"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:310
-#, python-format
-msgid "Unknown STBV identifier: %s"
+#: ../lib/advene/gui/main.py:269
+msgid "_Find"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:385
-msgid "Media information"
+#: ../lib/advene/gui/main.py:270
+msgid "_Delete"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:398
-msgid "File added"
+#: ../lib/advene/gui/main.py:271
+msgid "Create"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:399
-#, python-format
-msgid "<p><strong>%s has been added to the playlist</strong></p>"
+#: ../lib/advene/gui/main.py:272 ../lib/advene/gui/main.py:3309
+#: ../lib/advene/util/helper.py:405
+msgid "Schema"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
-msgid "Access to packages snapshots"
+#: ../lib/advene/gui/main.py:273 ../lib/advene/gui/edit/rules.py:1091
+#: ../lib/advene/rules/actions.py:236 ../lib/advene/util/helper.py:408
+msgid "View"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
-msgid "Unknown package alias"
+#: ../lib/advene/gui/main.py:274 ../lib/advene/gui/popup.py:459
+#: ../lib/advene/util/helper.py:409
+msgid "Query"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:426
-#, python-format
-msgid "Available snapshots for %s"
+#: ../lib/advene/gui/main.py:275 ../lib/advene/util/helper.py:406
+msgid "Annotation Type"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:432
-#, python-format
-msgid ""
-"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
-"a></p>"
+#: ../lib/advene/gui/main.py:276 ../lib/advene/util/helper.py:407
+msgid "Relation Type"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:439
-msgid "Done"
+#: ../lib/advene/gui/main.py:280
+msgid "P_ackage properties"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:441
-msgid "Pending"
+#: ../lib/advene/gui/main.py:280
+msgid "Edit package properties"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:487
-#, python-format
-msgid "Unknown annotation id: %s"
+#: ../lib/advene/gui/main.py:281
+msgid "P_references"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
-#, python-format
-msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
+#: ../lib/advene/gui/main.py:281
+msgid "Interface preferences"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:675
-msgid "<p>No GUI is available."
+#: ../lib/advene/gui/main.py:285
+msgid "_Start Web Browser"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:677
-#, python-format
-msgid "<p>Opened adhoc views: %s</p>"
+#: ../lib/advene/gui/main.py:285
+msgid "Start the web browser"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:678
-msgid "<p>Available adhoc views:</p><ul>"
+#: ../lib/advene/gui/main.py:287
+msgid "Simplify interface"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:699
-#, python-format
-msgid "<p>Current stbv: %s</p>"
+#: ../lib/advene/gui/main.py:287
+msgid "Simplify the application interface (toggle)"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:700
-#, python-format
-msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
+#: ../lib/advene/gui/main.py:288
+msgid "Evaluator"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:702
-msgid "Activate and play"
+#: ../lib/advene/gui/main.py:288
+msgid "Open python evaluator window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:708
-msgid "Application information"
+#: ../lib/advene/gui/main.py:289 ../lib/advene/gui/main.py:4061
+msgid "Webserver log"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:778
-msgid "Missing element id parameter"
+#: ../lib/advene/gui/main.py:292
+msgid "_Player"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:782
-#, python-format
-msgid "No existing element with id %s"
+#: ../lib/advene/gui/main.py:293
+msgid "Go to _Time"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:791
-#, python-format
-msgid "<p>The GUI view %s does not exist.</p>"
+#: ../lib/advene/gui/main.py:293
+msgid "Goto a specified time code"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:798
-msgid "Invalid request"
+#: ../lib/advene/gui/main.py:294
+msgid "Save _ImageCache"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:803
-msgid "Invalid configuration variable name"
+#: ../lib/advene/gui/main.py:294
+msgid "Save the contents of the ImageCache to disk"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:815
-msgid "Invalid value"
+#: ../lib/advene/gui/main.py:295
+msgid "Reset ImageCache"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:819
-#, python-format
-msgid "Unsupported method %s"
+#: ../lib/advene/gui/main.py:295
+msgid "Reset the ImageCache"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:845
-#, python-format
-msgid ""
-"\n"
-"        <h1>Authorized hosts</h1>\n"
-"        <table border=\"1\">\n"
-"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
-"        %s\n"
-"        </table>\n"
-"        <form method=\"GET\">\n"
-"        Add a new hostname to the list :<br>\n"
-"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
-"\"Add\">\n"
-"        </form>\n"
-"        "
+#: ../lib/advene/gui/main.py:296
+msgid "_Restart player"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:859
-msgid "Access control"
+#: ../lib/advene/gui/main.py:296
+msgid "Restart the player"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:864
-msgid "Access control - add a hostname"
+#: ../lib/advene/gui/main.py:297
+msgid "Update annotation screenshots"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
-#, python-format
-msgid "<strong>Error: %s is an invalid hostname.</strong>"
+#: ../lib/advene/gui/main.py:297
+msgid "Update screenshots for annotation bounds"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:875
-#, python-format
-msgid "<p>Added %s to authorized hosts list.</p>"
+#: ../lib/advene/gui/main.py:298
+msgid "Select the player plugin"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:881
-msgid "Access control - delete a hostname"
+#: ../lib/advene/gui/main.py:301
+msgid "No package"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:889
-msgid "<strong>Cannot remove the localhost access.</strong>"
+#: ../lib/advene/gui/main.py:303
+msgid "_Help"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:894
-#, python-format
-msgid "<p>Removed %s from authorized hosts list.</p>"
+#: ../lib/advene/gui/main.py:304
+msgid "Help"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:896
-#, python-format
-msgid "<p>%s is not in authorized hosts list.</p>"
+#: ../lib/advene/gui/main.py:305
+msgid "Get support"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:945
-msgid "Server Administration"
+#: ../lib/advene/gui/main.py:306
+msgid "Check for updates"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:953
-#, python-format
-msgid ""
-"\n"
-"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
-"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
-"        <p><a href=\"/action\">List available actions</a></p>\n"
-"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
-"        <p><a href=\"/media\">Media control</a></p>\n"
-"        <p><a href=\"/application\">Display GUI status</a></p>\n"
-"        <p><a href=\"/admin/list\">List available files</a></p>\n"
-"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
-"p>\n"
-"        <p>Display mode : %(displaymode)s</p>\n"
-"        <hr>\n"
-"        <p>Load a package :\n"
-"        <form action=\"/admin/load\" method=\"GET\">\n"
-"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
-"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
-"        <input type=\"submit\" value=\"Load\" />\n"
-"        </form>\n"
-"        </body></html>\n"
-"        "
+#: ../lib/advene/gui/main.py:307
+msgid "Display shortcuts"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:983
-msgid "Available files"
+#: ../lib/advene/gui/main.py:308
+msgid "Display logfile"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1009
-msgid "You should specify an alias"
+#: ../lib/advene/gui/main.py:308
+msgid "Display log file"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1014
-msgid "You should specify an uri"
+#: ../lib/advene/gui/main.py:309
+msgid "Open logfile folder"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1020
-#, python-format
-msgid "Package %s loaded"
+#: ../lib/advene/gui/main.py:309
+msgid ""
+"Display logfile folder. It can help when sending the advene.log file by e-"
+"mail."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
+#: ../lib/advene/gui/main.py:310
+msgid "_About"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:332 ../lib/advene/gui/main.py:3789
 #, python-format
 msgid ""
-"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
-"the <a href=\"/packages\">package list</a>."
+"Cannot load package %(filename)s:\n"
+"%(error)s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1024
-#, python-format
-msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:340
+msgid "Open a package file"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1035
-#, python-format
-msgid "Package %s deleted"
+#: ../lib/advene/gui/main.py:341
+msgid "Save the current package"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1036
-msgid "<p>Go to the <a href=\"/packages\">package list</a>."
+#: ../lib/advene/gui/main.py:342
+msgid "Save the package with a new name"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1039
-#, python-format
-msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:343
+msgid "Select movie file..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1056
-#, python-format
-msgid "Package %s saved"
+#: ../lib/advene/gui/main.py:344
+msgid "Select DVD"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1060
-#, python-format
-msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:346
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:808
+#: ../lib/advene/gui/edit/transcribe.py:1203
+msgid "Undo"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1070
-msgid "Server reset"
+#: ../lib/advene/gui/main.py:348
+msgid "Create a text annotation"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1076
-msgid "Available TALES methods"
+#: ../lib/advene/gui/main.py:349
+msgid "Create a graphical annotation"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1117
-msgid "Loaded package(s)"
+#: ../lib/advene/gui/main.py:355
+msgid "List recently opened packages"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1119
-msgid ""
-"\n"
-"        <h1>Loaded package(s)</h1>\n"
-"        <table border=\"1\" width=\"50%\">\n"
-"        <tr>\n"
-"        <th>Alias</th>\n"
-"        <th>Action</th>\n"
-"        <th>URI</th>\n"
-"        <th>Annotations</th>\n"
-"        </tr>\n"
-"        "
+#: ../lib/advene/gui/main.py:385
+msgid "Snapshotter activity"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1131
+#: ../lib/advene/gui/main.py:387
 #, python-format
-msgid ""
-"<tr>\n"
-"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
-"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
-"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
-"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
-"            <td>%(uri)s</td>\n"
-"            <td>%(size)d</td>\n"
-"            </tr>\n"
-"            "
+msgid "%d queued requests"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
-#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
-#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
-#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
-#: ../lib/advene/core/webcherry.py:2039
-msgid "Error"
+#: ../lib/advene/gui/main.py:388
+msgid "Cancel all requests"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1205
-#, python-format
-msgid "The TALES expression %s is not valid."
+#: ../lib/advene/gui/main.py:393
+msgid "No snapshotter"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1256
-msgid "Content mode not available on non-content data"
+#: ../lib/advene/gui/main.py:415
+msgid "No snapshotting activity"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
-#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
-#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
-#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
-#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
-#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
-msgid "<h1>Error</h1>"
+#: ../lib/advene/gui/main.py:419
+msgid "Snapshotting"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
-#, python-format
-msgid ""
-"<p>There was an error in the template code.</p>\n"
-"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"                <p>Error message: <em>%(message)s</em></p>"
+#: ../lib/advene/gui/main.py:436
+msgid "Display application log messages"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1290
-#, python-format
-msgid ""
-"<p>An invalid character is in the Context:</p>\n"
-"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
-"pre>"
+#: ../lib/advene/gui/main.py:477
+msgid "Quicksearch lists"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1298
-#, python-format
-msgid ""
-"<p>There was an error in the TALES expression.</p>\n"
-"                <pre>%s</pre>"
+#: ../lib/advene/gui/main.py:483
+msgid "Please specify the lists of elements to be searched."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1318
+#: ../lib/advene/gui/main.py:502
 #, python-format
 msgid ""
-"<p>There was an error.</p>\n"
-"                <pre>%s</pre>"
+"Searching on %s.\n"
+"Left click to launch the search, right-click to set the quicksearch options"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1342
+#: ../lib/advene/gui/main.py:503
 #, python-format
-msgid ""
-"\n"
-"            <hr>\n"
-"            <p>\n"
-"            Location: %(location)s<br>\n"
-"            <form name=\"navigation\" method=\"GET\">\n"
-"            <a href=\"%(levelup)s\">Up one level</a> |\n"
-"            Next level :\n"
-"            <select name=\"path\" onchange=\"submit()\">\n"
-"            "
+msgid "String to search in %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1360
-msgid ""
-"\n"
-"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
-"            <option selected></option>\n"
-"            "
+#: ../lib/advene/gui/main.py:516 ../lib/advene/gui/main.py:520
+msgid "Tracing : "
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1378
-#, python-format
-msgid ""
-"<hr>\n"
-"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
-"package %(uri)s returns %(value)s</p>\n"
-"            "
+#: ../lib/advene/gui/main.py:516
+msgid "off"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1414
-#, python-format
-msgid "<p>Package <strong>%s</strong> not loaded</p>"
+#: ../lib/advene/gui/main.py:520
+msgid "on"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1456
-#, python-format
-msgid ""
-"<p>There was an error in the template code.</p>\n"
-"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"            <p>Error message: <em>%(message)s</em></p>"
+#: ../lib/advene/gui/main.py:532
+#: ../lib/advene/gui/views/interactivequery.py:409
+msgid "String to search"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1464
-#, python-format
-msgid ""
-"<p>There was an error in the expression.</p>\n"
-"            <pre>%s</pre>"
+#: ../lib/advene/gui/main.py:540
+msgid "Launch search"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1472
-#, python-format
-msgid ""
-"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
-"            %(type)s\n"
-"            %(value)s\n"
-"            %(traceback)s</pre>"
+#: ../lib/advene/gui/main.py:545
+msgid "Ignore case"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
-msgid "<p>Cannot set the value : invalid path</p>"
+#: ../lib/advene/gui/main.py:550
+msgid "Searched elements"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
-#, python-format
-msgid ""
-"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
-"%(folder)s could not be created.</p>"
+#: ../lib/advene/gui/main.py:634
+msgid "Playing"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
-msgid "Resource successfuly created/updated"
+#: ../lib/advene/gui/main.py:635
+msgid "Pause"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1611
-msgid "Value successfuly updated"
+#: ../lib/advene/gui/main.py:636
+msgid "Init"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1613
-#, python-format
-msgid ""
-"Unable to update the attribute %(attribute)s for element %(element)s: "
-"%(error)s."
+#: ../lib/advene/gui/main.py:637 ../lib/advene/gui/views/table.py:308
+#: ../lib/advene/gui/edit/elements.py:1816
+msgid "End"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1724
-msgid "<p>Invalid request</p>."
+#: ../lib/advene/gui/main.py:638
+msgid "Undefined"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
-msgid "Value updated"
+#: ../lib/advene/gui/main.py:660
+#, python-format
+msgid "Exception in update_annotation: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1789
+#: ../lib/advene/gui/main.py:691
 #, python-format
-msgid ""
-"\n"
-"                <h1>Value updated</h1>\n"
-"                The value of %(path)s has been updated to\n"
-"                <pre>\n"
-"                %(value)s\n"
-"                </pre>\n"
-"                "
+msgid "Exception in update_relation: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1806
+#: ../lib/advene/gui/main.py:716
 #, python-format
-msgid ""
-"\n"
-"                    <h1>Value updated</h1>\n"
-"                    The value of %(path)s has been updated to\n"
-"                    <pre>\n"
-"                    %(value)s\n"
-"                    </pre>\n"
-"                    "
+msgid "Exception in update_view: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1817
+#: ../lib/advene/gui/main.py:747
 #, python-format
-msgid ""
-"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
+msgid "Exception in update_query: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1860
-msgid "Cannot create an element in something else than a package."
+#: ../lib/advene/gui/main.py:770
+#, python-format
+msgid "Exception in update_resource: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1877
+#: ../lib/advene/gui/main.py:793
 #, python-format
-msgid "The identifier %s already exists."
+msgid "Exception in update_schema: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1889
+#: ../lib/advene/gui/main.py:816
 #, python-format
-msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
+msgid "Exception in update_annotationtype: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1895
-msgid "View created"
+#: ../lib/advene/gui/main.py:844
+#, python-format
+msgid "Exception in update_relationtype: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1896
-#, python-format
-msgid ""
-"\n"
-"                 <h1>View <em>%(id)s</em> created</h1>\n"
-"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
-"created.</p>\n"
-"                 "
+#: ../lib/advene/gui/main.py:950
+msgid "Enter the new time value"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1912
+#: ../lib/advene/gui/main.py:974
 #, python-format
-msgid "Missing %s parameter"
+msgid "Replace content in %d elements"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1915
-#, python-format
-msgid "Relation type %s does not exist"
+#: ../lib/advene/gui/main.py:987
+msgid "Find word"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
-#, python-format
-msgid "Annotation %s does not exist"
+#: ../lib/advene/gui/main.py:994
+msgid "Replace by"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1928
+#: ../lib/advene/gui/main.py:1022
 #, python-format
-msgid ""
-"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
-"p>"
+msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1940
-#, python-format
-msgid ""
-"<p>Error while creating relation between %(member1)s and %(member2)s :</"
-"p><pre>%(error)s</pre>"
+#: ../lib/advene/gui/main.py:1031
+msgid "The video extracting feature is not available."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1943
-msgid "Relation created"
+#: ../lib/advene/gui/main.py:1034
+msgid "Video export"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1944
+#: ../lib/advene/gui/main.py:1036
 #, python-format
-msgid "<h1>Relation <em>%s</em> created</h1>"
+msgid "Exporting video montage/fragment to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1954
-#, python-format
-msgid "Annotation type %s does not exist"
+#: ../lib/advene/gui/main.py:1038
+msgid "Please choose a destination filename"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1971
-#, python-format
+#: ../lib/advene/gui/main.py:1116
 msgid ""
-"<p>Error while creating annotation of type %(type)s :<pre>\n"
-"                    %(errortype)s\n"
-"                    %(value)s\n"
-"                    %(traceback)s</pre>"
+"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/core/webcherry.py:1983
+#: ../lib/advene/gui/main.py:1118
 #, python-format
-msgid "Annotation %s created"
+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/core/webcherry.py:1985
+#: ../lib/advene/gui/main.py:1120
 #, python-format
-msgid "Error: Cannot create an object of type %s."
+msgid ""
+"You are now working with the following video:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1988
-#, python-format
-msgid ""
-"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
-"code></p>"
+#: ../lib/advene/gui/main.py:1237
+msgid "Open this view..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2001
-msgid "Available actions"
+#: ../lib/advene/gui/main.py:1238 ../lib/advene/gui/plugins/actions.py:286
+#: ../lib/advene/gui/views/viewbook.py:124
+msgid "...in its own window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2010
-#, python-format
-msgid "<li>%(name)s: %(value)s"
+#: ../lib/advene/gui/main.py:1239 ../lib/advene/gui/plugins/actions.py:287
+#: ../lib/advene/gui/views/viewbook.py:125
+#: ../lib/advene/gui/views/__init__.py:382
+msgid "...embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2033
-#, python-format
-msgid "<p>Unknown action</p><pre>Action: %s</pre>"
+#: ../lib/advene/gui/main.py:1240 ../lib/advene/gui/plugins/actions.py:288
+#: ../lib/advene/gui/views/viewbook.py:126
+#: ../lib/advene/gui/views/__init__.py:383
+msgid "...embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2040
-msgid "Missing parameter(s) :<ul>"
+#: ../lib/advene/gui/main.py:1241 ../lib/advene/gui/plugins/actions.py:289
+#: ../lib/advene/gui/views/viewbook.py:127
+#: ../lib/advene/gui/views/__init__.py:384
+msgid "...embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2076
-msgid "Advene web resources"
+#: ../lib/advene/gui/main.py:1242 ../lib/advene/gui/plugins/actions.py:290
+#: ../lib/advene/gui/views/viewbook.py:128
+#: ../lib/advene/gui/views/__init__.py:385
+msgid "...embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2082
-msgid "Advene webserver"
+#: ../lib/advene/gui/main.py:1254
+msgid "_All available views"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2083
-#, python-format
-msgid ""
-"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
-"webserver run by %(userid)s on %(serveraddress)s.</p>"
+#: ../lib/advene/gui/main.py:1270 ../lib/advene/gui/views/timeline.py:126
+msgid "Timeline"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2090
-msgid ""
-" <p>No package is loaded. You can access the <a href=\"/admin\">server "
-"administration page</a>.<p>"
+#: ../lib/advene/gui/main.py:1271 ../lib/advene/gui/views/finder.py:771
+msgid "Package finder"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2100
-#, python-format
-msgid ""
-"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
-"view</a>"
+#: ../lib/advene/gui/main.py:1272
+msgid "Transcription of annotations"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2102
-#, python-format
-msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
+#: ../lib/advene/gui/main.py:1273
+msgid "Annotation table"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2104
-msgid "the <a href=\"/packages\">loaded packages' data</a>"
+#: ../lib/advene/gui/main.py:1276
+msgid "Note-taking editor"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2105
-#, python-format
-msgid ""
-" <p>You can either access %s or the <a href=\"/admin\">server administration "
-"page</a>.<p>"
+#: ../lib/advene/gui/main.py:1277
+msgid "Active bookmarks"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2107
-#, python-format
-msgid ""
-"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
-"fr/advene/\">Advene</a> v. %s.</em></p>"
+#: ../lib/advene/gui/main.py:1280 ../lib/advene/gui/views/tagbag.py:57
+msgid "Bag of tags"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
-#, python-format
-msgid "Cannot start HTTP server: %s"
+#: ../lib/advene/gui/main.py:1281
+msgid "TALES explorer"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:61
-#, python-format
-msgid "%s exists but is not a directory. Cancelling website export"
+#: ../lib/advene/gui/main.py:1282
+msgid "Dynamic montage"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:67
-#, python-format
-msgid "%s does not exist"
+#: ../lib/advene/gui/main.py:1283 ../lib/advene/gui/plugins/videoplayer.py:37
+msgid "Video player"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:422
-msgid "Starting export"
+#: ../lib/advene/gui/main.py:1286
+msgid "Open a comment view in the web browser"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:451
-#, python-format
-msgid "Depth %d"
+#: ../lib/advene/gui/main.py:1287
+msgid "Create or open a comment view"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:455
-#, python-format
-msgid "Depth %(depth)d: processing %(url)s"
+#: ../lib/advene/gui/main.py:1290
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:477
-msgid "Finalizing"
+#: ../lib/advene/gui/main.py:1291
+msgid "Display edition history"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:511
+#: ../lib/advene/gui/main.py:1320
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1398
 #, python-format
 msgid ""
-"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
-"strong></p>"
+"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
+"released</b> on %(date)s, but you are running version %(current)s.\n"
+"You can download the latest version from the Advene website: http://advene."
+"org/</span>"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:554
-msgid "Export complete"
+#: ../lib/advene/gui/main.py:1403
+msgid "Go to the website"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:134
-msgid "Generic importer"
+#: ../lib/advene/gui/main.py:1409
+msgid "Advene release"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:161
-msgid "Usage: %prog [options] source-file destination-file"
+#: ../lib/advene/gui/main.py:1415
+#, python-format
+msgid "You are using a up-to-date version of Advene (%(current)s)."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:165
-msgid "Specify the offset in ms"
+#: ../lib/advene/gui/main.py:1415
+msgid "Advene is up-to-date"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:210
-msgid ""
-"Import filter error. The asynchronous API should be used, please report a "
-"bug."
+#: ../lib/advene/gui/main.py:1429
+msgid "Choose a color"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:212
-msgid ""
-"Import filter error. No conversion method is defined,  please report a bug."
+#: ../lib/advene/gui/main.py:1461
+msgid "Select an annotation to loop on it"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:344
+#: ../lib/advene/gui/main.py:1463
 #, python-format
-msgid "Converted from %s"
+msgid "Looping on %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:469
-msgid "ExternalApp importer"
+#: ../lib/advene/gui/main.py:1521 ../lib/advene/gui/main.py:2409
+msgid "No active dynamic view"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:483
-#, 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."
+#: ../lib/advene/gui/main.py:1532
+msgid "Create a new dynamic view."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:485
-#, python-format
-msgid "The file %s does not seem to exist."
+#: ../lib/advene/gui/main.py:1551
+msgid "Edit the current dynamic view."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:507
-#, python-format
-msgid "Could not run %(appname)s: %(msg)s"
+#: ../lib/advene/gui/main.py:1563
+msgid "No dynamic view"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:509
-#, python-format
-msgid "Processing %s"
+#: ../lib/advene/gui/main.py:1594
+msgid "Playing rate"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:513
-msgid "Cleaning up..."
+#: ../lib/advene/gui/main.py:1742
+msgid "History"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:633
-msgid "Text importer"
+#: ../lib/advene/gui/main.py:1749
+msgid "Popups"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:646 ../lib/advene/util/importer.py:1176
-msgid "Specify the encoding of the input file (latin1, utf8...)"
+#: ../lib/advene/gui/main.py:1753
+msgid ""
+"You can drag and drop view icons (timeline, treeview, transcription...) in "
+"notebooks to embed various views."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:649
-msgid "Should the timestamps be encoded relative to the first timestamp?"
+#: ../lib/advene/gui/main.py:1753
+msgid "Information"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:652
-msgid "Unit to consider for integers"
+#: ../lib/advene/gui/main.py:2046
+msgid "Cannot create annotation. There is no schema to put it in."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:655
-msgid ""
-"What timestamps are present in a line (only begin, both begin and end, or "
-"automatic recognition)"
+#: ../lib/advene/gui/main.py:2055
+msgid "Default annotation type"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:798
-msgid "lsdvd importer"
+#: ../lib/advene/gui/main.py:2067
+msgid "Annotation created"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:825
-msgid "Processing data"
+#: ../lib/advene/gui/main.py:2099
+msgid "Play/Pause [Control-Tab / Control-Space]"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:843 ../lib/advene/util/importer.py:903
-msgid "DVD Chapter"
+#: ../lib/advene/gui/main.py:2100
+#, python-format
+msgid "Rewind (%.02f s) [Control-Left]"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:847
-msgid "Launching lsdvd..."
+#: ../lib/advene/gui/main.py:2101
+#, python-format
+msgid "Forward (%.02f s) [Control-Right]"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:859
-msgid "chaplin importer"
+#: ../lib/advene/gui/main.py:2102
+msgid "Previous frame [Control-Down]"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:917
-msgid "Xi importer"
+#: ../lib/advene/gui/main.py:2103
+msgid "Next frame [Control-Up]"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:986
-msgid "ELAN importer"
+#: ../lib/advene/gui/main.py:2104
+msgid "Fullscreen"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1039
+#: ../lib/advene/gui/main.py:2256
 #, python-format
-msgid "Converting tier %s"
+msgid "Screenshot saved to %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1140
-msgid "Processing time slots"
+#: ../lib/advene/gui/main.py:2258
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1155
-msgid "Fixing forward references"
+#: ../lib/advene/gui/main.py:2260
+#, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1157
-msgid "Creating relations"
+#: ../lib/advene/gui/main.py:2268
+msgid "Save screenshot to..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1169
-msgid "Subtitle (SRT) importer"
+#: ../lib/advene/gui/main.py:2286
+msgid "Could not take snapshot with enough precision"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1238
+#: ../lib/advene/gui/main.py:2324
+msgid "Export package data"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2326
 #, python-format
-msgid "Subtitles from %s"
+msgid "Export annotation type %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1251
-msgid "PRAAT importer"
+#: ../lib/advene/gui/main.py:2328
+#, python-format
+msgid "Export element %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1341
-msgid "CMML importer"
+#: ../lib/advene/gui/main.py:2354
+msgid "Export format"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1404
-msgid "Parsing clip information"
+#: ../lib/advene/gui/main.py:2391
+msgid " (modified)"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1501
-#: ../lib/advene/plugins/transcriber.py:254
-msgid "Creating package"
+#: ../lib/advene/gui/main.py:2394
+#, python-format
+msgid "Activate %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1504
-msgid "Creating CMML schema"
+#: ../lib/advene/gui/main.py:2564
+msgid "Saved workspace"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1508
-#: ../lib/advene/plugins/transcriber.py:260
-msgid "Creating annotation types"
+#: ../lib/advene/gui/main.py:2616
+msgid "Restoring workspace..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1514
-#: ../lib/advene/plugins/transcriber.py:265
-msgid "Parsing header information"
+#: ../lib/advene/gui/main.py:2622
+#, python-format
+msgid "Do you wish to restore the %s workspace ?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1528
-msgid "Parsing stream information"
+#: ../lib/advene/gui/main.py:2627
+msgid "Clear the current workspace"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1562
-msgid "IRI importer"
+#: ../lib/advene/gui/main.py:2648
+#, python-format
+msgid "View %s is not an adhoc view"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1571
-msgid "Generate one type per view"
+#: ../lib/advene/gui/main.py:2659
+#, python-format
+msgid "Cannot identify the adhoc view %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2673
+msgid "Choose the annotation type to display as transcription."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1591
+#: ../lib/advene/gui/main.py:2708
 #, python-format
-msgid "Parsing ensemble %s"
+msgid "Error: unable to find an edit popup for %(element)s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1602
+#: ../lib/advene/gui/main.py:2715
 #, python-format
-msgid "Parsing decoupage %s"
+msgid "Editing %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1638
-msgid "Parsing views"
+#: ../lib/advene/gui/main.py:2727
+#, python-format
+msgid "Comment view (%s)"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1686 ../lib/advene/util/importer.py:1775
-msgid "Initializing package"
+#: ../lib/advene/gui/main.py:2794
+#, python-format
+msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1724
-msgid "IRIData importer"
+#: ../lib/advene/gui/main.py:2805
+#, python-format
+msgid "Activating package %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1738
-msgid "Parsing sound values"
+#: ../lib/advene/gui/main.py:2833
+#, python-format
+msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1750
-msgid "Creating annotations"
+#: ../lib/advene/gui/main.py:2865
+msgid "Do you want to restore the saved workspace ?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:402
-msgid "Package"
+#: ../lib/advene/gui/main.py:2872
+msgid "Advene"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:403
-msgid "Annotation"
+#: ../lib/advene/gui/main.py:3077
+#, python-format
+msgid "Got exception %s. Trying to continue."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:404
-msgid "Relation"
+#: ../lib/advene/gui/main.py:3101 ../lib/advene/gui/main.py:3122
+#: ../lib/advene/gui/main.py:4072
+msgid "Unknown"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/edit/schemaeditor.py:111
-#: ../lib/advene/gui/main.py:276 ../lib/advene/gui/main.py:3270
-msgid "Schema"
+#: ../lib/advene/gui/main.py:3192
+#, python-format
+msgid ""
+"The package(s) %s are modified.\n"
+"Save them now?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:279
-msgid "Annotation Type"
+#: ../lib/advene/gui/main.py:3224
+#: ../lib/advene/gui/views/interactivequery.py:375
+msgid "Empty quicksearch string"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/main.py:280
-msgid "Relation Type"
+#: ../lib/advene/gui/main.py:3227
+#: ../lib/advene/gui/views/interactivequery.py:280
+#, python-format
+msgid "'%s'"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:408 ../lib/advene/rules/actions.py:236
-#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/gui/main.py:277
-msgid "View"
+#: ../lib/advene/gui/main.py:3242
+msgid "Choose an annotation type."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/main.py:278
-#: ../lib/advene/gui/popup.py:459
-msgid "Query"
+#: ../lib/advene/gui/main.py:3261 ../lib/advene/gui/views/timeline.py:3028
+#: ../lib/advene/gui/edit/transcribe.py:1019
+msgid "Create a new annotation type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:410
-msgid "Resource Folder"
+#: ../lib/advene/gui/main.py:3286
+msgid "No annotation type is defined."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:411 ../lib/advene/gui/edit/create.py:122
-msgid "Resource File"
+#: ../lib/advene/gui/main.py:3295
+msgid "Creating a new type."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:446
-msgid "---- Elements ----"
+#: ../lib/advene/gui/main.py:3299
+msgid "Title of the new type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:452
-msgid "---- Attributes ----"
+#: ../lib/advene/gui/main.py:3300
+msgid ""
+"Id of the new type. It is generated from the title, but you may change it if "
+"necessary."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:455
-msgid "---- Methods ----"
+#: ../lib/advene/gui/main.py:3304
+msgid "Specify the content-type for the annotation type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:531
-#, python-format
-msgid "Cannot read %(filename)s: %(error)s"
+#: ../lib/advene/gui/main.py:3306
+msgid "Content type"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:555
-#, python-format
-msgid ""
-"Error:\n"
-"%s"
+#: ../lib/advene/gui/main.py:3313 ../lib/advene/gui/main.py:3422
+msgid "Create a new schema"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:565
-#, python-format
-msgid ""
-"Package %(title)s:\n"
-"%(schema)s\n"
-"%(annotation)s in %(annotation_type)s\n"
-"%(relation)s in %(relation_type)s\n"
-"%(query)s\n"
-"%(view)s\n"
-"\n"
-"Description:\n"
-"%(description)s\n"
-msgstr ""
-
-#: ../lib/advene/util/helper.py:592
-msgid "Min duration"
+#: ../lib/advene/gui/main.py:3326
+msgid "Choose an existing schema for the new type, or create a new one"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:593
-msgid "Max duration"
+#: ../lib/advene/gui/main.py:3329 ../lib/advene/gui/main.py:3437
+msgid "Specify the schema title"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:594
-msgid "Mean duration"
+#: ../lib/advene/gui/main.py:3333
+msgid "Title of the new schema"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:595
-msgid "Total duration"
+#: ../lib/advene/gui/main.py:3334
+msgid ""
+"Id of the new schema. It is generated from the title, but you may change it "
+"if necessary."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:601
-msgid "schema"
+#: ../lib/advene/gui/main.py:3357
+msgid ""
+"You specified a annotation-type identifier that already exists. Aborting."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:601
-msgid "schemas"
+#: ../lib/advene/gui/main.py:3375
+msgid "You specified a existing schema identifier. Using the existing schema."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotation"
+#: ../lib/advene/gui/main.py:3377
+msgid ""
+"You specified an existing identifier that does not reference a schema. "
+"Aborting."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotations"
+#: ../lib/advene/gui/main.py:3404
+msgid "Choose a schema."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation type"
+#: ../lib/advene/gui/main.py:3464
+msgid "You specified an existing identifier. Aborting."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation types"
+#: ../lib/advene/gui/main.py:3484
+#, python-format
+msgid "Package %s modified"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:605
-msgid "relation"
+#: ../lib/advene/gui/main.py:3485
+#, python-format
+msgid ""
+"The package %s has been modified but not saved.\n"
+"Save it now?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:605
-msgid "relations"
+#: ../lib/advene/gui/main.py:3495
+#, python-format
+msgid "%s snapshots"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation type"
+#: ../lib/advene/gui/main.py:3496
+#, python-format
+msgid "Do you want to save the snapshots for media %s?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation types"
+#: ../lib/advene/gui/main.py:3503 ../lib/advene/gui/main.py:3512
+#: ../lib/advene/gui/main.py:4490
+#, python-format
+msgid "Cannot save imagecache for %(media)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:608
-msgid "query"
+#: ../lib/advene/gui/main.py:3526
+msgid "first frame"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:608
-msgid "queries"
+#: ../lib/advene/gui/main.py:3527
+msgid "last frame"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
-msgid "view"
+#: ../lib/advene/gui/main.py:3535
+#, python-format
+msgid "Click on %(bound)s of %(annotation)s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
-msgid "views"
+#: ../lib/advene/gui/main.py:3538
+#, python-format
+msgid "Update %(bound)s of %(annotation)s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:610
-msgid "package"
+#: ../lib/advene/gui/main.py:3557
+msgid "Click on the frame corresponding to the timestamp value"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:610
-msgid "packages"
+#: ../lib/advene/gui/main.py:3559
+msgid "Set new timestamp value"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:622
-#, python-format
-msgid "No %s"
+#: ../lib/advene/gui/main.py:3566
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:624
-#, python-format
-msgid "1 %s"
+#: ../lib/advene/gui/main.py:3638
+msgid "Text annotation"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:626
-#, python-format
-msgid "%(count)d %(plural)s"
+#: ../lib/advene/gui/main.py:3646 ../lib/advene/gui/main.py:3671
+msgid "Cannot find an appropriate annotation type"
 msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:76
-msgid "Cinelab importer"
+#: ../lib/advene/gui/main.py:3648 ../lib/advene/gui/views/bookmarks.py:296
+msgid "Comment here"
 msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
-#, python-format
-msgid "File %s is not an Advene2 zip package."
+#: ../lib/advene/gui/main.py:3664
+msgid "Graphical annotation"
 msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:176
-msgid "Converting annotation types"
+#: ../lib/advene/gui/main.py:3716
+msgid ""
+"An unsaved template package exists\n"
+"Save it first."
 msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:217
-msgid "Converting views"
+#: ../lib/advene/gui/main.py:3725
+msgid "Package modified"
 msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:249
-#: ../lib/advene/plugins/youtubeannotations.py:72
-msgid "Importing annotations"
+#: ../lib/advene/gui/main.py:3726
+msgid ""
+"The package that you want to close has been modified but not saved.\n"
+"Save it now?"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:41
-msgid "ShotdetectApp importer"
+#: ../lib/advene/gui/main.py:3757
+msgid "Load a package"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:52
+#: ../lib/advene/gui/main.py:3766
 msgid ""
-"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
-"too many shots are detected, try to increase its value."
-msgstr ""
-
-#: ../lib/advene/plugins/shotdetectapp.py:80
-#: ../lib/advene/plugins/goodshotdetector.py:78
-msgid "Detected shots"
+"A video file was selected. Pretend that the user selected 'Select a video "
+"file'..."
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:140 ../lib/advene/gui/main.py:5130
+#: ../lib/advene/gui/main.py:3771
 #, python-format
-msgid "Detected shot #%(num)d at %(pos)s "
+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/plugins/youtubeannotations.py:33
-msgid "Youtube XML annotations importer"
+#: ../lib/advene/gui/main.py:3780
+msgid ""
+"You are trying to load a session file, but there are unsaved packages. "
+"Proceed anyway?"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:62
-msgid "Input from the braille table."
+#: ../lib/advene/gui/main.py:3808 ../lib/advene/gui/main.py:3864
+msgid "Do you want to save the current workspace ?"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:66
-msgid "BrlTTY not installed. There will be no braille support."
+#: ../lib/advene/gui/main.py:3823 ../lib/advene/gui/main.py:3879
+#, python-format
+msgid "Could not save the package: %s"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:78
-msgid "Could not initialize BrlTTY. No braille support."
+#: ../lib/advene/gui/main.py:3836
+#, python-format
+msgid "Save the package %s"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:84
-msgid "Display a message in Braille"
+#: ../lib/advene/gui/main.py:3849
+msgid "Invalid file extension"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:85
-msgid "Message to display."
+#: ../lib/advene/gui/main.py:3850
+#, python-format
+msgid ""
+"Your package contains resources,\n"
+"the filename (%s) should have a .azp extension.\n"
+"Should I put the correct extension?"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
-#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
-#: ../lib/advene/rules/actions.py:123 ../lib/advene/gui/plugins/actions.py:44
-#: ../lib/advene/gui/plugins/actions.py:58
-#: ../lib/advene/gui/plugins/actions.py:110
-#: ../lib/advene/gui/plugins/actions.py:399
-#: ../lib/advene/gui/plugins/actions.py:527
-#: ../lib/advene/gui/edit/rules.py:766
-msgid "The annotation content"
+#: ../lib/advene/gui/main.py:3854
+msgid "OK, the resources will be lost."
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:240 ../lib/advene/plugins/tts.py:110
-#: ../lib/advene/gui/plugins/actions.py:234
-msgid "Unknown rule"
+#: ../lib/advene/gui/main.py:3856
+msgid "Aborting package saving"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:241 ../lib/advene/plugins/tts.py:111
-#: ../lib/advene/gui/plugins/actions.py:235
-#, python-format
-msgid ""
-"Rule %(rulename)s: Error in the evaluation of the parameter "
-"%(parametername)s:"
+#: ../lib/advene/gui/main.py:3890
+msgid "Save the session in..."
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:256
+#: ../lib/advene/gui/main.py:3901
 #, python-format
-msgid "BrlTTY connection error: %s"
+msgid "Session saved in %s"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:273
-msgid "Braille display: "
+#: ../lib/advene/gui/main.py:3910
+msgid "Do you confirm the creation of annotations matching the DVD chapters?"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:279
-msgid "No message"
+#: ../lib/advene/gui/main.py:3916
+msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:45
-msgid "Shot detection (Delakis version)"
+#: ../lib/advene/gui/main.py:3924
+msgid "The associated media is not a DVD."
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:60
-msgid "Cache histogram alongside video files."
+#: ../lib/advene/gui/main.py:3935
+#, python-format
+msgid "Processing %s video"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:63
-msgid ""
-"Parameter profile: safe will detect less cuts, aggressive will detect more "
-"cuts (but more false ones too). default is a compromise."
+#: ../lib/advene/gui/main.py:3938
+msgid "No associated video file"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:77
-#, python-format
-msgid "Shot (%s profile)"
+#: ../lib/advene/gui/main.py:3965
+msgid "Standard RuleSet"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:83
-msgid "Loading histogram"
+#: ../lib/advene/gui/main.py:4081
+#, python-format
+msgid ""
+"Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:146
-msgid "Computing hdiff"
+#: ../lib/advene/gui/main.py:4096
+msgid "Visit the Advene web site for examples and documentation."
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:153
-msgid "Detecting cuts"
+#: ../lib/advene/gui/main.py:4129 ../lib/advene/gui/main.py:4217
+msgid "Select a movie file"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:180
-msgid "Detecting dissolves"
+#: ../lib/advene/gui/main.py:4141
+msgid "Title/Chapter selection"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:265
-msgid "Extracting histogram"
+#: ../lib/advene/gui/main.py:4183
+msgid "Select a video stream"
 msgstr ""
 
-#: ../lib/advene/plugins/anvil.py:35
-msgid "Anvil importer"
+#: ../lib/advene/gui/main.py:4184
+msgid "Enter the address of a video stream"
 msgstr ""
 
-#: ../lib/advene/plugins/annotationgraph.py:40
-msgid "AnnotationGraph importer"
+#: ../lib/advene/gui/main.py:4188
+#, python-format
+msgid "Successfully extracted the video stream address (%s) from the url.\n"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:33
-msgid "Final Cut Pro XML importer"
+#: ../lib/advene/gui/main.py:4213
+msgid "Package properties"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:55
-msgid "FCP clipitem"
+#: ../lib/advene/gui/main.py:4214 ../lib/advene/gui/edit/elements.py:514
+#: ../lib/advene/gui/edit/elements.py:563
+#: ../lib/advene/gui/edit/elements.py:650
+#: ../lib/advene/gui/edit/elements.py:730
+#: ../lib/advene/gui/edit/elements.py:787
+#: ../lib/advene/gui/edit/elements.py:879
+#: ../lib/advene/gui/edit/elements.py:948
+#: ../lib/advene/gui/edit/elements.py:1060
+#: ../lib/advene/gui/edit/elements.py:1122
+msgid "Author"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:75
-msgid "Importing subtitles"
+#: ../lib/advene/gui/main.py:4214
+msgid "Author name"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:90
-msgid "Importing clips"
+#: ../lib/advene/gui/main.py:4215 ../lib/advene/gui/edit/elements.py:515
+#: ../lib/advene/gui/edit/elements.py:564
+#: ../lib/advene/gui/edit/elements.py:651
+#: ../lib/advene/gui/edit/elements.py:731
+#: ../lib/advene/gui/edit/elements.py:788
+#: ../lib/advene/gui/edit/elements.py:880
+#: ../lib/advene/gui/edit/elements.py:949
+#: ../lib/advene/gui/edit/elements.py:1061
+#: ../lib/advene/gui/edit/elements.py:1123
+msgid "Date"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:93
-msgid "No clip"
+#: ../lib/advene/gui/main.py:4215
+msgid "Package creation date"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:219
-#, python-format
-msgid "Cannot export to %(fname)s: %(e)s"
+#: ../lib/advene/gui/main.py:4216 ../lib/advene/gui/views/table.py:674
+#: ../lib/advene/gui/util/dialog.py:386 ../lib/advene/gui/edit/imports.py:331
+#: ../lib/advene/gui/edit/dvdselect.py:95
+#: ../lib/advene/gui/edit/transcribe.py:1047
+msgid "Title"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1129
-#: ../lib/advene/plugins/tracebuilder.py:1168
-#, python-format
-msgid "Cannot export to %(host)s:%(port)s %(error)s"
+#: ../lib/advene/gui/main.py:4216
+msgid "Package title"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1143
-#, python-format
-msgid "Cannot send data to %(host)s:%(port)s %(error)s"
+#: ../lib/advene/gui/main.py:4217
+msgid "Associated media"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1191
-#, python-format
-msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
+#: ../lib/advene/gui/main.py:4218 ../lib/advene/gui/views/table.py:309
+msgid "Duration"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1197
-#, python-format
-msgid "%(nb)s events sent to %(host)s:%(port)s during session."
+#: ../lib/advene/gui/main.py:4218
+msgid "Media duration in ms"
 msgstr ""
 
-#: ../lib/advene/plugins/dcp.py:65
-msgid "DCP importer"
+#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/plugins/eventaccumulator.py:143
+msgid "Reset"
 msgstr ""
 
-#: ../lib/advene/plugins/dcp.py:120
-#, python-format
-msgid "Converting #%(num)d / %(count)d"
+#: ../lib/advene/gui/main.py:4275 ../lib/advene/gui/views/timeline.py:3496
+#: ../lib/advene/gui/views/timeline.py:3647
+#: ../lib/advene/gui/views/tagbag.py:64 ../lib/advene/gui/edit/properties.py:51
+#: ../lib/advene/gui/edit/transcribe.py:147
+#: ../lib/advene/gui/edit/transcribe.py:1187
+msgid "Preferences"
 msgstr ""
 
-#: ../lib/advene/plugins/ttl.py:41
-msgid "TurTLe (RDF) importer"
+#: ../lib/advene/gui/main.py:4277
+msgid "Paths"
 msgstr ""
 
-#: ../lib/advene/plugins/aeidon_import.py:48
-msgid "Aeidon (subtitles) importer"
+#: ../lib/advene/gui/main.py:4279
+msgid "Data"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:47
-#: ../lib/advene/plugins/soundenveloppe.py:143
-#: ../lib/advene/plugins/soundenveloppe.py:145
-msgid "Sound enveloppe"
+#: ../lib/advene/gui/main.py:4279
+msgid "Standard directory for data files"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:60
-msgid "Interval (in ms) at which to take samples."
+#: ../lib/advene/gui/main.py:4280
+msgid "Movie path"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:63
-msgid "Maximum number of samples per annotation."
+#: ../lib/advene/gui/main.py:4280
+#, python-format
+msgid ""
+"List of directories (separated by %s) to search for movie files (_ means "
+"package directory)"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:66
-#: ../lib/advene/plugins/cutter.py:56
-msgid "Channel selection."
+#: ../lib/advene/gui/main.py:4281
+msgid "Imagecache"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#: ../lib/advene/plugins/pocketsphinx.py:119
-#: ../lib/advene/plugins/barcode.py:58
-msgid "Generating annotations"
+#: ../lib/advene/gui/main.py:4281
+msgid "Directory for storing the snapshot cache"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:115
-#, python-format
-msgid "At %s"
+#: ../lib/advene/gui/main.py:4282
+msgid "Player"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:162
-msgid "Extracting sound enveloppe"
+#: ../lib/advene/gui/main.py:4282
+msgid "Directory of the video player"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:39
-msgid "Audio segmentation"
+#: ../lib/advene/gui/main.py:4283
+msgid "Shotdetect"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:53
-msgid "Volume threshold (in dB, can be negative) before trigger."
+#: ../lib/advene/gui/main.py:4283
+msgid "Shotdetect application"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:101
-#, python-format
-msgid "Detected %(count)d segments until %(time)s"
+#: ../lib/advene/gui/main.py:4285
+msgid "GUI"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:119
-msgid "Sound segment"
+#: ../lib/advene/gui/main.py:4286
+msgid "Interface language (after restart)"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:120
-#, python-format
+#: ../lib/advene/gui/main.py:4286
 msgid ""
-"Sound segmentation with a threshold of %(threshold)d dB - channel: "
-"%(channel)s"
+"Language used for the interface (necessitates to restart the application)"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:138
-msgid "Starting silence detection"
+#: ../lib/advene/gui/main.py:4287 ../lib/advene/gui/util/initialconfig.py:88
+msgid "System default"
 msgstr ""
 
-#: ../lib/advene/plugins/montagerenderer.py:43
-msgid "Cannot register montage renderer: Gnonlin plugins are not present."
+#: ../lib/advene/gui/main.py:4292
+msgid "Record activity trace"
 msgstr ""
 
-#: ../lib/advene/plugins/mpeg7.py:54
-msgid "MPEG7 importer"
+#: ../lib/advene/gui/main.py:4293
+msgid "Expert mode"
 msgstr ""
 
-#: ../lib/advene/plugins/transcriber.py:40
-msgid "Transcriber importer"
+#: ../lib/advene/gui/main.py:4293
+msgid "Offer advanced possibilities"
 msgstr ""
 
-#: ../lib/advene/plugins/transcriber.py:86
-msgid "Parsing section information"
+#: ../lib/advene/gui/main.py:4294
+msgid "Prefer WYSIWYG"
 msgstr ""
 
-#: ../lib/advene/plugins/transcriber.py:276
-msgid "Parsing topic and speaker tables information"
+#: ../lib/advene/gui/main.py:4294
+msgid "Use WYSIWYG editors when possible (HTML, SVG)"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:42
-msgid "Feature detection (face...)"
+#: ../lib/advene/gui/main.py:4295
+msgid "Player control in edit popups"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:57
-msgid "Sensitivity level."
+#: ../lib/advene/gui/main.py:4295
+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/plugins/featuredetect.py:60
-msgid ""
-"Scale. Original image size will be divided by this factor, in order to speed "
-"up detection."
+#: ../lib/advene/gui/main.py:4297
+msgid "Open popups"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:63
-msgid "Classifier"
+#: ../lib/advene/gui/main.py:4298
+msgid "Where should we open adhoc views?"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:77
-#, python-format
-msgid "Feature %s"
+#: ../lib/advene/gui/main.py:4299
+msgid "as a popup window"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:79
-#, python-format
-msgid "Detected %s"
+#: ../lib/advene/gui/main.py:4300
+msgid "embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:81
-msgid "Detection started"
+#: ../lib/advene/gui/main.py:4301
+msgid "embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:171
-#, python-format
-msgid "Detected %(count)d feature(s) until %(time)s"
+#: ../lib/advene/gui/main.py:4302
+msgid "embedded south of the video"
 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."
+#: ../lib/advene/gui/main.py:4303
+msgid "embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:41
-msgid "Speech recognition (PocketSphinx)"
+#: ../lib/advene/gui/main.py:4306
+msgid "History size"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:61
-msgid "Filtering noise level [0..1]."
+#: ../lib/advene/gui/main.py:4306
+msgid "History filelist size limit"
 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."
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember window size"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:69
-msgid "Use default acoustic and language models."
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember the size of opened windows"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:73
-msgid "Acoustic model (directory)"
+#: ../lib/advene/gui/main.py:4309
+msgid "Bookmark snapshot width"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:77
-msgid "Phonetic dictionary (.dic file)"
+#: ../lib/advene/gui/main.py:4309
+msgid "Width of the snapshots representing bookmarks"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:81
-msgid "Language model (.DMP file)"
+#: ../lib/advene/gui/main.py:4310
+msgid "Bookmark snapshot precision"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:144
-#: ../lib/advene/plugins/barcode.py:83
-#, python-format
-msgid "%(count)d utterances until %(time)s"
+#: ../lib/advene/gui/main.py:4310
+msgid "Precision (in ms) of the displayed bookmark snapshots."
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:153
-msgid "Speech"
+#: ../lib/advene/gui/main.py:4312
+msgid "General"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:155
-msgid "Recognized speech"
+#: ../lib/advene/gui/main.py:4313
+msgid "Weekly update check"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:191
-msgid "Recognizing speech"
+#: ../lib/advene/gui/main.py:4313 ../lib/advene/gui/util/initialconfig.py:90
+msgid "Weekly check for updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:36
-msgid "Cannot register barcode extraction: zbar plugin not found."
+#: ../lib/advene/gui/main.py:4314
+msgid "On exit,"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:40
-msgid "Barcode (qr-code) extraction"
+#: ../lib/advene/gui/main.py:4315
+msgid "How to handle screenshots on exit"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:95
-msgid "Barcode"
+#: ../lib/advene/gui/main.py:4316
+msgid "never save screenshots"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:97
-msgid "Extracted barcode information"
+#: ../lib/advene/gui/main.py:4317
+msgid "always save screenshots"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:115
-msgid "Extraction barcodes"
+#: ../lib/advene/gui/main.py:4318
+msgid "ask before saving screenshots"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:47
-msgid "NERD (Named Entity Recognition and Disambiguation)"
+#: ../lib/advene/gui/main.py:4320
+msgid "Auto-save"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:68
-msgid "NERD API key"
+#: ../lib/advene/gui/main.py:4321
+msgid "Data auto-save functionality"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:82
-msgid "NER service to use"
+#: ../lib/advene/gui/main.py:4322
+msgid "is desactivated"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:88
-msgid "Type of annotation to analyze"
+#: ../lib/advene/gui/main.py:4323
+msgid "is done automatically"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:93
-msgid "Language to analyze"
+#: ../lib/advene/gui/main.py:4324
+msgid "is done after confirmation"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:98
-msgid "Minimum confidence level (between 0.0 and 1.0)"
+#: ../lib/advene/gui/main.py:4326
+msgid "Auto-save interval (in s)"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:103
-msgid "Interpolate position of annotations"
+#: ../lib/advene/gui/main.py:4326
+msgid "Interval (in seconds) between package auto-saves"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:108
-msgid "Split by entity type"
+#: ../lib/advene/gui/main.py:4328
+msgid "Workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:113
-msgid "Store results as markup in the annotation text"
+#: ../lib/advene/gui/main.py:4330
+msgid "On package saving,"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:118
-msgid "Create relations between the original annotations and the new ones"
+#: ../lib/advene/gui/main.py:4331
+msgid "Do you wish to save the default workspace with the package?"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:150
-#, python-format
-msgid "NERD applied to %s"
+#: ../lib/advene/gui/main.py:4332
+msgid "never save the current workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:208
-#, python-format
-msgid "NERD %s"
+#: ../lib/advene/gui/main.py:4333
+msgid "always save the current workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/ted.py:39
-msgid "TED importer"
+#: ../lib/advene/gui/main.py:4334
+msgid "ask before saving the current workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetect.py:35
-msgid "Shotdetect importer"
+#: ../lib/advene/gui/main.py:4336
+msgid "Auto-validation of edited elements"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetect.py:79
-msgid "No shots"
+#: ../lib/advene/gui/main.py:4336
+msgid "Automatically validate modified elements when saving the package."
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:77
-msgid "Pronounce a text"
+#: ../lib/advene/gui/main.py:4338
+msgid "On package load,"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:78
-msgid "String to pronounce."
+#: ../lib/advene/gui/main.py:4339
+msgid "Do you wish to load the workspace saved with the package?"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:131 ../lib/advene/gui/plugins/actions.py:259
-#: ../lib/advene/gui/plugins/actions.py:340
-#: ../lib/advene/gui/plugins/actions.py:358
-msgid "No message..."
+#: ../lib/advene/gui/main.py:4340
+msgid "never load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:156
-msgid "TTS disabled. Cannot find the application 'festival' in PATH"
+#: ../lib/advene/gui/main.py:4341
+msgid "always load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:158
-msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
+#: ../lib/advene/gui/main.py:4342
+msgid "ask before loading the saved workspace"
 msgstr ""
 
-#: ../lib/advene/player/gstreamer.py:434
-msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+#: ../lib/advene/gui/main.py:4345
+msgid "Video Player"
 msgstr ""
 
-#: ../lib/advene/rules/importer.py:29
-msgid "Event history importer"
+#: ../lib/advene/gui/main.py:4346
+msgid "Autostart"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
-#: ../lib/advene/rules/actions.py:120
-msgid "Message to display"
+#: ../lib/advene/gui/main.py:4346
+msgid ""
+"Automatically start the player when loading a media file (either directly or "
+"through a package)"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:48
-msgid "Start the player"
+#: ../lib/advene/gui/main.py:4347
+msgid "Fulscreen timestamp"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:49
-msgid "Start position (in ms)"
+#: ../lib/advene/gui/main.py:4347
+msgid "Display the timestamp over the video when in fullscreen mode"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:52 ../lib/advene/rules/actions.py:384
-msgid "The movie start"
+#: ../lib/advene/gui/main.py:4348
+msgid "Enable captions"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
-msgid "The annotation begin"
+#: ../lib/advene/gui/main.py:4348
+msgid "Enable captions over the video"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
-msgid "The annotation end"
+#: ../lib/advene/gui/main.py:4349
+msgid "Caption font"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:63 ../lib/advene/gui/views/logwindow.py:129
-msgid "Go to the given position"
+#: ../lib/advene/gui/main.py:4349
+msgid "TrueType font for captions"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:64
-msgid "Goto position (in ms)"
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:73
-msgid "Stop the player"
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG captions over the video"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:80
-msgid "Pause the player"
+#: ../lib/advene/gui/main.py:4352
+msgid "Enable snapshots"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:87
-msgid "Resume the player"
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:94
-msgid "Take a snapshot"
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width in pixels."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:101
-msgid "Display a caption"
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:103
-msgid "Duration of the caption"
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity level. -1 for no messages."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:110 ../lib/advene/rules/actions.py:172
-#: ../lib/advene/gui/plugins/actions.py:61
-#: ../lib/advene/gui/plugins/actions.py:121
-#: ../lib/advene/gui/plugins/actions.py:403
-#: ../lib/advene/gui/plugins/actions.py:538
-msgid "1 second"
+#: ../lib/advene/gui/main.py:4357
+msgid "Devices"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
-#: ../lib/advene/gui/plugins/actions.py:62
-#: ../lib/advene/gui/plugins/actions.py:122
-#: ../lib/advene/gui/plugins/actions.py:404
-#: ../lib/advene/gui/plugins/actions.py:539
-#: ../lib/advene/gui/edit/rules.py:773
-msgid "The annotation duration"
+#: ../lib/advene/gui/main.py:4359
+msgid "Standard"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:119 ../lib/advene/gui/popup.py:718
-msgid "Caption the annotation"
+#: ../lib/advene/gui/main.py:4361
+msgid "DVD drive"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:131
-msgid "Display a graphical shape"
+#: ../lib/advene/gui/main.py:4361
+msgid "Drive letter for the DVD"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:132
-msgid "Shape (square, circle, triangle)"
+#: ../lib/advene/gui/main.py:4362
+msgid "GDI"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:133
-#: ../lib/advene/gui/edit/shapewidget.py:342
-#: ../lib/advene/gui/edit/elements.py:891
-#: ../lib/advene/gui/edit/elements.py:971
-#: ../lib/advene/gui/edit/elements.py:1085
-#: ../lib/advene/gui/views/tagbag.py:138
-msgid "Color"
+#: ../lib/advene/gui/main.py:4363
+msgid "Direct X"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:134
-msgid "x-position (percentage of screen)"
+#: ../lib/advene/gui/main.py:4365
+msgid "DVD device"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:135
-msgid "y-position (percentage of screen)"
+#: ../lib/advene/gui/main.py:4365
+msgid "Device for the DVD"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:136
-msgid "Size (arbitrary units)"
+#: ../lib/advene/gui/main.py:4366
+msgid "X11"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:137
-msgid "Duration of the display in ms"
+#: ../lib/advene/gui/main.py:4367
+msgid "XVideo"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:145
-msgid "A square"
+#: ../lib/advene/gui/main.py:4368
+msgid "GL"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:146
-msgid "A circle"
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:147
-msgid "A triangle"
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output module"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:150
-msgid "White"
+#: ../lib/advene/gui/main.py:4372
+msgid "Recorder options"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:151
-msgid "Black"
+#: ../lib/advene/gui/main.py:4373
+msgid "Audio input"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:152
-msgid "Red"
+#: ../lib/advene/gui/main.py:4373
+msgid "Device name for audio input (with gstrecorder plugin)"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:153
-msgid "Green"
+#: ../lib/advene/gui/main.py:4374
+msgid "Record video"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:154
-msgid "Blue"
+#: ../lib/advene/gui/main.py:4374
+msgid "Record both video and audio"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:155
-msgid "Yellow"
+#: ../lib/advene/gui/main.py:4377
+msgid "<i>Experimental</i>"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:158
-msgid "At the top of the screen"
+#: ../lib/advene/gui/main.py:4378 ../lib/advene/gui/views/scroller.py:29
+msgid "Scroller"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
-msgid "In the middle of the screen"
+#: ../lib/advene/gui/main.py:4378
+msgid "Embed the caption scroller below the video"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:160
-msgid "At the bottom of the screen"
+#: ../lib/advene/gui/main.py:4379 ../lib/advene/gui/views/caption.py:29
+msgid "Caption"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:163
-msgid "At the left of the screen"
+#: ../lib/advene/gui/main.py:4379
+msgid "Embed the caption view below the video"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:167
-#: ../lib/advene/gui/edit/transcribe.py:1164
-#: ../lib/advene/gui/views/activebookmarks.py:547
-msgid "Small"
+#: ../lib/advene/gui/main.py:4381
+msgid "Time-related"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:168
-#: ../lib/advene/gui/edit/transcribe.py:1165
-#: ../lib/advene/gui/views/activebookmarks.py:548
-msgid "Normal"
+#: ../lib/advene/gui/main.py:4382
+msgid "Time format"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:169
-#: ../lib/advene/gui/edit/transcribe.py:1166
-#: ../lib/advene/gui/views/activebookmarks.py:549
-msgid "Large"
+#: ../lib/advene/gui/main.py:4382
+msgid "Format used to display timecodes"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:181
-msgid "Zero the volume during the annotation"
+#: ../lib/advene/gui/main.py:4396
+msgid "Default FPS"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:188
-msgid "Zero the volume"
+#: ../lib/advene/gui/main.py:4397
+msgid ""
+"Default FPS (frame-per-second) value, when entering or displaying timestamps "
+"with frame numbers."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:195
-msgid "Restore the volume"
+#: ../lib/advene/gui/main.py:4398
+msgid "Time increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:203
-msgid "Activate a STBV"
+#: ../lib/advene/gui/main.py:4398
+msgid ""
+"Skip duration, when using control-left/right or forward/rewind buttons (in "
+"ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:204
-msgid "STBV id"
+#: ../lib/advene/gui/main.py:4399
+msgid "Second time increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:213
-msgid "Send a user event"
+#: ../lib/advene/gui/main.py:4399
+msgid "Skip duration, when using control-shift-left/right (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:214
-msgid "Identifier"
+#: ../lib/advene/gui/main.py:4400
+msgid "Third time increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:215
-msgid "Delay in ms before sending the event."
+#: ../lib/advene/gui/main.py:4400
+msgid "Skip duration, when using control-shift-up/down (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:225
-msgid "Open a URL in the web browser"
+#: ../lib/advene/gui/main.py:4401
+msgid "Custom Up/Down"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:226 ../lib/advene/gui/plugins/actions.py:103
-#: ../lib/advene/gui/views/logwindow.py:159
-msgid "URL"
+#: ../lib/advene/gui/main.py:4401
+msgid ""
+"Use third time increment for up/down navigation without having to hold shift."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:235
-msgid "Open a static view"
+#: ../lib/advene/gui/main.py:4403
+msgid "Scroll increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:246
-msgid "Set the audio volume"
+#: ../lib/advene/gui/main.py:4403
+msgid ""
+"On most annotations, control+scrollwheel will increment/decrement their "
+"bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:247
-msgid "Volume level (from 0 to 100)"
+#: ../lib/advene/gui/main.py:4404
+msgid "Second scroll increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:256
-msgid "Set the playing rate"
+#: ../lib/advene/gui/main.py:4404
+msgid ""
+"On most annotations, control+shift+scrollwheel will increment/decrement "
+"their bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:257
-msgid "Rate (100: normal rate, 200: twice slower)"
+#: ../lib/advene/gui/main.py:4406
+msgid "Player sync"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:266
-msgid "Play a sound resource"
+#: ../lib/advene/gui/main.py:4406
+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/rules/actions.py:267
-msgid "Clip id"
+#: ../lib/advene/gui/main.py:4407
+msgid "Timeline parameters"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
-msgid "Volume (0..100)"
+#: ../lib/advene/gui/main.py:4408 ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:269 ../lib/advene/rules/actions.py:283
-msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
+#: ../lib/advene/gui/main.py:4408
+msgid "Font size for annotation widgets"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:280
-msgid "Play a sound file"
+#: ../lib/advene/gui/main.py:4409
+msgid "Button height"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:281
-msgid "Sound filename"
+#: ../lib/advene/gui/main.py:4409
+msgid "Height of annotation widgets"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:293
-msgid "Set a state variable"
+#: ../lib/advene/gui/main.py:4410
+msgid "Interline height"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
-msgid "State variable name"
+#: ../lib/advene/gui/main.py:4410
+msgid "Height of interlines"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:295
-msgid "State value"
+#: ../lib/advene/gui/main.py:4412
+msgid "Text content"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:305
-msgid "Increment a state variable"
+#: ../lib/advene/gui/main.py:4413
+msgid "Completion mode"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:315
-msgid "Clear all state variables"
+#: ../lib/advene/gui/main.py:4413
+msgid "Enable dynamic completion mode"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:330
-#, python-format
-msgid "Error in the evaluation of the parameter %s:"
+#: ../lib/advene/gui/main.py:4414
+msgid "Predefined terms only"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:389 ../lib/advene/gui/plugins/actions.py:247
-#, python-format
-msgid "The %s-related outgoing annotation"
+#: ../lib/advene/gui/main.py:4414
+msgid "If completion is enabled, complete only with predefined terms."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:391 ../lib/advene/gui/plugins/actions.py:249
-#, python-format
-msgid "The %s-related incoming annotation"
+#: ../lib/advene/gui/main.py:4415
+msgid "Abbreviation mode"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:551
-#, python-format
-msgid "Cannot find the stbv %s"
+#: ../lib/advene/gui/main.py:4415
+msgid "Enable abbreviation mode"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:615 ../lib/advene/gui/views/viewbook.py:263
-#, python-format
-msgid "Cannot find the view %s"
+#: ../lib/advene/gui/main.py:4416
+msgid "Abbreviations"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:647
-msgid "The set_rate method is unavailable."
+#: ../lib/advene/gui/main.py:4416
+msgid ""
+"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
+"followed by its replacement."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:657
-msgid "No 'soundclips' resource folder in the package"
+#: ../lib/advene/gui/main.py:4418
+msgid "Text-To-Speech"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:683
-msgid "Full volume"
-msgstr ""
-
-#: ../lib/advene/rules/actions.py:684
-msgid "Left"
+#: ../lib/advene/gui/main.py:4419
+msgid "TTS language"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:685
-#: ../lib/advene/gui/edit/transcribe.py:1196
-msgid "Center"
+#: ../lib/advene/gui/main.py:4420
+msgid "What language settings should be used for text-to-speech"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:686
-msgid "Right"
+#: ../lib/advene/gui/main.py:4421
+msgid "English"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:141
-msgid "is equal to"
+#: ../lib/advene/gui/main.py:4422
+msgid "French"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:142
-msgid "is different from"
+#: ../lib/advene/gui/main.py:4423
+msgid "Spanish"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:143
-msgid "contains"
+#: ../lib/advene/gui/main.py:4425
+msgid "TTS Encoding"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:144
-msgid "is greater than"
+#: ../lib/advene/gui/main.py:4426
+msgid "What encoding should be used to communicate with the TTS engine"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:145
-msgid "is lower than"
+#: ../lib/advene/gui/main.py:4427
+msgid "TTS Engine"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:146
-msgid "matches the regexp"
+#: ../lib/advene/gui/main.py:4428
+msgid ""
+"Which TTS engine should be used (modification requires restarting Advene to "
+"take into account)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:147
-msgid "is before"
+#: ../lib/advene/gui/main.py:4429
+msgid "Automatic"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:148
-msgid "meets"
+#: ../lib/advene/gui/main.py:4430
+msgid "eSpeak"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:149
-msgid "overlaps"
+#: ../lib/advene/gui/main.py:4431
+msgid "Custom script with standard input"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:150
-msgid "during"
+#: ../lib/advene/gui/main.py:4432
+msgid "Custom script with arguments"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:151
-msgid "starts"
+#: ../lib/advene/gui/main.py:4433
+msgid "SAPI"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:152
-msgid "finishes"
+#: ../lib/advene/gui/main.py:4434
+msgid "MacOS X say"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:157
-msgid "is not true"
+#: ../lib/advene/gui/main.py:4435
+msgid "Generic (text output)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:158
-msgid "is true"
+#: ../lib/advene/gui/main.py:4479
+msgid "You should restart Advene to take some options into account."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:162
-msgid "Basic conditions"
+#: ../lib/advene/gui/main.py:4488
+#, python-format
+msgid "Imagecache saved to %s"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:163
-msgid "Allen relations"
+#: ../lib/advene/gui/main.py:4501
+msgid "Restarting player..."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
-msgid "Unknown type for overlaps comparison"
+#: ../lib/advene/gui/main.py:4561
+msgid "Advene log"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
-msgid "Unknown type for during comparison"
+#: ../lib/advene/gui/main.py:4604 ../lib/advene/gui/views/timeline.py:1045
+#: ../lib/advene/rules/elements.py:1000
+msgid "Creation of a new annotation type"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
-#, python-format
-msgid "Unknown action %s"
+#: ../lib/advene/gui/main.py:4612 ../lib/advene/gui/views/timeline.py:1074
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:522
-#, python-format
-msgid "Unknown parameter %s"
+#: ../lib/advene/gui/main.py:4630
+msgid "Select the package to merge"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:527
-msgid "Unknown actions"
+#: ../lib/advene/gui/main.py:4651
+msgid "Saving workspace"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:972
-msgid "Start of the editing of an element"
+#: ../lib/advene/gui/main.py:4654
+msgid "Enter a view name to save the workspace"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:973
-msgid "Cancel of the editing of an element"
+#: ../lib/advene/gui/main.py:4655
+msgid "Default workspace"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:974
-msgid "Destruction of the edit window of an element"
+#: ../lib/advene/gui/main.py:4656
+msgid "Open this workspace when opening the package"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:975
-msgid "Validation of the editing of an element"
+#: ../lib/advene/gui/main.py:4679 ../lib/advene/gui/views/__init__.py:289
+#, python-format
+msgid "Error: the identifier %s contains invalid characters."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:976
-msgid "Ending editing of a package"
+#: ../lib/advene/gui/main.py:4690
+#, python-format
+msgid "Error: the view %s exists and is not a workspace view."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:977
-msgid "Beginning of an annotation"
+#: ../lib/advene/gui/main.py:4721
+#, python-format
+msgid "Cannot save default workspace: %s"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:978
-msgid "End of an annotation"
+#: ../lib/advene/gui/main.py:4731
+msgid "Standard workspace has been saved"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:979
-msgid "Creation of a new annotation"
+#: ../lib/advene/gui/main.py:4738
+msgid "Website export"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:980
-msgid "Ending editing of an annotation"
+#: ../lib/advene/gui/main.py:4739
+msgid "Exporting views to a website"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:981
-msgid "Suppression of an annotation"
+#: ../lib/advene/gui/main.py:4742
+msgid "Output directory"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:982
-msgid "Activation of an annotation"
+#: ../lib/advene/gui/main.py:4751
+msgid "Specify the output directory"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:983
-msgid "Deactivation of an annotation"
+#: ../lib/advene/gui/main.py:4760
+msgid "Maximum recursion depth"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:984
-msgid "Merging of two annotations"
+#: ../lib/advene/gui/main.py:4767
+msgid "Video URL"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:985
-msgid "Moving an annotation"
+#: ../lib/advene/gui/main.py:4769
+msgid ""
+"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/rules/elements.py:986
-msgid "Activation of a relation"
+#: ../lib/advene/gui/main.py:4819
+msgid "Could not export data: "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:987
-msgid "Deactivation of a relation"
+#: ../lib/advene/gui/main.py:4821
+#, python-format
+msgid "Website export to %s completed"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:988
-msgid "Creation of a new relation"
+#: ../lib/advene/gui/main.py:4860
+msgid "This video player is not able to grab specific screenshots"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:989
-msgid "Ending editing of a relation"
+#: ../lib/advene/gui/main.py:4870
+#, python-format
+msgid "Updating %d snapshots"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:990
-msgid "Suppression of a relation"
+#: ../lib/advene/gui/main.py:4875
+msgid "No snapshot to update"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:991
-msgid "Creation of a new view"
+#: ../lib/advene/gui/main.py:4884
+msgid "You first must load a movie into Advene"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:992
-msgid "Ending editing of a view"
+#: ../lib/advene/gui/main.py:4887
+#, python-format
+msgid "The movie %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:993
-msgid "Suppression of a view"
+#: ../lib/advene/gui/main.py:4943
+msgid "Generating screenshots"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:994
-msgid "Creation of a new query"
+#: ../lib/advene/gui/main.py:4948
+msgid ""
+"<b>Screenshot generation</b>\n"
+"\n"
+"Screenshots will be captured approximately every 500ms.\n"
+"\n"
+"If the movie was paused or playing, the capture will begin at the current "
+"position. Else, it will begin at the beginning of the movie.\n"
+"Note that the main interface will not be refreshed as long as this window is "
+"open."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:995
-msgid "Ending editing of a query"
+#: ../lib/advene/gui/plugins/shotvalidation.py:33
+msgid "Shot validation view"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:996
-msgid "Suppression of a query"
+#: ../lib/advene/gui/plugins/shotvalidation.py:35
+msgid "Display shot validation interface"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:997
-msgid "Creation of a new schema"
+#: ../lib/advene/gui/plugins/shotvalidation.py:112
+#, python-format
+msgid "Merged #%(first)d-#%(second)d into #%(first)d"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:998
-msgid "Ending editing of a schema"
+#: ../lib/advene/gui/plugins/shotvalidation.py:137
+msgid "Last action undone"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:999
-msgid "Suppression of a schema"
+#: ../lib/advene/gui/plugins/shotvalidation.py:155
+#, python-format
+msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1000
-#: ../lib/advene/gui/views/timeline.py:1029 ../lib/advene/gui/main.py:4555
-msgid "Creation of a new annotation type"
+#: ../lib/advene/gui/plugins/shotvalidation.py:160
+#, python-format
+msgid "Cannot split annotation #%(current)d: out of bounds."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1001
-msgid "Ending editing an annotation type"
+#: ../lib/advene/gui/plugins/shotvalidation.py:180
+#, python-format
+msgid "Changed cut between #%(first)d and %(second)d"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1002
-msgid "Suppression of an annotation type"
+#: ../lib/advene/gui/plugins/shotvalidation.py:183
+msgid "Changed begin time for first annotation"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1003
-msgid "Creation of a new relation type"
+#: ../lib/advene/gui/plugins/shotvalidation.py:189
+msgid "No annotations to adjust"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1004
-msgid "Ending editing a relation type"
+#: ../lib/advene/gui/plugins/shotvalidation.py:196
+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/rules/elements.py:1005
-msgid "Suppression of a relation type"
+#: ../lib/advene/gui/plugins/shotvalidation.py:204
+#, python-format
+msgid "Begin of #%(index)d (title: %(content)s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1006
-msgid "Creation of a new resource"
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
+msgid "< Previous cut"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1007
-msgid "Ending editing of a resource"
+#: ../lib/advene/gui/plugins/shotvalidation.py:219
+msgid "Display previous cut"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1008
-msgid "Suppression of a resource"
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
+msgid "Next cut >"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1009
-msgid "Modification of the tag"
+#: ../lib/advene/gui/plugins/shotvalidation.py:227
+msgid "Display next cut"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1010
-msgid "Activating a link"
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
+#: ../lib/advene/gui/views/annotationdisplay.py:92
+#: ../lib/advene/gui/views/timeline.py:86
+msgid "Current time"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1011
-msgid "Player start"
+#: ../lib/advene/gui/plugins/shotvalidation.py:253
+msgid "Go to annotation containing current player time."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1012
-msgid "Player stop"
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
+#: ../lib/advene/gui/edit/frameselector.py:197
+msgid "Refresh snapshots"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1013
-msgid "Player pause"
+#: ../lib/advene/gui/plugins/shotvalidation.py:258
+#: ../lib/advene/gui/edit/frameselector.py:198
+msgid "Refresh missing snapshots"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1014
-msgid "Player resume"
+#: ../lib/advene/gui/plugins/shotvalidation.py:263
+msgid "Undo last modification"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1015
-msgid "Going to a given position"
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
+msgid "Merge with previous"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1016
-msgid "Loading a new package"
+#: ../lib/advene/gui/plugins/shotvalidation.py:270
+msgid "Merge with previous annotation, i.e. remove this bound."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1017
-msgid "Activating a package"
+#: ../lib/advene/gui/plugins/shotvalidation.py:275
+msgid "Close view."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1018
-msgid "Saving the package"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:44
+msgid "Activity trace"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1019
-msgid "Start of the dynamic view"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:74
+#: ../lib/advene/gui/plugins/eventaccumulator.py:75
+#: ../lib/advene/gui/plugins/tracetimeline.py:65
+#: ../lib/advene/gui/plugins/tracetimeline.py:66
+#: ../lib/advene/gui/plugins/tracepreview.py:73
+#: ../lib/advene/gui/plugins/tracepreview.py:74
+msgid "Beginning edition"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1020
-msgid "End of the dynamic view"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:76
+#: ../lib/advene/gui/plugins/eventaccumulator.py:77
+#: ../lib/advene/gui/plugins/eventaccumulator.py:78
+#: ../lib/advene/gui/plugins/tracetimeline.py:67
+#: ../lib/advene/gui/plugins/tracetimeline.py:68
+#: ../lib/advene/gui/plugins/tracetimeline.py:69
+#: ../lib/advene/gui/plugins/tracepreview.py:75
+#: ../lib/advene/gui/plugins/tracepreview.py:76
+#: ../lib/advene/gui/plugins/tracepreview.py:77
+msgid "Canceling edition"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1021
-msgid "Start of the application"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:79
+#: ../lib/advene/gui/plugins/tracetimeline.py:70
+#: ../lib/advene/gui/plugins/tracepreview.py:78
+msgid "Ending edition"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1022
-msgid "End of the application"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:135
+msgid " Trace : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1023
-msgid "User-defined event"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:139
+msgid " Filters"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1024
-msgid "Modification of the associated media"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:168
+msgid " Time : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1025
-msgid "Highlight a bookmark"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:178
+msgid " Max. : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1026
-msgid "Unhighlight a bookmark"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:187
+msgid "Export"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1027
-msgid "Updating duration of the movie"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:203
+#: ../lib/advene/gui/plugins/tracetimeline.py:665
+msgid "Exporting traces"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1028
-msgid "Displaying a popup"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:208
+#: ../lib/advene/gui/plugins/tracetimeline.py:670
+#, python-format
+msgid ""
+"Export done to\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1029
-msgid "Updating a snapshot"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:254
+msgid "Defining Filters"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1067
-msgid "Player control"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:560
+#: ../lib/advene/gui/plugins/eventaccumulator.py:615
+#: ../lib/advene/gui/plugins/tracepreview.py:215
+#, python-format
+msgid "of an annotation (%s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1068
-msgid "Audio enrichment"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:562
+#: ../lib/advene/gui/plugins/eventaccumulator.py:617
+#: ../lib/advene/gui/plugins/tracepreview.py:217
+#, python-format
+msgid "of a relation (%s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1069
-msgid "Image enrichment"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:564
+#: ../lib/advene/gui/plugins/eventaccumulator.py:619
+#: ../lib/advene/gui/plugins/tracepreview.py:219
+#, python-format
+msgid "of an annotation type (%s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1070
-msgid "External display control"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:566
+#: ../lib/advene/gui/plugins/eventaccumulator.py:621
+#: ../lib/advene/gui/plugins/tracepreview.py:221
+#, python-format
+msgid "of a relation type (%s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1071
-msgid "Popup"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:568
+#: ../lib/advene/gui/plugins/eventaccumulator.py:623
+#: ../lib/advene/gui/plugins/tracepreview.py:223
+#, python-format
+msgid "of a schema (%s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1073
-msgid "State"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:570
+#: ../lib/advene/gui/plugins/eventaccumulator.py:625
+#: ../lib/advene/gui/plugins/tracepreview.py:225
+#, python-format
+msgid "of a view (%s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1074
-msgid "GUI actions"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:572
+#: ../lib/advene/gui/plugins/eventaccumulator.py:627
+#: ../lib/advene/gui/plugins/tracepreview.py:227
+#, python-format
+msgid "of a package (%s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1075
-msgid "Expert"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:574
+#: ../lib/advene/gui/plugins/eventaccumulator.py:629
+#: ../lib/advene/gui/plugins/tracepreview.py:229
+#, python-format
+msgid "of an unknown item (%s)"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:82
-msgid "Initial Advene configuration"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:380
+#, python-format
+msgid "Rendering type %(type)s as %(presentation)s"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:83
-msgid ""
-"<span size='large'><b>Welcome in Advene</b>\n"
-"This is the first time that you run Advene. Please answer some basic "
-"configuration questions. You will be able to modify these choices from the "
-"Advene interface, in the Edit/Preferences menu.</span>"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
+msgid "Snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:84
-msgid "Interface language"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
+msgid "Overlayed snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:84
-msgid "Language used for the interface"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
+msgid "Timestamp only"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:88 ../lib/advene/gui/main.py:4247
-msgid "System default"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:528
+msgid "Snapshot+timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:90
-msgid "Weekly check for Advene updates on the Advene website"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:529
+msgid "Annotation content"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:90 ../lib/advene/gui/main.py:4273
-msgid "Weekly check for updates on the Advene website"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:544
+msgid "as a list"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for data files"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:545
+msgid "as a grid"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for storing data files (Advene packages)"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:546
+msgid "as a table"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:94
-msgid "Directories to search for movies"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:547
+#: ../lib/advene/gui/views/viewbook.py:379
+msgid "as a transcription"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:94
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/views/transcription.py:461
 #, python-format
-msgid ""
-"List of directories (separated by %(pathsep)s) to search for movie files."
-msgstr ""
-
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid "First look for movie file in the same directory as the package"
+msgid "Annotation %s"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid ""
-"If checked, the movie file will be searched for in the same directory as the "
-"referencing package."
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:685
+msgid "Play video"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:39
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
-#: ../lib/advene/gui/edit/create.py:106
-msgid "Plain text content"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
+msgid "Show timestamp only"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:40
-msgid "HTML content"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
+msgid "Show content only"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:41
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
-#: ../lib/advene/gui/edit/create.py:107
-msgid "Simple-structured content"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:669
+msgid "Show snapshot only"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:42
-msgid "List of numeric values"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
+msgid "Show overlayed timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:43
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
-#: ../lib/advene/gui/edit/create.py:108
-msgid "SVG graphics content"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+msgid "Show overlayed content"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:459
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
 #, python-format
-msgid ""
-"Annotation Type %(title)s:\n"
-"%(count)s"
+msgid "Annotation type %s"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:465
-#, python-format
-msgid ""
-"Relation Type %(title)s:\n"
-"%(count)s"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:675
+msgid "display as list"
 msgstr ""
 
-#: ../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
-#: ../lib/advene/gui/views/table.py:557 ../lib/advene/gui/main.py:4176
-msgid "Title"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:676
+msgid "display as grid"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/rules.py:1092
-#: ../lib/advene/gui/edit/imports.py:325
-#: ../lib/advene/gui/edit/elements.py:507
-#: ../lib/advene/gui/edit/elements.py:556
-#: ../lib/advene/gui/edit/elements.py:644
-#: ../lib/advene/gui/edit/elements.py:724
-#: ../lib/advene/gui/edit/elements.py:873
-#: ../lib/advene/gui/edit/elements.py:942
-#: ../lib/advene/gui/edit/elements.py:1054
-#: ../lib/advene/gui/edit/elements.py:1115
-#: ../lib/advene/gui/views/table.py:255 ../lib/advene/gui/views/table.py:559
-msgid "Id"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:677
+msgid "display as table"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:404 ../lib/advene/gui/util/dialog.py:443
-msgid "Name the element"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:678
+msgid "display as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:407 ../lib/advene/gui/util/dialog.py:444
-msgid "Choose a name for the element"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:687
+msgid "Open link"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:482
-msgid "Open a file"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:743
+#, python-format
+msgid "HTML editor: cannot parse content (%s)"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:507 ../lib/advene/gui/util/dialog.py:543
-msgid "N/C"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#, python-format
+msgid "Heading %d"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:512
-msgid "Alias"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
+msgid "Bold"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:532
-msgid ""
-"Press to\n"
-"display\n"
-"information"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:786
+msgid "Italic"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:551
-msgid "Wait..."
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
+msgid "Header"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:555
-#, python-format
-msgid "Error: %s"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+msgid "Copy"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:575
-msgid "Any type of file"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:790
+msgid "Cut"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:577
-msgid "Advene files (.xml, .azp, .apl)"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
+msgid "Paste"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:579
-msgid "Advene session (.apl)"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:793
+#: ../lib/advene/gui/views/timeline.py:139
+msgid "Refresh"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:580
-msgid "Audio files"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:849
+msgid "WYSIWYG editor"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:581
-msgid "Video files"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:859
+msgid "Edit HTML source"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:626
-#: ../lib/advene/gui/edit/properties.py:418
-msgid "Choose a directory"
+#: ../lib/advene/gui/plugins/tracetimeline.py:71
+#: ../lib/advene/gui/plugins/tracepreview.py:79
+msgid "Moving to"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:679
-msgid "Select an element"
+#: ../lib/advene/gui/plugins/tracetimeline.py:87
+msgid "Traces"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:32
-msgid "Shot validation view"
+#: ../lib/advene/gui/plugins/tracetimeline.py:213
+#, python-format
+msgid "%(name)s (%(index)d)"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:34
-msgid "Display shot validation interface"
+#: ../lib/advene/gui/plugins/tracetimeline.py:241
+msgid "Search"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:111
+#: ../lib/advene/gui/plugins/tracetimeline.py:254
+#: ../lib/advene/gui/plugins/tracetimeline.py:1219
 #, python-format
-msgid "Merged #%(first)d-#%(second)d into #%(first)d"
+msgid "%(name)s (%(index)s)"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:136
-msgid "Last action undone"
+#: ../lib/advene/gui/plugins/tracetimeline.py:426
+#: ../lib/advene/gui/views/timeline.py:3457
+#: ../lib/advene/gui/edit/montage.py:446
+msgid "Zoom out"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:154
-#, python-format
-msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
+#: ../lib/advene/gui/plugins/tracetimeline.py:431
+#: ../lib/advene/gui/views/timeline.py:3462
+#: ../lib/advene/gui/edit/montage.py:451
+msgid "Zoom in"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:159
-#, python-format
-msgid "Cannot split annotation #%(current)d: out of bounds."
+#: ../lib/advene/gui/plugins/tracetimeline.py:436
+msgid "Zoom 100%"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
-#, python-format
-msgid "Changed cut between #%(first)d and %(second)d"
+#: ../lib/advene/gui/plugins/tracetimeline.py:440
+msgid "Toggle links lock"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:182
-msgid "Changed begin time for first annotation"
+#: ../lib/advene/gui/plugins/tracetimeline.py:448
+msgid "Toggle link mode"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:188
-msgid "No annotations to adjust"
+#: ../lib/advene/gui/plugins/tracetimeline.py:455
+msgid "Open a trace file"
 msgstr ""
 
-#: ../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."
+#: ../lib/advene/gui/plugins/tracetimeline.py:470
+msgid "Toggle auto refresh"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:203
-#, python-format
-msgid "Begin of #%(index)d (title: %(content)s)"
+#: ../lib/advene/gui/plugins/tracetimeline.py:481
+msgid "Open an existing trace"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:217
-msgid "< Previous cut"
+#: ../lib/advene/gui/plugins/tracetimeline.py:487
+msgid "Save trace"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:218
-msgid "Display previous cut"
+#: ../lib/advene/gui/plugins/tracetimeline.py:492
+msgid "Configuration"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:225
-msgid "Next cut >"
+#: ../lib/advene/gui/plugins/tracetimeline.py:946
+msgid "Zoom and center on linked items"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:226
-msgid "Display next cut"
+#: ../lib/advene/gui/plugins/tracetimeline.py:955
+msgid "Edit item"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:251
-#: ../lib/advene/gui/views/timeline.py:81
-#: ../lib/advene/gui/views/annotationdisplay.py:90
-msgid "Current time"
+#: ../lib/advene/gui/plugins/tracetimeline.py:959
+msgid "Recreate item"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:252
-msgid "Go to annotation containing current player time."
+#: ../lib/advene/gui/plugins/tracetimeline.py:975
+#: ../lib/advene/gui/plugins/tracetimeline.py:996
+#: ../lib/advene/gui/views/timeline.py:2584 ../lib/advene/gui/popup.py:513
+#: ../lib/advene/gui/edit/transcribe.py:500
+msgid "Go to..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:256
-#: ../lib/advene/gui/edit/frameselector.py:193
-msgid "Refresh snapshots"
+#: ../lib/advene/gui/plugins/tracetimeline.py:979
+msgid "Zoom on action"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:257
-#: ../lib/advene/gui/edit/frameselector.py:194
-msgid "Refresh missing snapshots"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2023
+#: ../lib/advene/gui/views/timeline.py:3331
+#: ../lib/advene/gui/edit/montage.py:541
+msgid "Inspector"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:261
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:806
-#: ../lib/advene/gui/edit/transcribe.py:1211 ../lib/advene/gui/main.py:350
-msgid "Undo"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2028
+msgid "Item Id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:262
-msgid "Undo last modification"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:268
-msgid "Merge with previous"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:269
-msgid "Merge with previous annotation, i.e. remove this bound."
-msgstr ""
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:274
-msgid "Close view."
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:60
-#: ../lib/advene/gui/plugins/tracetimeline.py:61
-#: ../lib/advene/gui/plugins/eventaccumulator.py:73
-#: ../lib/advene/gui/plugins/eventaccumulator.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:72
-#: ../lib/advene/gui/plugins/tracepreview.py:73
-msgid "Beginning edition"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:62
-#: ../lib/advene/gui/plugins/tracetimeline.py:63
-#: ../lib/advene/gui/plugins/tracetimeline.py:64
-#: ../lib/advene/gui/plugins/eventaccumulator.py:75
-#: ../lib/advene/gui/plugins/eventaccumulator.py:76
-#: ../lib/advene/gui/plugins/eventaccumulator.py:77
-#: ../lib/advene/gui/plugins/tracepreview.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:75
-#: ../lib/advene/gui/plugins/tracepreview.py:76
-msgid "Canceling edition"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:65
-#: ../lib/advene/gui/plugins/eventaccumulator.py:78
-#: ../lib/advene/gui/plugins/tracepreview.py:77
-msgid "Ending edition"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:66
-#: ../lib/advene/gui/plugins/tracepreview.py:78
-msgid "Moving to"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:82
-msgid "Traces"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:208
-#, python-format
-msgid "%(name)s (%(index)d)"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:236
-msgid "Search"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1224
-#, python-format
-msgid "%(name)s (%(index)s)"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:421
-#: ../lib/advene/gui/edit/montage.py:439
-#: ../lib/advene/gui/views/timeline.py:3444
-msgid "Zoom out"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:426
-#: ../lib/advene/gui/edit/montage.py:444
-#: ../lib/advene/gui/views/timeline.py:3449
-msgid "Zoom in"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:431
-msgid "Zoom 100%"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:435
-msgid "Toggle links lock"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:443
-msgid "Toggle link mode"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:450
-msgid "Open a trace file"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:465
-msgid "Toggle auto refresh"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:476
-msgid "Open an existing trace"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:482
-msgid "Save trace"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:487
-msgid "Configuration"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:668
-#: ../lib/advene/gui/plugins/eventaccumulator.py:202
-msgid "Exporting traces"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:673
-#: ../lib/advene/gui/plugins/eventaccumulator.py:207
-#, python-format
-msgid ""
-"Export done to\n"
-"%s"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:951
-msgid "Zoom and center on linked items"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:960
-msgid "Edit item"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:964
-msgid "Recreate item"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:980
-#: ../lib/advene/gui/plugins/tracetimeline.py:1001
-#: ../lib/advene/gui/edit/transcribe.py:502
-#: ../lib/advene/gui/views/timeline.py:2556 ../lib/advene/gui/popup.py:513
-msgid "Go to..."
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:984
-msgid "Zoom on action"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
-#: ../lib/advene/gui/edit/montage.py:535
-#: ../lib/advene/gui/views/timeline.py:3318
-msgid "Inspector"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2031
+msgid "Item name or class"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/tracetimeline.py:2035
-msgid "Item Id"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2038
-msgid "Item name or class"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2042
 msgid "Type or schema"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2045
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
 msgid "Operations"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2087
+#: ../lib/advene/gui/plugins/tracetimeline.py:2081
 msgid "Comment"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2119
+#: ../lib/advene/gui/plugins/tracetimeline.py:2113
 #: ../lib/advene/gui/edit/merge.py:191
 msgid "Action"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/kinect.py:41
-msgid "Kinect Controller"
+#: ../lib/advene/gui/plugins/logmessages.py:35
+msgid "Log Messages"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/kinect.py:43
-msgid "Kinect control interface"
+#: ../lib/advene/gui/plugins/actions.py:40 ../lib/advene/core/controller.py:277
+#: ../lib/advene/rules/actions.py:36
+msgid "Display a message"
+msgstr ""
+
+#: ../lib/advene/gui/plugins/actions.py:41
+#: ../lib/advene/gui/plugins/actions.py:53
+#: ../lib/advene/gui/plugins/actions.py:71
+#: ../lib/advene/gui/plugins/actions.py:86
+#: ../lib/advene/gui/plugins/actions.py:102
+#: ../lib/advene/gui/plugins/actions.py:203
+#: ../lib/advene/core/controller.py:278
+msgid "String to display."
+msgstr ""
+
+#: ../lib/advene/gui/plugins/actions.py:44
+#: ../lib/advene/gui/plugins/actions.py:58
+#: ../lib/advene/gui/plugins/actions.py:110
+#: ../lib/advene/gui/plugins/actions.py:399
+#: ../lib/advene/gui/plugins/actions.py:527 ../lib/advene/gui/edit/rules.py:770
+#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
+#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
+#: ../lib/advene/rules/actions.py:123
+msgid "The annotation content"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/actions.py:52
@@ -3075,6 +2725,22 @@ msgstr ""
 msgid "Display duration in ms. Ignored if empty."
 msgstr ""
 
+#: ../lib/advene/gui/plugins/actions.py:61
+#: ../lib/advene/gui/plugins/actions.py:121
+#: ../lib/advene/gui/plugins/actions.py:403
+#: ../lib/advene/gui/plugins/actions.py:538 ../lib/advene/rules/actions.py:110
+#: ../lib/advene/rules/actions.py:172
+msgid "1 second"
+msgstr ""
+
+#: ../lib/advene/gui/plugins/actions.py:62
+#: ../lib/advene/gui/plugins/actions.py:122
+#: ../lib/advene/gui/plugins/actions.py:404
+#: ../lib/advene/gui/plugins/actions.py:539 ../lib/advene/gui/edit/rules.py:777
+#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
+msgid "The annotation duration"
+msgstr ""
+
 #: ../lib/advene/gui/plugins/actions.py:70
 msgid "Popup an entry box"
 msgstr ""
@@ -3107,6 +2773,11 @@ msgstr ""
 msgid "Display a popup linking to an URL"
 msgstr ""
 
+#: ../lib/advene/gui/plugins/actions.py:103
+#: ../lib/advene/gui/views/logwindow.py:159 ../lib/advene/rules/actions.py:226
+msgid "URL"
+msgstr ""
+
 #: ../lib/advene/gui/plugins/actions.py:106
 msgid "string:Display annotation in web browser"
 msgstr ""
@@ -3146,7 +2817,7 @@ msgid "Destination: popup, south, east"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/actions.py:144
-#: ../lib/advene/gui/views/viewbook.py:308
+#: ../lib/advene/gui/views/viewbook.py:307
 msgid "Open a saved view"
 msgstr ""
 
@@ -3225,38 +2896,38 @@ msgstr ""
 msgid "Bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:276
-#, python-format
-msgid "Error: undefined GUI view %s"
+#: ../lib/advene/gui/plugins/actions.py:234 ../lib/advene/plugins/brltty.py:240
+#: ../lib/advene/plugins/tts.py:110
+msgid "Unknown rule"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:286
-#: ../lib/advene/gui/views/viewbook.py:124 ../lib/advene/gui/main.py:1189
-msgid "...in its own window"
+#: ../lib/advene/gui/plugins/actions.py:235 ../lib/advene/plugins/brltty.py:241
+#: ../lib/advene/plugins/tts.py:111
+#, python-format
+msgid ""
+"Rule %(rulename)s: Error in the evaluation of the parameter "
+"%(parametername)s:"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:287
-#: ../lib/advene/gui/views/viewbook.py:125
-#: ../lib/advene/gui/views/__init__.py:381 ../lib/advene/gui/main.py:1190
-msgid "...embedded east of the video"
+#: ../lib/advene/gui/plugins/actions.py:247 ../lib/advene/rules/actions.py:389
+#, python-format
+msgid "The %s-related outgoing annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:288
-#: ../lib/advene/gui/views/viewbook.py:126
-#: ../lib/advene/gui/views/__init__.py:382 ../lib/advene/gui/main.py:1191
-msgid "...embedded west of the video"
+#: ../lib/advene/gui/plugins/actions.py:249 ../lib/advene/rules/actions.py:391
+#, python-format
+msgid "The %s-related incoming annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:289
-#: ../lib/advene/gui/views/viewbook.py:127
-#: ../lib/advene/gui/views/__init__.py:383 ../lib/advene/gui/main.py:1192
-msgid "...embedded south of the video"
+#: ../lib/advene/gui/plugins/actions.py:259
+#: ../lib/advene/gui/plugins/actions.py:340
+#: ../lib/advene/gui/plugins/actions.py:358 ../lib/advene/plugins/tts.py:131
+msgid "No message..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:290
-#: ../lib/advene/gui/views/viewbook.py:128
-#: ../lib/advene/gui/views/__init__.py:384 ../lib/advene/gui/main.py:1193
-msgid "...embedded at the right of the window"
+#: ../lib/advene/gui/plugins/actions.py:276
+#, python-format
+msgid "Error: undefined GUI view %s"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/actions.py:322
@@ -3345,5597 +3016,5812 @@ msgstr ""
 msgid "New bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:43
-msgid "Activity trace"
+#: ../lib/advene/gui/plugins/kinect.py:41
+msgid "Kinect Controller"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:134
-msgid " Trace : "
+#: ../lib/advene/gui/plugins/kinect.py:43
+msgid "Kinect control interface"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:138
-msgid " Filters"
+#: ../lib/advene/gui/plugins/contenthandlers.py:123
+msgid "Label"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4178
-msgid "Reset"
+#: ../lib/advene/gui/plugins/contenthandlers.py:173
+#, python-format
+msgid ""
+"Error while parsing SVG content:\n"
+"\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:167
-msgid " Time : "
+#: ../lib/advene/gui/plugins/contenthandlers.py:248
+msgid " created from "
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:177
-msgid " Max. : "
+#: ../lib/advene/gui/plugins/contenthandlers.py:314
+msgid "Graphical editor"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:186
-msgid "Export"
+#: ../lib/advene/gui/plugins/contenthandlers.py:325
+msgid "Edit XML"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:253
-msgid "Defining Filters"
+#: ../lib/advene/gui/plugins/contenthandlers.py:377
+#: ../lib/advene/gui/plugins/contenthandlers.py:433
+#: ../lib/advene/gui/edit/rules.py:190
+#, python-format
+msgid ""
+"The following items seem to be\n"
+"invalid TALES expressions:\n"
+"\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:559
-#: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:214
-#, python-format
-msgid "of an annotation (%s)"
+#: ../lib/advene/gui/plugins/tracepreview.py:62
+msgid "Trace preview"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:561
-#: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:216
-#, python-format
-msgid "of a relation (%s)"
+#: ../lib/advene/gui/plugins/tracepreview.py:100
+msgid "Full trace"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:563
-#: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:218
-#, python-format
-msgid "of an annotation type (%s)"
+#: ../lib/advene/gui/plugins/tracepreview.py:101
+msgid "Open the trace timeline view fareast"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:565
-#: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:220
-#, python-format
-msgid "of a relation type (%s)"
+#: ../lib/advene/gui/plugins/videoplayer.py:39
+msgid "Complementary video player"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:567
-#: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:222
-#, python-format
-msgid "of a schema (%s)"
+#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/views/bookmarks.py:249
+#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/timeline.py:140 ../lib/advene/gui/edit/montage.py:58
+#: ../lib/advene/gui/edit/transcribe.py:86
+msgid "Save view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:569
-#: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:224
-#, python-format
-msgid "of a view (%s)"
+#: ../lib/advene/gui/plugins/videoplayer.py:46
+#: ../lib/advene/gui/views/transcription.py:58
+#: ../lib/advene/gui/views/timeline.py:141 ../lib/advene/gui/views/tagbag.py:65
+#: ../lib/advene/gui/views/interactivequery.py:60
+#: ../lib/advene/gui/edit/transcribe.py:87
+msgid "Save default options"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:571
-#: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:226
-#, python-format
-msgid "of a package (%s)"
+#: ../lib/advene/gui/plugins/videoplayer.py:47
+msgid "Select video file"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:573
-#: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:228
-#, python-format
-msgid "of an unknown item (%s)"
+#: ../lib/advene/gui/plugins/videoplayer.py:128
+msgid "Select a video file"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:122
-msgid "Label"
+#: ../lib/advene/gui/plugins/videoplayer.py:251
+msgid "Synchronize"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:172
-#, python-format
-msgid ""
-"Error while parsing SVG content:\n"
-"\n"
-"%s"
+#: ../lib/advene/gui/plugins/videoplayer.py:269
+msgid "Offset in ms"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:247
-msgid " created from "
+#: ../lib/advene/gui/plugins/videoplayer.py:277
+msgid "Drag and drop to get player time"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:315
-msgid "Graphical editor"
+#: ../lib/advene/gui/views/singletonpopup.py:32
+msgid "SingletonPopup"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:326
-msgid "Edit XML"
+#: ../lib/advene/gui/views/caption.py:31
+msgid "Display a text caption below the video output"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:378
-#: ../lib/advene/gui/plugins/contenthandlers.py:434
-#: ../lib/advene/gui/edit/rules.py:186
+#: ../lib/advene/gui/views/html.py:88
 #, python-format
-msgid ""
-"The following items seem to be\n"
-"invalid TALES expressions:\n"
-"\n"
-"%s"
+msgid "%s%% loaded"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
-msgid "Video player"
+#: ../lib/advene/gui/views/html.py:91
+#, python-format
+msgid "Title %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:38
-msgid "Complementary video player"
+#: ../lib/advene/gui/views/html.py:155
+msgid "HTML Viewer"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:44
-#: ../lib/advene/gui/edit/montage.py:54
-#: ../lib/advene/gui/edit/transcribe.py:85
-#: ../lib/advene/gui/views/transcription.py:56
-#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:135
-msgid "Save view"
+#: ../lib/advene/gui/views/html.py:157
+msgid "Embedded HTML widget"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
-#: ../lib/advene/gui/edit/transcribe.py:86
-#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/transcription.py:57
-#: ../lib/advene/gui/views/interactivequery.py:60
-#: ../lib/advene/gui/views/timeline.py:136
-msgid "Save default options"
+#: ../lib/advene/gui/views/html.py:185
+msgid "No available HTML rendering component"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:46
-msgid "Select video file"
+#: ../lib/advene/gui/views/annotationdisplay.py:43
+msgid "AnnotationDisplay"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:127
-msgid "Select a video file"
+#: ../lib/advene/gui/views/annotationdisplay.py:45
+msgid "Display the contents of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:250
-msgid "Synchronize"
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/util/helper.py:606
+msgid "No annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:266
-msgid "Offset in ms"
+#: ../lib/advene/gui/views/annotationdisplay.py:112
+#, python-format
+msgid ""
+"Schema %(schema)s (id %(id)s)\n"
+"%(description)s\n"
+"%(stats)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:274
-msgid "Drag and drop to get player time"
+#: ../lib/advene/gui/views/annotationdisplay.py:233
+msgid "Screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracepreview.py:61
-msgid "Trace preview"
+#: ../lib/advene/gui/views/annotationdisplay.py:255
+#: ../lib/advene/gui/views/relationdisplay.py:104
+msgid "Contents"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracepreview.py:99
-msgid "Full trace"
+#: ../lib/advene/gui/views/annotationdisplay.py:258
+#: ../lib/advene/gui/views/editaccumulator.py:73
+msgid "Validate"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracepreview.py:100
-msgid "Open the trace timeline view fareast"
+#: ../lib/advene/gui/views/relationdisplay.py:34
+msgid "RelationDisplay"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:376
-#, python-format
-msgid "Rendering type %(type)s as %(presentation)s"
+#: ../lib/advene/gui/views/relationdisplay.py:36
+msgid "Display the contents of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:521
-msgid "Snapshot only"
+#: ../lib/advene/gui/views/relationdisplay.py:79
+msgid "No relation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:522
-msgid "Overlayed snapshot only"
+#: ../lib/advene/gui/views/relationdisplay.py:113
+#: ../lib/advene/gui/edit/elements.py:586
+#: ../lib/advene/gui/edit/elements.py:1069
+msgid "Members"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:523
-msgid "Timestamp only"
+#: ../lib/advene/gui/views/viewplugin.py:60
+msgid "Generic view plugin"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:524
-msgid "Snapshot+timestamp"
+#: ../lib/advene/gui/views/viewplugin.py:62
+msgid "You should not ever see this tooltip..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
-msgid "Annotation content"
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:540
-msgid "as a list"
+#: ../lib/advene/gui/views/checker.py:39
+msgid "Check various package properties"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:541
-msgid "as a grid"
+#: ../lib/advene/gui/views/checker.py:90
+msgid "List of possible issues in the current package"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:542
-msgid "as a table"
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:543
-#: ../lib/advene/gui/views/viewbook.py:380
-msgid "as a transcription"
+#: ../lib/advene/gui/views/table.py:60
+msgid "Annotation table view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:661
-#: ../lib/advene/gui/views/transcription.py:461
-#, python-format
-msgid "Annotation %s"
+#: ../lib/advene/gui/views/table.py:62
+msgid "Display annotations in a table"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:681
-msgid "Play video"
+#: ../lib/advene/gui/views/table.py:73
+msgid "Export as CSV"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
-msgid "Show timestamp only"
+#: ../lib/advene/gui/views/table.py:90 ../lib/advene/gui/views/table.py:578
+#: ../lib/advene/gui/views/transcription.py:147
+#, python-format
+msgid "Error in source evaluation %(source)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
-msgid "Show content only"
+#: ../lib/advene/gui/views/table.py:267 ../lib/advene/gui/views/table.py:544
+msgid "Snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
-msgid "Show snapshot only"
+#: ../lib/advene/gui/views/table.py:280
+#: ../lib/advene/gui/views/timeline.py:1667
+msgid "Cannot update the annotation, its representation is too complex"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
-msgid "Show overlayed timestamp"
+#: ../lib/advene/gui/views/table.py:305 ../lib/advene/gui/edit/elements.py:604
+#: ../lib/advene/gui/edit/elements.py:681
+#: ../lib/advene/gui/edit/elements.py:741
+#: ../lib/advene/gui/edit/elements.py:1132
+msgid "Content"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
-msgid "Show overlayed content"
+#: ../lib/advene/gui/views/table.py:306 ../lib/advene/gui/views/table.py:675
+#: ../lib/advene/gui/views/browser.py:363 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/edit/elements.py:512
+#: ../lib/advene/gui/edit/elements.py:561
+#: ../lib/advene/gui/edit/elements.py:663
+msgid "Type"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:670
-#, python-format
-msgid "Annotation type %s"
+#: ../lib/advene/gui/views/table.py:307 ../lib/advene/gui/edit/elements.py:1807
+msgid "Begin"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
-msgid "display as list"
+#: ../lib/advene/gui/views/table.py:310 ../lib/advene/gui/views/table.py:676
+#: ../lib/advene/gui/util/dialog.py:395 ../lib/advene/gui/edit/rules.py:1096
+#: ../lib/advene/gui/edit/imports.py:325 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/edit/elements.py:560
+#: ../lib/advene/gui/edit/elements.py:648
+#: ../lib/advene/gui/edit/elements.py:728
+#: ../lib/advene/gui/edit/elements.py:877
+#: ../lib/advene/gui/edit/elements.py:946
+#: ../lib/advene/gui/edit/elements.py:1058
+#: ../lib/advene/gui/edit/elements.py:1119
+msgid "Id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
-msgid "display as grid"
+#: ../lib/advene/gui/views/table.py:449 ../lib/advene/gui/views/table.py:628
+msgid "Export data to file..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:673
-msgid "display as table"
+#: ../lib/advene/gui/views/table.py:458 ../lib/advene/gui/views/table.py:637
+#, python-format
+msgid "Error while exporting data to %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
-msgid "display as transcription"
+#: ../lib/advene/gui/views/table.py:469
+msgid "id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:683
-msgid "Open link"
+#: ../lib/advene/gui/views/table.py:469
+msgid "type"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:739
-#, python-format
-msgid "HTML editor: cannot parse content (%s)"
+#: ../lib/advene/gui/views/table.py:469
+msgid "begin"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
-#, python-format
-msgid "Heading %d"
+#: ../lib/advene/gui/views/table.py:469
+msgid "end"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:783
-msgid "Bold"
+#: ../lib/advene/gui/views/table.py:469
+msgid "content"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:784
-msgid "Italic"
+#: ../lib/advene/gui/views/table.py:473 ../lib/advene/gui/views/table.py:653
+#: ../lib/advene/core/controller.py:2555
+#, python-format
+msgid "Data exported to %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
-msgid "Header"
+#: ../lib/advene/gui/views/table.py:493
+#, python-format
+msgid "Set %(attr)s time to %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
-msgid "Copy"
+#: ../lib/advene/gui/views/table.py:552
+msgid "Generic table view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:788
-msgid "Cut"
+#: ../lib/advene/gui/views/table.py:554
+msgid "Display Advene elements in a table."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
-msgid "Paste"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element title"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
-#: ../lib/advene/gui/edit/schemaeditor.py:64
-#: ../lib/advene/gui/views/timeline.py:134 ../lib/advene/gui/views/tree.py:428
-msgid "Refresh"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element type"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:847
-msgid "WYSIWYG editor"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:857
-msgid "Edit HTML source"
+#: ../lib/advene/gui/views/accumulatorpopup.py:49
+msgid "PopupAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/logmessages.py:35
-msgid "Log Messages"
+#: ../lib/advene/gui/views/bookmarks.py:51
+msgid "Bookmarks importer"
 msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:73
-#: ../lib/advene/gui/edit/importer.py:143
-msgid "Stop"
+#: ../lib/advene/gui/views/bookmarks.py:72
+msgid "Bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:82
-#: ../lib/advene/gui/edit/dvdselect.py:112
-msgid "Preview"
+#: ../lib/advene/gui/views/bookmarks.py:74
+msgid "Bookmark timecodes with their corresponding screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:91
-msgid ""
-"Select the correct\n"
-"title and chapter\n"
-"of the DVD"
+#: ../lib/advene/gui/views/bookmarks.py:80 ../lib/advene/gui/views/tagbag.py:63
+#: ../lib/advene/gui/views/activebookmarks.py:62
+#: ../lib/advene/gui/views/logwindow.py:50 ../lib/advene/gui/edit/montage.py:59
+msgid "Clear"
 msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:104
-msgid "Chapter"
+#: ../lib/advene/gui/views/bookmarks.py:145
+msgid "Select the annotation type to generate"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:33
-msgid "Create element"
+#: ../lib/advene/gui/views/bookmarks.py:150
+msgid "Choose a duration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:34
-msgid "Create annotation (duplicate id)"
+#: ../lib/advene/gui/views/bookmarks.py:151
+msgid "Enter the standard duration (in ms) of created annotations."
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:35
-msgid "Create relation (duplicate id)"
+#: ../lib/advene/gui/views/bookmarks.py:168
+msgid "Converted from bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:36
-msgid "Update the color"
+#: ../lib/advene/gui/views/bookmarks.py:172
+#: ../lib/advene/gui/edit/transcribe.py:1139
+#, python-format
+msgid ""
+"Conversion completed.\n"
+"%s annotations generated."
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:37
-msgid "Update the representation"
+#: ../lib/advene/gui/views/bookmarks.py:226
+msgid "Drop a position here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:38
-msgid "Update the description"
+#: ../lib/advene/gui/views/bookmarks.py:247
+#: ../lib/advene/gui/views/activebookmarks.py:522
+msgid "Insert a bookmark for the current video time"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:39
-msgid "Update the title"
+#: ../lib/advene/gui/views/bookmarks.py:248
+msgid "Convert bookmarks to annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:40
-msgid "Update the mimetype"
+#: ../lib/advene/gui/views/viewbook.py:37
+msgid "ViewBook"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:41
-msgid "Update the begin time"
+#: ../lib/advene/gui/views/viewbook.py:58
+#: ../lib/advene/gui/views/viewbook.py:65
+msgid "Cannot remove this widget, it is essential."
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:42
-msgid "Update the end time"
+#: ../lib/advene/gui/views/viewbook.py:135
+msgid "Detach"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:43
-msgid "Update the content"
+#: ../lib/advene/gui/views/viewbook.py:139
+#: ../lib/advene/gui/views/editaccumulator.py:79
+msgid "Close"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:44
-msgid "Update the matchFilter"
+#: ../lib/advene/gui/views/viewbook.py:156
+msgid "Rename the view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:45
-msgid "Update the member types"
+#: ../lib/advene/gui/views/viewbook.py:157
+msgid "Please enter the new name of the view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:46
-msgid "Update tags"
+#: ../lib/advene/gui/views/viewbook.py:196
+msgid "Detach view in its own window, or drag-and-drop to another zone"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:90
-msgid "Difference between original and merged elements"
+#: ../lib/advene/gui/views/viewbook.py:210
+msgid "Close view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:136
-msgid "Current element"
+#: ../lib/advene/gui/views/viewbook.py:233
+#: ../lib/advene/gui/views/viewbook.py:239
+#: ../lib/advene/gui/edit/elements.py:335
+#, python-format
+msgid "Edit %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:141
-msgid "Updated element"
+#: ../lib/advene/gui/views/viewbook.py:262 ../lib/advene/rules/actions.py:615
+#, python-format
+msgid "Cannot find the view %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:147
-msgid "Show diff"
+#: ../lib/advene/gui/views/viewbook.py:285
+#, python-format
+msgid "Open a new %s for..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:180
-msgid "Merge?"
+#: ../lib/advene/gui/views/viewbook.py:297
+msgid "Create a new comment view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:197
-msgid "Element"
+#: ../lib/advene/gui/views/viewbook.py:299
+msgid "Open a new view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
+#: ../lib/advene/gui/views/viewbook.py:373
 #, python-format
-msgid "Package %s"
+msgid "Use annotation-type %s :"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
-msgid "No title"
+#: ../lib/advene/gui/views/viewbook.py:377
+#: ../lib/advene/gui/views/viewbook.py:403
+msgid "to edit it"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:267
-msgid "All"
+#: ../lib/advene/gui/views/viewbook.py:378
+#: ../lib/advene/gui/views/viewbook.py:404
+#: ../lib/advene/gui/views/viewbook.py:436
+msgid "to create a new static view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1588
-msgid "Properties"
+#: ../lib/advene/gui/views/viewbook.py:380
+msgid "in a timeline"
 msgstr ""
 
-#: ../lib/advene/gui/edit/properties.py:46
-#: ../lib/advene/gui/edit/transcribe.py:147
-#: ../lib/advene/gui/edit/transcribe.py:1195
-#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3483
-#: ../lib/advene/gui/views/timeline.py:3624 ../lib/advene/gui/main.py:4235
-msgid "Preferences"
+#: ../lib/advene/gui/views/viewbook.py:381
+msgid "as a montage"
 msgstr ""
 
-#: ../lib/advene/gui/edit/properties.py:371
-msgid "Choose a file"
+#: ../lib/advene/gui/views/viewbook.py:382
+#: ../lib/advene/gui/views/viewbook.py:435
+msgid "in a table"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:45
-msgid "Importer"
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
+msgid "in a query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:101
-#: ../lib/advene/gui/edit/importer.py:111
-msgid "Advene package importer"
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
+#, python-format
+msgid "Query %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:115
-msgid "Not likely"
+#: ../lib/advene/gui/views/viewbook.py:384
+#: ../lib/advene/gui/views/viewbook.py:406
+msgid "in the TALES browser"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:137
+#: ../lib/advene/gui/views/viewbook.py:384
 #, python-format
-msgid "Completed conversion: %(statistics)s"
+msgid "Browsing %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Choose the file to import"
+#: ../lib/advene/gui/views/viewbook.py:400
+#, python-format
+msgid "Use annotation %s :"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:272
-msgid "Filter"
+#: ../lib/advene/gui/views/viewbook.py:406
+#, python-format
+msgid "Browse %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:276
-msgid "Options"
+#: ../lib/advene/gui/views/viewbook.py:407
+msgid "to display its contents"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:287
-msgid "Start"
+#: ../lib/advene/gui/views/viewbook.py:407
+#, python-format
+msgid "%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:57
-msgid "Schema Editor"
+#: ../lib/advene/gui/views/viewbook.py:408
+msgid "as a bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:132
-msgid "Display"
+#: ../lib/advene/gui/views/viewbook.py:426
+msgid "as the context for the query..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:155
-#: ../lib/advene/gui/edit/shapewidget.py:1587 ../lib/advene/gui/popup.py:472
-#: ../lib/advene/gui/popup.py:476
-msgid "Delete"
+#: ../lib/advene/gui/views/viewbook.py:430
+msgid "Set of annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:762
-msgid "Remove relation type"
+#: ../lib/advene/gui/views/viewbook.py:431
+msgid "Use annotations:"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:765
-#: ../lib/advene/gui/edit/schemaeditor.py:997
-msgid "Create HTML view"
+#: ../lib/advene/gui/views/viewbook.py:434
+msgid "to edit them"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:831
-msgid "Remove annotation type"
+#: ../lib/advene/gui/views/viewbook.py:437
+msgid "as bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:834
-msgid "Create relation type between this one and..."
+#: ../lib/advene/gui/views/transcription.py:49
+msgid "Transcription"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:969
-msgid "New schema"
+#: ../lib/advene/gui/views/transcription.py:51
+msgid "Display annotations as a text transcription"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:985 ../lib/advene/gui/popup.py:690
-#: ../lib/advene/gui/popup.py:750 ../lib/advene/gui/popup.py:803
-msgid "Select a color"
+#: ../lib/advene/gui/views/transcription.py:164
+msgid "Transcription options"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:988
-msgid "New annotation type"
+#: ../lib/advene/gui/views/transcription.py:165
+msgid "Default representation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:991
-msgid "New relation type"
+#: ../lib/advene/gui/views/transcription.py:165
+msgid "Use the default representation for annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:994
-msgid "Hide this schema"
+#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/edit/elements.py:986
+msgid "Representation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1000
-msgid "Export drawing to pdf"
+#: ../lib/advene/gui/views/transcription.py:166
+msgid ""
+"If default representation is unchecked,\n"
+"this TALES expression that will be used to format the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1042
-msgid "Choose a filename to export the schema as PDF"
+#: ../lib/advene/gui/views/transcription.py:167
+msgid "Separator"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:84 ../lib/advene/gui/edit/rules.py:86
-#: ../lib/advene/gui/edit/create.py:252
-msgid "Rule"
+#: ../lib/advene/gui/views/transcription.py:168
+msgid "This separator will be inserted between the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:95 ../lib/advene/gui/edit/create.py:242
-msgid "Subviews"
+#: ../lib/advene/gui/views/transcription.py:169
+msgid "Whitespace"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:122
-msgid "Add a new rule"
+#: ../lib/advene/gui/views/transcription.py:170
+msgid "Newline"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:126
-msgid "Subview"
+#: ../lib/advene/gui/views/transcription.py:171
+msgid "Tabulation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:129
-msgid "Add a subview list"
+#: ../lib/advene/gui/views/transcription.py:172
+msgid "Dash"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:135
-msgid "Remove the current rule"
+#: ../lib/advene/gui/views/transcription.py:173
+msgid "User defined"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:275
-msgid "Source expression"
+#: ../lib/advene/gui/views/transcription.py:175
+msgid "User-defined separator"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:277
-msgid "Return expression"
+#: ../lib/advene/gui/views/transcription.py:175
+msgid ""
+"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
+"a tabulation."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:351
-msgid "For all elements in "
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Display timestamps"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:352
-msgid "All annotations of the package"
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Insert timestsamp values"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:353
-msgid "All views of the package"
+#: ../lib/advene/gui/views/transcription.py:177
+msgid "Display annotation bounds"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:354 ../lib/advene/gui/edit/rules.py:798
-msgid "The context annotations"
+#: ../lib/advene/gui/views/transcription.py:237
+#, python-format
+msgid ""
+"Cannot convert the following annotations,\n"
+"the representation pattern is too complex.\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:355 ../lib/advene/gui/edit/rules.py:799
-msgid "The annotations of the context type"
+#: ../lib/advene/gui/views/transcription.py:248
+msgid ""
+"Cannot validate the update.\n"
+"The representation pattern is too complex."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:370
-msgid "Return "
+#: ../lib/advene/gui/views/transcription.py:274
+msgid "Save transcription to a text file"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:372 ../lib/advene/gui/edit/rules.py:787
-msgid "The element"
+#: ../lib/advene/gui/views/transcription.py:275
+msgid "Apply the modifications"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:373 ../lib/advene/gui/edit/rules.py:788
-msgid "The element's content"
+#: ../lib/advene/gui/views/transcription.py:276
+msgid "Find text"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:388
-msgid "If the element matches "
+#: ../lib/advene/gui/views/transcription.py:277
+msgid "Quickly switch display options"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:390
-msgid "Return the element if it matches "
+#: ../lib/advene/gui/views/transcription.py:278
+msgid "Refresh the transcription"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:408 ../lib/advene/gui/edit/rules.py:617
-msgid "All conditions must be met"
+#: ../lib/advene/gui/views/transcription.py:279
+msgid "Edit preferences"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:409 ../lib/advene/gui/edit/rules.py:618
-msgid "Any condition can be met"
+#: ../lib/advene/gui/views/transcription.py:697
+#, python-format
+msgid "Cannot write to %(filename)s: %(error)s:"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:493 ../lib/advene/gui/edit/rules.py:563
+#: ../lib/advene/gui/views/transcription.py:703
+#: ../lib/advene/gui/edit/transcribe.py:882
 #, python-format
-msgid "Rule <b>%s</b>"
+msgid "Transcription saved to %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:574
-msgid "Rule name"
+#: ../lib/advene/gui/views/browser.py:164
+#: ../lib/advene/gui/views/browser.py:166
+msgid "TALES browser"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:591
-msgid "Event"
+#: ../lib/advene/gui/views/browser.py:171
+msgid "Display result in table"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:599
-msgid "If"
+#: ../lib/advene/gui/views/browser.py:194
+msgid "Insert path"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:638
-msgid "Then"
+#: ../lib/advene/gui/views/browser.py:195
+msgid "Insert value"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:683
-msgid "When the "
+#: ../lib/advene/gui/views/browser.py:250
+msgid "Expression returned None (there was an exception)"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:696
-msgid " occurs,"
+#: ../lib/advene/gui/views/browser.py:303
+msgid "Result is not a list"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:723 ../lib/advene/gui/edit/rules.py:726
-#, python-format
-msgid "Condition expression: %s"
+#: ../lib/advene/gui/views/browser.py:360
+#: ../lib/advene/gui/edit/shapewidget.py:942
+msgid "Path"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:765
-msgid "The annotation type"
+#: ../lib/advene/gui/views/browser.py:367
+#: ../lib/advene/gui/edit/elements.py:2173
+msgid "Value"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:768
-#, python-format
-msgid "The value of the %s attribute"
+#: ../lib/advene/gui/views/timeline.py:128
+msgid "Display annotations on a timeline"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:770
-msgid "The annotation fragment"
+#: ../lib/advene/gui/views/timeline.py:142
+msgid "Limit display to current area"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:771
-msgid "The annotation begin time"
+#: ../lib/advene/gui/views/timeline.py:143
+#: ../lib/advene/gui/views/timeline.py:3276
+msgid "Display whole movie"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:772
-msgid "The annotation end time"
+#: ../lib/advene/gui/views/timeline.py:173
+#, python-format
+msgid "Cannot find annotation type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:774
-msgid "The annotation MIME-type"
+#: ../lib/advene/gui/views/timeline.py:222
+msgid "No scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:775
-msgid "The annotation's incoming relations"
+#: ../lib/advene/gui/views/timeline.py:223
+msgid "Continuous scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:776
-msgid "The annotation's outgoing relations"
+#: ../lib/advene/gui/views/timeline.py:224
+msgid "Discrete scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:779
+#: ../lib/advene/gui/views/timeline.py:225
+msgid "Annotation scrolling"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:501
 #, python-format
-msgid "The %s-related incoming annotations"
+msgid "%d annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:783
+#: ../lib/advene/gui/views/timeline.py:504
+msgid "Display all types"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:506
 #, python-format
-msgid "The %s-related outgoing annotations"
+msgid ""
+"There are %d annotations.\n"
+"The current timeline may take a long time to display them, so only the first "
+"two annotation types are displayed. Use the annotation type selector (second "
+"button in the timeline) to select other annotations types to display, or "
+"click on the 'Display all types' button below."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:789
-msgid "The element fragment"
+#: ../lib/advene/gui/views/timeline.py:979
+msgid "Split at current player position"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:790
-msgid "The element begin time"
+#: ../lib/advene/gui/views/timeline.py:983
+msgid "Center and zoom"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:791
-msgid "The element end time"
+#: ../lib/advene/gui/views/timeline.py:1087
+msgid "Create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:792
-msgid "The element duration"
+#: ../lib/advene/gui/views/timeline.py:1097
+msgid "Create a new relation-type."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:793
-msgid "The element type"
+#: ../lib/advene/gui/views/timeline.py:1123
+msgid "Merge with this annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:794
-msgid "The element's incoming relations"
+#: ../lib/advene/gui/views/timeline.py:1132
+msgid "Align both begin times"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:795
-msgid "The element's outgoing relations"
+#: ../lib/advene/gui/views/timeline.py:1133
+msgid "Align both end times"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:796
-msgid "The context"
+#: ../lib/advene/gui/views/timeline.py:1134
+msgid "Align end time to selected begin time"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:797
-msgid "The context fragment"
+#: ../lib/advene/gui/views/timeline.py:1135
+msgid "Align begin time to selected end time"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:809
-#, python-format
-msgid "annotation-type %s"
+#: ../lib/advene/gui/views/timeline.py:1136
+msgid "Align all times"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:812
-#, python-format
-msgid "relation-type %s"
+#: ../lib/advene/gui/views/timeline.py:1174
+msgid "Cannot delete the annotation : it has relations."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:834
-msgid "Select a condition"
+#: ../lib/advene/gui/views/timeline.py:1249
+msgid "Select the appropriate relation type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:878
+#: ../lib/advene/gui/views/timeline.py:1268
 #, python-format
-msgid "Parameter %s"
+msgid "Duplicate selection to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:992
-msgid "Select an action"
+#: ../lib/advene/gui/views/timeline.py:1271
+#, python-format
+msgid "Move selection to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:1083
-msgid "Activate?"
+#: ../lib/advene/gui/views/timeline.py:1280
+#, python-format
+msgid "Duplicate annotation to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:83
-msgid "Generic shape"
+#: ../lib/advene/gui/views/timeline.py:1284
+#, python-format
+msgid "Move annotation to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:234
-#: ../lib/advene/gui/edit/shapewidget.py:741
+#: ../lib/advene/gui/views/timeline.py:1291
 #, python-format
-msgid "Link to %s"
+msgid "Duplicate to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:321
-#: ../lib/advene/gui/views/tagbag.py:132
-msgid "Name"
+#: ../lib/advene/gui/views/timeline.py:1297
+#, python-format
+msgid "Move to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:326
-#: ../lib/advene/gui/edit/shapewidget.py:1299
-msgid "Link"
+#: ../lib/advene/gui/views/timeline.py:1307
+msgid "Duplicate and create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:331
-msgid "Link label"
+#: ../lib/advene/gui/views/timeline.py:1318
+#, python-format
+msgid "Duplicate at %s and create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:349
-msgid "Linewidth"
+#: ../lib/advene/gui/views/timeline.py:1349
+msgid "Annotation filter"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:354
-msgid "Filled"
+#: ../lib/advene/gui/views/timeline.py:1350
+msgid "Enter the searched string"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:362
-msgid "Opacity"
+#: ../lib/advene/gui/views/timeline.py:1458
+#, python-format
+msgid "Duplicate all annotations to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:404
+#: ../lib/advene/gui/views/timeline.py:1460
 #, python-format
-msgid "Properties of %s"
+msgid "Move all annotations to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:451
-msgid "Rectangle"
+#: ../lib/advene/gui/views/timeline.py:1462
+#, python-format
+msgid "Duplicate all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:532
-#: ../lib/advene/gui/edit/shapewidget.py:652
-msgid "Text"
+#: ../lib/advene/gui/views/timeline.py:1464
+#, python-format
+msgid "Move all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:663
-msgid "Textsize"
+#: ../lib/advene/gui/views/timeline.py:1466
+#, python-format
+msgid "Align all annotation time codes using %s as reference."
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:677
-msgid "Image"
+#: ../lib/advene/gui/views/timeline.py:1468
+#, python-format
+msgid "Align all annotation contents using %s as reference"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:761
-msgid "Href"
-msgstr ""
-
-#: ../lib/advene/gui/edit/shapewidget.py:771
-msgid "Line"
+#: ../lib/advene/gui/views/timeline.py:1960
+#: ../lib/advene/gui/views/timeline.py:1989
+#, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:872
-msgid "Draw an arrow"
+#: ../lib/advene/gui/views/timeline.py:1971
+msgid "Displaying done."
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:883
-msgid "Arrow size"
+#: ../lib/advene/gui/views/timeline.py:2463
+msgid "Create a new annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:935
-#: ../lib/advene/gui/views/browser.py:359
-msgid "Path"
+#: ../lib/advene/gui/views/timeline.py:2464
+msgid "Zoom on region"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1102
-msgid "Close path"
+#: ../lib/advene/gui/views/timeline.py:2465
+msgid "Restrict display to region"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1181
-msgid "Circle"
+#: ../lib/advene/gui/views/timeline.py:2578
+#: ../lib/advene/gui/edit/transcribe.py:494
+#, python-format
+msgid "Position %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1239
-msgid "Ellipse"
+#: ../lib/advene/gui/views/timeline.py:2588
+msgid "New annotation at player time"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1589
-msgid "SVG"
+#: ../lib/advene/gui/views/timeline.py:2592
+msgid "New annotation at mouse position"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:2172
-msgid "Load SVG"
+#: ../lib/advene/gui/views/timeline.py:2596
+msgid "Selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:2178
-msgid "Save SVG"
+#: ../lib/advene/gui/views/timeline.py:2718
+msgid "Cannot zoom more"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:74
-#: ../lib/advene/gui/widget.py:1063
-msgid "Refresh snapshot"
+#: ../lib/advene/gui/views/timeline.py:2933
+#, python-format
+msgid "From schema %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:102
-#, python-format
-msgid "Decrement value by %.2f s"
+#: ../lib/advene/gui/views/timeline.py:2996
+msgid "Restrict playing to this annotation-type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:104
-#, python-format
-msgid "Increment value by %.2f s"
+#: ../lib/advene/gui/views/timeline.py:3003
+msgid "Goto previous annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:130
-msgid ""
-"Click to play\n"
-"Control+click to set to current time\n"
-"Scroll to modify value (with control/shift)\n"
-"Right-click to invalidate screenshot"
+#: ../lib/advene/gui/views/timeline.py:3014
+msgid "Goto next annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:145
-msgid ""
-"Enter a timecode.\n"
-"An integer value will be considered as milliseconds.\n"
-"A float value (12.2) will be considered as seconds.\n"
-"HH:MM:SS.sss values are possible."
+#: ../lib/advene/gui/views/timeline.py:3025
+msgid "+"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:159
-msgid "Set to current player position"
+#: ../lib/advene/gui/views/timeline.py:3084
+msgid "Open an annotation display view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:81
-#, python-format
-msgid "%s creation"
+#: ../lib/advene/gui/views/timeline.py:3091
+msgid "Open a slave montage view (coordinated zoom level)"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:82
-#, python-format
+#: ../lib/advene/gui/views/timeline.py:3126
 msgid ""
-"To create a new element of type %s,\n"
-"you must give the following information."
+"<b>Statistics about current selection</b>\n"
+"\n"
 msgstr ""
 
-#: ../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:659
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:251
-#: ../lib/advene/gui/views/table.py:558
-msgid "Type"
+#: ../lib/advene/gui/views/timeline.py:3133
+msgid "No selected annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:111
-msgid "Dynamic view"
+#: ../lib/advene/gui/views/timeline.py:3137
+#, python-format
+msgid "%d selected annotation(s)"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:112
-msgid "HTML template"
+#: ../lib/advene/gui/views/timeline.py:3144
+msgid "Unselect all annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:113
-msgid "Plain XML"
+#: ../lib/advene/gui/views/timeline.py:3145
+msgid "Create a static view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:114
-msgid "SVG template"
+#: ../lib/advene/gui/views/timeline.py:3146
+msgid "Highlight selection in other views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:115
-msgid "Plain text template"
+#: ../lib/advene/gui/views/timeline.py:3147
+#: ../lib/advene/gui/views/timeline.py:3736
+msgid "Tag selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:118
-msgid "Simple query"
+#: ../lib/advene/gui/views/timeline.py:3148
+msgid "Delete selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:120
-msgid "Directory"
+#: ../lib/advene/gui/views/timeline.py:3149
+msgid "Display selection in a table"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:128
-msgid "No available type."
+#: ../lib/advene/gui/views/timeline.py:3150
+msgid "Center and zoom on selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:172
-#, python-format
-msgid ""
-"The identifier %s is not valid.\n"
-"It must be composed of non-accentuated alphabetic characters\n"
-"Underscore is allowed."
+#: ../lib/advene/gui/views/timeline.py:3151
+msgid "Edit selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:177
-#, python-format
-msgid "The identifier %s is already defined."
+#: ../lib/advene/gui/views/timeline.py:3152
+msgid "Merge annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:310
-msgid "New resource data"
+#: ../lib/advene/gui/views/timeline.py:3153
+msgid "Display statistics"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
-msgid "Schemas"
+#: ../lib/advene/gui/views/timeline.py:3269
+msgid "Goto previous page"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
-#: ../lib/advene/gui/views/interactivequery.py:464
-msgid "Annotations"
+#: ../lib/advene/gui/views/timeline.py:3281
+msgid "Goto next page"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
-#: ../lib/advene/gui/edit/elements.py:517
-msgid "Relations"
+#: ../lib/advene/gui/views/timeline.py:3337
+msgid "Inspector locked. Click here or in the timeline background to unlock."
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
-msgid "Queries"
+#: ../lib/advene/gui/views/timeline.py:3365
+msgid ""
+"Delete the selected annotations or drop an annotation here to delete it."
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:320
-msgid "Imported?"
+#: ../lib/advene/gui/views/timeline.py:3387
+msgid ""
+"Drag an annotation type here to remove it from display.\n"
+"Click to edit all displayed types"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:337
-#: ../lib/advene/gui/edit/elements.py:509
-#: ../lib/advene/gui/edit/elements.py:558
-#: ../lib/advene/gui/edit/elements.py:645
-#: ../lib/advene/gui/edit/elements.py:725
-#: ../lib/advene/gui/edit/elements.py:782
-#: ../lib/advene/gui/edit/elements.py:874
-#: ../lib/advene/gui/edit/elements.py:943
-#: ../lib/advene/gui/edit/elements.py:1055
-#: ../lib/advene/gui/edit/elements.py:1117
-msgid "URI"
+#: ../lib/advene/gui/views/timeline.py:3399
+msgid "Selection actions"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:359
-msgid "Choose the package to import, and its alias"
+#: ../lib/advene/gui/views/timeline.py:3414
+msgid "Display relations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:47
-msgid "Montage"
+#: ../lib/advene/gui/views/timeline.py:3420
+msgid "Display all relations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:49
-msgid "Dynamic montage of annotations"
+#: ../lib/advene/gui/views/timeline.py:3497
+msgid "Center on current player position."
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:55
-#: ../lib/advene/gui/views/logwindow.py:50
-#: ../lib/advene/gui/views/tagbag.py:60
-#: ../lib/advene/gui/views/activebookmarks.py:59
-#: ../lib/advene/gui/views/bookmarks.py:77
-msgid "Clear"
+#: ../lib/advene/gui/views/timeline.py:3513
+msgid "Automatically activate loop when clicking on an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:56
-#: ../lib/advene/gui/views/transcription.py:472
-#: ../lib/advene/gui/widget.py:1059
-msgid "Play"
+#: ../lib/advene/gui/views/timeline.py:3537
+msgid "Displayed"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:57
-msgid "Render"
+#: ../lib/advene/gui/views/timeline.py:3545
+msgid "Not displayed"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:171
-msgid "Remove from montage"
+#: ../lib/advene/gui/views/timeline.py:3594
+msgid "< All <"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:303 ../lib/advene/gui/popup.py:444
-#, python-format
-msgid "Extracting %s"
+#: ../lib/advene/gui/views/timeline.py:3598
+msgid "> All >"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:304
-#, python-format
-msgid ""
-"Exporting montage %(title)s\n"
-"to %%(filename)s"
+#: ../lib/advene/gui/views/timeline.py:3622
+msgid "Displayed annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:396
-msgid "Drop an annotation here to remove it from the list"
+#: ../lib/advene/gui/views/timeline.py:3648
+msgid "Relation type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:407
-msgid "Play the montage"
+#: ../lib/advene/gui/views/timeline.py:3648
+msgid "Display relation types"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:412
-msgid "Save the view in the package"
+#: ../lib/advene/gui/views/timeline.py:3649
+msgid "Relation content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:460
-msgid "Set zoom level"
+#: ../lib/advene/gui/views/timeline.py:3649
+msgid "Display relation content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:465
-msgid "Set 100% zoom"
+#: ../lib/advene/gui/views/timeline.py:3650 ../lib/advene/gui/popup.py:516
+msgid "Highlight"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:471
-#: ../lib/advene/gui/views/interactivequery.py:439
-msgid "Unhighlight annotations"
+#: ../lib/advene/gui/views/timeline.py:3650
+msgid "Highlight active annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:475 ../lib/advene/gui/edit/montage.py:484
-#: ../lib/advene/gui/views/interactivequery.py:443
-#: ../lib/advene/gui/views/interactivequery.py:480
-msgid "Highlight annotations"
+#: ../lib/advene/gui/views/timeline.py:3737
+msgid "Enter the tag for the selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:545
-msgid "Total duration:"
+#: ../lib/advene/gui/views/timeline.py:3743
+#: ../lib/advene/gui/views/tagbag.py:165
+msgid "The tag contains invalid characters"
 msgstr ""
 
-#: ../lib/advene/gui/edit/frameselector.py:43
-msgid "Click on a frame to select its time."
+#: ../lib/advene/gui/views/relation.py:71
+msgid "Relations view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/frameselector.py:177
-msgid "Select the appropriate snapshot"
+#: ../lib/advene/gui/views/editionhistory.py:40
+msgid "Edition History"
 msgstr ""
 
-#: ../lib/advene/gui/edit/frameselector.py:230
-#: ../lib/advene/gui/edit/frameselector.py:283
-msgid "Click to see more frames or scroll with the mouse wheel"
+#: ../lib/advene/gui/views/editionhistory.py:42
+msgid "Access last edited/created elements"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:67
-msgid "Transcription importer"
+#: ../lib/advene/gui/views/editionhistory.py:102
+msgid "Created"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:78
-msgid "Note taking"
+#: ../lib/advene/gui/views/editionhistory.py:103
+msgid "Edited"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:80
-msgid "Take notes on the fly as a timestamped transcription"
+#: ../lib/advene/gui/views/tagbag.py:55
+msgid "Tag Bag"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:87
-#: ../lib/advene/gui/views/activebookmarks.py:60
-msgid "Export as static view"
+#: ../lib/advene/gui/views/tagbag.py:62
+msgid "New tag"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Timestamp"
+#: ../lib/advene/gui/views/tagbag.py:125
+msgid "New tag name"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Click inserts timestamp marks"
+#: ../lib/advene/gui/views/tagbag.py:131
+msgid "Enter a new tag name and select its color."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "Insert on single-click"
+#: ../lib/advene/gui/views/tagbag.py:135
+#: ../lib/advene/gui/edit/shapewidget.py:341
+msgid "Name"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "A single click will insert the mark (else a double click is needed)"
+#: ../lib/advene/gui/views/tagbag.py:141
+#: ../lib/advene/gui/edit/shapewidget.py:362
+#: ../lib/advene/gui/edit/elements.py:895
+#: ../lib/advene/gui/edit/elements.py:975
+#: ../lib/advene/gui/edit/elements.py:1089 ../lib/advene/rules/actions.py:133
+msgid "Color"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play on scroll"
+#: ../lib/advene/gui/views/tagbag.py:178
+msgid "Tag bag options"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play the new position upon timestamp modification"
+#: ../lib/advene/gui/views/tagbag.py:179
+msgid "Update with new tags"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:151
-msgid "Generate empty annotations"
+#: ../lib/advene/gui/views/tagbag.py:179
+msgid "Automatically display new defined tags"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:151
-msgid "If checked, generate annotations for empty text"
+#: ../lib/advene/gui/views/tagbag.py:228
+#, python-format
+msgid "Choose the color for tag %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid "Reaction time"
+#: ../lib/advene/gui/views/tagbag.py:252
+msgid "Set color"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid ""
-"Reaction time (substracted from current player time, except when paused.)"
+#: ../lib/advene/gui/views/tagbag.py:253
+msgid "Remove"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Auto-insert"
+#: ../lib/advene/gui/views/tagbag.py:326
+msgid "Drop a tag here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Automatic timestamp mark insertion"
+#: ../lib/advene/gui/views/tagbag.py:336
+msgid "Save as adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:154
-msgid "Automatic insertion delay"
+#: ../lib/advene/gui/views/tagbag.py:337
+msgid "Add a new tag"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:154
-msgid ""
-"If autoinsert is active, timestamp marks will be automatically inserted when "
-"text is entered after no interaction since this delay (in ms).\n"
-"1000 is typically a good value."
+#: ../lib/advene/gui/views/tagbag.py:338
+msgid "Display all defined tags"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:155 ../lib/advene/gui/main.py:4368
-msgid "Font size"
+#: ../lib/advene/gui/views/__init__.py:194
+msgid "Invalid view id"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:155
-msgid "Font size for text (0 for standard size)"
+#: ../lib/advene/gui/views/__init__.py:240
+#, python-format
+msgid "Cannot save default options: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:215
-#: ../lib/advene/gui/edit/transcribe.py:219
-#: ../lib/advene/gui/edit/transcribe.py:379
-#: ../lib/advene/gui/edit/transcribe.py:383
-msgid "Invalid timestamp mark"
+#: ../lib/advene/gui/views/__init__.py:251
+#, python-format
+msgid "Default options saved for view %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:496
-#: ../lib/advene/gui/views/timeline.py:2550
+#: ../lib/advene/gui/views/__init__.py:283
 #, python-format
-msgid "Position %s"
+msgid "Saving %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:506 ../lib/advene/gui/popup.py:456
-msgid "Edit"
+#: ../lib/advene/gui/views/__init__.py:286
+msgid "Enter a view name to save this parametered view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:510
-msgid "Ignore the following text (toggle)"
+#: ../lib/advene/gui/views/__init__.py:304
+#, python-format
+msgid "Error: the view %s is not an adhoc view."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:514
-msgid "Remove mark"
+#: ../lib/advene/gui/views/__init__.py:329
+msgid "HTML export"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:518
-msgid "Reaction-time offset"
+#: ../lib/advene/gui/views/__init__.py:330
+msgid "Specify a name for the export view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:522
-msgid "-1 sec"
+#: ../lib/advene/gui/views/__init__.py:349
+#, python-format
+msgid ""
+"View successfully exported as %s.\n"
+"Open it in the web browser ?"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:525
-msgid "-0.5 sec"
+#: ../lib/advene/gui/views/__init__.py:428
+msgid "Actions"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:528
-msgid "-0.1 sec"
+#: ../lib/advene/gui/views/__init__.py:453
+msgid "Click or drag-and-drop to reattach view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:532
-msgid "+1 sec"
+#: ../lib/advene/gui/views/finder.py:105 ../lib/advene/util/helper.py:402
+msgid "Package"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:535
-msgid "+0.5 sec"
+#: ../lib/advene/gui/views/finder.py:106
+msgid "List of views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:538
-msgid "+0.1 sec"
+#: ../lib/advene/gui/views/finder.py:107
+msgid "Static views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:629
-msgid "Invalid timestamp"
+#: ../lib/advene/gui/views/finder.py:108
+msgid "Dynamic views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:762
-#, python-format
-msgid "Invalid timestamp mark in conversion: %s"
+#: ../lib/advene/gui/views/finder.py:109
+msgid "Admin views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:879
-#, python-format
-msgid "Cannot save the file: %s"
+#: ../lib/advene/gui/views/finder.py:110
+msgid "Adhoc views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:884
-#: ../lib/advene/gui/views/transcription.py:703
+#: ../lib/advene/gui/views/finder.py:515
 #, python-format
-msgid "Transcription saved to %s"
-msgstr ""
-
-#: ../lib/advene/gui/edit/transcribe.py:890
-#: ../lib/advene/gui/edit/transcribe.py:980
-msgid "This will overwrite the current textual content. Are you sure?"
+msgid ""
+"View <b>%(title)s</b>\n"
+"Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:893
-msgid "Select transcription file to load"
+#: ../lib/advene/gui/views/finder.py:522
+msgid "Open in webbrowser"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:910
+#: ../lib/advene/gui/views/finder.py:523
 #, python-format
-msgid "Cannot open %(filename)s: %(error)s"
+msgid "View applied to %s\n"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:965
-msgid "Cannot import annotations: no existing interface"
+#: ../lib/advene/gui/views/finder.py:528 ../lib/advene/gui/popup.py:496
+msgid "Activate"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:967
-msgid "Select the annotation type to import"
+#: ../lib/advene/gui/views/finder.py:531
+msgid "Open in GUI"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:976
-#, python-format
-msgid "There are no annotations of type %s"
+#: ../lib/advene/gui/views/finder.py:533
+msgid "Unknown type of view??"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1005
-msgid "Cannot convert the data: no associated package"
+#: ../lib/advene/gui/views/finder.py:558
+msgid "Edit view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1008
-msgid "Converting transcription"
+#: ../lib/advene/gui/views/finder.py:567
+msgid "Open view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1014
-msgid "Choose the annotation-type where to create annotations.\n"
+#: ../lib/advene/gui/views/finder.py:607 ../lib/advene/gui/views/finder.py:673
+#, python-format
+msgid ""
+"%(type)s <b>%(title)s</b>\n"
+"Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1022
-msgid "Delete existing annotations in this type"
+#: ../lib/advene/gui/views/finder.py:622
+#: ../lib/advene/gui/views/interactivequery.py:400
+msgid "Edit query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1027
-#: ../lib/advene/gui/views/timeline.py:3009 ../lib/advene/gui/main.py:3222
-msgid "Create a new annotation type"
+#: ../lib/advene/gui/views/finder.py:630
+msgid "Try to apply the query on..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1045
-msgid "Select type"
+#: ../lib/advene/gui/views/finder.py:650 ../lib/advene/gui/popup.py:829
+msgid "the package"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1049
-msgid "You want to create a new type. Please specify its schema and title."
+#: ../lib/advene/gui/views/finder.py:651 ../lib/advene/gui/popup.py:830
+msgid "all annotations of the package"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1061
-msgid "Containing schema"
+#: ../lib/advene/gui/views/finder.py:652 ../lib/advene/gui/popup.py:831
+msgid "the first annotation of the package"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1074
-msgid "Export options"
+#: ../lib/advene/gui/views/finder.py:697
+msgid "Edit resource"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1079
-msgid "Generate annotations for empty contents"
+#: ../lib/advene/gui/views/finder.py:732 ../lib/advene/util/helper.py:565
+#, python-format
+msgid ""
+"Package %(title)s:\n"
+"%(schema)s\n"
+"%(annotation)s in %(annotation_type)s\n"
+"%(relation)s in %(relation_type)s\n"
+"%(query)s\n"
+"%(view)s\n"
+"\n"
+"Description:\n"
+"%(description)s\n"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1104
+#: ../lib/advene/gui/views/finder.py:753
 #, python-format
-msgid "The %s identifier already exists. Choose another one."
+msgid "%(type)s %(title)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1143
-msgid "Notes converted"
+#: ../lib/advene/gui/views/finder.py:756 ../lib/advene/gui/edit/elements.py:517
+#: ../lib/advene/gui/edit/elements.py:566
+#: ../lib/advene/gui/edit/elements.py:653
+#: ../lib/advene/gui/edit/elements.py:733
+#: ../lib/advene/gui/edit/elements.py:791
+#: ../lib/advene/gui/edit/elements.py:882
+#: ../lib/advene/gui/edit/elements.py:952
+#: ../lib/advene/gui/edit/elements.py:1064
+msgid "Metadata"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1147
-#: ../lib/advene/gui/views/bookmarks.py:169
-#, python-format
-msgid ""
-"Conversion completed.\n"
-"%s annotations generated."
+#: ../lib/advene/gui/views/finder.py:773
+msgid "Column-based package finder"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1163
-#: ../lib/advene/gui/views/activebookmarks.py:546
-msgid "Smallish"
+#: ../lib/advene/gui/views/editaccumulator.py:45
+msgid "EditAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1167
-#: ../lib/advene/gui/views/activebookmarks.py:550
-msgid "Larger"
+#: ../lib/advene/gui/views/activebookmarks.py:55
+#: ../lib/advene/gui/views/activebookmarks.py:57
+msgid "ActiveBookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1168
-#: ../lib/advene/gui/views/activebookmarks.py:551
-msgid "Huge"
+#: ../lib/advene/gui/views/activebookmarks.py:63
+#: ../lib/advene/gui/edit/transcribe.py:88
+msgid "Export as static view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1190
-msgid "Open"
+#: ../lib/advene/gui/views/activebookmarks.py:443
+msgid "Chronological order"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1191
-msgid "Save"
+#: ../lib/advene/gui/views/activebookmarks.py:444
+msgid "Completeness and chronological order"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1192
-msgid "Save As"
+#: ../lib/advene/gui/views/activebookmarks.py:460
+msgid "Bookmark duration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1193
-msgid "Import"
+#: ../lib/advene/gui/views/activebookmarks.py:461
+msgid "Enter the duration (in ms) to convert bookmarks into annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1193
-msgid "Import from annotations"
+#: ../lib/advene/gui/views/activebookmarks.py:483
+msgid "User-specified duration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
-msgid "Convert"
+#: ../lib/advene/gui/views/activebookmarks.py:484
+msgid "2s duration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
-msgid "Convert to annotations"
+#: ../lib/advene/gui/views/activebookmarks.py:485
+msgid "Complete coverage"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1196
-msgid "Center on the current mark"
+#: ../lib/advene/gui/views/activebookmarks.py:503
+msgid "Drop a bookmark here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1197
-msgid "Find"
+#: ../lib/advene/gui/views/activebookmarks.py:530
+msgid "Type of the annotations that will be created"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1197
-msgid "Search a string"
+#: ../lib/advene/gui/views/activebookmarks.py:548
+#: ../lib/advene/gui/edit/transcribe.py:1155
+msgid "Smallish"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-msgid "Scale"
+#: ../lib/advene/gui/views/activebookmarks.py:549
+#: ../lib/advene/gui/edit/transcribe.py:1156 ../lib/advene/rules/actions.py:167
+msgid "Small"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-#: ../lib/advene/gui/views/activebookmarks.py:564
-msgid "Set the size of snaphots"
+#: ../lib/advene/gui/views/activebookmarks.py:550
+#: ../lib/advene/gui/edit/transcribe.py:1157 ../lib/advene/rules/actions.py:168
+msgid "Normal"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1221
-msgid "Automatically scroll to the mark position when playing"
+#: ../lib/advene/gui/views/activebookmarks.py:551
+#: ../lib/advene/gui/edit/transcribe.py:1158 ../lib/advene/rules/actions.py:169
+msgid "Large"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1223
-msgid "Autoscroll"
+#: ../lib/advene/gui/views/activebookmarks.py:552
+#: ../lib/advene/gui/edit/transcribe.py:1159
+msgid "Larger"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1230
-msgid "Autoinsert"
+#: ../lib/advene/gui/views/activebookmarks.py:553
+#: ../lib/advene/gui/edit/transcribe.py:1160
+msgid "Huge"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1232
-msgid "Automatically insert marks"
+#: ../lib/advene/gui/views/activebookmarks.py:563
+msgid "Reorder active bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:74
-#, python-format
-msgid "No edit popup available for element %s"
+#: ../lib/advene/gui/views/activebookmarks.py:564
+msgid "Complete bookmarks into annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:95
-msgid "Edit Window"
+#: ../lib/advene/gui/views/activebookmarks.py:565
+msgid "Save the current state"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:134
-msgid "Apply changes and close the edit window"
+#: ../lib/advene/gui/views/activebookmarks.py:566
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Set the size of snaphots"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:139
-msgid "Apply changes"
+#: ../lib/advene/gui/views/activebookmarks.py:833
+msgid "Remove end timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:273
-msgid "Content has been modified. Close anyway and lose data?"
+#: ../lib/advene/gui/views/activebookmarks.py:1041
+msgid ""
+"Error: cannot find an appropriate schema to create the Active-bookmark type."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:331
-#: ../lib/advene/gui/views/viewbook.py:234
-#: ../lib/advene/gui/views/viewbook.py:240
-#, python-format
-msgid "Edit %s"
+#: ../lib/advene/gui/views/activebookmarks.py:1046
+msgid "Active bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:333
-#, python-format
-msgid "View %s (read-only)"
+#: ../lib/advene/gui/views/activebookmarks.py:1084
+msgid "Validate the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:369
-#, python-format
-msgid "Display %s"
+#: ../lib/advene/gui/views/activebookmarks.py:1228
+msgid "Duplicate bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:453
-msgid "Apply changes and edit previous annotation of same type"
+#: ../lib/advene/gui/views/activebookmarks.py:1229
+msgid "Remove bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:457
-msgid "Apply changes and edit next annotation of same type"
+#: ../lib/advene/gui/views/activebookmarks.py:1238
+msgid "Remove begin timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:463
-msgid "Unhighlight annotation"
+#: ../lib/advene/gui/views/activebookmarks.py:1245
+msgid "Complete bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:467
-msgid "Highlight annotation"
+#: ../lib/advene/gui/views/activebookmarks.py:1249
+msgid "Change type to"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:498
-msgid "Fragment"
+#: ../lib/advene/gui/views/logwindow.py:43
+msgid "Links"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:510
-#: ../lib/advene/gui/edit/elements.py:559
-#: ../lib/advene/gui/edit/elements.py:646
-#: ../lib/advene/gui/edit/elements.py:726
-#: ../lib/advene/gui/edit/elements.py:783
-#: ../lib/advene/gui/edit/elements.py:875
-#: ../lib/advene/gui/edit/elements.py:944
-#: ../lib/advene/gui/edit/elements.py:1056
-#: ../lib/advene/gui/edit/elements.py:1118 ../lib/advene/gui/main.py:4174
-msgid "Author"
+#: ../lib/advene/gui/views/logwindow.py:45
+msgid "URL stack"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:511
-#: ../lib/advene/gui/edit/elements.py:560
-#: ../lib/advene/gui/edit/elements.py:647
-#: ../lib/advene/gui/edit/elements.py:727
-#: ../lib/advene/gui/edit/elements.py:784
-#: ../lib/advene/gui/edit/elements.py:876
-#: ../lib/advene/gui/edit/elements.py:945
-#: ../lib/advene/gui/edit/elements.py:1057
-#: ../lib/advene/gui/edit/elements.py:1119 ../lib/advene/gui/main.py:4175
-msgid "Date"
+#: ../lib/advene/gui/views/logwindow.py:123
+#, python-format
+msgid "Go to %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:513
-#: ../lib/advene/gui/edit/elements.py:562
-#: ../lib/advene/gui/edit/elements.py:649
-#: ../lib/advene/gui/edit/elements.py:729
-#: ../lib/advene/gui/edit/elements.py:787
-#: ../lib/advene/gui/edit/elements.py:878
-#: ../lib/advene/gui/edit/elements.py:948
-#: ../lib/advene/gui/edit/elements.py:1060
-msgid "Metadata"
+#: ../lib/advene/gui/views/logwindow.py:129 ../lib/advene/rules/actions.py:63
+msgid "Go to the given position"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:582
-#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/views/relationdisplay.py:113
-msgid "Members"
+#: ../lib/advene/gui/views/logwindow.py:157
+msgid "Push a URL on the stack"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:600
-#: ../lib/advene/gui/edit/elements.py:677
-#: ../lib/advene/gui/edit/elements.py:737
-#: ../lib/advene/gui/edit/elements.py:1128
-#: ../lib/advene/gui/views/table.py:250
-msgid "Content"
+#: ../lib/advene/gui/views/logwindow.py:158
+msgid "Description of the URL"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:617
-msgid "Apply changes and visualise in web browser"
+#: ../lib/advene/gui/views/interactivequery.py:51
+#: ../lib/advene/gui/views/interactivequery.py:99
+msgid "Interactive query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:622
-msgid "Apply changes and activate the view"
+#: ../lib/advene/gui/views/interactivequery.py:53
+msgid "Interactive query dialog"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:630
-#: ../lib/advene/gui/edit/elements.py:711
-#: ../lib/advene/gui/edit/elements.py:768
-#: ../lib/advene/gui/edit/elements.py:859
-#: ../lib/advene/gui/edit/elements.py:928
-#: ../lib/advene/gui/edit/elements.py:1030
-msgid "Title (name)"
+#: ../lib/advene/gui/views/interactivequery.py:59
+#: ../lib/advene/gui/views/interactivequery.py:256
+msgid "Save query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:634
-msgid "Name of the view"
+#: ../lib/advene/gui/views/interactivequery.py:122
+#: ../lib/advene/gui/views/interactivequery.py:172
+#, python-format
+msgid ""
+"Invalid query.\n"
+"The following fields have an invalid value:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:658
-msgid "Class"
+#: ../lib/advene/gui/views/interactivequery.py:136
+#: ../lib/advene/gui/views/interactivequery.py:296
+msgid "Saving the query..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:661
-msgid "Match Filter"
+#: ../lib/advene/gui/views/interactivequery.py:137
+#: ../lib/advene/gui/views/interactivequery.py:297
+msgid "Give a title and identifier for saving the query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:699 ../lib/advene/gui/popup.py:821
-#, python-format
-msgid "Exception in query: %s"
+#: ../lib/advene/gui/views/interactivequery.py:180
+msgid "Expert search"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:704
-msgid "Validate and run query on package"
+#: ../lib/advene/gui/views/interactivequery.py:186
+#, python-format
+msgid ""
+"TALES error in interactive expression:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:715
-msgid "Name of the query"
+#: ../lib/advene/gui/views/interactivequery.py:247
+msgid "Interactive result"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:772
-msgid "Name of the package"
+#: ../lib/advene/gui/views/interactivequery.py:249
+msgid "Interactive result display"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:790
-#: ../lib/advene/gui/edit/elements.py:881
-#: ../lib/advene/gui/edit/elements.py:960
-#: ../lib/advene/gui/edit/elements.py:1074
-msgid "Description"
+#: ../lib/advene/gui/views/interactivequery.py:274
+msgid "Result of interactive query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:794
-#: ../lib/advene/gui/edit/elements.py:885
-#: ../lib/advene/gui/edit/elements.py:964
-#: ../lib/advene/gui/edit/elements.py:1078
-msgid "Textual description of the package"
+#: ../lib/advene/gui/views/interactivequery.py:278
+msgid "Result of a query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:799
-msgid "Default dynamic view"
+#: ../lib/advene/gui/views/interactivequery.py:333
+#, python-format
+msgid "Comment on annotations containing %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:803
-msgid "Dynamic view to activate on package load"
-msgstr ""
-
-#: ../lib/advene/gui/edit/elements.py:808
-msgid "Default static view"
-msgstr ""
-
-#: ../lib/advene/gui/edit/elements.py:812
-msgid "Static view to open on package load"
-msgstr ""
-
-#: ../lib/advene/gui/edit/elements.py:817
-msgid "Default adhoc view"
+#: ../lib/advene/gui/views/interactivequery.py:352
+msgid "Choose the annotation type where annotations will be created."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:821
-msgid "Adhoc view to open on package load"
+#: ../lib/advene/gui/views/interactivequery.py:356
+#, python-format
+msgid "Copied result of the '%s' query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:826
-msgid "Cached duration"
+#: ../lib/advene/gui/views/interactivequery.py:368
+#, python-format
+msgid "Search/replace content in %d elements"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:830
-msgid "Cached duration in ms"
+#: ../lib/advene/gui/views/interactivequery.py:396
+msgid "Edit query again"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:835
-msgid "Mediafile"
+#: ../lib/advene/gui/views/interactivequery.py:410
+msgid "Search again"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:839
-msgid "Location of associated media file"
+#: ../lib/advene/gui/views/interactivequery.py:416
+msgid "Empty result"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:863
-msgid "Name of the schema"
+#: ../lib/advene/gui/views/interactivequery.py:425
+#, python-format
+msgid "Result is a list of %d annotations."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:895
-#: ../lib/advene/gui/edit/elements.py:975
-msgid "TALES expression returning a color for the element"
+#: ../lib/advene/gui/views/interactivequery.py:427
+#, python-format
+msgid "Result is a list of  %(number)d elements with %(elements)s."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:902
-#: ../lib/advene/gui/edit/elements.py:993
-msgid "Item color"
+#: ../lib/advene/gui/views/interactivequery.py:439
+#: ../lib/advene/gui/edit/montage.py:478
+msgid "Unhighlight annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:906
-#: ../lib/advene/gui/edit/elements.py:997
-msgid ""
-"TALES expression returning a color for the items contained by the element"
+#: ../lib/advene/gui/views/interactivequery.py:443
+#: ../lib/advene/gui/views/interactivequery.py:480
+#: ../lib/advene/gui/edit/montage.py:482 ../lib/advene/gui/edit/montage.py:491
+msgid "Highlight annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:932
-#: ../lib/advene/gui/edit/elements.py:1034
-msgid "Name of the type"
+#: ../lib/advene/gui/views/interactivequery.py:464
+#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
+msgid "Annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:950
-#: ../lib/advene/gui/edit/elements.py:1039
-#: ../lib/advene/gui/edit/elements.py:1308
-msgid "MIME Type"
+#: ../lib/advene/gui/views/interactivequery.py:470
+msgid "Other elements"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:954
-#: ../lib/advene/gui/edit/elements.py:1043
-msgid "MIMEType of the content"
+#: ../lib/advene/gui/views/interactivequery.py:474
+msgid "Display annotations in timeline"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:982
-#: ../lib/advene/gui/views/transcription.py:165
-msgid "Representation"
+#: ../lib/advene/gui/views/interactivequery.py:475
+msgid "Display annotations as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:986
-msgid ""
-"TALES expression used to get a compact representation of the annotations"
+#: ../lib/advene/gui/views/interactivequery.py:481
+#: ../lib/advene/gui/views/interactivequery.py:503
+msgid "Export table"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:987
-#, python-format
-msgid "Display %s key"
+#: ../lib/advene/gui/views/interactivequery.py:482
+msgid "Create annotations from the result"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1003
-msgid "Completions"
+#: ../lib/advene/gui/views/interactivequery.py:483
+msgid "Define a montage with the result"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1007
-msgid "Space-separated list of words used for content completion"
+#: ../lib/advene/gui/views/interactivequery.py:484
+msgid "Create a comment view with the result"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1013
-msgid "Advanced"
+#: ../lib/advene/gui/views/interactivequery.py:485
+msgid "Search and replace strings in the annotations content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1063
-msgid "Any annotation type"
+#: ../lib/advene/gui/views/interactivequery.py:510
+msgid "Edit elements"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1089
-msgid "TALES expression specifying a color"
+#: ../lib/advene/gui/views/interactivequery.py:516
+msgid "Open in python evaluator"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1116
-msgid "MIMEType"
+#: ../lib/advene/gui/views/interactivequery.py:519
+#, python-format
+msgid ""
+"Result:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1341
-#, python-format
-msgid "Error: cannot find a content handler for %s"
+#: ../lib/advene/gui/views/interactivequery.py:561
+msgid "Results of _interactive query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1457
-#: ../lib/advene/gui/edit/elements.py:1682
-#, python-format
-msgid ""
-"Cannot read the data:\n"
-"%s"
+#: ../lib/advene/gui/popup.py:138
+msgid "Choose the file to insert"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1481
-#: ../lib/advene/gui/edit/elements.py:1707
-msgid "Save content to..."
+#: ../lib/advene/gui/popup.py:146
+msgid "Select a valid identifier"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1492
-#: ../lib/advene/gui/edit/elements.py:1720
+#: ../lib/advene/gui/popup.py:147
 #, python-format
 msgid ""
-"Cannot save the data:\n"
-"%s"
+"The filename %s contains invalid characters\n"
+"that have been replaced.\n"
+"You can modify this identifier if necessary:"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1511
-#: ../lib/advene/gui/edit/elements.py:1734
-msgid "Open a file (C-o)"
+#: ../lib/advene/gui/popup.py:158
+msgid "Choose the soundclip to insert"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1516
-#: ../lib/advene/gui/edit/elements.py:1739
-msgid "Save to a file (C-s)"
+#: ../lib/advene/gui/popup.py:162
+msgid "Choose the directory to insert"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1521
-#: ../lib/advene/gui/edit/elements.py:1744
-msgid "Reload the file (C-r)"
+#: ../lib/advene/gui/popup.py:177
+msgid "Named-Entity extraction using NERD"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1527
-msgid "Insert a value from the browser (C-i)"
+#: ../lib/advene/gui/popup.py:181
+msgid ""
+"Give the offset to use\n"
+"on specified element.\n"
+"It is in ms and can be\n"
+"either positive or negative."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1773
-msgid "Begin time is greater than end time"
+#: ../lib/advene/gui/popup.py:225
+#, python-format
+msgid "Replace content in %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1803
-#: ../lib/advene/gui/views/table.py:252
-msgid "Begin"
+#: ../lib/advene/gui/popup.py:228
+#, python-format
+msgid "Replace content in annotations of type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1812
-#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/main.py:628
-msgid "End"
+#: ../lib/advene/gui/popup.py:231
+msgid "Replace content in all annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2044
-msgid "Expecting an integer."
+#: ../lib/advene/gui/popup.py:324
+#, python-format
+msgid "Copy id %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2076
+#: ../lib/advene/gui/popup.py:358
 #, python-format
 msgid ""
-"The %(attribute)s attribute could not be updated:\n"
-"\n"
-"%(error)s\n"
+"<b>Statistics about %s</b>\n"
 "\n"
-"Resetting to the original value."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2103
+#: ../lib/advene/gui/popup.py:364
 #, python-format
-msgid ""
-"The following attributes cannot be updated:\n"
-"\n"
-"%s"
+msgid "Renumbering annotations of type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2143
-#, python-format
+#: ../lib/advene/gui/popup.py:371
 msgid ""
-"The following attributes could not be updated:\n"
+"<b>Renumber all annotations according to their order.</b>\n"
 "\n"
-"%s"
+"<i>Note that this action cannot be undone.</i>\n"
+"Replace the first numeric value of the annotation content with the new "
+"annotation number.\n"
+"If no numeric value is found and the annotation is structured, it will "
+"insert the number.\n"
+"If no numeric value is found and the annotation is of type text/plain, it "
+"will overwrite the annotation content.\n"
+"The offset parameter allows you to renumber from a given annotation."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2160
-msgid "Attribute"
+#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
+msgid "Offset"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2168
-#: ../lib/advene/gui/views/browser.py:366
-msgid "Value"
+#: ../lib/advene/gui/popup.py:399
+#, python-format
+msgid "Renumbering %d annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2259
-msgid "Insert an element"
+#: ../lib/advene/gui/popup.py:408
+#, python-format
+msgid "Annotation #%d"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2260
-msgid "Choose the element to insert."
+#: ../lib/advene/gui/popup.py:444 ../lib/advene/gui/edit/montage.py:309
+#, python-format
+msgid "Extracting %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2330
-#: ../lib/advene/gui/edit/elements.py:2373
+#: ../lib/advene/gui/popup.py:445
 #, python-format
-msgid "Some tags contain invalid characters: %s"
+msgid ""
+"Exporting annotation %(title)s\n"
+"from %(begin)s to %(end)s\n"
+"to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2353
-msgid "Tags:"
+#: ../lib/advene/gui/popup.py:456 ../lib/advene/gui/edit/transcribe.py:504
+msgid "Edit"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:163
-#: ../lib/advene/gui/views/browser.py:165
-msgid "TALES browser"
+#: ../lib/advene/gui/popup.py:458
+msgid "Browse"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:170
-msgid "Display result in table"
+#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
+msgid "Open in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:193
-msgid "Insert path"
+#: ../lib/advene/gui/popup.py:472 ../lib/advene/gui/popup.py:476
+#: ../lib/advene/gui/edit/shapewidget.py:1598
+msgid "Delete"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:194
-msgid "Insert value"
+#: ../lib/advene/gui/popup.py:479
+msgid "Search/replace content"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:249
-msgid "Expression returned None (there was an exception)"
+#: ../lib/advene/gui/popup.py:497
+msgid "Desactivate"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:302
-msgid "Result is not a list"
+#: ../lib/advene/gui/popup.py:514
+msgid "Loop"
 msgstr ""
 
-#: ../lib/advene/gui/views/accumulatorpopup.py:49
-msgid "PopupAccumulator"
+#: ../lib/advene/gui/popup.py:515
+msgid "Duplicate"
 msgstr ""
 
-#: ../lib/advene/gui/views/editionhistory.py:40
-msgid "Edition History"
+#: ../lib/advene/gui/popup.py:519
+msgid "Save snapshot..."
 msgstr ""
 
-#: ../lib/advene/gui/views/editionhistory.py:42
-msgid "Access last edited/created elements"
+#: ../lib/advene/gui/popup.py:521
+msgid "Extract video fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/editionhistory.py:102
-msgid "Created"
+#: ../lib/advene/gui/popup.py:551
+msgid "Incoming"
 msgstr ""
 
-#: ../lib/advene/gui/views/editionhistory.py:103
-msgid "Edited"
+#: ../lib/advene/gui/popup.py:567
+msgid "Outgoing"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:43
-msgid "Links"
+#: ../lib/advene/gui/popup.py:582
+msgid "Related annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:45
-msgid "URL stack"
+#: ../lib/advene/gui/popup.py:589
+msgid "Incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:123
+#: ../lib/advene/gui/popup.py:596
+msgid "Outgoing relations"
+msgstr ""
+
+#: ../lib/advene/gui/popup.py:612
 #, python-format
-msgid "Go to %s"
+msgid "Begin: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:157
-msgid "Push a URL on the stack"
+#: ../lib/advene/gui/popup.py:614
+#, python-format
+msgid "End: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:158
-msgid "Description of the URL"
+#: ../lib/advene/gui/popup.py:615
+#, python-format
+msgid "Duration: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/checker.py:37
-msgid "Checker"
+#: ../lib/advene/gui/popup.py:622
+msgid "Members:"
 msgstr ""
 
-#: ../lib/advene/gui/views/checker.py:39
-msgid "Check various package properties"
+#: ../lib/advene/gui/popup.py:635
+msgid "Edit package properties..."
 msgstr ""
 
-#: ../lib/advene/gui/views/checker.py:90
-msgid "List of possible issues in the current package"
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
+#, python-format
+msgid "%d annotations(s) - statistics"
 msgstr ""
 
-#: ../lib/advene/gui/views/checker.py:108
-msgid "Overlapping"
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
+msgid "Create a new static view..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:52
-msgid "Tag Bag"
+#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:865
+msgid "Create a new dynamic view..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
-msgid "Bag of tags"
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
+msgid "Create a new annotation..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:59
-msgid "New tag"
+#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
+msgid "Create a new schema..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:122
-msgid "New tag name"
+#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
+msgid "Create a new query..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:128
-msgid "Enter a new tag name and select its color."
+#: ../lib/advene/gui/popup.py:651
+msgid "Create a new folder..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3720
-msgid "The tag contains invalid characters"
+#: ../lib/advene/gui/popup.py:652
+msgid "Create a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:175
-msgid "Tag bag options"
+#: ../lib/advene/gui/popup.py:653
+msgid "Insert a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:176
-msgid "Update with new tags"
+#: ../lib/advene/gui/popup.py:654
+msgid "Insert a new resource directory..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:176
-msgid "Automatically display new defined tags"
+#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
+msgid "Insert a soundclip..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:225
-#, python-format
-msgid "Choose the color for tag %s"
+#: ../lib/advene/gui/popup.py:676
+msgid "Play sound"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:249
-msgid "Set color"
+#: ../lib/advene/gui/popup.py:686
+msgid "Create a new annotation type..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:250
-msgid "Remove"
+#: ../lib/advene/gui/popup.py:688
+msgid "Create a new relation type..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:324
-msgid "Drop a tag here to remove it from the list"
+#: ../lib/advene/gui/popup.py:690 ../lib/advene/gui/popup.py:750
+#: ../lib/advene/gui/popup.py:803
+msgid "Select a color"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:333
-msgid "Save as adhoc view"
+#: ../lib/advene/gui/popup.py:699
+#, python-format
+msgid "A caption dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:334
-msgid "Add a new tag"
+#: ../lib/advene/gui/popup.py:708
+#, python-format
+msgid "Caption %s annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:335
-msgid "Display all defined tags"
+#: ../lib/advene/gui/popup.py:718 ../lib/advene/rules/actions.py:119
+msgid "Caption the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:48
-msgid "Transcription"
+#: ../lib/advene/gui/popup.py:740
+msgid "Create a comment view"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:50
-msgid "Display annotations as a text transcription"
+#: ../lib/advene/gui/popup.py:741
+msgid "Generate a caption dynamic view..."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:146
-#, python-format
-msgid "Error in source evaluation %(source)s: %(error)s"
+#: ../lib/advene/gui/popup.py:742
+msgid "Display as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:163
-msgid "Transcription options"
+#: ../lib/advene/gui/popup.py:743
+msgid "Display annotations in table"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
-msgid "Default representation"
+#: ../lib/advene/gui/popup.py:744
+msgid "Export to another format..."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
-msgid "Use the default representation for annotations"
+#: ../lib/advene/gui/popup.py:746
+msgid "Extract Named Entities..."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
-msgid ""
-"If default representation is unchecked,\n"
-"this TALES expression that will be used to format the annotations."
+#: ../lib/advene/gui/popup.py:752
+msgid "Delete all annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:166
-msgid "Separator"
+#: ../lib/advene/gui/popup.py:753
+msgid "Renumber annotations..."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:167
-msgid "This separator will be inserted between the annotations."
+#: ../lib/advene/gui/popup.py:754
+msgid "Shot validation view..."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:168
-msgid "Whitespace"
+#: ../lib/advene/gui/popup.py:766
+#, python-format
+msgid "A follow dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:169
-msgid "Newline"
+#: ../lib/advene/gui/popup.py:775
+#, python-format
+msgid "Follow %s relation-type"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:170
-msgid "Tabulation"
+#: ../lib/advene/gui/popup.py:784
+msgid "Follow the relation"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:171
-msgid "Dash"
+#: ../lib/advene/gui/popup.py:804
+msgid "Delete all relations..."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:172
-msgid "User defined"
+#: ../lib/advene/gui/popup.py:805
+msgid "Create montage from related annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid "User-defined separator"
+#: ../lib/advene/gui/popup.py:806
+msgid "Create dynamic view following relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid ""
-"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
-"a tabulation."
+#: ../lib/advene/gui/popup.py:821 ../lib/advene/gui/edit/elements.py:703
+#, python-format
+msgid "Exception in query: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Display timestamps"
+#: ../lib/advene/gui/popup.py:824
+msgid "Apply query on..."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Insert timestsamp values"
+#: ../lib/advene/gui/popup.py:849
+msgid "Activate view"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:176
-msgid "Display annotation bounds"
+#: ../lib/advene/gui/popup.py:851
+msgid "Open adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:236
-#, python-format
-msgid ""
-"Cannot convert the following annotations,\n"
-"the representation pattern is too complex.\n"
-"%s"
+#: ../lib/advene/gui/util/initialconfig.py:82
+msgid "Initial Advene configuration"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:247
+#: ../lib/advene/gui/util/initialconfig.py:83
 msgid ""
-"Cannot validate the update.\n"
-"The representation pattern is too complex."
+"<span size='large'><b>Welcome in Advene</b>\n"
+"This is the first time that you run Advene. Please answer some basic "
+"configuration questions. You will be able to modify these choices from the "
+"Advene interface, in the Edit/Preferences menu.</span>"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:273
-msgid "Save transcription to a text file"
+#: ../lib/advene/gui/util/initialconfig.py:84
+msgid "Interface language"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:274
-msgid "Apply the modifications"
+#: ../lib/advene/gui/util/initialconfig.py:84
+msgid "Language used for the interface"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:275
-msgid "Find text"
+#: ../lib/advene/gui/util/initialconfig.py:90
+msgid "Weekly check for Advene updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:276
-msgid "Quickly switch display options"
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for data files"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:277
-msgid "Refresh the transcription"
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for storing data files (Advene packages)"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:278
-msgid "Edit preferences"
+#: ../lib/advene/gui/util/initialconfig.py:94
+msgid "Directories to search for movies"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:697
+#: ../lib/advene/gui/util/initialconfig.py:94
 #, python-format
-msgid "Cannot write to %(filename)s: %(error)s:"
-msgstr ""
-
-#: ../lib/advene/gui/views/activebookmarks.py:52
-#: ../lib/advene/gui/views/activebookmarks.py:54
-msgid "ActiveBookmarks"
+msgid ""
+"List of directories (separated by %(pathsep)s) to search for movie files."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:441
-msgid "Chronological order"
+#: ../lib/advene/gui/util/initialconfig.py:95
+msgid "First look for movie file in the same directory as the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:442
-msgid "Completeness and chronological order"
+#: ../lib/advene/gui/util/initialconfig.py:95
+msgid ""
+"If checked, the movie file will be searched for in the same directory as the "
+"referencing package."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:458
-msgid "Bookmark duration"
+#: ../lib/advene/gui/util/__init__.py:44 ../lib/advene/gui/edit/create.py:106
+msgid "Plain text content"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:459
-msgid "Enter the duration (in ms) to convert bookmarks into annotations"
+#: ../lib/advene/gui/util/__init__.py:45
+msgid "HTML content"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:481
-msgid "User-specified duration"
+#: ../lib/advene/gui/util/__init__.py:46 ../lib/advene/gui/edit/create.py:107
+msgid "Simple-structured content"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:482
-msgid "2s duration"
+#: ../lib/advene/gui/util/__init__.py:47
+msgid "List of numeric values"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:483
-msgid "Complete coverage"
+#: ../lib/advene/gui/util/__init__.py:48 ../lib/advene/gui/edit/create.py:108
+msgid "SVG graphics content"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:501
-msgid "Drop a bookmark here to remove it from the list"
+#: ../lib/advene/gui/util/__init__.py:389
+#, python-format
+msgid ""
+"Annotation Type %(title)s:\n"
+"%(count)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:520
-#: ../lib/advene/gui/views/bookmarks.py:243
-msgid "Insert a bookmark for the current video time"
+#: ../lib/advene/gui/util/__init__.py:395
+#, python-format
+msgid ""
+"Relation Type %(title)s:\n"
+"%(count)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:528
-msgid "Type of the annotations that will be created"
+#: ../lib/advene/gui/util/dialog.py:414 ../lib/advene/gui/util/dialog.py:453
+msgid "Name the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:561
-msgid "Reorder active bookmarks"
+#: ../lib/advene/gui/util/dialog.py:417 ../lib/advene/gui/util/dialog.py:454
+msgid "Choose a name for the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:562
-msgid "Complete bookmarks into annotations"
+#: ../lib/advene/gui/util/dialog.py:492
+msgid "Open a file"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:563
-msgid "Save the current state"
+#: ../lib/advene/gui/util/dialog.py:517 ../lib/advene/gui/util/dialog.py:553
+msgid "N/C"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:863
-msgid "Remove end timestamp"
+#: ../lib/advene/gui/util/dialog.py:522
+msgid "Alias"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1071
+#: ../lib/advene/gui/util/dialog.py:542
 msgid ""
-"Error: cannot find an appropriate schema to create the Active-bookmark type."
+"Press to\n"
+"display\n"
+"information"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1076
-msgid "Active bookmark"
+#: ../lib/advene/gui/util/dialog.py:561
+msgid "Wait..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1114
-msgid "Validate the annotation"
+#: ../lib/advene/gui/util/dialog.py:565
+#, python-format
+msgid "Error: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1260
-msgid "Duplicate bookmark"
+#: ../lib/advene/gui/util/dialog.py:585
+msgid "Any type of file"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1261
-msgid "Remove bookmark"
+#: ../lib/advene/gui/util/dialog.py:587
+msgid "Advene files (.xml, .azp, .apl)"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1270
-msgid "Remove begin timestamp"
+#: ../lib/advene/gui/util/dialog.py:589
+msgid "Advene session (.apl)"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1277
-msgid "Complete bookmark"
+#: ../lib/advene/gui/util/dialog.py:590
+msgid "Audio files"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1281
-msgid "Change type to"
+#: ../lib/advene/gui/util/dialog.py:591
+msgid "Video files"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:48
-msgid "Bookmarks importer"
+#: ../lib/advene/gui/util/dialog.py:636
+#: ../lib/advene/gui/edit/properties.py:423
+msgid "Choose a directory"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:69
-msgid "Bookmarks"
+#: ../lib/advene/gui/util/dialog.py:689
+msgid "Select an element"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:71
-msgid "Bookmark timecodes with their corresponding screenshots"
+#: ../lib/advene/gui/edit/rules.py:88 ../lib/advene/gui/edit/rules.py:90
+#: ../lib/advene/gui/edit/create.py:252
+msgid "Rule"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:142
-msgid "Select the annotation type to generate"
+#: ../lib/advene/gui/edit/rules.py:99 ../lib/advene/gui/edit/create.py:242
+msgid "Subviews"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:147
-msgid "Choose a duration"
+#: ../lib/advene/gui/edit/rules.py:126
+msgid "Add a new rule"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:148
-msgid "Enter the standard duration (in ms) of created annotations."
+#: ../lib/advene/gui/edit/rules.py:130
+msgid "Subview"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:165
-msgid "Converted from bookmarks"
+#: ../lib/advene/gui/edit/rules.py:133
+msgid "Add a subview list"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:223
-msgid "Drop a position here to remove it from the list"
+#: ../lib/advene/gui/edit/rules.py:139
+msgid "Remove the current rule"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:244
-msgid "Convert bookmarks to annotations"
+#: ../lib/advene/gui/edit/rules.py:279
+msgid "Source expression"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3609
-msgid "Comment here"
+#: ../lib/advene/gui/edit/rules.py:281
+msgid "Return expression"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewplugin.py:60
-msgid "Generic view plugin"
+#: ../lib/advene/gui/edit/rules.py:355
+msgid "For all elements in "
 msgstr ""
 
-#: ../lib/advene/gui/views/viewplugin.py:62
-msgid "You should not ever see this tooltip..."
+#: ../lib/advene/gui/edit/rules.py:356
+msgid "All annotations of the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:51
-#: ../lib/advene/gui/views/interactivequery.py:99
-msgid "Interactive query"
+#: ../lib/advene/gui/edit/rules.py:357
+msgid "All views of the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:53
-msgid "Interactive query dialog"
+#: ../lib/advene/gui/edit/rules.py:358 ../lib/advene/gui/edit/rules.py:802
+msgid "The context annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:59
-#: ../lib/advene/gui/views/interactivequery.py:256
-msgid "Save query"
+#: ../lib/advene/gui/edit/rules.py:359 ../lib/advene/gui/edit/rules.py:803
+msgid "The annotations of the context type"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:122
-#: ../lib/advene/gui/views/interactivequery.py:172
+#: ../lib/advene/gui/edit/rules.py:362 ../lib/advene/core/controller.py:584
 #, python-format
-msgid ""
-"Invalid query.\n"
-"The following fields have an invalid value:\n"
-"%s"
+msgid "Annotations of type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:136
-#: ../lib/advene/gui/views/interactivequery.py:296
-msgid "Saving the query..."
+#: ../lib/advene/gui/edit/rules.py:374
+msgid "Return "
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:137
-#: ../lib/advene/gui/views/interactivequery.py:297
-msgid "Give a title and identifier for saving the query"
+#: ../lib/advene/gui/edit/rules.py:376 ../lib/advene/gui/edit/rules.py:791
+msgid "The element"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:180
-msgid "Expert search"
+#: ../lib/advene/gui/edit/rules.py:377 ../lib/advene/gui/edit/rules.py:792
+msgid "The element's content"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:186
-#, python-format
-msgid ""
-"TALES error in interactive expression:\n"
-"%s"
+#: ../lib/advene/gui/edit/rules.py:392
+msgid "If the element matches "
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:247
-msgid "Interactive result"
+#: ../lib/advene/gui/edit/rules.py:394
+msgid "Return the element if it matches "
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:249
-msgid "Interactive result display"
+#: ../lib/advene/gui/edit/rules.py:412 ../lib/advene/gui/edit/rules.py:621
+msgid "All conditions must be met"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:274
-msgid "Result of interactive query"
+#: ../lib/advene/gui/edit/rules.py:413 ../lib/advene/gui/edit/rules.py:622
+msgid "Any condition can be met"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:278
-msgid "Result of a query"
+#: ../lib/advene/gui/edit/rules.py:497 ../lib/advene/gui/edit/rules.py:567
+#, python-format
+msgid "Rule <b>%s</b>"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3188
-#, python-format
-msgid "'%s'"
+#: ../lib/advene/gui/edit/rules.py:578
+msgid "Rule name"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:333
-#, python-format
-msgid "Comment on annotations containing %s"
+#: ../lib/advene/gui/edit/rules.py:595
+msgid "Event"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:352
-msgid "Choose the annotation type where annotations will be created."
+#: ../lib/advene/gui/edit/rules.py:603
+msgid "If"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:356
+#: ../lib/advene/gui/edit/rules.py:642
+msgid "Then"
+msgstr ""
+
+#: ../lib/advene/gui/edit/rules.py:687
+msgid "When the "
+msgstr ""
+
+#: ../lib/advene/gui/edit/rules.py:700
+msgid " occurs,"
+msgstr ""
+
+#: ../lib/advene/gui/edit/rules.py:727 ../lib/advene/gui/edit/rules.py:730
 #, python-format
-msgid "Copied result of the '%s' query"
+msgid "Condition expression: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:368
+#: ../lib/advene/gui/edit/rules.py:769
+msgid "The annotation type"
+msgstr ""
+
+#: ../lib/advene/gui/edit/rules.py:772
 #, python-format
-msgid "Search/replace content in %d elements"
+msgid "The value of the %s attribute"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3185
-msgid "Empty quicksearch string"
+#: ../lib/advene/gui/edit/rules.py:774
+msgid "The annotation fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:396
-msgid "Edit query again"
+#: ../lib/advene/gui/edit/rules.py:775
+msgid "The annotation begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:400
-#: ../lib/advene/gui/views/finder.py:436
-msgid "Edit query"
+#: ../lib/advene/gui/edit/rules.py:776
+msgid "The annotation end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:537
-msgid "String to search"
+#: ../lib/advene/gui/edit/rules.py:778
+msgid "The annotation MIME-type"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:410
-msgid "Search again"
+#: ../lib/advene/gui/edit/rules.py:779
+msgid "The annotation's incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:416
-msgid "Empty result"
+#: ../lib/advene/gui/edit/rules.py:780
+msgid "The annotation's outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:425
+#: ../lib/advene/gui/edit/rules.py:783
 #, python-format
-msgid "Result is a list of %d annotations."
+msgid "The %s-related incoming annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:427
+#: ../lib/advene/gui/edit/rules.py:787
 #, python-format
-msgid "Result is a list of  %(number)d elements with %(elements)s."
+msgid "The %s-related outgoing annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:470
-msgid "Other elements"
+#: ../lib/advene/gui/edit/rules.py:793
+msgid "The element fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:474
-msgid "Display annotations in timeline"
+#: ../lib/advene/gui/edit/rules.py:794
+msgid "The element begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:475
-msgid "Display annotations as transcription"
+#: ../lib/advene/gui/edit/rules.py:795
+msgid "The element end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:481
-#: ../lib/advene/gui/views/interactivequery.py:503
-msgid "Export table"
+#: ../lib/advene/gui/edit/rules.py:796
+msgid "The element duration"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:482
-msgid "Create annotations from the result"
+#: ../lib/advene/gui/edit/rules.py:797
+msgid "The element type"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:483
-msgid "Define a montage with the result"
+#: ../lib/advene/gui/edit/rules.py:798
+msgid "The element's incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:484
-msgid "Create a comment view with the result"
+#: ../lib/advene/gui/edit/rules.py:799
+msgid "The element's outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:485
-msgid "Search and replace strings in the annotations content"
+#: ../lib/advene/gui/edit/rules.py:800
+msgid "The context"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:510
-msgid "Edit elements"
+#: ../lib/advene/gui/edit/rules.py:801
+msgid "The context fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:516
-msgid "Open in python evaluator"
+#: ../lib/advene/gui/edit/rules.py:813
+#, python-format
+msgid "annotation-type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:519
+#: ../lib/advene/gui/edit/rules.py:816
 #, python-format
-msgid ""
-"Result:\n"
-"%s"
+msgid "relation-type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:561
-msgid "Results of _interactive query"
+#: ../lib/advene/gui/edit/rules.py:838
+msgid "Select a condition"
 msgstr ""
 
-#: ../lib/advene/gui/views/relationdisplay.py:34
-msgid "RelationDisplay"
+#: ../lib/advene/gui/edit/rules.py:882
+#, python-format
+msgid "Parameter %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/relationdisplay.py:36
-msgid "Display the contents of a relation"
+#: ../lib/advene/gui/edit/rules.py:996
+msgid "Select an action"
 msgstr ""
 
-#: ../lib/advene/gui/views/relationdisplay.py:79
-msgid "No relation"
+#: ../lib/advene/gui/edit/rules.py:1087
+msgid "Activate?"
 msgstr ""
 
-#: ../lib/advene/gui/views/relationdisplay.py:104
-#: ../lib/advene/gui/views/annotationdisplay.py:253
-msgid "Contents"
+#: ../lib/advene/gui/edit/properties.py:37
+#: ../lib/advene/gui/edit/shapewidget.py:1599
+msgid "Properties"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:62
-msgid "Cannot go back: first item in history"
+#: ../lib/advene/gui/edit/properties.py:376
+msgid "Choose a file"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:220
-#, python-format
-msgid "%s%% loaded"
+#: ../lib/advene/gui/edit/frameselector.py:44
+msgid "Click on a frame to select its time."
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:223
-#, python-format
-msgid "Title %s"
+#: ../lib/advene/gui/edit/frameselector.py:181
+msgid "Select the appropriate snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:287
-msgid "HTML Viewer"
+#: ../lib/advene/gui/edit/frameselector.py:234
+#: ../lib/advene/gui/edit/frameselector.py:287
+msgid "Click to see more frames or scroll with the mouse wheel"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:289
-msgid "Embedded HTML widget"
+#: ../lib/advene/gui/edit/create.py:81
+#, python-format
+msgid "%s creation"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:319
-msgid "No available HTML rendering component"
+#: ../lib/advene/gui/edit/create.py:82
+#, python-format
+msgid ""
+"To create a new element of type %s,\n"
+"you must give the following information."
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:36
-msgid "ViewBook"
+#: ../lib/advene/gui/edit/create.py:111
+msgid "Dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:57
-#: ../lib/advene/gui/views/viewbook.py:64
-msgid "Cannot remove this widget, it is essential."
+#: ../lib/advene/gui/edit/create.py:112
+msgid "HTML template"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:135
-msgid "Detach"
+#: ../lib/advene/gui/edit/create.py:113
+msgid "Plain XML"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:139
-#: ../lib/advene/gui/views/editaccumulator.py:76
-msgid "Close"
+#: ../lib/advene/gui/edit/create.py:114
+msgid "SVG template"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:157
-msgid "Rename the view"
+#: ../lib/advene/gui/edit/create.py:115
+msgid "Plain text template"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:158
-msgid "Please enter the new name of the view"
+#: ../lib/advene/gui/edit/create.py:118
+msgid "Simple query"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:197
-msgid "Detach view in its own window, or drag-and-drop to another zone"
+#: ../lib/advene/gui/edit/create.py:120
+msgid "Directory"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:211
-msgid "Close view"
+#: ../lib/advene/gui/edit/create.py:122 ../lib/advene/util/helper.py:411
+msgid "Resource File"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:286
-msgid "Open a new transcription for..."
+#: ../lib/advene/gui/edit/create.py:128
+msgid "No available type."
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:298
-msgid "Create a new comment view"
+#: ../lib/advene/gui/edit/create.py:172
+#, python-format
+msgid ""
+"The identifier %s is not valid.\n"
+"It must be composed of non-accentuated alphabetic characters\n"
+"Underscore is allowed."
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:300
-msgid "Open a new view"
+#: ../lib/advene/gui/edit/create.py:177
+#, python-format
+msgid "The identifier %s is already defined."
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:375
-#, python-format
-msgid "Use annotation-type %s :"
+#: ../lib/advene/gui/edit/create.py:310
+msgid "New resource data"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:378
-#: ../lib/advene/gui/views/viewbook.py:404
-msgid "to edit it"
+#: ../lib/advene/gui/edit/imports.py:129 ../lib/advene/gui/edit/imports.py:130
+#: ../lib/advene/core/controller.py:585
+msgid "Views"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:379
-#: ../lib/advene/gui/views/viewbook.py:405
-#: ../lib/advene/gui/views/viewbook.py:437
-msgid "to create a new static view"
+#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
+msgid "Schemas"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:381
-msgid "in a timeline"
+#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
+#: ../lib/advene/gui/edit/elements.py:521
+msgid "Relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:382
-msgid "as a montage"
+#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
+msgid "Queries"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:383
-#: ../lib/advene/gui/views/viewbook.py:436
-msgid "in a table"
+#: ../lib/advene/gui/edit/imports.py:320
+msgid "Imported?"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
-msgid "in a query"
+#: ../lib/advene/gui/edit/imports.py:337 ../lib/advene/gui/edit/elements.py:513
+#: ../lib/advene/gui/edit/elements.py:562
+#: ../lib/advene/gui/edit/elements.py:649
+#: ../lib/advene/gui/edit/elements.py:729
+#: ../lib/advene/gui/edit/elements.py:786
+#: ../lib/advene/gui/edit/elements.py:878
+#: ../lib/advene/gui/edit/elements.py:947
+#: ../lib/advene/gui/edit/elements.py:1059
+#: ../lib/advene/gui/edit/elements.py:1121
+msgid "URI"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
+#: ../lib/advene/gui/edit/imports.py:359
+msgid "Choose the package to import, and its alias"
+msgstr ""
+
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
 #, python-format
-msgid "Query %s"
+msgid "Package %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:385
-#: ../lib/advene/gui/views/viewbook.py:407
-msgid "in the TALES browser"
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
+msgid "No title"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:385
-#, python-format
-msgid "Browsing %s"
+#: ../lib/advene/gui/edit/shapewidget.py:89
+msgid "Generic shape"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:401
+#: ../lib/advene/gui/edit/shapewidget.py:254
+#: ../lib/advene/gui/edit/shapewidget.py:753
 #, python-format
-msgid "Use annotation %s :"
+msgid "Link to %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:407
-#, python-format
-msgid "Browse %s"
+#: ../lib/advene/gui/edit/shapewidget.py:346
+#: ../lib/advene/gui/edit/shapewidget.py:1301
+msgid "Link"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:408
-msgid "to display its contents"
+#: ../lib/advene/gui/edit/shapewidget.py:351
+msgid "Link label"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:408
-#, python-format
-msgid "%s"
+#: ../lib/advene/gui/edit/shapewidget.py:369
+msgid "Linewidth"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:409
-msgid "as a bookmark"
+#: ../lib/advene/gui/edit/shapewidget.py:374
+msgid "Filled"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:427
-msgid "as the context for the query..."
+#: ../lib/advene/gui/edit/shapewidget.py:382
+msgid "Opacity"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:431
-msgid "Set of annotations"
+#: ../lib/advene/gui/edit/shapewidget.py:424
+#, python-format
+msgid "Properties of %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:432
-msgid "Use annotations:"
+#: ../lib/advene/gui/edit/shapewidget.py:471
+msgid "Rectangle"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:435
-msgid "to edit them"
+#: ../lib/advene/gui/edit/shapewidget.py:551
+#: ../lib/advene/gui/edit/shapewidget.py:664
+msgid "Text"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:438
-msgid "as bookmarks"
+#: ../lib/advene/gui/edit/shapewidget.py:675
+msgid "Textsize"
 msgstr ""
 
-#: ../lib/advene/gui/views/singletonpopup.py:32
-msgid "SingletonPopup"
+#: ../lib/advene/gui/edit/shapewidget.py:689
+msgid "Image"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
-msgid "Timeline"
+#: ../lib/advene/gui/edit/shapewidget.py:773
+msgid "Href"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:123
-msgid "Display annotations on a timeline"
+#: ../lib/advene/gui/edit/shapewidget.py:783
+msgid "Line"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:137
-msgid "Limit display to current area"
+#: ../lib/advene/gui/edit/shapewidget.py:879
+msgid "Draw an arrow"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:138
-#: ../lib/advene/gui/views/timeline.py:3265
-msgid "Display whole movie"
+#: ../lib/advene/gui/edit/shapewidget.py:890
+msgid "Arrow size"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:168
-#, python-format
-msgid "Cannot find annotation type %s"
+#: ../lib/advene/gui/edit/shapewidget.py:1105
+msgid "Close path"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:218
-msgid "No scrolling"
+#: ../lib/advene/gui/edit/shapewidget.py:1184
+msgid "Circle"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:219
-msgid "Continuous scrolling"
+#: ../lib/advene/gui/edit/shapewidget.py:1239
+msgid "Ellipse"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:220
-msgid "Discrete scrolling"
+#: ../lib/advene/gui/edit/shapewidget.py:1600
+msgid "SVG"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:221
-msgid "Annotation scrolling"
+#: ../lib/advene/gui/edit/shapewidget.py:2158
+msgid "Load SVG"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:483
-#, python-format
-msgid "%d annotations"
+#: ../lib/advene/gui/edit/shapewidget.py:2164
+msgid "Save SVG"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:486
-msgid "Display all types"
+#: ../lib/advene/gui/edit/importer.py:46
+msgid "Importer"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:488
-#, python-format
-msgid ""
-"There are %d annotations.\n"
-"The current timeline may take a long time to display them, so only the first "
-"two annotation types are displayed. Use the annotation type selector (second "
-"button in the timeline) to select other annotations types to display, or "
-"click on the 'Display all types' button below."
+#: ../lib/advene/gui/edit/importer.py:102
+#: ../lib/advene/gui/edit/importer.py:112
+msgid "Advene package importer"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:963
-msgid "Split at current player position"
+#: ../lib/advene/gui/edit/importer.py:116
+msgid "Not likely"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:967
-msgid "Center and zoom"
+#: ../lib/advene/gui/edit/importer.py:138
+#, python-format
+msgid "Completed conversion: %(statistics)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1058
-#: ../lib/advene/gui/views/tree.py:808 ../lib/advene/gui/main.py:4563
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
+#: ../lib/advene/gui/edit/importer.py:144
+#: ../lib/advene/gui/edit/dvdselect.py:73
+msgid "Stop"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1071
-#: ../lib/advene/gui/views/tree.py:821
-msgid "Create a relation"
+#: ../lib/advene/gui/edit/importer.py:254
+msgid "Choose the file to import"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1081
-#: ../lib/advene/gui/views/tree.py:831
-msgid "Create a new relation-type."
+#: ../lib/advene/gui/edit/importer.py:273
+msgid "Filter"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1107
-msgid "Merge with this annotation"
+#: ../lib/advene/gui/edit/importer.py:277
+msgid "Options"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1116
-msgid "Align both begin times"
+#: ../lib/advene/gui/edit/importer.py:287
+msgid "Start"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1117
-msgid "Align both end times"
+#: ../lib/advene/gui/edit/dvdselect.py:82
+#: ../lib/advene/gui/edit/dvdselect.py:112
+msgid "Preview"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1118
-msgid "Align end time to selected begin time"
+#: ../lib/advene/gui/edit/dvdselect.py:91
+msgid ""
+"Select the correct\n"
+"title and chapter\n"
+"of the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1119
-msgid "Align begin time to selected end time"
+#: ../lib/advene/gui/edit/dvdselect.py:104
+msgid "Chapter"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1120
-msgid "Align all times"
+#: ../lib/advene/gui/edit/merge.py:33
+msgid "Create element"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1158
-#: ../lib/advene/gui/views/tree.py:700
-msgid "Cannot delete the annotation : it has relations."
+#: ../lib/advene/gui/edit/merge.py:34
+msgid "Create annotation (duplicate id)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1233
-msgid "Select the appropriate relation type"
+#: ../lib/advene/gui/edit/merge.py:35
+msgid "Create relation (duplicate id)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1252
-#: ../lib/advene/gui/views/tree.py:757
-#, python-format
-msgid "Duplicate selection to type %s"
+#: ../lib/advene/gui/edit/merge.py:36
+msgid "Update the color"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1255
-#: ../lib/advene/gui/views/tree.py:760
-#, python-format
-msgid "Move selection to type %s"
+#: ../lib/advene/gui/edit/merge.py:37
+msgid "Update the representation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1264
-#: ../lib/advene/gui/views/tree.py:769
-#, python-format
-msgid "Duplicate annotation to type %s"
+#: ../lib/advene/gui/edit/merge.py:38
+msgid "Update the description"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1268
-#: ../lib/advene/gui/views/tree.py:773
-#, python-format
-msgid "Move annotation to type %s"
+#: ../lib/advene/gui/edit/merge.py:39
+msgid "Update the title"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1275
-#, python-format
-msgid "Duplicate to type %(type)s at %(position)s"
+#: ../lib/advene/gui/edit/merge.py:40
+msgid "Update the mimetype"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1281
-#, python-format
-msgid "Move to type %(type)s at %(position)s"
+#: ../lib/advene/gui/edit/merge.py:41
+msgid "Update the begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1291
-#: ../lib/advene/gui/views/tree.py:784
-msgid "Duplicate and create a relation"
+#: ../lib/advene/gui/edit/merge.py:42
+msgid "Update the end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1302
-#, python-format
-msgid "Duplicate at %s and create a relation"
+#: ../lib/advene/gui/edit/merge.py:43
+msgid "Update the content"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1333
-msgid "Annotation filter"
+#: ../lib/advene/gui/edit/merge.py:44
+msgid "Update the matchFilter"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1334
-msgid "Enter the searched string"
+#: ../lib/advene/gui/edit/merge.py:45
+msgid "Update the member types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1442
-#, python-format
-msgid "Duplicate all annotations to type %s"
+#: ../lib/advene/gui/edit/merge.py:46
+msgid "Update tags"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1444
-#, python-format
-msgid "Move all annotations to type %s"
+#: ../lib/advene/gui/edit/merge.py:90
+msgid "Difference between original and merged elements"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1446
-#, python-format
-msgid "Duplicate all annotations matching a string to type %s"
+#: ../lib/advene/gui/edit/merge.py:136
+msgid "Current element"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1448
-#, python-format
-msgid "Move all annotations matching a string to type %s"
+#: ../lib/advene/gui/edit/merge.py:141
+msgid "Updated element"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1450
-#, python-format
-msgid "Align all annotation time codes using %s as reference."
+#: ../lib/advene/gui/edit/merge.py:147
+msgid "Show diff"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1452
-#, python-format
-msgid "Align all annotation contents using %s as reference"
+#: ../lib/advene/gui/edit/merge.py:180
+msgid "Merge?"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1642
-#: ../lib/advene/gui/views/table.py:240
-msgid "Cannot update the annotation, its representation is too complex"
+#: ../lib/advene/gui/edit/merge.py:197
+msgid "Element"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1936
-#: ../lib/advene/gui/views/timeline.py:1965
+#: ../lib/advene/gui/edit/merge.py:215
 #, python-format
-msgid "Displaying %(count)d / %(total)d annotations..."
+msgid "Merge elements from %s into %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1947
-msgid "Displaying done."
+#: ../lib/advene/gui/edit/merge.py:267
+msgid "All"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2439
-msgid "Create a new annotation"
+#: ../lib/advene/gui/edit/merge.py:272 ../lib/advene/core/controller.py:1152
+msgid "None"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2440
-msgid "Zoom on region"
+#: ../lib/advene/gui/edit/montage.py:51
+msgid "Montage"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2441
-msgid "Restrict display to region"
+#: ../lib/advene/gui/edit/montage.py:53
+msgid "Dynamic montage of annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2560
-msgid "New annotation at player time"
+#: ../lib/advene/gui/edit/montage.py:61
+msgid "Render"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2564
-msgid "New annotation at mouse position"
+#: ../lib/advene/gui/edit/montage.py:176
+msgid "Remove from montage"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2568
-msgid "Selection"
+#: ../lib/advene/gui/edit/montage.py:310
+#, python-format
+msgid ""
+"Exporting montage %(title)s\n"
+"to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2694
-msgid "Cannot zoom more"
+#: ../lib/advene/gui/edit/montage.py:402
+msgid "Drop an annotation here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2915
-#, python-format
-msgid "From schema %s"
+#: ../lib/advene/gui/edit/montage.py:414
+msgid "Play the montage"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2977
-msgid "Restrict playing to this annotation-type"
+#: ../lib/advene/gui/edit/montage.py:419
+msgid "Save the view in the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2984
-msgid "Goto previous annotation"
+#: ../lib/advene/gui/edit/montage.py:467
+msgid "Set zoom level"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2995
-msgid "Goto next annotation"
+#: ../lib/advene/gui/edit/montage.py:472
+msgid "Set 100% zoom"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3006
-msgid "+"
+#: ../lib/advene/gui/edit/montage.py:551
+msgid "Total duration:"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3064
-msgid "Open an annotation display view"
+#: ../lib/advene/gui/edit/timeadjustment.py:97
+#, python-format
+msgid "Decrement value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3071
-msgid "Open a slave montage view (coordinated zoom level)"
+#: ../lib/advene/gui/edit/timeadjustment.py:99
+#, python-format
+msgid "Increment value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3106
+#: ../lib/advene/gui/edit/timeadjustment.py:125
 msgid ""
-"<b>Statistics about current selection</b>\n"
-"\n"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:3113
-msgid "No selected annotation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:3117
-#, python-format
-msgid "%d selected annotation(s)"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:3124
-msgid "Unselect all annotations"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:3125
-msgid "Create a static view"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:3126
-msgid "Highlight selection in other views"
+"Click to play\n"
+"Control+click to set to current time\n"
+"Scroll to modify value (with control/shift)\n"
+"Right-click to invalidate screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3127
-#: ../lib/advene/gui/views/timeline.py:3713
-msgid "Tag selection"
+#: ../lib/advene/gui/edit/timeadjustment.py:140
+msgid ""
+"Enter a timecode.\n"
+"An integer value will be considered as milliseconds.\n"
+"A float value (12.2) will be considered as seconds.\n"
+"HH:MM:SS.sss values are possible."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3128
-msgid "Delete selected annotations"
+#: ../lib/advene/gui/edit/timeadjustment.py:154
+msgid "Set to current player position"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3129
-msgid "Display selection in a table"
+#: ../lib/advene/gui/edit/elements.py:78
+#, python-format
+msgid "No edit popup available for element %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3130
-msgid "Center and zoom on selection"
+#: ../lib/advene/gui/edit/elements.py:99
+msgid "Edit Window"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3131
-msgid "Edit selected annotations"
+#: ../lib/advene/gui/edit/elements.py:138
+msgid "Apply changes and close the edit window"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3132
-msgid "Merge annotations"
+#: ../lib/advene/gui/edit/elements.py:143
+msgid "Apply changes"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3133
-msgid "Display statistics"
+#: ../lib/advene/gui/edit/elements.py:277
+msgid "Content has been modified. Close anyway and lose data?"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3258
-msgid "Goto previous page"
+#: ../lib/advene/gui/edit/elements.py:337
+#, python-format
+msgid "View %s (read-only)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3270
-msgid "Goto next page"
+#: ../lib/advene/gui/edit/elements.py:373
+#, python-format
+msgid "Display %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3324
-msgid "Inspector locked. Click here or in the timeline background to unlock."
+#: ../lib/advene/gui/edit/elements.py:457
+msgid "Apply changes and edit previous annotation of same type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3352
-msgid ""
-"Delete the selected annotations or drop an annotation here to delete it."
+#: ../lib/advene/gui/edit/elements.py:461
+msgid "Apply changes and edit next annotation of same type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3374
-msgid ""
-"Drag an annotation type here to remove it from display.\n"
-"Click to edit all displayed types"
+#: ../lib/advene/gui/edit/elements.py:467
+msgid "Unhighlight annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3386
-msgid "Selection actions"
+#: ../lib/advene/gui/edit/elements.py:471
+msgid "Highlight annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3401
-msgid "Display relations"
+#: ../lib/advene/gui/edit/elements.py:502
+msgid "Fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3407
-msgid "Display all relations"
+#: ../lib/advene/gui/edit/elements.py:525 ../lib/advene/core/controller.py:585
+msgid "Tags"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3484
-msgid "Center on current player position."
+#: ../lib/advene/gui/edit/elements.py:621
+msgid "Apply changes and visualise in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3500
-msgid "Automatically activate loop when clicking on an annotation"
+#: ../lib/advene/gui/edit/elements.py:626
+msgid "Apply changes and activate the view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3524
-msgid "Displayed"
+#: ../lib/advene/gui/edit/elements.py:634
+#: ../lib/advene/gui/edit/elements.py:715
+#: ../lib/advene/gui/edit/elements.py:772
+#: ../lib/advene/gui/edit/elements.py:863
+#: ../lib/advene/gui/edit/elements.py:932
+#: ../lib/advene/gui/edit/elements.py:1034
+msgid "Title (name)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3532
-msgid "Not displayed"
+#: ../lib/advene/gui/edit/elements.py:638
+msgid "Name of the view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3580
-msgid "< All <"
+#: ../lib/advene/gui/edit/elements.py:662
+msgid "Class"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3584
-msgid "> All >"
+#: ../lib/advene/gui/edit/elements.py:665
+msgid "Match Filter"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3600
-msgid "Displayed annotation types"
+#: ../lib/advene/gui/edit/elements.py:708
+msgid "Validate and run query on package"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3625
-msgid "Relation type"
+#: ../lib/advene/gui/edit/elements.py:719
+msgid "Name of the query"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3625
-msgid "Display relation types"
+#: ../lib/advene/gui/edit/elements.py:776
+msgid "Name of the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3626
-msgid "Relation content"
+#: ../lib/advene/gui/edit/elements.py:794
+#: ../lib/advene/gui/edit/elements.py:885
+#: ../lib/advene/gui/edit/elements.py:964
+#: ../lib/advene/gui/edit/elements.py:1078
+msgid "Description"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3626
-msgid "Display relation content"
+#: ../lib/advene/gui/edit/elements.py:798
+#: ../lib/advene/gui/edit/elements.py:889
+#: ../lib/advene/gui/edit/elements.py:968
+#: ../lib/advene/gui/edit/elements.py:1082
+msgid "Textual description of the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3627 ../lib/advene/gui/popup.py:516
-msgid "Highlight"
+#: ../lib/advene/gui/edit/elements.py:803
+msgid "Default dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3627
-msgid "Highlight active annotations"
+#: ../lib/advene/gui/edit/elements.py:807
+msgid "Dynamic view to activate on package load"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3714
-msgid "Enter the tag for the selection"
+#: ../lib/advene/gui/edit/elements.py:812
+msgid "Default static view"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:248
-msgid "No children in on_iter_children()!"
+#: ../lib/advene/gui/edit/elements.py:816
+msgid "Static view to open on package load"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:263
-msgid "No children in on_iter_nth_child()"
+#: ../lib/advene/gui/edit/elements.py:821
+msgid "Default adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:317
-msgid "List of views"
+#: ../lib/advene/gui/edit/elements.py:825
+msgid "Adhoc view to open on package load"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:318
-msgid "Static views"
+#: ../lib/advene/gui/edit/elements.py:830
+msgid "Cached duration"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:319
-msgid "Dynamic views"
+#: ../lib/advene/gui/edit/elements.py:834
+msgid "Cached duration in ms"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:320
-msgid "Admin views"
+#: ../lib/advene/gui/edit/elements.py:839
+msgid "Mediafile"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:321
-msgid "Adhoc views"
+#: ../lib/advene/gui/edit/elements.py:843
+msgid "Location of associated media file"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
-msgid "Tree view"
+#: ../lib/advene/gui/edit/elements.py:867
+msgid "Name of the schema"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:453
-msgid "Package View"
+#: ../lib/advene/gui/edit/elements.py:899
+#: ../lib/advene/gui/edit/elements.py:979
+msgid "TALES expression returning a color for the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:42
-msgid "EditAccumulator"
+#: ../lib/advene/gui/edit/elements.py:906
+#: ../lib/advene/gui/edit/elements.py:997
+msgid "Item color"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-#: ../lib/advene/gui/views/annotationdisplay.py:256
-msgid "Validate"
+#: ../lib/advene/gui/edit/elements.py:910
+#: ../lib/advene/gui/edit/elements.py:1001
+msgid ""
+"TALES expression returning a color for the items contained by the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/relation.py:68
-msgid "Relations view"
+#: ../lib/advene/gui/edit/elements.py:936
+#: ../lib/advene/gui/edit/elements.py:1038
+msgid "Name of the type"
 msgstr ""
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4339
-msgid "Caption"
+#: ../lib/advene/gui/edit/elements.py:954
+#: ../lib/advene/gui/edit/elements.py:1043
+#: ../lib/advene/gui/edit/elements.py:1312
+msgid "MIME Type"
 msgstr ""
 
-#: ../lib/advene/gui/views/caption.py:32
-msgid "Display a text caption below the video output"
+#: ../lib/advene/gui/edit/elements.py:958
+#: ../lib/advene/gui/edit/elements.py:1047
+msgid "MIMEType of the content"
 msgstr ""
 
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4338
-msgid "Scroller"
+#: ../lib/advene/gui/edit/elements.py:990
+msgid ""
+"TALES expression used to get a compact representation of the annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:329
+#: ../lib/advene/gui/edit/elements.py:991
 #, python-format
-msgid ""
-"View <b>%(title)s</b>\n"
-"Id: %(id)s"
+msgid "Display %s key"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:336
-msgid "Open in webbrowser"
+#: ../lib/advene/gui/edit/elements.py:1007
+msgid "Completions"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:337
-#, python-format
-msgid "View applied to %s\n"
+#: ../lib/advene/gui/edit/elements.py:1011
+msgid "Space-separated list of words used for content completion"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:342 ../lib/advene/gui/popup.py:496
-msgid "Activate"
+#: ../lib/advene/gui/edit/elements.py:1017
+msgid "Advanced"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:345
-msgid "Open in GUI"
+#: ../lib/advene/gui/edit/elements.py:1067
+msgid "Any annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:347
-msgid "Unknown type of view??"
+#: ../lib/advene/gui/edit/elements.py:1093
+msgid "TALES expression specifying a color"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:372
-msgid "Edit view"
+#: ../lib/advene/gui/edit/elements.py:1120
+msgid "MIMEType"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:381
-msgid "Open view"
+#: ../lib/advene/gui/edit/elements.py:1345
+#, python-format
+msgid "Error: cannot find a content handler for %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:421 ../lib/advene/gui/views/finder.py:487
+#: ../lib/advene/gui/edit/elements.py:1461
+#: ../lib/advene/gui/edit/elements.py:1686
 #, python-format
 msgid ""
-"%(type)s <b>%(title)s</b>\n"
-"Id: %(id)s"
+"Cannot read the data:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:444
-msgid "Try to apply the query on..."
+#: ../lib/advene/gui/edit/elements.py:1485
+#: ../lib/advene/gui/edit/elements.py:1711
+msgid "Save content to..."
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:464 ../lib/advene/gui/popup.py:829
-msgid "the package"
+#: ../lib/advene/gui/edit/elements.py:1496
+#: ../lib/advene/gui/edit/elements.py:1724
+#, python-format
+msgid ""
+"Cannot save the data:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:465 ../lib/advene/gui/popup.py:830
-msgid "all annotations of the package"
+#: ../lib/advene/gui/edit/elements.py:1515
+#: ../lib/advene/gui/edit/elements.py:1738
+msgid "Open a file (C-o)"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:466 ../lib/advene/gui/popup.py:831
-msgid "the first annotation of the package"
+#: ../lib/advene/gui/edit/elements.py:1520
+#: ../lib/advene/gui/edit/elements.py:1743
+msgid "Save to a file (C-s)"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:509
-msgid "Edit resource"
+#: ../lib/advene/gui/edit/elements.py:1525
+#: ../lib/advene/gui/edit/elements.py:1748
+msgid "Reload the file (C-r)"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
-msgid "Package finder"
+#: ../lib/advene/gui/edit/elements.py:1531
+msgid "Insert a value from the browser (C-i)"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:525
-msgid "Column-based package finder"
+#: ../lib/advene/gui/edit/elements.py:1777
+msgid "Begin time is greater than end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:41
-msgid "AnnotationDisplay"
+#: ../lib/advene/gui/edit/elements.py:2049
+msgid "Expecting an integer."
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:43
-msgid "Display the contents of an annotation"
+#: ../lib/advene/gui/edit/elements.py:2081
+#, python-format
+msgid ""
+"The %(attribute)s attribute could not be updated:\n"
+"\n"
+"%(error)s\n"
+"\n"
+"Resetting to the original value."
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:84
-msgid "No annotation"
+#: ../lib/advene/gui/edit/elements.py:2108
+#, python-format
+msgid ""
+"The following attributes cannot be updated:\n"
+"\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:110
+#: ../lib/advene/gui/edit/elements.py:2148
 #, python-format
 msgid ""
-"Schema %(schema)s (id %(id)s)\n"
-"%(description)s\n"
-"%(stats)s"
+"The following attributes could not be updated:\n"
+"\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:231
-msgid "Screenshot"
+#: ../lib/advene/gui/edit/elements.py:2165
+msgid "Attribute"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:193
-msgid "Invalid view id"
+#: ../lib/advene/gui/edit/elements.py:2264
+msgid "Insert an element"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:239
-#, python-format
-msgid "Cannot save default options: %s"
+#: ../lib/advene/gui/edit/elements.py:2265
+msgid "Choose the element to insert."
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:250
+#: ../lib/advene/gui/edit/elements.py:2335
+#: ../lib/advene/gui/edit/elements.py:2378
 #, python-format
-msgid "Default options saved for view %s"
+msgid "Some tags contain invalid characters: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:282
-#, python-format
-msgid "Saving %s"
+#: ../lib/advene/gui/edit/elements.py:2358
+msgid "Tags:"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:285
-msgid "Enter a view name to save this parametered view"
+#: ../lib/advene/gui/edit/transcribe.py:68
+msgid "Transcription importer"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4630
-#, python-format
-msgid "Error: the identifier %s contains invalid characters."
+#: ../lib/advene/gui/edit/transcribe.py:79
+msgid "Note taking"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:303
-#, python-format
-msgid "Error: the view %s is not an adhoc view."
+#: ../lib/advene/gui/edit/transcribe.py:81
+msgid "Take notes on the fly as a timestamped transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:328
-msgid "HTML export"
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:329
-msgid "Specify a name for the export view"
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Click inserts timestamp marks"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:348
-#, python-format
-msgid ""
-"View successfully exported as %s.\n"
-"Open it in the web browser ?"
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "Insert on single-click"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:427
-msgid "Actions"
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "A single click will insert the mark (else a double click is needed)"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:452
-msgid "Click or drag-and-drop to reattach view"
+#: ../lib/advene/gui/edit/transcribe.py:150
+msgid "Play on scroll"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:55
-msgid "Annotation table view"
+#: ../lib/advene/gui/edit/transcribe.py:150
+msgid "Play the new position upon timestamp modification"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:57
-msgid "Display annotations in a table"
+#: ../lib/advene/gui/edit/transcribe.py:151
+msgid "Generate empty annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:227 ../lib/advene/gui/views/table.py:452
-msgid "Snapshot"
+#: ../lib/advene/gui/edit/transcribe.py:151
+msgid "If checked, generate annotations for empty text"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:254 ../lib/advene/gui/main.py:4178
-msgid "Duration"
+#: ../lib/advene/gui/edit/transcribe.py:152
+msgid "Reaction time"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:382 ../lib/advene/gui/views/table.py:511
-msgid "Export data to file..."
-msgstr ""
+#: ../lib/advene/gui/edit/transcribe.py:152
+msgid ""
+"Reaction time (substracted from current player time, except when paused.)"
+msgstr ""
 
-#: ../lib/advene/gui/views/table.py:391 ../lib/advene/gui/views/table.py:520
-#, python-format
-msgid "Error while exporting data to %(filename)s: %(error)s"
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Auto-insert"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "id"
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Automatic timestamp mark insertion"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "type"
+#: ../lib/advene/gui/edit/transcribe.py:154
+msgid "Automatic insertion delay"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "begin"
+#: ../lib/advene/gui/edit/transcribe.py:154
+msgid ""
+"If autoinsert is active, timestamp marks will be automatically inserted when "
+"text is entered after no interaction since this delay (in ms).\n"
+"1000 is typically a good value."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "end"
+#: ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size for text (0 for standard size)"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "content"
+#: ../lib/advene/gui/edit/transcribe.py:215
+#: ../lib/advene/gui/edit/transcribe.py:219
+#: ../lib/advene/gui/edit/transcribe.py:377
+#: ../lib/advene/gui/edit/transcribe.py:381
+msgid "Invalid timestamp mark"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:460
-msgid "Generic table view"
+#: ../lib/advene/gui/edit/transcribe.py:508
+msgid "Ignore the following text (toggle)"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:462
-msgid "Display Advene elements in a table."
+#: ../lib/advene/gui/edit/transcribe.py:512
+msgid "Remove mark"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element title"
+#: ../lib/advene/gui/edit/transcribe.py:516
+msgid "Reaction-time offset"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element type"
+#: ../lib/advene/gui/edit/transcribe.py:520
+msgid "-1 sec"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element id"
+#: ../lib/advene/gui/edit/transcribe.py:523
+msgid "-0.5 sec"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:327
-#, python-format
-msgid "Set of %s annotations"
+#: ../lib/advene/gui/edit/transcribe.py:526
+msgid "-0.1 sec"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:1067
-msgid "Save as..."
+#: ../lib/advene/gui/edit/transcribe.py:530
+msgid "+1 sec"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:1072
-msgid "Use current player position"
+#: ../lib/advene/gui/edit/transcribe.py:533
+msgid "+0.5 sec"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:1078
-msgid "Adjust timestamp"
+#: ../lib/advene/gui/edit/transcribe.py:536
+msgid "+0.1 sec"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
-msgid "_Select player"
+#: ../lib/advene/gui/edit/transcribe.py:627
+msgid "Invalid timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
-msgid "_View"
+#: ../lib/advene/gui/edit/transcribe.py:760
+#, python-format
+msgid "Invalid timestamp mark in conversion: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
-msgid "Packages"
+#: ../lib/advene/gui/edit/transcribe.py:877
+#, python-format
+msgid "Cannot save the file: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
-msgid "Open recent"
+#: ../lib/advene/gui/edit/transcribe.py:888
+#: ../lib/advene/gui/edit/transcribe.py:972
+msgid "This will overwrite the current textual content. Are you sure?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:239
-msgid "Input from the keyboard (function keys)"
+#: ../lib/advene/gui/edit/transcribe.py:891
+msgid "Select transcription file to load"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:243
-msgid "_File"
+#: ../lib/advene/gui/edit/transcribe.py:908
+#, python-format
+msgid "Cannot open %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:244
-msgid "_New package"
+#: ../lib/advene/gui/edit/transcribe.py:957
+msgid "Cannot import annotations: no existing interface"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:244
-msgid "Create a new package"
+#: ../lib/advene/gui/edit/transcribe.py:959
+msgid "Select the annotation type to import"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:245
-msgid "_Open package"
+#: ../lib/advene/gui/edit/transcribe.py:968
+#, python-format
+msgid "There are no annotations of type %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:245
-msgid "Open a package"
+#: ../lib/advene/gui/edit/transcribe.py:997
+msgid "Cannot convert the data: no associated package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:246
-msgid "Show recently opened packages"
+#: ../lib/advene/gui/edit/transcribe.py:1000
+msgid "Converting transcription"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:247
-msgid "_Save package"
+#: ../lib/advene/gui/edit/transcribe.py:1006
+msgid "Choose the annotation-type where to create annotations.\n"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:247
-msgid "Save the package"
+#: ../lib/advene/gui/edit/transcribe.py:1014
+msgid "Delete existing annotations in this type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:248
-msgid "Save package as..."
+#: ../lib/advene/gui/edit/transcribe.py:1037
+msgid "Select type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:248
-msgid "Save the package as..."
+#: ../lib/advene/gui/edit/transcribe.py:1041
+msgid "You want to create a new type. Please specify its schema and title."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:249
-msgid "Close package"
+#: ../lib/advene/gui/edit/transcribe.py:1053
+msgid "Containing schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:249
-msgid "Close the package"
+#: ../lib/advene/gui/edit/transcribe.py:1066
+msgid "Export options"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:251
-msgid "Save session"
+#: ../lib/advene/gui/edit/transcribe.py:1071
+msgid "Generate annotations for empty contents"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:251
-msgid "Save the current session (list of opened packages)"
+#: ../lib/advene/gui/edit/transcribe.py:1096
+#, python-format
+msgid "The %s identifier already exists. Choose another one."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:252
-msgid "Save workspace"
+#: ../lib/advene/gui/edit/transcribe.py:1135
+msgid "Notes converted"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
-msgid "...as package view"
+#: ../lib/advene/gui/edit/transcribe.py:1182
+msgid "Open"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:254
-msgid "...as standard workspace"
+#: ../lib/advene/gui/edit/transcribe.py:1183
+msgid "Save"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:254
-msgid "Use the current layout as standard workspace in the future"
+#: ../lib/advene/gui/edit/transcribe.py:1184
+msgid "Save As"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:256
-msgid "Associate a video _File"
+#: ../lib/advene/gui/edit/transcribe.py:1185
+msgid "Import"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:256
-msgid "Associate a video file"
+#: ../lib/advene/gui/edit/transcribe.py:1185
+msgid "Import from annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:257
-msgid "Associate a _DVD"
+#: ../lib/advene/gui/edit/transcribe.py:1186
+msgid "Convert"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:257
-msgid "Associate a chapter from a DVD"
+#: ../lib/advene/gui/edit/transcribe.py:1186
+msgid "Convert to annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:258
-msgid "Associate a _Video stream"
+#: ../lib/advene/gui/edit/transcribe.py:1188 ../lib/advene/rules/actions.py:685
+msgid "Center"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:258
-msgid "Enter a video stream address"
+#: ../lib/advene/gui/edit/transcribe.py:1188
+msgid "Center on the current mark"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:260
-msgid "_Import File"
+#: ../lib/advene/gui/edit/transcribe.py:1189
+msgid "Find"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:260
-msgid "Import data from an external source"
+#: ../lib/advene/gui/edit/transcribe.py:1189
+msgid "Search a string"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:261
-msgid "_Process video"
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Scale"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:261
-msgid "Import data from video processing algorithms"
+#: ../lib/advene/gui/edit/transcribe.py:1213
+msgid "Automatically scroll to the mark position when playing"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:263
-msgid "Merge package"
+#: ../lib/advene/gui/edit/transcribe.py:1215
+msgid "Autoscroll"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:263
-msgid "Merge elements from another package"
+#: ../lib/advene/gui/edit/transcribe.py:1222
+msgid "Autoinsert"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:264
-msgid "Import _DVD chapters"
+#: ../lib/advene/gui/edit/transcribe.py:1224
+msgid "Automatically insert marks"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:264
-msgid "Create annotations based on DVD chapters"
+#: ../lib/advene/core/webcherry.py:51
+msgid "The webserver requires version 3.0 of CherryPy at least."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:266
-msgid "_Export..."
+#: ../lib/advene/core/webcherry.py:167
+#, python-format
+msgid ""
+"\n"
+"            <p>\n"
+"            <a href=\"/admin\">Server administration</a> |\n"
+"            <a href=\"/media\">Media control</a> |\n"
+"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
+"            </p>\n"
+"            Location: %(locationbar)s\n"
+"            <hr>\n"
+"            "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:266
-msgid "Export data to another format"
+#: ../lib/advene/core/webcherry.py:227
+msgid "Unspecified Error"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:267
-msgid "_Website export..."
+#: ../lib/advene/core/webcherry.py:228
+#, python-format
+msgid ""
+"\n"
+"        <h1>Error</h1>\n"
+"        <p>An error occurred:</p>\n"
+"        %s\n"
+"        "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:267
-msgid "Export views to a website"
+#: ../lib/advene/core/webcherry.py:261
+msgid "<h1>No available mediaplayer</h1>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:269
-msgid "_Quit"
+#: ../lib/advene/core/webcherry.py:265
+#, python-format
+msgid ""
+"\n"
+"            <h1>Current STBV: %(currentstbv)s</h1>\n"
+"\n"
+"            <h1>Player status</h1>\n"
+"            <table border=\"1\">\n"
+"            <tr>\n"
+"            <td>Current position</td><td>%(position)s</td>\n"
+"            <td>Duration</td><td>%(duration)s</td>\n"
+"            <td>Player status</td><td>%(status)s</td>\n"
+"            </tr>\n"
+"            </table>\n"
+"            "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:271
-msgid "_Edit"
+#: ../lib/advene/core/webcherry.py:284
+msgid "<h1>No playlist</h1>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:272
-msgid "_Undo"
+#: ../lib/advene/core/webcherry.py:286
+#, python-format
+msgid ""
+"<h1>Current playlist</h1>\n"
+"                <ul>%s</ul>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:273
-msgid "_Find"
+#: ../lib/advene/core/webcherry.py:288
+msgid ""
+"\n"
+"                <form action=\"/media/play\" method=\"GET\">\n"
+"                Starting pos: <input type=\"text\" name=\"position\" value="
+"\"0\">\n"
+"                <input type=\"submit\" value=\"Play\">\n"
+"                </form>\n"
+"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
+"\">Pause</a><br>\n"
+"                "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:274
-msgid "_Delete"
+#: ../lib/advene/core/webcherry.py:295
+msgid ""
+"<hr />\n"
+"            <form action=\"/media/load\" method=\"GET\">\n"
+"            Add a new file (<em>dvd</em> to play a DVD):\n"
+"            <input type=\"text\" name=\"filename\">\n"
+"            <input type=\"submit\" value=\"Add\">\n"
+"            </form>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:275
-msgid "Create"
+#: ../lib/advene/core/webcherry.py:301
+msgid ""
+"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:284
-msgid "P_ackage properties"
+#: ../lib/advene/core/webcherry.py:310
+#, python-format
+msgid "Unknown STBV identifier: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:284
-msgid "Edit package properties"
+#: ../lib/advene/core/webcherry.py:385
+msgid "Media information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:285
-msgid "P_references"
+#: ../lib/advene/core/webcherry.py:398
+msgid "File added"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:285
-msgid "Interface preferences"
+#: ../lib/advene/core/webcherry.py:399
+#, python-format
+msgid "<p><strong>%s has been added to the playlist</strong></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:289
-msgid "_Start Web Browser"
+#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
+msgid "Access to packages snapshots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:289
-msgid "Start the web browser"
+#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
+msgid "Unknown package alias"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:291
-msgid "Simplify interface"
+#: ../lib/advene/core/webcherry.py:426
+#, python-format
+msgid "Available snapshots for %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:291
-msgid "Simplify the application interface (toggle)"
+#: ../lib/advene/core/webcherry.py:432
+#, python-format
+msgid ""
+"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
+"a></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:292
-msgid "Evaluator"
+#: ../lib/advene/core/webcherry.py:439
+msgid "Done"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:292
-msgid "Open python evaluator window"
+#: ../lib/advene/core/webcherry.py:441
+msgid "Pending"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4022
-msgid "Webserver log"
+#: ../lib/advene/core/webcherry.py:487
+#, python-format
+msgid "Unknown annotation id: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:296
-msgid "_Player"
+#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
+#, python-format
+msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:297
-msgid "Go to _Time"
+#: ../lib/advene/core/webcherry.py:675
+msgid "<p>No GUI is available."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:297
-msgid "Goto a specified time code"
+#: ../lib/advene/core/webcherry.py:677
+#, python-format
+msgid "<p>Opened adhoc views: %s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save _ImageCache"
+#: ../lib/advene/core/webcherry.py:678
+msgid "<p>Available adhoc views:</p><ul>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save the contents of the ImageCache to disk"
+#: ../lib/advene/core/webcherry.py:699
+#, python-format
+msgid "<p>Current stbv: %s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:299
-msgid "Reset ImageCache"
+#: ../lib/advene/core/webcherry.py:700
+#, python-format
+msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:299
-msgid "Reset the ImageCache"
+#: ../lib/advene/core/webcherry.py:702
+msgid "Activate and play"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:300
-msgid "_Restart player"
+#: ../lib/advene/core/webcherry.py:708
+msgid "Application information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:300
-msgid "Restart the player"
+#: ../lib/advene/core/webcherry.py:778
+msgid "Missing element id parameter"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:302
-msgid "Update annotation screenshots"
+#: ../lib/advene/core/webcherry.py:782
+#, python-format
+msgid "No existing element with id %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:302
-msgid "Update screenshots for annotation bounds"
+#: ../lib/advene/core/webcherry.py:791
+#, python-format
+msgid "<p>The GUI view %s does not exist.</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:303
-msgid "Detect shots"
+#: ../lib/advene/core/webcherry.py:798
+msgid "Invalid request"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:303
-msgid "Automatically detect shots"
+#: ../lib/advene/core/webcherry.py:803
+msgid "Invalid configuration variable name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:304
-msgid "Select the player plugin"
+#: ../lib/advene/core/webcherry.py:815
+msgid "Invalid value"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:307
-msgid "No package"
+#: ../lib/advene/core/webcherry.py:819
+#, python-format
+msgid "Unsupported method %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:309
-msgid "_Help"
+#: ../lib/advene/core/webcherry.py:845
+#, python-format
+msgid ""
+"\n"
+"        <h1>Authorized hosts</h1>\n"
+"        <table border=\"1\">\n"
+"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
+"        %s\n"
+"        </table>\n"
+"        <form method=\"GET\">\n"
+"        Add a new hostname to the list :<br>\n"
+"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
+"\"Add\">\n"
+"        </form>\n"
+"        "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:310
-msgid "Help"
+#: ../lib/advene/core/webcherry.py:859
+msgid "Access control"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:311
-msgid "Get support"
+#: ../lib/advene/core/webcherry.py:864
+msgid "Access control - add a hostname"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:312
-msgid "Check for updates"
+#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
+#, python-format
+msgid "<strong>Error: %s is an invalid hostname.</strong>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:313
-msgid "Display shortcuts"
+#: ../lib/advene/core/webcherry.py:875
+#, python-format
+msgid "<p>Added %s to authorized hosts list.</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:314
-msgid "Display logfile"
+#: ../lib/advene/core/webcherry.py:881
+msgid "Access control - delete a hostname"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:314
-msgid "Display log file"
+#: ../lib/advene/core/webcherry.py:889
+msgid "<strong>Cannot remove the localhost access.</strong>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:315
-msgid "Open logfile folder"
+#: ../lib/advene/core/webcherry.py:894
+#, python-format
+msgid "<p>Removed %s from authorized hosts list.</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:315
+#: ../lib/advene/core/webcherry.py:896
+#, python-format
+msgid "<p>%s is not in authorized hosts list.</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:945
+msgid "Server Administration"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:953
+#, python-format
 msgid ""
-"Display logfile folder. It can help when sending the advene.log file by e-"
-"mail."
+"\n"
+"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
+"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
+"        <p><a href=\"/action\">List available actions</a></p>\n"
+"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
+"        <p><a href=\"/media\">Media control</a></p>\n"
+"        <p><a href=\"/application\">Display GUI status</a></p>\n"
+"        <p><a href=\"/admin/list\">List available files</a></p>\n"
+"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
+"p>\n"
+"        <p>Display mode : %(displaymode)s</p>\n"
+"        <hr>\n"
+"        <p>Load a package :\n"
+"        <form action=\"/admin/load\" method=\"GET\">\n"
+"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
+"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
+"        <input type=\"submit\" value=\"Load\" />\n"
+"        </form>\n"
+"        </body></html>\n"
+"        "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:316
-msgid "_About"
+#: ../lib/advene/core/webcherry.py:983
+msgid "Available files"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3750
+#: ../lib/advene/core/webcherry.py:1009
+msgid "You should specify an alias"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1014
+msgid "You should specify an uri"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1020
+#, python-format
+msgid "Package %s loaded"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
 #, python-format
 msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
+"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
+"the <a href=\"/packages\">package list</a>."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:344
-msgid "Open a package file"
+#: ../lib/advene/core/webcherry.py:1024
+#, python-format
+msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:345
-msgid "Save the current package"
+#: ../lib/advene/core/webcherry.py:1035
+#, python-format
+msgid "Package %s deleted"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:346
-msgid "Save the package with a new name"
+#: ../lib/advene/core/webcherry.py:1036
+msgid "<p>Go to the <a href=\"/packages\">package list</a>."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:347
-msgid "Select movie file..."
+#: ../lib/advene/core/webcherry.py:1039
+#, python-format
+msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:348
-msgid "Select DVD"
+#: ../lib/advene/core/webcherry.py:1056
+#, python-format
+msgid "Package %s saved"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:352
-msgid "Create a text annotation"
+#: ../lib/advene/core/webcherry.py:1060
+#, python-format
+msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:353
-msgid "Create a graphical annotation"
+#: ../lib/advene/core/webcherry.py:1070
+msgid "Server reset"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:359
-msgid "List recently opened packages"
+#: ../lib/advene/core/webcherry.py:1076
+msgid "Available TALES methods"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:389
-msgid "Snapshotter activity"
+#: ../lib/advene/core/webcherry.py:1117
+msgid "Loaded package(s)"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1119
+msgid ""
+"\n"
+"        <h1>Loaded package(s)</h1>\n"
+"        <table border=\"1\" width=\"50%\">\n"
+"        <tr>\n"
+"        <th>Alias</th>\n"
+"        <th>Action</th>\n"
+"        <th>URI</th>\n"
+"        <th>Annotations</th>\n"
+"        </tr>\n"
+"        "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/core/webcherry.py:1131
 #, python-format
-msgid "%d queued requests"
+msgid ""
+"<tr>\n"
+"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
+"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
+"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
+"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
+"            <td>%(uri)s</td>\n"
+"            <td>%(size)d</td>\n"
+"            </tr>\n"
+"            "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:392
-msgid "Cancel all requests"
+#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
+#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
+#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
+#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
+#: ../lib/advene/core/webcherry.py:2039
+msgid "Error"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:397
-msgid "No snapshotter"
+#: ../lib/advene/core/webcherry.py:1205
+#, python-format
+msgid "The TALES expression %s is not valid."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:419
-msgid "No snapshotting activity"
+#: ../lib/advene/core/webcherry.py:1256
+msgid "Content mode not available on non-content data"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:423
-msgid "Snapshotting"
+#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
+#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
+#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
+#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
+#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
+#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
+msgid "<h1>Error</h1>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:440
-msgid "Display application log messages"
+#: ../lib/advene/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
+#, python-format
+msgid ""
+"<p>There was an error in the template code.</p>\n"
+"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"                <p>Error message: <em>%(message)s</em></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:482
-msgid "Quicksearch lists"
+#: ../lib/advene/core/webcherry.py:1290
+#, python-format
+msgid ""
+"<p>An invalid character is in the Context:</p>\n"
+"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
+"pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:488
-msgid "Please specify the lists of elements to be searched."
+#: ../lib/advene/core/webcherry.py:1298
+#, python-format
+msgid ""
+"<p>There was an error in the TALES expression.</p>\n"
+"                <pre>%s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:507
+#: ../lib/advene/core/webcherry.py:1318
 #, python-format
 msgid ""
-"Searching on %s.\n"
-"Left click to launch the search, right-click to set the quicksearch options"
+"<p>There was an error.</p>\n"
+"                <pre>%s</pre>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1342
+#, python-format
+msgid ""
+"\n"
+"            <hr>\n"
+"            <p>\n"
+"            Location: %(location)s<br>\n"
+"            <form name=\"navigation\" method=\"GET\">\n"
+"            <a href=\"%(levelup)s\">Up one level</a> |\n"
+"            Next level :\n"
+"            <select name=\"path\" onchange=\"submit()\">\n"
+"            "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1360
+msgid ""
+"\n"
+"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
+"            <option selected></option>\n"
+"            "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1378
+#, python-format
+msgid ""
+"<hr>\n"
+"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
+"package %(uri)s returns %(value)s</p>\n"
+"            "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1414
+#, python-format
+msgid "<p>Package <strong>%s</strong> not loaded</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1456
+#, python-format
+msgid ""
+"<p>There was an error in the template code.</p>\n"
+"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"            <p>Error message: <em>%(message)s</em></p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1464
+#, python-format
+msgid ""
+"<p>There was an error in the expression.</p>\n"
+"            <pre>%s</pre>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1472
+#, python-format
+msgid ""
+"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
+"            %(type)s\n"
+"            %(value)s\n"
+"            %(traceback)s</pre>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
+msgid "<p>Cannot set the value : invalid path</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
+#, python-format
+msgid ""
+"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
+"%(folder)s could not be created.</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
+msgid "Resource successfuly created/updated"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1611
+msgid "Value successfuly updated"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1613
+#, python-format
+msgid ""
+"Unable to update the attribute %(attribute)s for element %(element)s: "
+"%(error)s."
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1724
+msgid "<p>Invalid request</p>."
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
+msgid "Value updated"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1789
+#, python-format
+msgid ""
+"\n"
+"                <h1>Value updated</h1>\n"
+"                The value of %(path)s has been updated to\n"
+"                <pre>\n"
+"                %(value)s\n"
+"                </pre>\n"
+"                "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1806
+#, python-format
+msgid ""
+"\n"
+"                    <h1>Value updated</h1>\n"
+"                    The value of %(path)s has been updated to\n"
+"                    <pre>\n"
+"                    %(value)s\n"
+"                    </pre>\n"
+"                    "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:508
+#: ../lib/advene/core/webcherry.py:1817
 #, 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:521
-msgid "off"
+msgid ""
+"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:525
-msgid "on"
+#: ../lib/advene/core/webcherry.py:1860
+msgid "Cannot create an element in something else than a package."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:545
-msgid "Launch search"
+#: ../lib/advene/core/webcherry.py:1877
+#, python-format
+msgid "The identifier %s already exists."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:550
-msgid "Ignore case"
+#: ../lib/advene/core/webcherry.py:1889
+#, python-format
+msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:555
-msgid "Searched elements"
+#: ../lib/advene/core/webcherry.py:1895
+msgid "View created"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:625
-msgid "Playing"
+#: ../lib/advene/core/webcherry.py:1896
+#, python-format
+msgid ""
+"\n"
+"                 <h1>View <em>%(id)s</em> created</h1>\n"
+"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
+"created.</p>\n"
+"                 "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:626
-msgid "Pause"
+#: ../lib/advene/core/webcherry.py:1912
+#, python-format
+msgid "Missing %s parameter"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:627
-msgid "Init"
+#: ../lib/advene/core/webcherry.py:1915
+#, python-format
+msgid "Relation type %s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:629
-msgid "Undefined"
+#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
+#, python-format
+msgid "Annotation %s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:901
-msgid "Enter the new time value"
+#: ../lib/advene/core/webcherry.py:1928
+#, python-format
+msgid ""
+"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
+"p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:925
+#: ../lib/advene/core/webcherry.py:1940
 #, python-format
-msgid "Replace content in %d elements"
+msgid ""
+"<p>Error while creating relation between %(member1)s and %(member2)s :</"
+"p><pre>%(error)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:938
-msgid "Find word"
+#: ../lib/advene/core/webcherry.py:1943
+msgid "Relation created"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:945
-msgid "Replace by"
+#: ../lib/advene/core/webcherry.py:1944
+#, python-format
+msgid "<h1>Relation <em>%s</em> created</h1>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:973
+#: ../lib/advene/core/webcherry.py:1954
 #, python-format
-msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
+msgid "Annotation type %s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:982
-msgid "The video extracting feature is not available."
+#: ../lib/advene/core/webcherry.py:1971
+#, python-format
+msgid ""
+"<p>Error while creating annotation of type %(type)s :<pre>\n"
+"                    %(errortype)s\n"
+"                    %(value)s\n"
+"                    %(traceback)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:985
-msgid "Video export"
+#: ../lib/advene/core/webcherry.py:1983
+#, python-format
+msgid "Annotation %s created"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:987
+#: ../lib/advene/core/webcherry.py:1985
 #, python-format
-msgid "Exporting video montage/fragment to %%(filename)s"
+msgid "Error: Cannot create an object of type %s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:989
-msgid "Please choose a destination filename"
+#: ../lib/advene/core/webcherry.py:1988
+#, python-format
+msgid ""
+"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
+"code></p>"
 msgstr ""
 
-#: ../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."
+#: ../lib/advene/core/webcherry.py:2001
+msgid "Available actions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1069
+#: ../lib/advene/core/webcherry.py:2010
 #, 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."
+msgid "<li>%(name)s: %(value)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1071
+#: ../lib/advene/core/webcherry.py:2033
 #, python-format
-msgid ""
-"You are now working with the following video:\n"
-"%s"
+msgid "<p>Unknown action</p><pre>Action: %s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1188
-msgid "Open this view..."
+#: ../lib/advene/core/webcherry.py:2040
+msgid "Missing parameter(s) :<ul>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1205
-msgid "_All available views"
+#: ../lib/advene/core/webcherry.py:2076
+msgid "Advene web resources"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1224
-msgid "Transcription of annotations"
+#: ../lib/advene/core/webcherry.py:2082
+msgid "Advene webserver"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1227
-msgid "Note-taking editor"
+#: ../lib/advene/core/webcherry.py:2083
+#, python-format
+msgid ""
+"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
+"webserver run by %(userid)s on %(serveraddress)s.</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1228
-msgid "Active bookmarks"
+#: ../lib/advene/core/webcherry.py:2090
+msgid ""
+" <p>No package is loaded. You can access the <a href=\"/admin\">server "
+"administration page</a>.<p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1229
-msgid "Schema editor"
+#: ../lib/advene/core/webcherry.py:2100
+#, python-format
+msgid ""
+"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
+"view</a>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1233
-msgid "TALES explorer"
+#: ../lib/advene/core/webcherry.py:2102
+#, python-format
+msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1234
-msgid "Dynamic montage"
+#: ../lib/advene/core/webcherry.py:2104
+msgid "the <a href=\"/packages\">loaded packages' data</a>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1238
-msgid "Open a comment view in the web browser"
+#: ../lib/advene/core/webcherry.py:2105
+#, python-format
+msgid ""
+" <p>You can either access %s or the <a href=\"/admin\">server administration "
+"page</a>.<p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1239
-msgid "Create or open a comment view"
+#: ../lib/advene/core/webcherry.py:2107
+#, python-format
+msgid ""
+"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
+"fr/advene/\">Advene</a> v. %s.</em></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1242
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
+#, python-format
+msgid "Cannot start HTTP server: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1243
-msgid "Display edition history"
+#: ../lib/advene/core/controller.py:375
+msgid "Exception (traceback in console):"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1244
-msgid "Visualise the activity trace preview"
+#: ../lib/advene/core/controller.py:408
+msgid "No available GUI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1245
-msgid "Visualise the activity trace as a timeline"
+#: ../lib/advene/core/controller.py:427
+msgid "No available event handler"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1274
-msgid "The webserver could not be started. Static views cannot be accessed."
+#: ../lib/advene/core/controller.py:435
+msgid "No available gui"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1352
+#: ../lib/advene/core/controller.py:451
 #, python-format
-msgid ""
-"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
-"released</b> on %(date)s, but you are running version %(current)s.\n"
-"You can download the latest version from the Advene website: http://liris."
-"cnrs.fr/advene/</span>"
+msgid "Warning: redefining an existing feature %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1357
-msgid "Go to the website"
+#: ../lib/advene/core/controller.py:583
+msgid "All annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1363
-msgid "Advene release"
+#: ../lib/advene/core/controller.py:585
+msgid "Ids"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/core/controller.py:773
 #, python-format
-msgid "You are using a up-to-date version of Advene (%(current)s)."
+msgid ""
+"Cannot start the webserver\n"
+"The following processes seem to use the %(port)s port: %(processes)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1369
-msgid "Advene is up-to-date"
+#: ../lib/advene/core/controller.py:822 ../lib/advene/core/controller.py:833
+#, python-format
+msgid "Loaded %(uri)s as %(alias)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1383
-msgid "Choose a color"
+#: ../lib/advene/core/controller.py:824 ../lib/advene/core/controller.py:836
+#, python-format
+msgid "Cannot load package from file %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1415
-msgid "Select an annotation to loop on it"
+#: ../lib/advene/core/controller.py:875
+msgid "Deactivating web server"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1417
+#: ../lib/advene/core/controller.py:992
 #, python-format
-msgid "Looping on %s"
+msgid "Cannot get audio volume: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1476 ../lib/advene/gui/main.py:2367
-msgid "No active dynamic view"
+#: ../lib/advene/core/controller.py:1042
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1487
-msgid "Create a new dynamic view."
+#: ../lib/advene/core/controller.py:1246
+#, python-format
+msgid "Found matching video file in moviepath: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1506
-msgid "Edit the current dynamic view."
+#: ../lib/advene/core/controller.py:1287 ../lib/advene/core/controller.py:1289
+msgid "Analysis of "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1518
-msgid "No dynamic view"
+#: ../lib/advene/core/controller.py:1489
+msgid "Cannot split the annotation: the given position is outside."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1550
-msgid "Playing rate"
+#: ../lib/advene/core/controller.py:1654
+#, python-format
+msgid "Cannot find the template package %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1698
-msgid "History"
+#: ../lib/advene/core/controller.py:1697
+#, python-format
+msgid "Cannot read the imported package %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1705
-msgid "Popups"
+#: ../lib/advene/core/controller.py:1932
+msgid "Package URI has changed. Reloading package with new URI."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1709
+#: ../lib/advene/core/controller.py:1950
 msgid ""
-"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"notebooks to embed various views."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:1709
-msgid "Information"
+"Cannot load package: the following annotations do not have Millisecond "
+"fragments:"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2004
-msgid "Cannot create annotation. There is no schema to put it in."
+#: ../lib/advene/core/controller.py:1977
+#, python-format
+msgid "Cannot handle master attribute, the package %s is not imported."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2013
-msgid "Default annotation type"
+#: ../lib/advene/core/controller.py:1979
+#, python-format
+msgid "Checking master package %s for not yet imported elements."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2025
-msgid "Annotation created"
+#: ../lib/advene/core/controller.py:2019
+msgid "Standard summary"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2057
-msgid "Play/Pause [Control-Tab / Control-Space]"
+#: ../lib/advene/core/controller.py:2024
+msgid "Default view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2058
+#: ../lib/advene/core/controller.py:2066
 #, python-format
-msgid "Rewind (%.02f s) [Control-Left]"
+msgid ""
+"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2059
+#: ../lib/advene/core/controller.py:2156
 #, python-format
-msgid "Forward (%.02f s) [Control-Right]"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2060
-msgid "Previous frame [Control-Down]"
+msgid "Got exception %s when stopping player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2061
-msgid "Next frame [Control-Up]"
+#: ../lib/advene/core/controller.py:2242
+#, python-format
+msgid "Raised exception in update_status: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2062
-msgid "Fullscreen"
+#: ../lib/advene/core/controller.py:2269
+msgid "Unable to start the player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2214
+#: ../lib/advene/core/controller.py:2478
 #, python-format
-msgid "Screenshot saved to %s"
+msgid "Comment on set of %d annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2216
+#: ../lib/advene/core/controller.py:2480
 #, python-format
-msgid ""
-"Screenshot saved in\n"
-" %s"
+msgid "Comment on %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2218
+#: ../lib/advene/core/controller.py:2484
 #, python-format
 msgid ""
-"Could not save screenshot:\n"
-" %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2226
-msgid "Save screenshot to..."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2244
-msgid "Could not take snapshot with enough precision"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2282
-msgid "Export package data"
+"<h1>Comment on %(title)s</h1>\n"
+"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
+"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
+"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
+"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
+"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
+"\"%(imgurl)s\" ></img></a></span>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2284
+#: ../lib/advene/core/controller.py:2494
 #, python-format
-msgid "Export annotation type %s"
+msgid "List of %s annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2286
+#: ../lib/advene/core/controller.py:2529
 #, python-format
-msgid "Export element %s"
+msgid "Cannot export to %(filename)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2312
-msgid "Export format"
+#: ../lib/advene/core/controller.py:2544 ../lib/advene/core/controller.py:2553
+#, python-format
+msgid "Error when exporting: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2349
-msgid " (modified)"
+#: ../lib/advene/plugins/featuredetect.py:42
+msgid "Feature detection (face...)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2352
-#, python-format
-msgid "Activate %s"
+#: ../lib/advene/plugins/featuredetect.py:57
+msgid "Sensitivity level."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2523
-msgid "Saved workspace"
+#: ../lib/advene/plugins/featuredetect.py:60
+msgid ""
+"Scale. Original image size will be divided by this factor, in order to speed "
+"up detection."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2575
-msgid "Restoring workspace..."
+#: ../lib/advene/plugins/featuredetect.py:63
+msgid "Classifier"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2581
+#: ../lib/advene/plugins/featuredetect.py:77
 #, python-format
-msgid "Do you wish to restore the %s workspace ?"
+msgid "Feature %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2586
-msgid "Clear the current workspace"
+#: ../lib/advene/plugins/featuredetect.py:79
+#, python-format
+msgid "Detected %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2607
-#, python-format
-msgid "View %s is not an adhoc view"
+#: ../lib/advene/plugins/featuredetect.py:81
+msgid "Detection started"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2618
+#: ../lib/advene/plugins/featuredetect.py:171
 #, python-format
-msgid "Cannot identify the adhoc view %s"
+msgid "Detected %(count)d feature(s) until %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2632
-msgid "Choose the annotation type to display as transcription."
+#: ../lib/advene/plugins/ted.py:39
+msgid "TED importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2667
-#, python-format
-msgid ""
-"Error: unable to find an edit popup for %(element)s:\n"
-"%(error)s"
+#: ../lib/advene/plugins/cutter.py:39
+msgid "Audio segmentation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2675
-#, python-format
-msgid "Editing %s"
+#: ../lib/advene/plugins/cutter.py:53
+msgid "Volume threshold (in dB, can be negative) before trigger."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2687
-#, python-format
-msgid "Comment view (%s)"
+#: ../lib/advene/plugins/cutter.py:56
+#: ../lib/advene/plugins/soundenveloppe.py:62
+msgid "Channel selection."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/plugins/cutter.py:101
 #, python-format
-msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
+msgid "Detected %(count)d segments until %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2765
-#, python-format
-msgid "Activating package %s"
+#: ../lib/advene/plugins/cutter.py:119
+msgid "Sound segment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2793
+#: ../lib/advene/plugins/cutter.py:120
 #, python-format
-msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
+msgid ""
+"Sound segmentation with a threshold of %(threshold)d dB - channel: "
+"%(channel)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2826
-msgid "Do you want to restore the saved workspace ?"
+#: ../lib/advene/plugins/cutter.py:138
+msgid "Starting silence detection"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2833
-msgid "Advene"
+#: ../lib/advene/plugins/ttl.py:41
+msgid "TurTLe (RDF) importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3038
-#, python-format
-msgid "Got exception %s. Trying to continue."
+#: ../lib/advene/plugins/shotdetect.py:35
+msgid "Shotdetect importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3062 ../lib/advene/gui/main.py:3083
-#: ../lib/advene/gui/main.py:4033
-msgid "Unknown"
+#: ../lib/advene/plugins/shotdetect.py:79
+msgid "No shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3153
-#, python-format
+#: ../lib/advene/plugins/pocketsphinx.py:37
 msgid ""
-"The package(s) %s are modified.\n"
-"Save them now?"
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3203
-msgid "Choose an annotation type."
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3247
-msgid "No annotation type is defined."
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3256
-msgid "Creating a new type."
+#: ../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/gui/main.py:3260
-msgid "Title of the new type"
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3261
-msgid ""
-"Id of the new type. It is generated from the title, but you may change it if "
-"necessary."
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3265
-msgid "Specify the content-type for the annotation type"
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3267
-msgid "Content type"
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3274 ../lib/advene/gui/main.py:3383
-msgid "Create a new schema"
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:86
+#: ../lib/advene/plugins/barcode.py:58
+msgid "Generating annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3287
-msgid "Choose an existing schema for the new type, or create a new one"
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#: ../lib/advene/plugins/barcode.py:83
+#, python-format
+msgid "%(count)d utterances until %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3290 ../lib/advene/gui/main.py:3398
-msgid "Specify the schema title"
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3294
-msgid "Title of the new schema"
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3295
-msgid ""
-"Id of the new schema. It is generated from the title, but you may change it "
-"if necessary."
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3318
-msgid ""
-"You specified a annotation-type identifier that already exists. Aborting."
+#: ../lib/advene/plugins/brltty.py:62
+msgid "Input from the braille table."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3336
-msgid "You specified a existing schema identifier. Using the existing schema."
+#: ../lib/advene/plugins/brltty.py:66
+msgid "BrlTTY not installed. There will be no braille support."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3338
-msgid ""
-"You specified an existing identifier that does not reference a schema. "
-"Aborting."
+#: ../lib/advene/plugins/brltty.py:78
+msgid "Could not initialize BrlTTY. No braille support."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3365
-msgid "Choose a schema."
+#: ../lib/advene/plugins/brltty.py:84
+msgid "Display a message in Braille"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3425
-msgid "You specified an existing identifier. Aborting."
+#: ../lib/advene/plugins/brltty.py:85
+msgid "Message to display."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3445
+#: ../lib/advene/plugins/brltty.py:256
 #, python-format
-msgid "Package %s modified"
+msgid "BrlTTY connection error: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3446
-#, python-format
-msgid ""
-"The package %s has been modified but not saved.\n"
-"Save it now?"
+#: ../lib/advene/plugins/brltty.py:273
+msgid "Braille display: "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3456
-#, python-format
-msgid "%s snapshots"
+#: ../lib/advene/plugins/brltty.py:279
+msgid "No message"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3457
-#, python-format
-msgid "Do you want to save the snapshots for media %s?"
+#: ../lib/advene/plugins/transcript.py:32
+msgid "Youtube XML importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3464 ../lib/advene/gui/main.py:3473
-#: ../lib/advene/gui/main.py:4449
-#, python-format
-msgid "Cannot save imagecache for %(media)s: %(e)s"
+#: ../lib/advene/plugins/transcript.py:69
+msgid "Importing transcript"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3487
-msgid "first frame"
+#: ../lib/advene/plugins/aeidon_import.py:48
+msgid "Aeidon (subtitles) importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3488
-msgid "last frame"
+#: ../lib/advene/plugins/anvil.py:35
+msgid "Anvil importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3496
-#, python-format
-msgid "Click on %(bound)s of %(annotation)s"
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3499
-#, python-format
-msgid "Update %(bound)s of %(annotation)s"
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3518
-msgid "Click on the frame corresponding to the timestamp value"
+#: ../lib/advene/plugins/fcp.py:75
+msgid "Importing subtitles"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3520
-msgid "Set new timestamp value"
+#: ../lib/advene/plugins/fcp.py:90
+msgid "Importing clips"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3527
-msgid ""
-"<b>Annotation statistics</b>\n"
-"\n"
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3599
-msgid "Text annotation"
+#: ../lib/advene/plugins/tracebuilder.py:219
+#, python-format
+msgid "Cannot export to %(fname)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3607 ../lib/advene/gui/main.py:3632
-msgid "Cannot find an appropriate annotation type"
+#: ../lib/advene/plugins/tracebuilder.py:1129
+#: ../lib/advene/plugins/tracebuilder.py:1168
+#, python-format
+msgid "Cannot export to %(host)s:%(port)s %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3625
-msgid "Graphical annotation"
+#: ../lib/advene/plugins/tracebuilder.py:1143
+#, python-format
+msgid "Cannot send data to %(host)s:%(port)s %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3677
-msgid ""
-"An unsaved template package exists\n"
-"Save it first."
+#: ../lib/advene/plugins/tracebuilder.py:1191
+#, python-format
+msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3686
-msgid "Package modified"
+#: ../lib/advene/plugins/tracebuilder.py:1197
+#, python-format
+msgid "%(nb)s events sent to %(host)s:%(port)s during session."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3687
-msgid ""
-"The package that you want to close has been modified but not saved.\n"
-"Save it now?"
+#: ../lib/advene/plugins/goodshotdetector.py:45
+msgid "Shot detection (Delakis version)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3718
-msgid "Load a package"
+#: ../lib/advene/plugins/goodshotdetector.py:60
+msgid "Cache histogram alongside video files."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3727
+#: ../lib/advene/plugins/goodshotdetector.py:63
 msgid ""
-"A video file was selected. Pretend that the user selected 'Select a video "
-"file'..."
+"Parameter profile: safe will detect less cuts, aggressive will detect more "
+"cuts (but more false ones too). default is a compromise."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3732
+#: ../lib/advene/plugins/goodshotdetector.py:77
 #, 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:3741
-msgid ""
-"You are trying to load a session file, but there are unsaved packages. "
-"Proceed anyway?"
+msgid "Shot (%s profile)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3769 ../lib/advene/gui/main.py:3825
-msgid "Do you want to save the current workspace ?"
+#: ../lib/advene/plugins/goodshotdetector.py:78
+#: ../lib/advene/plugins/shotdetectapp.py:87
+msgid "Detected shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3784 ../lib/advene/gui/main.py:3840
-#, python-format
-msgid "Could not save the package: %s"
+#: ../lib/advene/plugins/goodshotdetector.py:83
+msgid "Loading histogram"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3797
-#, python-format
-msgid "Save the package %s"
+#: ../lib/advene/plugins/goodshotdetector.py:146
+msgid "Computing hdiff"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3810
-msgid "Invalid file extension"
+#: ../lib/advene/plugins/goodshotdetector.py:153
+msgid "Detecting cuts"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3811
-#, python-format
-msgid ""
-"Your package contains resources,\n"
-"the filename (%s) should have a .azp extension.\n"
-"Should I put the correct extension?"
+#: ../lib/advene/plugins/goodshotdetector.py:180
+msgid "Detecting dissolves"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3815
-msgid "OK, the resources will be lost."
+#: ../lib/advene/plugins/goodshotdetector.py:265
+msgid "Extracting histogram"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3817
-msgid "Aborting package saving"
+#: ../lib/advene/plugins/webannotation_import.py:45
+msgid "WebAnnotation importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3851
-msgid "Save the session in..."
+#: ../lib/advene/plugins/webannotation_import.py:63
+#: ../lib/advene/plugins/owl_import.py:58 ../lib/advene/util/importer.py:363
+#, python-format
+msgid "Converted from %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3862
-#, python-format
-msgid "Session saved in %s"
+#: ../lib/advene/plugins/montagerenderer.py:43
+msgid "Cannot register montage renderer: Gnonlin plugins are not present."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3871
-msgid "Do you confirm the creation of annotations matching the DVD chapters?"
+#: ../lib/advene/plugins/transcriber.py:40
+msgid "Transcriber importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3877
-msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
+#: ../lib/advene/plugins/transcriber.py:86
+msgid "Parsing section information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3885
-msgid "The associated media is not a DVD."
+#: ../lib/advene/plugins/transcriber.py:254 ../lib/advene/util/importer.py:1520
+msgid "Creating package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3896
-#, python-format
-msgid "Processing %s video"
+#: ../lib/advene/plugins/transcriber.py:260 ../lib/advene/util/importer.py:1527
+msgid "Creating annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3899
-msgid "No associated video file"
+#: ../lib/advene/plugins/transcriber.py:265 ../lib/advene/util/importer.py:1533
+msgid "Parsing header information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3926
-msgid "Standard RuleSet"
+#: ../lib/advene/plugins/transcriber.py:276
+msgid "Parsing topic and speaker tables information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4042
-#, python-format
-msgid ""
-"Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
+#: ../lib/advene/plugins/tts.py:77
+msgid "Pronounce a text"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4054
-msgid ""
-"GNU General Public License v. 2\n"
-"See http://www.gnu.org/copyleft/gpl.html for more details"
+#: ../lib/advene/plugins/tts.py:78
+msgid "String to pronounce."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4056
-msgid "Visit the Advene web site for examples and documentation."
+#: ../lib/advene/plugins/tts.py:156
+msgid "TTS disabled. Cannot find the application 'festival' in PATH"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4089 ../lib/advene/gui/main.py:4177
-msgid "Select a movie file"
+#: ../lib/advene/plugins/tts.py:158
+msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4101
-msgid "Title/Chapter selection"
+#: ../lib/advene/plugins/soundenveloppe.py:40
+#: ../lib/advene/plugins/soundenveloppe.py:139
+#: ../lib/advene/plugins/soundenveloppe.py:141
+msgid "Sound enveloppe"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
-msgid "Select a video stream"
+#: ../lib/advene/plugins/soundenveloppe.py:56
+msgid "Interval (in ms) at which to take samples."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4144
-msgid "Enter the address of a video stream"
+#: ../lib/advene/plugins/soundenveloppe.py:59
+msgid "Maximum number of samples per annotation."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4148
+#: ../lib/advene/plugins/soundenveloppe.py:111
 #, python-format
-msgid "Successfully extracted the video stream address (%s) from the url.\n"
+msgid "At %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4173
-msgid "Package properties"
+#: ../lib/advene/plugins/soundenveloppe.py:158
+msgid "Extracting sound enveloppe"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4174
-msgid "Author name"
+#: ../lib/advene/plugins/barcode.py:36
+msgid "Cannot register barcode extraction: zbar plugin not found."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4175
-msgid "Package creation date"
+#: ../lib/advene/plugins/barcode.py:40
+msgid "Barcode (qr-code) extraction"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4176
-msgid "Package title"
+#: ../lib/advene/plugins/barcode.py:95
+msgid "Barcode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4177
-msgid "Associated media"
+#: ../lib/advene/plugins/barcode.py:97
+msgid "Extracted barcode information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4178
-msgid "Media duration in ms"
+#: ../lib/advene/plugins/barcode.py:115
+msgid "Extraction barcodes"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4237
-msgid "Paths"
+#: ../lib/advene/plugins/dcp.py:65
+msgid "DCP importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4239
-msgid "Data"
+#: ../lib/advene/plugins/dcp.py:120
+#, python-format
+msgid "Converting #%(num)d / %(count)d"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4239
-msgid "Standard directory for data files"
+#: ../lib/advene/plugins/nerd_plugin.py:47
+msgid "NERD (Named Entity Recognition and Disambiguation)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4240
-msgid "Movie path"
+#: ../lib/advene/plugins/nerd_plugin.py:68
+msgid "NERD API key"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4240
-#, python-format
-msgid ""
-"List of directories (separated by %s) to search for movie files (_ means "
-"package directory)"
+#: ../lib/advene/plugins/nerd_plugin.py:82
+msgid "NER service to use"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Imagecache"
+#: ../lib/advene/plugins/nerd_plugin.py:88
+msgid "Type of annotation to analyze"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Directory for storing the snapshot cache"
+#: ../lib/advene/plugins/nerd_plugin.py:93
+msgid "Language to analyze"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Player"
+#: ../lib/advene/plugins/nerd_plugin.py:98
+msgid "Minimum confidence level (between 0.0 and 1.0)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Directory of the video player"
+#: ../lib/advene/plugins/nerd_plugin.py:103
+msgid "Interpolate position of annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4243
-msgid "Shotdetect"
+#: ../lib/advene/plugins/nerd_plugin.py:108
+msgid "Split by entity type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4243
-msgid "Shotdetect application"
+#: ../lib/advene/plugins/nerd_plugin.py:113
+msgid "Store results as markup in the annotation text"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4245
-msgid "GUI"
+#: ../lib/advene/plugins/nerd_plugin.py:118
+msgid "Create relations between the original annotations and the new ones"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4246
-msgid "Interface language (after restart)"
+#: ../lib/advene/plugins/nerd_plugin.py:150
+#, python-format
+msgid "NERD applied to %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4246
-msgid ""
-"Language used for the interface (necessitates to restart the application)"
+#: ../lib/advene/plugins/nerd_plugin.py:208
+#, python-format
+msgid "NERD %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4252
-msgid "Record activity trace"
+#: ../lib/advene/plugins/annotationgraph.py:40
+msgid "AnnotationGraph importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Expert mode"
+#: ../lib/advene/plugins/shotdetectapp.py:48
+msgid "ShotdetectApp importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Offer advanced possibilities"
+#: ../lib/advene/plugins/shotdetectapp.py:59
+msgid ""
+"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
+"too many shots are detected, try to increase its value."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Prefer WYSIWYG"
+#: ../lib/advene/plugins/shotdetectapp.py:146
+#, python-format
+msgid "Detected shot #%(num)d at %(pos)s "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Use WYSIWYG editors when possible (HTML, SVG)"
+#: ../lib/advene/plugins/mpeg7.py:54
+msgid "MPEG7 importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
-msgid "Player control in edit popups"
+#: ../lib/advene/plugins/cinelab.py:76
+msgid "Cinelab importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
-msgid ""
-"Enable generic player controls in edit windows. This may be undesirable "
-"since it overloads some standard text-edition behaviours (esp. control-left/"
-"right)."
+#: ../lib/advene/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
+#, python-format
+msgid "File %s is not an Advene2 zip package."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
-msgid "Open popups"
+#: ../lib/advene/plugins/cinelab.py:176
+msgid "Converting annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4258
-msgid "Where should we open adhoc views?"
+#: ../lib/advene/plugins/cinelab.py:217
+msgid "Converting views"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
-msgid "as a popup window"
+#: ../lib/advene/plugins/cinelab.py:249
+msgid "Importing annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
-msgid "embedded east of the video"
+#: ../lib/advene/plugins/owl_import.py:40
+msgid "OWL (schema) importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4261
-msgid "embedded west of the video"
+#: ../lib/advene/player/gstreamer.py:421
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
-msgid "embedded south of the video"
+#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
+#: ../lib/advene/rules/actions.py:120
+msgid "Message to display"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4263
-msgid "embedded at the right of the window"
+#: ../lib/advene/rules/actions.py:48
+msgid "Start the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History size"
+#: ../lib/advene/rules/actions.py:49
+msgid "Start position (in ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History filelist size limit"
+#: ../lib/advene/rules/actions.py:52 ../lib/advene/rules/actions.py:384
+msgid "The movie start"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember window size"
+#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
+msgid "The annotation begin"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember the size of opened windows"
+#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
+msgid "The annotation end"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Bookmark snapshot width"
+#: ../lib/advene/rules/actions.py:64
+msgid "Goto position (in ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Width of the snapshots representing bookmarks"
+#: ../lib/advene/rules/actions.py:73
+msgid "Stop the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Bookmark snapshot precision"
+#: ../lib/advene/rules/actions.py:80
+msgid "Pause the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Precision (in ms) of the displayed bookmark snapshots."
+#: ../lib/advene/rules/actions.py:87
+msgid "Resume the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4272
-msgid "General"
+#: ../lib/advene/rules/actions.py:94
+msgid "Take a snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4273
-msgid "Weekly update check"
+#: ../lib/advene/rules/actions.py:101
+msgid "Display a caption"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4274
-msgid "On exit,"
+#: ../lib/advene/rules/actions.py:103
+msgid "Duration of the caption"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4275
-msgid "How to handle screenshots on exit"
+#: ../lib/advene/rules/actions.py:131
+msgid "Display a graphical shape"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4276
-msgid "never save screenshots"
+#: ../lib/advene/rules/actions.py:132
+msgid "Shape (square, circle, triangle)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4277
-msgid "always save screenshots"
+#: ../lib/advene/rules/actions.py:134
+msgid "x-position (percentage of screen)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4278
-msgid "ask before saving screenshots"
+#: ../lib/advene/rules/actions.py:135
+msgid "y-position (percentage of screen)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4280
-msgid "Auto-save"
+#: ../lib/advene/rules/actions.py:136
+msgid "Size (arbitrary units)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4281
-msgid "Data auto-save functionality"
+#: ../lib/advene/rules/actions.py:137
+msgid "Duration of the display in ms"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4282
-msgid "is desactivated"
+#: ../lib/advene/rules/actions.py:145
+msgid "A square"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4283
-msgid "is done automatically"
+#: ../lib/advene/rules/actions.py:146
+msgid "A circle"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4284
-msgid "is done after confirmation"
+#: ../lib/advene/rules/actions.py:147
+msgid "A triangle"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Auto-save interval (in s)"
+#: ../lib/advene/rules/actions.py:150
+msgid "White"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Interval (in seconds) between package auto-saves"
+#: ../lib/advene/rules/actions.py:151
+msgid "Black"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4288
-msgid "Workspace"
+#: ../lib/advene/rules/actions.py:152
+msgid "Red"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4290
-msgid "On package saving,"
+#: ../lib/advene/rules/actions.py:153
+msgid "Green"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4291
-msgid "Do you wish to save the default workspace with the package?"
+#: ../lib/advene/rules/actions.py:154
+msgid "Blue"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4292
-msgid "never save the current workspace"
+#: ../lib/advene/rules/actions.py:155
+msgid "Yellow"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4293
-msgid "always save the current workspace"
+#: ../lib/advene/rules/actions.py:158
+msgid "At the top of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4294
-msgid "ask before saving the current workspace"
+#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
+msgid "In the middle of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4296
-msgid "Auto-validation of edited elements"
+#: ../lib/advene/rules/actions.py:160
+msgid "At the bottom of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4296
-msgid "Automatically validate modified elements when saving the package."
+#: ../lib/advene/rules/actions.py:163
+msgid "At the left of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4298
-msgid "On package load,"
+#: ../lib/advene/rules/actions.py:181
+msgid "Zero the volume during the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4299
-msgid "Do you wish to load the workspace saved with the package?"
+#: ../lib/advene/rules/actions.py:188
+msgid "Zero the volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4300
-msgid "never load the saved workspace"
+#: ../lib/advene/rules/actions.py:195
+msgid "Restore the volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4301
-msgid "always load the saved workspace"
+#: ../lib/advene/rules/actions.py:203
+msgid "Activate a STBV"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4302
-msgid "ask before loading the saved workspace"
+#: ../lib/advene/rules/actions.py:204
+msgid "STBV id"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4305
-msgid "Video Player"
+#: ../lib/advene/rules/actions.py:213
+msgid "Send a user event"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4306
-msgid "Autostart"
+#: ../lib/advene/rules/actions.py:214
+msgid "Identifier"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4306
-msgid ""
-"Automatically start the player when loading a media file (either directly or "
-"through a package)"
+#: ../lib/advene/rules/actions.py:215
+msgid "Delay in ms before sending the event."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4307
-msgid "Fulscreen timestamp"
+#: ../lib/advene/rules/actions.py:225
+msgid "Open a URL in the web browser"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4307
-msgid "Display the timestamp over the video when in fullscreen mode"
+#: ../lib/advene/rules/actions.py:235
+msgid "Open a static view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4308
-msgid "Enable captions"
+#: ../lib/advene/rules/actions.py:246
+msgid "Set the audio volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4308
-msgid "Enable captions over the video"
+#: ../lib/advene/rules/actions.py:247
+msgid "Volume level (from 0 to 100)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4309
-msgid "Caption font"
+#: ../lib/advene/rules/actions.py:256
+msgid "Set the playing rate"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4309
-msgid "TrueType font for captions"
+#: ../lib/advene/rules/actions.py:257
+msgid "Rate (100: normal rate, 200: twice slower)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG"
+#: ../lib/advene/rules/actions.py:266
+msgid "Play a sound resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG captions over the video"
+#: ../lib/advene/rules/actions.py:267
+msgid "Clip id"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4312
-msgid "Enable snapshots"
+#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
+msgid "Volume (0..100)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width"
+#: ../lib/advene/rules/actions.py:269 ../lib/advene/rules/actions.py:283
+msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width in pixels."
+#: ../lib/advene/rules/actions.py:280
+msgid "Play a sound file"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity"
+#: ../lib/advene/rules/actions.py:281
+msgid "Sound filename"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity level. -1 for no messages."
+#: ../lib/advene/rules/actions.py:293
+msgid "Set a state variable"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4317
-msgid "Devices"
+#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
+msgid "State variable name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4319
-msgid "Standard"
+#: ../lib/advene/rules/actions.py:295
+msgid "State value"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4321
-msgid "DVD drive"
+#: ../lib/advene/rules/actions.py:305
+msgid "Increment a state variable"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4321
-msgid "Drive letter for the DVD"
+#: ../lib/advene/rules/actions.py:315
+msgid "Clear all state variables"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4322
-msgid "GDI"
+#: ../lib/advene/rules/actions.py:330
+#, python-format
+msgid "Error in the evaluation of the parameter %s:"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4323
-msgid "Direct X"
+#: ../lib/advene/rules/actions.py:551
+#, python-format
+msgid "Cannot find the stbv %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4325
-msgid "DVD device"
+#: ../lib/advene/rules/actions.py:647
+msgid "The set_rate method is unavailable."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4325
-msgid "Device for the DVD"
+#: ../lib/advene/rules/actions.py:657
+msgid "No 'soundclips' resource folder in the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4326
-msgid "X11"
+#: ../lib/advene/rules/actions.py:683
+msgid "Full volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4327
-msgid "XVideo"
+#: ../lib/advene/rules/actions.py:684
+msgid "Left"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4328
-msgid "GL"
+#: ../lib/advene/rules/actions.py:686
+msgid "Right"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output"
+#: ../lib/advene/rules/importer.py:29
+msgid "Event history importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output module"
+#: ../lib/advene/rules/elements.py:141
+msgid "is equal to"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4332
-msgid "Recorder options"
+#: ../lib/advene/rules/elements.py:142
+msgid "is different from"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4333
-msgid "Audio input"
+#: ../lib/advene/rules/elements.py:143
+msgid "contains"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4333
-msgid "Device name for audio input (with gstrecorder plugin)"
+#: ../lib/advene/rules/elements.py:144
+msgid "is greater than"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record video"
+#: ../lib/advene/rules/elements.py:145
+msgid "is lower than"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record both video and audio"
+#: ../lib/advene/rules/elements.py:146
+msgid "matches the regexp"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4337
-msgid "<i>Experimental</i>"
+#: ../lib/advene/rules/elements.py:147
+msgid "is before"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4338
-msgid "Embed the caption scroller below the video"
+#: ../lib/advene/rules/elements.py:148
+msgid "meets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4339
-msgid "Embed the caption view below the video"
+#: ../lib/advene/rules/elements.py:149
+msgid "overlaps"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4341
-msgid "Time-related"
+#: ../lib/advene/rules/elements.py:150
+msgid "during"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4342
-msgid "Time format"
+#: ../lib/advene/rules/elements.py:151
+msgid "starts"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4342
-msgid "Format used to display timecodes"
+#: ../lib/advene/rules/elements.py:152
+msgid "finishes"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4356
-msgid "Default FPS"
+#: ../lib/advene/rules/elements.py:157
+msgid "is not true"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4357
-msgid ""
-"Default FPS (frame-per-second) value, when entering or displaying timestamps "
-"with frame numbers."
+#: ../lib/advene/rules/elements.py:158
+msgid "is true"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4358
-msgid "Time increment"
+#: ../lib/advene/rules/elements.py:162
+msgid "Basic conditions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4358
-msgid ""
-"Skip duration, when using control-left/right or forward/rewind buttons (in "
-"ms)."
+#: ../lib/advene/rules/elements.py:163
+msgid "Allen relations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4359
-msgid "Second time increment"
+#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
+msgid "Unknown type for overlaps comparison"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4359
-msgid "Skip duration, when using control-shift-left/right (in ms)."
+#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
+msgid "Unknown type for during comparison"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4360
-msgid "Third time increment"
+#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
+#, python-format
+msgid "Unknown action %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4360
-msgid "Skip duration, when using control-shift-up/down (in ms)."
+#: ../lib/advene/rules/elements.py:522
+#, python-format
+msgid "Unknown parameter %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4361
-msgid "Custom Up/Down"
+#: ../lib/advene/rules/elements.py:527
+msgid "Unknown actions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4361
-msgid ""
-"Use third time increment for up/down navigation without having to hold shift."
+#: ../lib/advene/rules/elements.py:972
+msgid "Start of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4363
-msgid "Scroll increment"
+#: ../lib/advene/rules/elements.py:973
+msgid "Cancel of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4363
-msgid ""
-"On most annotations, control+scrollwheel will increment/decrement their "
-"bounds by this value (in ms)."
+#: ../lib/advene/rules/elements.py:974
+msgid "Destruction of the edit window of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4364
-msgid "Second scroll increment"
+#: ../lib/advene/rules/elements.py:975
+msgid "Validation of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4364
-msgid ""
-"On most annotations, control+shift+scrollwheel will increment/decrement "
-"their bounds by this value (in ms)."
+#: ../lib/advene/rules/elements.py:976
+msgid "Ending editing of a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4366
-msgid "Player sync"
+#: ../lib/advene/rules/elements.py:977
+msgid "Beginning of an annotation"
 msgstr ""
-
-#: ../lib/advene/gui/main.py:4366
-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."
+
+#: ../lib/advene/rules/elements.py:978
+msgid "End of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4367
-msgid "Timeline parameters"
+#: ../lib/advene/rules/elements.py:979
+msgid "Creation of a new annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4368
-msgid "Font size for annotation widgets"
+#: ../lib/advene/rules/elements.py:980
+msgid "Ending editing of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4369
-msgid "Button height"
+#: ../lib/advene/rules/elements.py:981
+msgid "Suppression of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4369
-msgid "Height of annotation widgets"
+#: ../lib/advene/rules/elements.py:982
+msgid "Activation of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Interline height"
+#: ../lib/advene/rules/elements.py:983
+msgid "Deactivation of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Height of interlines"
+#: ../lib/advene/rules/elements.py:984
+msgid "Merging of two annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4372
-msgid "Text content"
+#: ../lib/advene/rules/elements.py:985
+msgid "Moving an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4373
-msgid "Completion mode"
+#: ../lib/advene/rules/elements.py:986
+msgid "Activation of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4373
-msgid "Enable dynamic completion mode"
+#: ../lib/advene/rules/elements.py:987
+msgid "Deactivation of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4374
-msgid "Abbreviation mode"
+#: ../lib/advene/rules/elements.py:988
+msgid "Creation of a new relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4374
-msgid "Enable abbreviation mode"
+#: ../lib/advene/rules/elements.py:989
+msgid "Ending editing of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4375
-msgid "Abbreviations"
+#: ../lib/advene/rules/elements.py:990
+msgid "Suppression of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4375
-msgid ""
-"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
-"followed by its replacement."
+#: ../lib/advene/rules/elements.py:991
+msgid "Creation of a new view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4377
-msgid "Text-To-Speech"
+#: ../lib/advene/rules/elements.py:992
+msgid "Ending editing of a view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4378
-msgid "TTS language"
+#: ../lib/advene/rules/elements.py:993
+msgid "Suppression of a view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4379
-msgid "What language settings should be used for text-to-speech"
+#: ../lib/advene/rules/elements.py:994
+msgid "Creation of a new query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4380
-msgid "English"
+#: ../lib/advene/rules/elements.py:995
+msgid "Ending editing of a query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4381
-msgid "French"
+#: ../lib/advene/rules/elements.py:996
+msgid "Suppression of a query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4382
-msgid "Spanish"
+#: ../lib/advene/rules/elements.py:997
+msgid "Creation of a new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4384
-msgid "TTS Encoding"
+#: ../lib/advene/rules/elements.py:998
+msgid "Ending editing of a schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4385
-msgid "What encoding should be used to communicate with the TTS engine"
+#: ../lib/advene/rules/elements.py:999
+msgid "Suppression of a schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4386
-msgid "TTS Engine"
+#: ../lib/advene/rules/elements.py:1001
+msgid "Ending editing an annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4387
-msgid ""
-"Which TTS engine should be used (modification requires restarting Advene to "
-"take into account)"
+#: ../lib/advene/rules/elements.py:1002
+msgid "Suppression of an annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4388
-msgid "Automatic"
+#: ../lib/advene/rules/elements.py:1003
+msgid "Creation of a new relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4389
-msgid "eSpeak"
+#: ../lib/advene/rules/elements.py:1004
+msgid "Ending editing a relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4390
-msgid "Custom script with standard input"
+#: ../lib/advene/rules/elements.py:1005
+msgid "Suppression of a relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4391
-msgid "Custom script with arguments"
+#: ../lib/advene/rules/elements.py:1006
+msgid "Creation of a new resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4392
-msgid "SAPI"
+#: ../lib/advene/rules/elements.py:1007
+msgid "Ending editing of a resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4393
-msgid "MacOS X say"
+#: ../lib/advene/rules/elements.py:1008
+msgid "Suppression of a resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4394
-msgid "Generic (text output)"
+#: ../lib/advene/rules/elements.py:1009
+msgid "Modification of the tag"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4438
-msgid "You should restart Advene to take some options into account."
+#: ../lib/advene/rules/elements.py:1010
+msgid "Activating a link"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4447
-#, python-format
-msgid "Imagecache saved to %s"
+#: ../lib/advene/rules/elements.py:1011
+msgid "Player start"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4460
-msgid "Restarting player..."
+#: ../lib/advene/rules/elements.py:1012
+msgid "Player stop"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4512
-msgid "Advene log"
+#: ../lib/advene/rules/elements.py:1013
+msgid "Player pause"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4581
-msgid "Select the package to merge"
+#: ../lib/advene/rules/elements.py:1014
+msgid "Player resume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4602
-msgid "Saving workspace"
+#: ../lib/advene/rules/elements.py:1015
+msgid "Going to a given position"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4605
-msgid "Enter a view name to save the workspace"
+#: ../lib/advene/rules/elements.py:1016
+msgid "Loading a new package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4606
-msgid "Default workspace"
+#: ../lib/advene/rules/elements.py:1017
+msgid "Activating a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4607
-msgid "Open this workspace when opening the package"
+#: ../lib/advene/rules/elements.py:1018
+msgid "Saving the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4641
-#, python-format
-msgid "Error: the view %s exists and is not a workspace view."
+#: ../lib/advene/rules/elements.py:1019
+msgid "Start of the dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4672
-#, python-format
-msgid "Cannot save default workspace: %s"
+#: ../lib/advene/rules/elements.py:1020
+msgid "End of the dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4682
-msgid "Standard workspace has been saved"
+#: ../lib/advene/rules/elements.py:1021
+msgid "Start of the application"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4689
-msgid "Website export"
+#: ../lib/advene/rules/elements.py:1022
+msgid "End of the application"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4690
-msgid "Exporting views to a website"
+#: ../lib/advene/rules/elements.py:1023
+msgid "User-defined event"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4693
-msgid "Output directory"
+#: ../lib/advene/rules/elements.py:1024
+msgid "Modification of the associated media"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4702
-msgid "Specify the output directory"
+#: ../lib/advene/rules/elements.py:1025
+msgid "Highlight a bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4711
-msgid "Maximum recursion depth"
+#: ../lib/advene/rules/elements.py:1026
+msgid "Unhighlight a bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4718
-msgid "Video URL"
+#: ../lib/advene/rules/elements.py:1027
+msgid "Updating duration of the movie"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4720
-msgid ""
-"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."
+#: ../lib/advene/rules/elements.py:1028
+msgid "Displaying a popup"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4770
-msgid "Could not export data: "
+#: ../lib/advene/rules/elements.py:1029
+msgid "Updating a snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4772
-#, python-format
-msgid "Website export to %s completed"
+#: ../lib/advene/rules/elements.py:1067
+msgid "Player control"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4811
-msgid "This video player is not able to grab specific screenshots"
+#: ../lib/advene/rules/elements.py:1068
+msgid "Audio enrichment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4821
-#, python-format
-msgid "Updating %d snapshots"
+#: ../lib/advene/rules/elements.py:1069
+msgid "Image enrichment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4826
-msgid "No snapshot to update"
+#: ../lib/advene/rules/elements.py:1070
+msgid "External display control"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4835 ../lib/advene/gui/main.py:4947
-msgid "You first must load a movie into Advene"
+#: ../lib/advene/rules/elements.py:1071
+msgid "Popup"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4838 ../lib/advene/gui/main.py:4950
-#, python-format
-msgid "The movie %s does not seem to exist."
+#: ../lib/advene/rules/elements.py:1073
+msgid "State"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4895
-msgid "Generating screenshots"
+#: ../lib/advene/rules/elements.py:1074
+msgid "GUI actions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4900
-msgid ""
-"<b>Screenshot generation</b>\n"
-"\n"
-"Screenshots will be captured approximately every 500ms.\n"
-"\n"
-"If the movie was paused or playing, the capture will begin at the current "
-"position. Else, it will begin at the beginning of the movie.\n"
-"Note that the main interface will not be refreshed as long as this window is "
-"open."
+#: ../lib/advene/rules/elements.py:1075
+msgid "Expert"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4941
-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."
+#: ../lib/advene/util/helper.py:403
+msgid "Annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4981
-msgid ""
-"Cannot import shotdetect output. Did you install the shotdetect software?"
+#: ../lib/advene/util/helper.py:404
+msgid "Relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4998
-msgid "Incomplete shots"
+#: ../lib/advene/util/helper.py:410
+msgid "Resource Folder"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5001
-#, python-format
-msgid "Detected %s shots"
+#: ../lib/advene/util/helper.py:446
+msgid "---- Elements ----"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5103
-#, python-format
-msgid "Could not run shotdetect: %s"
+#: ../lib/advene/util/helper.py:452
+msgid "---- Attributes ----"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5107
-#, python-format
-msgid "Detecting shots from %s"
+#: ../lib/advene/util/helper.py:455
+msgid "---- Methods ----"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5160
-msgid "Shot detection"
+#: ../lib/advene/util/helper.py:531
+#, python-format
+msgid "Cannot read %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5166
+#: ../lib/advene/util/helper.py:555
+#, python-format
 msgid ""
-"<b>Shot detection</b>\n"
-"\n"
-"Advene will try to detect shots from the currently loaded movie. The "
-"threshold parameter is used to specify the sensitivity of the algorithm, and "
-"should typically be between 50 and 80. If too many shots are detected, try "
-"to augment its value."
+"Error:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5182
-msgid "Sensitivity"
+#: ../lib/advene/util/helper.py:637
+msgid "schema"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:138
-msgid "Choose the file to insert"
+#: ../lib/advene/util/helper.py:637
+msgid "schemas"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:146
-msgid "Select a valid identifier"
+#: ../lib/advene/util/helper.py:638
+msgid "annotation"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:147
-#, python-format
-msgid ""
-"The filename %s contains invalid characters\n"
-"that have been replaced.\n"
-"You can modify this identifier if necessary:"
+#: ../lib/advene/util/helper.py:638
+msgid "annotations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:158
-msgid "Choose the soundclip to insert"
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:162
-msgid "Choose the directory to insert"
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:177
-msgid "Named-Entity extraction using NERD"
+#: ../lib/advene/util/helper.py:641
+msgid "relation"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:181
-msgid ""
-"Give the offset to use\n"
-"on specified element.\n"
-"It is in ms and can be\n"
-"either positive or negative."
+#: ../lib/advene/util/helper.py:641
+msgid "relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:225
-#, python-format
-msgid "Replace content in %s"
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation type"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:228
-#, python-format
-msgid "Replace content in annotations of type %s"
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation types"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:231
-msgid "Replace content in all annotations"
+#: ../lib/advene/util/helper.py:644
+msgid "query"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:324
-#, python-format
-msgid "Copy id %s"
+#: ../lib/advene/util/helper.py:644
+msgid "queries"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:358
-#, python-format
-msgid ""
-"<b>Statistics about %s</b>\n"
-"\n"
+#: ../lib/advene/util/helper.py:645
+msgid "view"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:364
-#, python-format
-msgid "Renumbering annotations of type %s"
+#: ../lib/advene/util/helper.py:645
+msgid "views"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:371
-msgid ""
-"<b>Renumber all annotations according to their order.</b>\n"
-"\n"
-"<i>Note that this action cannot be undone.</i>\n"
-"Replace the first numeric value of the annotation content with the new "
-"annotation number.\n"
-"If no numeric value is found and the annotation is structured, it will "
-"insert the number.\n"
-"If no numeric value is found and the annotation is of type text/plain, it "
-"will overwrite the annotation content.\n"
-"The offset parameter allows you to renumber from a given annotation."
+#: ../lib/advene/util/helper.py:646
+msgid "package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
-msgid "Offset"
+#: ../lib/advene/util/helper.py:646
+msgid "packages"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:399
+#: ../lib/advene/util/helper.py:658
 #, python-format
-msgid "Renumbering %d annotations"
+msgid "No %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:408
+#: ../lib/advene/util/helper.py:660
 #, python-format
-msgid "Annotation #%d"
+msgid "1 %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:445
+#: ../lib/advene/util/helper.py:662
 #, python-format
-msgid ""
-"Exporting annotation %(title)s\n"
-"from %(begin)s to %(end)s\n"
-"to %%(filename)s"
+msgid "%(count)d %(plural)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:458
-msgid "Browse"
+#: ../lib/advene/util/website_export.py:61
+#, python-format
+msgid "%s exists but is not a directory. Cancelling website export"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
-msgid "Open in web browser"
+#: ../lib/advene/util/website_export.py:67
+#, python-format
+msgid "%s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:479
-msgid "Search/replace content"
+#: ../lib/advene/util/website_export.py:422
+msgid "Starting export"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:497
-msgid "Desactivate"
+#: ../lib/advene/util/website_export.py:451
+#, python-format
+msgid "Depth %d"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:514
-msgid "Loop"
+#: ../lib/advene/util/website_export.py:455
+#, python-format
+msgid "Depth %(depth)d: processing %(url)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:515
-msgid "Duplicate"
+#: ../lib/advene/util/website_export.py:477
+msgid "Finalizing"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:519
-msgid "Save snapshot..."
+#: ../lib/advene/util/website_export.py:511
+#, python-format
+msgid ""
+"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
+"strong></p>"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:521
-msgid "Extract video fragment"
+#: ../lib/advene/util/website_export.py:554
+msgid "Export complete"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:551
-msgid "Incoming"
+#: ../lib/advene/util/importer.py:138
+msgid "Generic importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:567
-msgid "Outgoing"
+#: ../lib/advene/util/importer.py:165
+msgid "Usage: %prog [options] source-file destination-file"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:582
-msgid "Related annotations"
+#: ../lib/advene/util/importer.py:169
+msgid "Specify the offset in ms"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:589
-msgid "Incoming relations"
+#: ../lib/advene/util/importer.py:229
+msgid ""
+"Import filter error. The asynchronous API should be used, please report a "
+"bug."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:596
-msgid "Outgoing relations"
+#: ../lib/advene/util/importer.py:231
+msgid ""
+"Import filter error. No conversion method is defined,  please report a bug."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:612
-#, python-format
-msgid "Begin: %s"
+#: ../lib/advene/util/importer.py:488
+msgid "ExternalApp importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/util/importer.py:502
 #, python-format
-msgid "End: %s"
+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/gui/popup.py:615
+#: ../lib/advene/util/importer.py:504
 #, python-format
-msgid "Duration: %s"
-msgstr ""
-
-#: ../lib/advene/gui/popup.py:622
-msgid "Members:"
+msgid "The file %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:635
-msgid "Edit package properties..."
+#: ../lib/advene/util/importer.py:526
+#, python-format
+msgid "Could not run %(appname)s: %(msg)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
+#: ../lib/advene/util/importer.py:528
 #, python-format
-msgid "%d annotations(s) - statistics"
+msgid "Processing %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
-msgid "Create a new static view..."
+#: ../lib/advene/util/importer.py:532
+msgid "Cleaning up..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:865
-msgid "Create a new dynamic view..."
+#: ../lib/advene/util/importer.py:652
+msgid "Text importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
-msgid "Create a new annotation..."
+#: ../lib/advene/util/importer.py:665 ../lib/advene/util/importer.py:1195
+msgid "Specify the encoding of the input file (latin1, utf8...)"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
-msgid "Create a new schema..."
+#: ../lib/advene/util/importer.py:668
+msgid "Should the timestamps be encoded relative to the first timestamp?"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
-msgid "Create a new query..."
+#: ../lib/advene/util/importer.py:671
+msgid "Unit to consider for integers"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:651
-msgid "Create a new folder..."
+#: ../lib/advene/util/importer.py:674
+msgid ""
+"What timestamps are present in a line (only begin, both begin and end, or "
+"automatic recognition)"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:652
-msgid "Create a new resource file..."
+#: ../lib/advene/util/importer.py:817
+msgid "lsdvd importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:653
-msgid "Insert a new resource file..."
+#: ../lib/advene/util/importer.py:844
+msgid "Processing data"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:654
-msgid "Insert a new resource directory..."
+#: ../lib/advene/util/importer.py:862 ../lib/advene/util/importer.py:922
+msgid "DVD Chapter"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
-msgid "Insert a soundclip..."
+#: ../lib/advene/util/importer.py:866
+msgid "Launching lsdvd..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:676
-msgid "Play sound"
+#: ../lib/advene/util/importer.py:878
+msgid "chaplin importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:686
-msgid "Create a new annotation type..."
+#: ../lib/advene/util/importer.py:936
+msgid "Xi importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:688
-msgid "Create a new relation type..."
+#: ../lib/advene/util/importer.py:1005
+msgid "ELAN importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:699
+#: ../lib/advene/util/importer.py:1058
 #, python-format
-msgid "A caption dynamic view for %s already seems to exist."
+msgid "Converting tier %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:708
-#, python-format
-msgid "Caption %s annotations"
+#: ../lib/advene/util/importer.py:1159
+msgid "Processing time slots"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:740
-msgid "Create a comment view"
+#: ../lib/advene/util/importer.py:1174
+msgid "Fixing forward references"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:741
-msgid "Generate a caption dynamic view..."
+#: ../lib/advene/util/importer.py:1176
+msgid "Creating relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:742
-msgid "Display as transcription"
+#: ../lib/advene/util/importer.py:1188
+msgid "Subtitle (SRT) importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:743
-msgid "Display annotations in table"
+#: ../lib/advene/util/importer.py:1257
+#, python-format
+msgid "Subtitles from %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:744
-msgid "Export to another format..."
+#: ../lib/advene/util/importer.py:1270
+msgid "PRAAT importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:746
-msgid "Extract Named Entities..."
+#: ../lib/advene/util/importer.py:1360
+msgid "CMML importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:752
-msgid "Delete all annotations"
+#: ../lib/advene/util/importer.py:1423
+msgid "Parsing clip information"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:753
-msgid "Renumber annotations..."
+#: ../lib/advene/util/importer.py:1523
+msgid "Creating CMML schema"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:754
-msgid "Shot validation view..."
+#: ../lib/advene/util/importer.py:1547
+msgid "Parsing stream information"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:766
-#, python-format
-msgid "A follow dynamic view for %s already seems to exist."
+#: ../lib/advene/util/importer.py:1581
+msgid "IRI importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:775
-#, python-format
-msgid "Follow %s relation-type"
+#: ../lib/advene/util/importer.py:1590
+msgid "Generate one type per view"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:784
-msgid "Follow the relation"
+#: ../lib/advene/util/importer.py:1610
+#, python-format
+msgid "Parsing ensemble %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:804
-msgid "Delete all relations..."
+#: ../lib/advene/util/importer.py:1621
+#, python-format
+msgid "Parsing decoupage %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:805
-msgid "Create montage from related annotations"
+#: ../lib/advene/util/importer.py:1657
+msgid "Parsing views"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:806
-msgid "Create dynamic view following relations"
+#: ../lib/advene/util/importer.py:1705 ../lib/advene/util/importer.py:1794
+msgid "Initializing package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:824
-msgid "Apply query on..."
+#: ../lib/advene/util/importer.py:1743
+msgid "IRIData importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:849
-msgid "Activate view"
+#: ../lib/advene/util/importer.py:1757
+msgid "Parsing sound values"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:851
-msgid "Open adhoc view"
+#: ../lib/advene/util/importer.py:1769
+msgid "Creating annotations"
 msgstr ""
diff --git a/po/de.po b/po/de.po
index 3909547..43d5199 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: 2014-07-09 17:25+0200\n"
+"POT-Creation-Date: 2017-05-09 11:32+0200\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"
@@ -18,17 +18,6 @@ msgstr ""
 "X-Launchpad-Export-Date: 2007-10-22 13:38+0000\n"
 "X-Generator: Launchpad (build Unknown)\n"
 
-#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
-#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
-#, python-format
-msgid "File %s is not an Advene zip package."
-msgstr ""
-
-#: ../lib/advene/model/zippackage.py:243
-#, python-format
-msgid "Directory %s is not an extracted Advene zip package."
-msgstr ""
-
 #: ../lib/advene/model/bundle.py:296
 #, python-format
 msgid "%s not in bundle"
@@ -43,9155 +32,9096 @@ msgstr ""
 msgid "List of %s elements"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:263 ../lib/advene/rules/actions.py:36
-#: ../lib/advene/gui/plugins/actions.py:40
-msgid "Display a message"
+#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
+#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
+#, python-format
+msgid "File %s is not an Advene zip package."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:264
-#: ../lib/advene/gui/plugins/actions.py:41
-#: ../lib/advene/gui/plugins/actions.py:53
-#: ../lib/advene/gui/plugins/actions.py:71
-#: ../lib/advene/gui/plugins/actions.py:86
-#: ../lib/advene/gui/plugins/actions.py:102
-#: ../lib/advene/gui/plugins/actions.py:203
-msgid "String to display."
+#: ../lib/advene/model/zippackage.py:243
+#, python-format
+msgid "Directory %s is not an extracted Advene zip package."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:362
-msgid "Exception (traceback in console):"
-msgstr ""
+#: ../lib/advene/gui/widget.py:293
+#, fuzzy, python-format
+msgid "Set of %s annotations"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/core/controller.py:393
-msgid "No available GUI"
+#: ../lib/advene/gui/widget.py:1017
+#: ../lib/advene/gui/views/transcription.py:472
+#: ../lib/advene/gui/edit/montage.py:60
+msgid "Play"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:412
-msgid "No available event handler"
-msgstr ""
+#: ../lib/advene/gui/widget.py:1021 ../lib/advene/gui/edit/timeadjustment.py:77
+#, fuzzy
+msgid "Refresh snapshot"
+msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/core/controller.py:420
-msgid "No available gui"
-msgstr ""
+#: ../lib/advene/gui/widget.py:1025
+#, fuzzy
+msgid "Save as..."
+msgstr "Kein Pakte"
 
-#: ../lib/advene/core/controller.py:436
-#, python-format
-msgid "Warning: redefining an existing feature %s"
-msgstr ""
+#: ../lib/advene/gui/widget.py:1030
+#, fuzzy
+msgid "Use current player position"
+msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/core/controller.py:568
-msgid "All annotations"
+#: ../lib/advene/gui/widget.py:1036
+msgid "Adjust timestamp"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:569 ../lib/advene/gui/edit/rules.py:358
-#, python-format
-msgid "Annotations of type %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:189 ../lib/advene/gui/main.py:298
+#, fuzzy
+msgid "_Select player"
+msgstr "Wähle einen DVD"
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/imports.py:129
-#: ../lib/advene/gui/edit/imports.py:130
-msgid "Views"
-msgstr ""
+#: ../lib/advene/gui/main.py:191 ../lib/advene/gui/main.py:283
+msgid "_View"
+msgstr "_Zeige"
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/elements.py:521
-msgid "Tags"
-msgstr ""
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:300
+msgid "Packages"
+msgstr "Pakete"
 
-#: ../lib/advene/core/controller.py:570
-msgid "Ids"
+#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:242
+msgid "Open recent"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:747
-#, python-format
-msgid ""
-"Cannot start the webserver\n"
-"The following processes seem to use the %(port)s port: %(processes)s"
+#: ../lib/advene/gui/main.py:236
+msgid "Input from the keyboard (function keys)"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:797 ../lib/advene/core/controller.py:808
-#, python-format
-msgid "Loaded %(uri)s as %(alias)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:239
+msgid "_File"
+msgstr "_Datei"
 
-#: ../lib/advene/core/controller.py:799 ../lib/advene/core/controller.py:811
-#, python-format
-msgid "Cannot load package from file %(uri)s: %(error)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:240
+#, fuzzy
+msgid "_New package"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/core/controller.py:850
-msgid "Deactivating web server"
-msgstr ""
+#: ../lib/advene/gui/main.py:240
+#, fuzzy
+msgid "Create a new package"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/core/controller.py:970
-#, python-format
-msgid "Cannot get audio volume: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:241
+#, fuzzy
+msgid "_Open package"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/core/controller.py:1020
-#, python-format
-msgid "Cannot open Advene URL %s: the webserver is not running."
-msgstr ""
+#: ../lib/advene/gui/main.py:241
+#, fuzzy
+msgid "Open a package"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/core/controller.py:1128 ../lib/advene/gui/edit/merge.py:272
-msgid "None"
-msgstr ""
+#: ../lib/advene/gui/main.py:242
+#, fuzzy
+msgid "Show recently opened packages"
+msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/core/controller.py:1222
-#, python-format
-msgid "Found matching video file in moviepath: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:243
+#, fuzzy
+msgid "_Save package"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/core/controller.py:1263 ../lib/advene/core/controller.py:1265
-msgid "Analysis of "
-msgstr ""
+#: ../lib/advene/gui/main.py:243
+#, fuzzy
+msgid "Save the package"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/core/controller.py:1465
-msgid "Cannot split the annotation: the given position is outside."
-msgstr ""
+#: ../lib/advene/gui/main.py:244
+#, fuzzy
+msgid "Save package as..."
+msgstr "Kein Pakte"
 
-#: ../lib/advene/core/controller.py:1630
-#, python-format
-msgid "Cannot find the template package %(filename)s: %(error)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:244
+#, fuzzy
+msgid "Save the package as..."
+msgstr "Kein Pakte"
 
-#: ../lib/advene/core/controller.py:1672
-#, python-format
-msgid "Cannot read the imported package %(uri)s: %(error)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:245
+#, fuzzy
+msgid "Close package"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/core/controller.py:1907
-msgid "Package URI has changed. Reloading package with new URI."
-msgstr ""
+#: ../lib/advene/gui/main.py:245
+#, fuzzy
+msgid "Close the package"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/core/controller.py:1925
-msgid ""
-"Cannot load package: the following annotations do not have Millisecond "
-"fragments:"
-msgstr ""
+#: ../lib/advene/gui/main.py:247
+msgid "Save session"
+msgstr "Sitzung speichern"
 
-#: ../lib/advene/core/controller.py:1952
-#, python-format
-msgid "Cannot handle master attribute, the package %s is not imported."
-msgstr ""
+#: ../lib/advene/gui/main.py:247
+#, fuzzy
+msgid "Save the current session (list of opened packages)"
+msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/core/controller.py:1954
-#, python-format
-msgid "Checking master package %s for not yet imported elements."
+#: ../lib/advene/gui/main.py:248
+msgid "Save workspace"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1994
-msgid "Standard summary"
+#: ../lib/advene/gui/main.py:249
+msgid "...as package view"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1999
-msgid "Default view"
+#: ../lib/advene/gui/main.py:250
+msgid "...as standard workspace"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2041
-#, python-format
-msgid ""
-"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
+#: ../lib/advene/gui/main.py:250
+msgid "Use the current layout as standard workspace in the future"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2131
-#, python-format
-msgid "Got exception %s when stopping player."
-msgstr ""
+#: ../lib/advene/gui/main.py:252
+#, fuzzy
+msgid "Associate a video _File"
+msgstr "Wähle eine Video Datei"
 
-#: ../lib/advene/core/controller.py:2214
-#, python-format
-msgid "Raised exception in update_status: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:252
+#, fuzzy
+msgid "Associate a video file"
+msgstr "Wähle eine Video Datei"
 
-#: ../lib/advene/core/controller.py:2241
-msgid "Unable to start the player."
-msgstr ""
+#: ../lib/advene/gui/main.py:253
+#, fuzzy
+msgid "Associate a _DVD"
+msgstr "Wähle eine DVD Kapitel"
 
-#: ../lib/advene/core/controller.py:2448
-#, fuzzy, python-format
-msgid "Comment on set of %d annotations"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/main.py:253
+#, fuzzy
+msgid "Associate a chapter from a DVD"
+msgstr "Wähle eine DVD Kapitel"
 
-#: ../lib/advene/core/controller.py:2450
-#, python-format
-msgid "Comment on %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:254
+#, fuzzy
+msgid "Associate a _Video stream"
+msgstr "Wähle einen video stream"
 
-#: ../lib/advene/core/controller.py:2454
-#, python-format
-msgid ""
-"<h1>Comment on %(title)s</h1>\n"
-"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
-"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
-"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
-"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
-"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
-"\"%(imgurl)s\" ></img></a></span>"
-msgstr ""
+#: ../lib/advene/gui/main.py:254
+msgid "Enter a video stream address"
+msgstr "Gebe eine Video Stream Adresse ein"
 
-#: ../lib/advene/core/controller.py:2464
-#, fuzzy, python-format
-msgid "List of %s annotations"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/main.py:256
+msgid "_Import File"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/core/controller.py:2499
-#, python-format
-msgid "Cannot export to %(filename)s: %(e)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:256
+msgid "Import data from an external source"
+msgstr "Importiere Daten von einer Externen Quelle"
 
-#: ../lib/advene/core/controller.py:2514 ../lib/advene/core/controller.py:2523
-#, python-format
-msgid "Error when exporting: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:257
+#, fuzzy
+msgid "_Process video"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/core/controller.py:2525 ../lib/advene/gui/views/table.py:406
-#: ../lib/advene/gui/views/table.py:536
-#, python-format
-msgid "Data exported to %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:257
+#, fuzzy
+msgid "Import data from video processing algorithms"
+msgstr "Importiere Daten von einer Externen Quelle"
 
-#: ../lib/advene/core/webcherry.py:51
-msgid "The webserver requires version 3.0 of CherryPy at least."
-msgstr ""
+#: ../lib/advene/gui/main.py:259
+msgid "Merge package"
+msgstr "Vereine Packete"
 
-#: ../lib/advene/core/webcherry.py:167
-#, python-format
-msgid ""
-"\n"
-"            <p>\n"
-"            <a href=\"/admin\">Server administration</a> |\n"
-"            <a href=\"/media\">Media control</a> |\n"
-"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
-"            </p>\n"
-"            Location: %(locationbar)s\n"
-"            <hr>\n"
-"            "
-msgstr ""
+#: ../lib/advene/gui/main.py:259
+msgid "Merge elements from another package"
+msgstr "Füge Elemente von anderen Packeten hinzu"
 
-#: ../lib/advene/core/webcherry.py:227
-msgid "Unspecified Error"
+#: ../lib/advene/gui/main.py:260
+msgid "Import _DVD chapters"
+msgstr "Importiere _DVD Kapitel"
+
+#: ../lib/advene/gui/main.py:260
+msgid "Create annotations based on DVD chapters"
+msgstr "Erschaffe Anmerkung auf Basis des DVD Kapitels"
+
+#: ../lib/advene/gui/main.py:262
+#, fuzzy
+msgid "_Export..."
+msgstr "Datei _importieren"
+
+#: ../lib/advene/gui/main.py:262
+#, fuzzy
+msgid "Export data to another format"
+msgstr "Importiere Daten von einer Externen Quelle"
+
+#: ../lib/advene/gui/main.py:263
+msgid "_Website export..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:228
-#, python-format
-msgid ""
-"\n"
-"        <h1>Error</h1>\n"
-"        <p>An error occurred:</p>\n"
-"        %s\n"
-"        "
+#: ../lib/advene/gui/main.py:263
+msgid "Export views to a website"
 msgstr ""
-"\n"
-"        <h1>Fehler</h1>\n"
-"        <p>Ein Fehler tauchte auf:</p>\n"
-"        %s\n"
-"        "
 
-#: ../lib/advene/core/webcherry.py:261
-msgid "<h1>No available mediaplayer</h1>"
-msgstr "<h1>Kein verfügbarer Mediaplayer</h1>"
+#: ../lib/advene/gui/main.py:265
+#, fuzzy
+msgid "_Quit"
+msgstr "_Bearbeite"
 
-#: ../lib/advene/core/webcherry.py:265
-#, python-format
-msgid ""
-"\n"
-"            <h1>Current STBV: %(currentstbv)s</h1>\n"
-"\n"
-"            <h1>Player status</h1>\n"
-"            <table border=\"1\">\n"
-"            <tr>\n"
-"            <td>Current position</td><td>%(position)s</td>\n"
-"            <td>Duration</td><td>%(duration)s</td>\n"
-"            <td>Player status</td><td>%(status)s</td>\n"
-"            </tr>\n"
-"            </table>\n"
-"            "
+#: ../lib/advene/gui/main.py:267
+msgid "_Edit"
+msgstr "_Bearbeite"
+
+#: ../lib/advene/gui/main.py:268
+msgid "_Undo"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:284
-msgid "<h1>No playlist</h1>"
-msgstr "<h1>Keine Abspielliste</h1>"
+#: ../lib/advene/gui/main.py:269
+#, fuzzy
+msgid "_Find"
+msgstr "_Datei"
 
-#: ../lib/advene/core/webcherry.py:286
-#, python-format
-msgid ""
-"<h1>Current playlist</h1>\n"
-"                <ul>%s</ul>"
+#: ../lib/advene/gui/main.py:270
+msgid "_Delete"
 msgstr ""
-"<h1>Gegenwärtige Abspielliste</h1>\n"
-"                <ul>%s</ul>"
 
-#: ../lib/advene/core/webcherry.py:288
-msgid ""
-"\n"
-"                <form action=\"/media/play\" method=\"GET\">\n"
-"                Starting pos: <input type=\"text\" name=\"position\" value="
-"\"0\">\n"
-"                <input type=\"submit\" value=\"Play\">\n"
-"                </form>\n"
-"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
-"\">Pause</a><br>\n"
-"                "
+#: ../lib/advene/gui/main.py:271
+msgid "Create"
+msgstr "Erstelle"
+
+#: ../lib/advene/gui/main.py:272 ../lib/advene/gui/main.py:3309
+#: ../lib/advene/util/helper.py:405
+msgid "Schema"
+msgstr "Schema"
+
+#: ../lib/advene/gui/main.py:273 ../lib/advene/gui/edit/rules.py:1091
+#: ../lib/advene/rules/actions.py:236 ../lib/advene/util/helper.py:408
+msgid "View"
+msgstr "Darstellung"
+
+#: ../lib/advene/gui/main.py:274 ../lib/advene/gui/popup.py:459
+#: ../lib/advene/util/helper.py:409
+msgid "Query"
+msgstr "Abfragen"
+
+#: ../lib/advene/gui/main.py:275 ../lib/advene/util/helper.py:406
+msgid "Annotation Type"
+msgstr "Kommentar Typ"
+
+#: ../lib/advene/gui/main.py:276 ../lib/advene/util/helper.py:407
+#, fuzzy
+msgid "Relation Type"
+msgstr "Verbindungs Type"
+
+#: ../lib/advene/gui/main.py:280
+msgid "P_ackage properties"
+msgstr "P_acket Eigenschaften"
+
+#: ../lib/advene/gui/main.py:280
+msgid "Edit package properties"
+msgstr "Bearbeite Packet Eigentschaften"
+
+#: ../lib/advene/gui/main.py:281
+msgid "P_references"
+msgstr "E_instellungen"
+
+#: ../lib/advene/gui/main.py:281
+msgid "Interface preferences"
+msgstr "Oberflächen Eigentschaften"
+
+#: ../lib/advene/gui/main.py:285
+msgid "_Start Web Browser"
 msgstr ""
-"\n"
-"                <form action=\"/media/play\" method=\"GET\">\n"
-"                Start position: <input type=\"text\" name=\"position\" value="
-"\"0\">\n"
-"                <input type=\"submit\" value=\"Play\">\n"
-"                </form>\n"
-"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
-"\">Pause</a><br>\n"
-"                "
 
-#: ../lib/advene/core/webcherry.py:295
-msgid ""
-"<hr />\n"
-"            <form action=\"/media/load\" method=\"GET\">\n"
-"            Add a new file (<em>dvd</em> to play a DVD):\n"
-"            <input type=\"text\" name=\"filename\">\n"
-"            <input type=\"submit\" value=\"Add\">\n"
-"            </form>"
+#: ../lib/advene/gui/main.py:285
+msgid "Start the web browser"
 msgstr ""
-"<hr />\n"
-"            <form action=\"/media/load\" method=\"GET\">\n"
-"            Neue DAtei hinzufügen (<em>dvd</em> für  DVD):\n"
-"            <input type=\"text\" name=\"filename\">\n"
-"            <input type=\"submit\" value=\"Add\">\n"
-"            </form>"
 
-#: ../lib/advene/core/webcherry.py:301
-msgid ""
-"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
+#: ../lib/advene/gui/main.py:287
+msgid "Simplify interface"
 msgstr ""
-"<h3><a href=\"/media/snapshot\">zugriff auf gegenwärtige Paket "
-"Schnappschüsse</h3>"
 
-#: ../lib/advene/core/webcherry.py:310
-#, python-format
-msgid "Unknown STBV identifier: %s"
-msgstr "Unbekannte STBV identifier: %s"
+#: ../lib/advene/gui/main.py:287
+#, fuzzy
+msgid "Simplify the application interface (toggle)"
+msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/core/webcherry.py:385
-msgid "Media information"
+#: ../lib/advene/gui/main.py:288
+msgid "Evaluator"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:398
-msgid "File added"
+#: ../lib/advene/gui/main.py:288
+msgid "Open python evaluator window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:399
-#, python-format
-msgid "<p><strong>%s has been added to the playlist</strong></p>"
+#: ../lib/advene/gui/main.py:289 ../lib/advene/gui/main.py:4061
+msgid "Webserver log"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
-msgid "Access to packages snapshots"
+#: ../lib/advene/gui/main.py:292
+msgid "_Player"
+msgstr "_Spieler"
+
+#: ../lib/advene/gui/main.py:293
+msgid "Go to _Time"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
-msgid "Unknown package alias"
+#: ../lib/advene/gui/main.py:293
+msgid "Goto a specified time code"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:426
-#, python-format
-msgid "Available snapshots for %s"
+#: ../lib/advene/gui/main.py:294
+msgid "Save _ImageCache"
+msgstr "Sichere _ImageCache"
+
+#: ../lib/advene/gui/main.py:294
+msgid "Save the contents of the ImageCache to disk"
+msgstr "Sichere den Inhalt des ImageCaches auf die Festplatte"
+
+#: ../lib/advene/gui/main.py:295
+#, fuzzy
+msgid "Reset ImageCache"
+msgstr "Sichere _ImageCache"
+
+#: ../lib/advene/gui/main.py:295
+#, fuzzy
+msgid "Reset the ImageCache"
+msgstr "Sichere _ImageCache"
+
+#: ../lib/advene/gui/main.py:296
+msgid "_Restart player"
+msgstr "_Neustart Spieler"
+
+#: ../lib/advene/gui/main.py:296
+#, fuzzy
+msgid "Restart the player"
+msgstr "_Neustart Spieler"
+
+#: ../lib/advene/gui/main.py:297
+#, fuzzy
+msgid "Update annotation screenshots"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:297
+msgid "Update screenshots for annotation bounds"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:432
-#, python-format
-msgid ""
-"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
-"a></p>"
+#: ../lib/advene/gui/main.py:298
+msgid "Select the player plugin"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:439
-msgid "Done"
-msgstr "Erledigt"
+#: ../lib/advene/gui/main.py:301
+msgid "No package"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/core/webcherry.py:441
-msgid "Pending"
-msgstr "Ausstehend"
+#: ../lib/advene/gui/main.py:303
+msgid "_Help"
+msgstr "_Hilfe"
 
-#: ../lib/advene/core/webcherry.py:487
-#, fuzzy, python-format
-msgid "Unknown annotation id: %s"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/main.py:304
+#, fuzzy
+msgid "Help"
+msgstr "_Hilfe"
 
-#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
-#, python-format
-msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
-msgstr "Kann nicht stbvid %(stbvid)s: %(error)s aktivieren"
+#: ../lib/advene/gui/main.py:305
+msgid "Get support"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:675
-msgid "<p>No GUI is available."
-msgstr "<p>Kein GUI zur Verfügung"
+#: ../lib/advene/gui/main.py:306
+msgid "Check for updates"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:677
-#, python-format
-msgid "<p>Opened adhoc views: %s</p>"
-msgstr "<p>Geöffnete adhoc ansichten: %s</p>"
+#: ../lib/advene/gui/main.py:307
+msgid "Display shortcuts"
+msgstr "Zeige Shortcuts"
+
+#: ../lib/advene/gui/main.py:308
+#, fuzzy
+msgid "Display logfile"
+msgstr "Verbindungs Type"
+
+#: ../lib/advene/gui/main.py:308
+#, fuzzy
+msgid "Display log file"
+msgstr "Verbindungs Type"
+
+#: ../lib/advene/gui/main.py:309
+msgid "Open logfile folder"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:678
-msgid "<p>Available adhoc views:</p><ul>"
-msgstr "<p>Verfügbare adhoc ansichten:</p><ul>"
+#: ../lib/advene/gui/main.py:309
+msgid ""
+"Display logfile folder. It can help when sending the advene.log file by e-"
+"mail."
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:699
-#, python-format
-msgid "<p>Current stbv: %s</p>"
-msgstr "<p>Gegenwärtige stbv: %s</p>"
+#: ../lib/advene/gui/main.py:310
+msgid "_About"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:700
+#: ../lib/advene/gui/main.py:332 ../lib/advene/gui/main.py:3789
 #, python-format
-msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
-msgstr "<p>Du kannst nicht folgende STBV:</p><ul>%s</ul> aktivieren"
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:702
-msgid "Activate and play"
-msgstr "Aktivieren und Abspielen"
+#: ../lib/advene/gui/main.py:340
+msgid "Open a package file"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:708
-msgid "Application information"
+#: ../lib/advene/gui/main.py:341
+msgid "Save the current package"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:778
-msgid "Missing element id parameter"
+#: ../lib/advene/gui/main.py:342
+msgid "Save the package with a new name"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:782
-#, python-format
-msgid "No existing element with id %s"
+#: ../lib/advene/gui/main.py:343
+msgid "Select movie file..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:791
-#, python-format
-msgid "<p>The GUI view %s does not exist.</p>"
+#: ../lib/advene/gui/main.py:344
+msgid "Select DVD"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:798
-msgid "Invalid request"
+#: ../lib/advene/gui/main.py:346
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:808
+#: ../lib/advene/gui/edit/transcribe.py:1203
+msgid "Undo"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:803
-msgid "Invalid configuration variable name"
+#: ../lib/advene/gui/main.py:348
+#, fuzzy
+msgid "Create a text annotation"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:349
+#, fuzzy
+msgid "Create a graphical annotation"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:355
+msgid "List recently opened packages"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:815
-msgid "Invalid value"
+#: ../lib/advene/gui/main.py:385
+msgid "Snapshotter activity"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:819
+#: ../lib/advene/gui/main.py:387
 #, python-format
-msgid "Unsupported method %s"
+msgid "%d queued requests"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:845
-#, python-format
-msgid ""
-"\n"
-"        <h1>Authorized hosts</h1>\n"
-"        <table border=\"1\">\n"
-"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
-"        %s\n"
-"        </table>\n"
-"        <form method=\"GET\">\n"
-"        Add a new hostname to the list :<br>\n"
-"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
-"\"Add\">\n"
-"        </form>\n"
-"        "
+#: ../lib/advene/gui/main.py:388
+msgid "Cancel all requests"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:859
-msgid "Access control"
+#: ../lib/advene/gui/main.py:393
+#, fuzzy
+msgid "No snapshotter"
+msgstr "Zeige Shortcuts"
+
+#: ../lib/advene/gui/main.py:415
+msgid "No snapshotting activity"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:864
-msgid "Access control - add a hostname"
-msgstr "Zugriffs Kontrolle - Füge Hostname hinzu"
+#: ../lib/advene/gui/main.py:419
+msgid "Snapshotting"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
+#: ../lib/advene/gui/main.py:436
+#, fuzzy
+msgid "Display application log messages"
+msgstr "Verbindungs Type"
+
+#: ../lib/advene/gui/main.py:477
+msgid "Quicksearch lists"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:483
+msgid "Please specify the lists of elements to be searched."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:502
 #, python-format
-msgid "<strong>Error: %s is an invalid hostname.</strong>"
-msgstr "<strong>Fehler: %s ist ein ungültiger hostname.</strong>"
+msgid ""
+"Searching on %s.\n"
+"Left click to launch the search, right-click to set the quicksearch options"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:875
+#: ../lib/advene/gui/main.py:503
 #, python-format
-msgid "<p>Added %s to authorized hosts list.</p>"
-msgstr "<p>Füge %s zur authorisierten host liste.</p>"
+msgid "String to search in %s"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:881
-msgid "Access control - delete a hostname"
-msgstr "Zugriffs Kontrolle - Lösche einen Hostnamen"
+#: ../lib/advene/gui/main.py:516 ../lib/advene/gui/main.py:520
+msgid "Tracing : "
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:889
-msgid "<strong>Cannot remove the localhost access.</strong>"
-msgstr "<strong>Du kannst nicht den localhost zugriff löschen</strong>"
+#: ../lib/advene/gui/main.py:516
+msgid "off"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:894
-#, python-format
-msgid "<p>Removed %s from authorized hosts list.</p>"
-msgstr "<p>lösche %s von der Host liste</p>"
+#: ../lib/advene/gui/main.py:520
+#, fuzzy
+msgid "on"
+msgstr "Erledigt"
 
-#: ../lib/advene/core/webcherry.py:896
-#, python-format
-msgid "<p>%s is not in authorized hosts list.</p>"
-msgstr "<p>%s ist keine authorisierte Hostliste</p>"
+#: ../lib/advene/gui/main.py:532
+#: ../lib/advene/gui/views/interactivequery.py:409
+msgid "String to search"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:945
-msgid "Server Administration"
-msgstr "Server Administration"
+#: ../lib/advene/gui/main.py:540
+msgid "Launch search"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:953
-#, python-format
-msgid ""
-"\n"
-"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
-"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
-"        <p><a href=\"/action\">List available actions</a></p>\n"
-"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
-"        <p><a href=\"/media\">Media control</a></p>\n"
-"        <p><a href=\"/application\">Display GUI status</a></p>\n"
-"        <p><a href=\"/admin/list\">List available files</a></p>\n"
-"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
-"p>\n"
-"        <p>Display mode : %(displaymode)s</p>\n"
-"        <hr>\n"
-"        <p>Load a package :\n"
-"        <form action=\"/admin/load\" method=\"GET\">\n"
-"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
-"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
-"        <input type=\"submit\" value=\"Load\" />\n"
-"        </form>\n"
-"        </body></html>\n"
-"        "
+#: ../lib/advene/gui/main.py:545
+msgid "Ignore case"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:983
-msgid "Available files"
+#: ../lib/advene/gui/main.py:550
+msgid "Searched elements"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1009
-msgid "You should specify an alias"
+#: ../lib/advene/gui/main.py:634
+msgid "Playing"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1014
-msgid "You should specify an uri"
+#: ../lib/advene/gui/main.py:635
+msgid "Pause"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1020
-#, python-format
-msgid "Package %s loaded"
+#: ../lib/advene/gui/main.py:636
+msgid "Init"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
-#, python-format
-msgid ""
-"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
-"the <a href=\"/packages\">package list</a>."
+#: ../lib/advene/gui/main.py:637 ../lib/advene/gui/views/table.py:308
+#: ../lib/advene/gui/edit/elements.py:1816
+msgid "End"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1024
-#, python-format
-msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:638
+msgid "Undefined"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1035
+#: ../lib/advene/gui/main.py:660
+#, fuzzy, python-format
+msgid "Exception in update_annotation: %s."
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:691
 #, python-format
-msgid "Package %s deleted"
+msgid "Exception in update_relation: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1036
-msgid "<p>Go to the <a href=\"/packages\">package list</a>."
+#: ../lib/advene/gui/main.py:716
+#, python-format
+msgid "Exception in update_view: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1039
+#: ../lib/advene/gui/main.py:747
 #, python-format
-msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
+msgid "Exception in update_query: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1056
+#: ../lib/advene/gui/main.py:770
 #, python-format
-msgid "Package %s saved"
+msgid "Exception in update_resource: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1060
+#: ../lib/advene/gui/main.py:793
 #, python-format
-msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
+msgid "Exception in update_schema: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1070
-msgid "Server reset"
+#: ../lib/advene/gui/main.py:816
+#, fuzzy, python-format
+msgid "Exception in update_annotationtype: %s."
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:844
+#, fuzzy, python-format
+msgid "Exception in update_relationtype: %s."
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:950
+msgid "Enter the new time value"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1076
-msgid "Available TALES methods"
+#: ../lib/advene/gui/main.py:974
+#, python-format
+msgid "Replace content in %d elements"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1117
-msgid "Loaded package(s)"
+#: ../lib/advene/gui/main.py:987
+msgid "Find word"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1119
-msgid ""
-"\n"
-"        <h1>Loaded package(s)</h1>\n"
-"        <table border=\"1\" width=\"50%\">\n"
-"        <tr>\n"
-"        <th>Alias</th>\n"
-"        <th>Action</th>\n"
-"        <th>URI</th>\n"
-"        <th>Annotations</th>\n"
-"        </tr>\n"
-"        "
+#: ../lib/advene/gui/main.py:994
+msgid "Replace by"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1131
+#: ../lib/advene/gui/main.py:1022
 #, python-format
-msgid ""
-"<tr>\n"
-"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
-"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
-"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
-"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
-"            <td>%(uri)s</td>\n"
-"            <td>%(size)d</td>\n"
-"            </tr>\n"
-"            "
+msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
-#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
-#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
-#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
-#: ../lib/advene/core/webcherry.py:2039
-msgid "Error"
+#: ../lib/advene/gui/main.py:1031
+msgid "The video extracting feature is not available."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1205
+#: ../lib/advene/gui/main.py:1034
+#, fuzzy
+msgid "Video export"
+msgstr "_Einstellung Spieler"
+
+#: ../lib/advene/gui/main.py:1036
 #, python-format
-msgid "The TALES expression %s is not valid."
+msgid "Exporting video montage/fragment to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1256
-msgid "Content mode not available on non-content data"
+#: ../lib/advene/gui/main.py:1038
+msgid "Please choose a destination filename"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
-#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
-#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
-#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
-#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
-#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
-msgid "<h1>Error</h1>"
+#: ../lib/advene/gui/main.py:1116
+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/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
+#: ../lib/advene/gui/main.py:1118
 #, python-format
 msgid ""
-"<p>There was an error in the template code.</p>\n"
-"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"                <p>Error message: <em>%(message)s</em></p>"
+"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/core/webcherry.py:1290
+#: ../lib/advene/gui/main.py:1120
 #, python-format
 msgid ""
-"<p>An invalid character is in the Context:</p>\n"
-"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
-"pre>"
+"You are now working with the following video:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1298
-#, python-format
-msgid ""
-"<p>There was an error in the TALES expression.</p>\n"
-"                <pre>%s</pre>"
+#: ../lib/advene/gui/main.py:1237
+msgid "Open this view..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1318
-#, python-format
-msgid ""
-"<p>There was an error.</p>\n"
-"                <pre>%s</pre>"
+#: ../lib/advene/gui/main.py:1238 ../lib/advene/gui/plugins/actions.py:286
+#: ../lib/advene/gui/views/viewbook.py:124
+msgid "...in its own window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1342
-#, python-format
-msgid ""
-"\n"
-"            <hr>\n"
-"            <p>\n"
-"            Location: %(location)s<br>\n"
-"            <form name=\"navigation\" method=\"GET\">\n"
-"            <a href=\"%(levelup)s\">Up one level</a> |\n"
-"            Next level :\n"
-"            <select name=\"path\" onchange=\"submit()\">\n"
-"            "
+#: ../lib/advene/gui/main.py:1239 ../lib/advene/gui/plugins/actions.py:287
+#: ../lib/advene/gui/views/viewbook.py:125
+#: ../lib/advene/gui/views/__init__.py:382
+msgid "...embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1360
-msgid ""
-"\n"
-"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
-"            <option selected></option>\n"
-"            "
+#: ../lib/advene/gui/main.py:1240 ../lib/advene/gui/plugins/actions.py:288
+#: ../lib/advene/gui/views/viewbook.py:126
+#: ../lib/advene/gui/views/__init__.py:383
+msgid "...embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1378
-#, python-format
-msgid ""
-"<hr>\n"
-"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
-"package %(uri)s returns %(value)s</p>\n"
-"            "
+#: ../lib/advene/gui/main.py:1241 ../lib/advene/gui/plugins/actions.py:289
+#: ../lib/advene/gui/views/viewbook.py:127
+#: ../lib/advene/gui/views/__init__.py:384
+msgid "...embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1414
-#, python-format
-msgid "<p>Package <strong>%s</strong> not loaded</p>"
+#: ../lib/advene/gui/main.py:1242 ../lib/advene/gui/plugins/actions.py:290
+#: ../lib/advene/gui/views/viewbook.py:128
+#: ../lib/advene/gui/views/__init__.py:385
+msgid "...embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1456
-#, python-format
-msgid ""
-"<p>There was an error in the template code.</p>\n"
-"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"            <p>Error message: <em>%(message)s</em></p>"
+#: ../lib/advene/gui/main.py:1254
+msgid "_All available views"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1464
-#, python-format
-msgid ""
-"<p>There was an error in the expression.</p>\n"
-"            <pre>%s</pre>"
+#: ../lib/advene/gui/main.py:1270 ../lib/advene/gui/views/timeline.py:126
+msgid "Timeline"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1472
-#, python-format
-msgid ""
-"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
-"            %(type)s\n"
-"            %(value)s\n"
-"            %(traceback)s</pre>"
+#: ../lib/advene/gui/main.py:1271 ../lib/advene/gui/views/finder.py:771
+#, fuzzy
+msgid "Package finder"
+msgstr "Pakete"
+
+#: ../lib/advene/gui/main.py:1272
+msgid "Transcription of annotations"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
-msgid "<p>Cannot set the value : invalid path</p>"
+#: ../lib/advene/gui/main.py:1273
+#, fuzzy
+msgid "Annotation table"
+msgstr "Kommentar Typ"
+
+#: ../lib/advene/gui/main.py:1276
+msgid "Note-taking editor"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
-#, python-format
-msgid ""
-"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
-"%(folder)s could not be created.</p>"
+#: ../lib/advene/gui/main.py:1277
+msgid "Active bookmarks"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
-msgid "Resource successfuly created/updated"
+#: ../lib/advene/gui/main.py:1280 ../lib/advene/gui/views/tagbag.py:57
+msgid "Bag of tags"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1611
-msgid "Value successfuly updated"
+#: ../lib/advene/gui/main.py:1281
+msgid "TALES explorer"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1613
-#, python-format
-msgid ""
-"Unable to update the attribute %(attribute)s for element %(element)s: "
-"%(error)s."
+#: ../lib/advene/gui/main.py:1282
+msgid "Dynamic montage"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1724
-msgid "<p>Invalid request</p>."
+#: ../lib/advene/gui/main.py:1283 ../lib/advene/gui/plugins/videoplayer.py:37
+#, fuzzy
+msgid "Video player"
+msgstr "_Einstellung Spieler"
+
+#: ../lib/advene/gui/main.py:1286
+msgid "Open a comment view in the web browser"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
-msgid "Value updated"
+#: ../lib/advene/gui/main.py:1287
+msgid "Create or open a comment view"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1789
-#, python-format
+#: ../lib/advene/gui/main.py:1290
 msgid ""
-"\n"
-"                <h1>Value updated</h1>\n"
-"                The value of %(path)s has been updated to\n"
-"                <pre>\n"
-"                %(value)s\n"
-"                </pre>\n"
-"                "
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1806
-#, python-format
-msgid ""
-"\n"
-"                    <h1>Value updated</h1>\n"
-"                    The value of %(path)s has been updated to\n"
-"                    <pre>\n"
-"                    %(value)s\n"
-"                    </pre>\n"
-"                    "
+#: ../lib/advene/gui/main.py:1291
+#, fuzzy
+msgid "Display edition history"
+msgstr "Zeige Kommentare an einer Timeline"
+
+#: ../lib/advene/gui/main.py:1320
+msgid "The webserver could not be started. Static views cannot be accessed."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1817
+#: ../lib/advene/gui/main.py:1398
 #, python-format
 msgid ""
-"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
+"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
+"released</b> on %(date)s, but you are running version %(current)s.\n"
+"You can download the latest version from the Advene website: http://advene."
+"org/</span>"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1860
-msgid "Cannot create an element in something else than a package."
+#: ../lib/advene/gui/main.py:1403
+msgid "Go to the website"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1877
+#: ../lib/advene/gui/main.py:1409
+#, fuzzy
+msgid "Advene release"
+msgstr "Advene"
+
+#: ../lib/advene/gui/main.py:1415
 #, python-format
-msgid "The identifier %s already exists."
+msgid "You are using a up-to-date version of Advene (%(current)s)."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1889
-#, python-format
-msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
+#: ../lib/advene/gui/main.py:1415
+msgid "Advene is up-to-date"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1895
-msgid "View created"
+#: ../lib/advene/gui/main.py:1429
+msgid "Choose a color"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1896
-#, python-format
-msgid ""
-"\n"
-"                 <h1>View <em>%(id)s</em> created</h1>\n"
-"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
-"created.</p>\n"
-"                 "
+#: ../lib/advene/gui/main.py:1461
+msgid "Select an annotation to loop on it"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1912
+#: ../lib/advene/gui/main.py:1463
 #, python-format
-msgid "Missing %s parameter"
+msgid "Looping on %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1915
-#, python-format
-msgid "Relation type %s does not exist"
+#: ../lib/advene/gui/main.py:1521 ../lib/advene/gui/main.py:2409
+msgid "No active dynamic view"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
-#, python-format
-msgid "Annotation %s does not exist"
+#: ../lib/advene/gui/main.py:1532
+msgid "Create a new dynamic view."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1928
-#, python-format
-msgid ""
-"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
-"p>"
+#: ../lib/advene/gui/main.py:1551
+msgid "Edit the current dynamic view."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1940
-#, python-format
+#: ../lib/advene/gui/main.py:1563
+msgid "No dynamic view"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1594
+msgid "Playing rate"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1742
+msgid "History"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1749
+msgid "Popups"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1753
 msgid ""
-"<p>Error while creating relation between %(member1)s and %(member2)s :</"
-"p><pre>%(error)s</pre>"
+"You can drag and drop view icons (timeline, treeview, transcription...) in "
+"notebooks to embed various views."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1943
-msgid "Relation created"
+#: ../lib/advene/gui/main.py:1753
+msgid "Information"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1944
+#: ../lib/advene/gui/main.py:2046
+msgid "Cannot create annotation. There is no schema to put it in."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2055
+#, fuzzy
+msgid "Default annotation type"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:2067
+#, fuzzy
+msgid "Annotation created"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:2099
+msgid "Play/Pause [Control-Tab / Control-Space]"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2100
 #, python-format
-msgid "<h1>Relation <em>%s</em> created</h1>"
+msgid "Rewind (%.02f s) [Control-Left]"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2101
+#, python-format
+msgid "Forward (%.02f s) [Control-Right]"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1954
-#, python-format
-msgid "Annotation type %s does not exist"
+#: ../lib/advene/gui/main.py:2102
+msgid "Previous frame [Control-Down]"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1971
-#, python-format
-msgid ""
-"<p>Error while creating annotation of type %(type)s :<pre>\n"
-"                    %(errortype)s\n"
-"                    %(value)s\n"
-"                    %(traceback)s</pre>"
+#: ../lib/advene/gui/main.py:2103
+msgid "Next frame [Control-Up]"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1983
-#, python-format
-msgid "Annotation %s created"
+#: ../lib/advene/gui/main.py:2104
+msgid "Fullscreen"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1985
+#: ../lib/advene/gui/main.py:2256
 #, python-format
-msgid "Error: Cannot create an object of type %s."
+msgid "Screenshot saved to %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1988
+#: ../lib/advene/gui/main.py:2258
 #, python-format
 msgid ""
-"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
-"code></p>"
+"Screenshot saved in\n"
+" %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2001
-msgid "Available actions"
+#: ../lib/advene/gui/main.py:2260
+#, fuzzy, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:2268
+msgid "Save screenshot to..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2010
-#, python-format
-msgid "<li>%(name)s: %(value)s"
+#: ../lib/advene/gui/main.py:2286
+msgid "Could not take snapshot with enough precision"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2033
-#, python-format
-msgid "<p>Unknown action</p><pre>Action: %s</pre>"
+#: ../lib/advene/gui/main.py:2324
+#, fuzzy
+msgid "Export package data"
+msgstr "durchsuche Packet daten"
+
+#: ../lib/advene/gui/main.py:2326
+#, fuzzy, python-format
+msgid "Export annotation type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:2328
+#, fuzzy, python-format
+msgid "Export element %s"
+msgstr "Datei _importieren"
+
+#: ../lib/advene/gui/main.py:2354
+#, fuzzy
+msgid "Export format"
+msgstr "Datei _importieren"
+
+#: ../lib/advene/gui/main.py:2391
+msgid " (modified)"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2040
-msgid "Missing parameter(s) :<ul>"
+#: ../lib/advene/gui/main.py:2394
+#, python-format
+msgid "Activate %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2076
-msgid "Advene web resources"
+#: ../lib/advene/gui/main.py:2564
+msgid "Saved workspace"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2082
-msgid "Advene webserver"
+#: ../lib/advene/gui/main.py:2616
+msgid "Restoring workspace..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2083
+#: ../lib/advene/gui/main.py:2622
 #, python-format
-msgid ""
-"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
-"webserver run by %(userid)s on %(serveraddress)s.</p>"
+msgid "Do you wish to restore the %s workspace ?"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2090
-msgid ""
-" <p>No package is loaded. You can access the <a href=\"/admin\">server "
-"administration page</a>.<p>"
-msgstr ""
+#: ../lib/advene/gui/main.py:2627
+#, fuzzy
+msgid "Clear the current workspace"
+msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/core/webcherry.py:2100
+#: ../lib/advene/gui/main.py:2648
 #, python-format
-msgid ""
-"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
-"view</a>"
+msgid "View %s is not an adhoc view"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2102
+#: ../lib/advene/gui/main.py:2659
 #, python-format
-msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
+msgid "Cannot identify the adhoc view %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2104
-msgid "the <a href=\"/packages\">loaded packages' data</a>"
+#: ../lib/advene/gui/main.py:2673
+msgid "Choose the annotation type to display as transcription."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2105
+#: ../lib/advene/gui/main.py:2708
 #, python-format
-msgid ""
-" <p>You can either access %s or the <a href=\"/admin\">server administration "
-"page</a>.<p>"
+msgid "Error: unable to find an edit popup for %(element)s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2107
+#: ../lib/advene/gui/main.py:2715
+#, fuzzy, python-format
+msgid "Editing %s"
+msgstr "Datei _importieren"
+
+#: ../lib/advene/gui/main.py:2727
 #, python-format
-msgid ""
-"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
-"fr/advene/\">Advene</a> v. %s.</em></p>"
+msgid "Comment view (%s)"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
+#: ../lib/advene/gui/main.py:2794
 #, python-format
-msgid "Cannot start HTTP server: %s"
+msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:61
+#: ../lib/advene/gui/main.py:2805
 #, python-format
-msgid "%s exists but is not a directory. Cancelling website export"
+msgid "Activating package %s"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:67
+#: ../lib/advene/gui/main.py:2833
 #, python-format
-msgid "%s does not exist"
+msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:422
-msgid "Starting export"
+#: ../lib/advene/gui/main.py:2865
+msgid "Do you want to restore the saved workspace ?"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:451
-#, python-format
-msgid "Depth %d"
-msgstr ""
+#: ../lib/advene/gui/main.py:2872
+msgid "Advene"
+msgstr "Advene"
 
-#: ../lib/advene/util/website_export.py:455
+#: ../lib/advene/gui/main.py:3077
 #, python-format
-msgid "Depth %(depth)d: processing %(url)s"
+msgid "Got exception %s. Trying to continue."
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:477
-msgid "Finalizing"
+#: ../lib/advene/gui/main.py:3101 ../lib/advene/gui/main.py:3122
+#: ../lib/advene/gui/main.py:4072
+msgid "Unknown"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:511
+#: ../lib/advene/gui/main.py:3192
 #, python-format
 msgid ""
-"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
-"strong></p>"
+"The package(s) %s are modified.\n"
+"Save them now?"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:554
-#, fuzzy
-msgid "Export complete"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/util/importer.py:134
-msgid "Generic importer"
+#: ../lib/advene/gui/main.py:3224
+#: ../lib/advene/gui/views/interactivequery.py:375
+msgid "Empty quicksearch string"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:161
-msgid "Usage: %prog [options] source-file destination-file"
+#: ../lib/advene/gui/main.py:3227
+#: ../lib/advene/gui/views/interactivequery.py:280
+#, python-format
+msgid "'%s'"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:165
-msgid "Specify the offset in ms"
+#: ../lib/advene/gui/main.py:3242
+msgid "Choose an annotation type."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:210
-msgid ""
-"Import filter error. The asynchronous API should be used, please report a "
-"bug."
+#: ../lib/advene/gui/main.py:3261 ../lib/advene/gui/views/timeline.py:3028
+#: ../lib/advene/gui/edit/transcribe.py:1019
+msgid "Create a new annotation type"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:212
-msgid ""
-"Import filter error. No conversion method is defined,  please report a bug."
+#: ../lib/advene/gui/main.py:3286
+msgid "No annotation type is defined."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:344
-#, python-format
-msgid "Converted from %s"
+#: ../lib/advene/gui/main.py:3295
+msgid "Creating a new type."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:469
-#, fuzzy
-msgid "ExternalApp importer"
-msgstr "Datei _importieren"
+#: ../lib/advene/gui/main.py:3299
+msgid "Title of the new type"
+msgstr ""
 
-#: ../lib/advene/util/importer.py:483
-#, python-format
+#: ../lib/advene/gui/main.py:3300
 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."
+"Id of the new type. It is generated from the title, but you may change it if "
+"necessary."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:485
-#, python-format
-msgid "The file %s does not seem to exist."
+#: ../lib/advene/gui/main.py:3304
+#, fuzzy
+msgid "Specify the content-type for the annotation type"
+msgstr "Zeige die Transkription für eine Anmerkung"
+
+#: ../lib/advene/gui/main.py:3306
+msgid "Content type"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:507
-#, python-format
-msgid "Could not run %(appname)s: %(msg)s"
+#: ../lib/advene/gui/main.py:3313 ../lib/advene/gui/main.py:3422
+msgid "Create a new schema"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:509
-#, fuzzy, python-format
-msgid "Processing %s"
-msgstr "Datei _importieren"
+#: ../lib/advene/gui/main.py:3326
+msgid "Choose an existing schema for the new type, or create a new one"
+msgstr ""
 
-#: ../lib/advene/util/importer.py:513
-msgid "Cleaning up..."
+#: ../lib/advene/gui/main.py:3329 ../lib/advene/gui/main.py:3437
+msgid "Specify the schema title"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:633
-msgid "Text importer"
+#: ../lib/advene/gui/main.py:3333
+msgid "Title of the new schema"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:646 ../lib/advene/util/importer.py:1176
-msgid "Specify the encoding of the input file (latin1, utf8...)"
+#: ../lib/advene/gui/main.py:3334
+msgid ""
+"Id of the new schema. It is generated from the title, but you may change it "
+"if necessary."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:649
-msgid "Should the timestamps be encoded relative to the first timestamp?"
+#: ../lib/advene/gui/main.py:3357
+msgid ""
+"You specified a annotation-type identifier that already exists. Aborting."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:652
-msgid "Unit to consider for integers"
+#: ../lib/advene/gui/main.py:3375
+msgid "You specified a existing schema identifier. Using the existing schema."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:655
+#: ../lib/advene/gui/main.py:3377
 msgid ""
-"What timestamps are present in a line (only begin, both begin and end, or "
-"automatic recognition)"
+"You specified an existing identifier that does not reference a schema. "
+"Aborting."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:798
-msgid "lsdvd importer"
+#: ../lib/advene/gui/main.py:3404
+msgid "Choose a schema."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:825
-msgid "Processing data"
+#: ../lib/advene/gui/main.py:3464
+msgid "You specified an existing identifier. Aborting."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:843 ../lib/advene/util/importer.py:903
-#, fuzzy
-msgid "DVD Chapter"
-msgstr "Importiere _DVD Kapitel"
-
-#: ../lib/advene/util/importer.py:847
-msgid "Launching lsdvd..."
+#: ../lib/advene/gui/main.py:3484
+#, python-format
+msgid "Package %s modified"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:859
-msgid "chaplin importer"
+#: ../lib/advene/gui/main.py:3485
+#, python-format
+msgid ""
+"The package %s has been modified but not saved.\n"
+"Save it now?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:917
-msgid "Xi importer"
+#: ../lib/advene/gui/main.py:3495
+#, python-format
+msgid "%s snapshots"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:986
-msgid "ELAN importer"
+#: ../lib/advene/gui/main.py:3496
+#, python-format
+msgid "Do you want to save the snapshots for media %s?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1039
+#: ../lib/advene/gui/main.py:3503 ../lib/advene/gui/main.py:3512
+#: ../lib/advene/gui/main.py:4490
 #, python-format
-msgid "Converting tier %s"
+msgid "Cannot save imagecache for %(media)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1140
-msgid "Processing time slots"
+#: ../lib/advene/gui/main.py:3526
+msgid "first frame"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1155
-msgid "Fixing forward references"
+#: ../lib/advene/gui/main.py:3527
+msgid "last frame"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1157
-msgid "Creating relations"
+#: ../lib/advene/gui/main.py:3535
+#, fuzzy, python-format
+msgid "Click on %(bound)s of %(annotation)s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:3538
+#, fuzzy, python-format
+msgid "Update %(bound)s of %(annotation)s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:3557
+msgid "Click on the frame corresponding to the timestamp value"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1169
-msgid "Subtitle (SRT) importer"
+#: ../lib/advene/gui/main.py:3559
+msgid "Set new timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3566
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1238
-#, python-format
-msgid "Subtitles from %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:3638
+#, fuzzy
+msgid "Text annotation"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:3646 ../lib/advene/gui/main.py:3671
+#, fuzzy
+msgid "Cannot find an appropriate annotation type"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/util/importer.py:1251
-msgid "PRAAT importer"
+#: ../lib/advene/gui/main.py:3648 ../lib/advene/gui/views/bookmarks.py:296
+msgid "Comment here"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1341
-msgid "CMML importer"
-msgstr ""
+#: ../lib/advene/gui/main.py:3664
+#, fuzzy
+msgid "Graphical annotation"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/util/importer.py:1404
-msgid "Parsing clip information"
+#: ../lib/advene/gui/main.py:3716
+msgid ""
+"An unsaved template package exists\n"
+"Save it first."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1501
-#: ../lib/advene/plugins/transcriber.py:254
-msgid "Creating package"
+#: ../lib/advene/gui/main.py:3725
+msgid "Package modified"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1504
-msgid "Creating CMML schema"
+#: ../lib/advene/gui/main.py:3726
+msgid ""
+"The package that you want to close has been modified but not saved.\n"
+"Save it now?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1508
-#: ../lib/advene/plugins/transcriber.py:260
-msgid "Creating annotation types"
+#: ../lib/advene/gui/main.py:3757
+msgid "Load a package"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1514
-#: ../lib/advene/plugins/transcriber.py:265
-msgid "Parsing header information"
+#: ../lib/advene/gui/main.py:3766
+msgid ""
+"A video file was selected. Pretend that the user selected 'Select a video "
+"file'..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1528
-msgid "Parsing stream information"
+#: ../lib/advene/gui/main.py:3771
+#, 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/util/importer.py:1562
-msgid "IRI importer"
+#: ../lib/advene/gui/main.py:3780
+msgid ""
+"You are trying to load a session file, but there are unsaved packages. "
+"Proceed anyway?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1571
-msgid "Generate one type per view"
+#: ../lib/advene/gui/main.py:3808 ../lib/advene/gui/main.py:3864
+msgid "Do you want to save the current workspace ?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1591
+#: ../lib/advene/gui/main.py:3823 ../lib/advene/gui/main.py:3879
 #, python-format
-msgid "Parsing ensemble %s"
+msgid "Could not save the package: %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1602
+#: ../lib/advene/gui/main.py:3836
 #, python-format
-msgid "Parsing decoupage %s"
+msgid "Save the package %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1638
-msgid "Parsing views"
+#: ../lib/advene/gui/main.py:3849
+msgid "Invalid file extension"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1686 ../lib/advene/util/importer.py:1775
-msgid "Initializing package"
+#: ../lib/advene/gui/main.py:3850
+#, python-format
+msgid ""
+"Your package contains resources,\n"
+"the filename (%s) should have a .azp extension.\n"
+"Should I put the correct extension?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1724
-msgid "IRIData importer"
+#: ../lib/advene/gui/main.py:3854
+msgid "OK, the resources will be lost."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1738
-msgid "Parsing sound values"
+#: ../lib/advene/gui/main.py:3856
+msgid "Aborting package saving"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1750
-#, fuzzy
-msgid "Creating annotations"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/main.py:3890
+msgid "Save the session in..."
+msgstr ""
 
-#: ../lib/advene/util/helper.py:402
-msgid "Package"
+#: ../lib/advene/gui/main.py:3901
+#, python-format
+msgid "Session saved in %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:403
-msgid "Annotation"
+#: ../lib/advene/gui/main.py:3910
+msgid "Do you confirm the creation of annotations matching the DVD chapters?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:404
-msgid "Relation"
+#: ../lib/advene/gui/main.py:3916
+msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/edit/schemaeditor.py:111
-#: ../lib/advene/gui/main.py:276 ../lib/advene/gui/main.py:3270
-msgid "Schema"
-msgstr "Schema"
+#: ../lib/advene/gui/main.py:3924
+msgid "The associated media is not a DVD."
+msgstr ""
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:279
-msgid "Annotation Type"
-msgstr "Kommentar Typ"
+#: ../lib/advene/gui/main.py:3935
+#, fuzzy, python-format
+msgid "Processing %s video"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/main.py:280
+#: ../lib/advene/gui/main.py:3938
 #, fuzzy
-msgid "Relation Type"
-msgstr "Verbindungs Type"
-
-#: ../lib/advene/util/helper.py:408 ../lib/advene/rules/actions.py:236
-#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/gui/main.py:277
-msgid "View"
-msgstr "Darstellung"
-
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/main.py:278
-#: ../lib/advene/gui/popup.py:459
-msgid "Query"
-msgstr "Abfragen"
+msgid "No associated video file"
+msgstr "Wähle eine Video Datei"
 
-#: ../lib/advene/util/helper.py:410
-msgid "Resource Folder"
+#: ../lib/advene/gui/main.py:3965
+msgid "Standard RuleSet"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:411 ../lib/advene/gui/edit/create.py:122
-msgid "Resource File"
+#: ../lib/advene/gui/main.py:4081
+#, python-format
+msgid ""
+"Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:446
-msgid "---- Elements ----"
+#: ../lib/advene/gui/main.py:4096
+msgid "Visit the Advene web site for examples and documentation."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:452
-msgid "---- Attributes ----"
+#: ../lib/advene/gui/main.py:4129 ../lib/advene/gui/main.py:4217
+msgid "Select a movie file"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:455
-msgid "---- Methods ----"
+#: ../lib/advene/gui/main.py:4141
+msgid "Title/Chapter selection"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:531
-#, python-format
-msgid "Cannot read %(filename)s: %(error)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:4183
+msgid "Select a video stream"
+msgstr "Wähle einen video stream"
 
-#: ../lib/advene/util/helper.py:555
-#, python-format
-msgid ""
-"Error:\n"
-"%s"
+#: ../lib/advene/gui/main.py:4184
+msgid "Enter the address of a video stream"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:565
+#: ../lib/advene/gui/main.py:4188
 #, python-format
-msgid ""
-"Package %(title)s:\n"
-"%(schema)s\n"
-"%(annotation)s in %(annotation_type)s\n"
-"%(relation)s in %(relation_type)s\n"
-"%(query)s\n"
-"%(view)s\n"
-"\n"
-"Description:\n"
-"%(description)s\n"
-msgstr ""
-
-#: ../lib/advene/util/helper.py:592
-#, fuzzy
-msgid "Min duration"
-msgstr "_Einstellung Spieler"
-
-#: ../lib/advene/util/helper.py:593
-msgid "Max duration"
+msgid "Successfully extracted the video stream address (%s) from the url.\n"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:594
-#, fuzzy
-msgid "Mean duration"
-msgstr "Zeige die Anmerkung als Transkription"
-
-#: ../lib/advene/util/helper.py:595
-#, fuzzy
-msgid "Total duration"
-msgstr "Zeige die Anmerkung als Transkription"
-
-#: ../lib/advene/util/helper.py:601
-msgid "schema"
+#: ../lib/advene/gui/main.py:4213
+msgid "Package properties"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:601
-msgid "schemas"
+#: ../lib/advene/gui/main.py:4214 ../lib/advene/gui/edit/elements.py:514
+#: ../lib/advene/gui/edit/elements.py:563
+#: ../lib/advene/gui/edit/elements.py:650
+#: ../lib/advene/gui/edit/elements.py:730
+#: ../lib/advene/gui/edit/elements.py:787
+#: ../lib/advene/gui/edit/elements.py:879
+#: ../lib/advene/gui/edit/elements.py:948
+#: ../lib/advene/gui/edit/elements.py:1060
+#: ../lib/advene/gui/edit/elements.py:1122
+msgid "Author"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotation"
+#: ../lib/advene/gui/main.py:4214
+msgid "Author name"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotations"
+#: ../lib/advene/gui/main.py:4215 ../lib/advene/gui/edit/elements.py:515
+#: ../lib/advene/gui/edit/elements.py:564
+#: ../lib/advene/gui/edit/elements.py:651
+#: ../lib/advene/gui/edit/elements.py:731
+#: ../lib/advene/gui/edit/elements.py:788
+#: ../lib/advene/gui/edit/elements.py:880
+#: ../lib/advene/gui/edit/elements.py:949
+#: ../lib/advene/gui/edit/elements.py:1061
+#: ../lib/advene/gui/edit/elements.py:1123
+msgid "Date"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation type"
+#: ../lib/advene/gui/main.py:4215
+msgid "Package creation date"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation types"
+#: ../lib/advene/gui/main.py:4216 ../lib/advene/gui/views/table.py:674
+#: ../lib/advene/gui/util/dialog.py:386 ../lib/advene/gui/edit/imports.py:331
+#: ../lib/advene/gui/edit/dvdselect.py:95
+#: ../lib/advene/gui/edit/transcribe.py:1047
+msgid "Title"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:605
-msgid "relation"
+#: ../lib/advene/gui/main.py:4216
+msgid "Package title"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:605
-msgid "relations"
+#: ../lib/advene/gui/main.py:4217
+msgid "Associated media"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation type"
+#: ../lib/advene/gui/main.py:4218 ../lib/advene/gui/views/table.py:309
+msgid "Duration"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation types"
+#: ../lib/advene/gui/main.py:4218
+msgid "Media duration in ms"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:608
-msgid "query"
+#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/plugins/eventaccumulator.py:143
+msgid "Reset"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:608
-msgid "queries"
+#: ../lib/advene/gui/main.py:4275 ../lib/advene/gui/views/timeline.py:3496
+#: ../lib/advene/gui/views/timeline.py:3647
+#: ../lib/advene/gui/views/tagbag.py:64 ../lib/advene/gui/edit/properties.py:51
+#: ../lib/advene/gui/edit/transcribe.py:147
+#: ../lib/advene/gui/edit/transcribe.py:1187
+msgid "Preferences"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
-msgid "view"
+#: ../lib/advene/gui/main.py:4277
+msgid "Paths"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
-msgid "views"
+#: ../lib/advene/gui/main.py:4279
+msgid "Data"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:610
-msgid "package"
+#: ../lib/advene/gui/main.py:4279
+msgid "Standard directory for data files"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:610
-msgid "packages"
+#: ../lib/advene/gui/main.py:4280
+msgid "Movie path"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:622
+#: ../lib/advene/gui/main.py:4280
 #, python-format
-msgid "No %s"
+msgid ""
+"List of directories (separated by %s) to search for movie files (_ means "
+"package directory)"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:624
-#, python-format
-msgid "1 %s"
+#: ../lib/advene/gui/main.py:4281
+msgid "Imagecache"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:626
-#, python-format
-msgid "%(count)d %(plural)s"
+#: ../lib/advene/gui/main.py:4281
+msgid "Directory for storing the snapshot cache"
 msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:76
-#, fuzzy
-msgid "Cinelab importer"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
-#, python-format
-msgid "File %s is not an Advene2 zip package."
+#: ../lib/advene/gui/main.py:4282
+msgid "Player"
 msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:176
-#, fuzzy
-msgid "Converting annotation types"
-msgstr "Kommentar Typ"
-
-#: ../lib/advene/plugins/cinelab.py:217
-#, fuzzy
-msgid "Converting views"
-msgstr "Aktivieren und Abspielen"
-
-#: ../lib/advene/plugins/cinelab.py:249
-#: ../lib/advene/plugins/youtubeannotations.py:72
-#, fuzzy
-msgid "Importing annotations"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/main.py:4282
+msgid "Directory of the video player"
+msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:41
-#, fuzzy
-msgid "ShotdetectApp importer"
-msgstr "Datei _importieren"
+#: ../lib/advene/gui/main.py:4283
+msgid "Shotdetect"
+msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:52
-msgid ""
-"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
-"too many shots are detected, try to increase its value."
+#: ../lib/advene/gui/main.py:4283
+msgid "Shotdetect application"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:80
-#: ../lib/advene/plugins/goodshotdetector.py:78
-msgid "Detected shots"
+#: ../lib/advene/gui/main.py:4285
+msgid "GUI"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:140 ../lib/advene/gui/main.py:5130
-#, python-format
-msgid "Detected shot #%(num)d at %(pos)s "
+#: ../lib/advene/gui/main.py:4286
+msgid "Interface language (after restart)"
 msgstr ""
 
-#: ../lib/advene/plugins/youtubeannotations.py:33
-#, fuzzy
-msgid "Youtube XML annotations importer"
-msgstr "Kommentar Typ"
+#: ../lib/advene/gui/main.py:4286
+msgid ""
+"Language used for the interface (necessitates to restart the application)"
+msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:62
-msgid "Input from the braille table."
+#: ../lib/advene/gui/main.py:4287 ../lib/advene/gui/util/initialconfig.py:88
+msgid "System default"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:66
-msgid "BrlTTY not installed. There will be no braille support."
+#: ../lib/advene/gui/main.py:4292
+msgid "Record activity trace"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:78
-msgid "Could not initialize BrlTTY. No braille support."
+#: ../lib/advene/gui/main.py:4293
+msgid "Expert mode"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:84
-msgid "Display a message in Braille"
+#: ../lib/advene/gui/main.py:4293
+msgid "Offer advanced possibilities"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:85
-msgid "Message to display."
+#: ../lib/advene/gui/main.py:4294
+msgid "Prefer WYSIWYG"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
-#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
-#: ../lib/advene/rules/actions.py:123 ../lib/advene/gui/plugins/actions.py:44
-#: ../lib/advene/gui/plugins/actions.py:58
-#: ../lib/advene/gui/plugins/actions.py:110
-#: ../lib/advene/gui/plugins/actions.py:399
-#: ../lib/advene/gui/plugins/actions.py:527
-#: ../lib/advene/gui/edit/rules.py:766
-#, fuzzy
-msgid "The annotation content"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/main.py:4294
+msgid "Use WYSIWYG editors when possible (HTML, SVG)"
+msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:240 ../lib/advene/plugins/tts.py:110
-#: ../lib/advene/gui/plugins/actions.py:234
-msgid "Unknown rule"
+#: ../lib/advene/gui/main.py:4295
+msgid "Player control in edit popups"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:241 ../lib/advene/plugins/tts.py:111
-#: ../lib/advene/gui/plugins/actions.py:235
-#, python-format
+#: ../lib/advene/gui/main.py:4295
 msgid ""
-"Rule %(rulename)s: Error in the evaluation of the parameter "
-"%(parametername)s:"
+"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/plugins/brltty.py:256
-#, python-format
-msgid "BrlTTY connection error: %s"
+#: ../lib/advene/gui/main.py:4297
+msgid "Open popups"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:273
-msgid "Braille display: "
+#: ../lib/advene/gui/main.py:4298
+msgid "Where should we open adhoc views?"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:279
-#, fuzzy
-msgid "No message"
-msgstr "Kein Pakte"
-
-#: ../lib/advene/plugins/goodshotdetector.py:45
-msgid "Shot detection (Delakis version)"
+#: ../lib/advene/gui/main.py:4299
+msgid "as a popup window"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:60
-msgid "Cache histogram alongside video files."
+#: ../lib/advene/gui/main.py:4300
+msgid "embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:63
-msgid ""
-"Parameter profile: safe will detect less cuts, aggressive will detect more "
-"cuts (but more false ones too). default is a compromise."
+#: ../lib/advene/gui/main.py:4301
+msgid "embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:77
-#, python-format
-msgid "Shot (%s profile)"
+#: ../lib/advene/gui/main.py:4302
+msgid "embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:83
-msgid "Loading histogram"
+#: ../lib/advene/gui/main.py:4303
+msgid "embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:146
-msgid "Computing hdiff"
+#: ../lib/advene/gui/main.py:4306
+msgid "History size"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:153
-msgid "Detecting cuts"
+#: ../lib/advene/gui/main.py:4306
+msgid "History filelist size limit"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:180
-msgid "Detecting dissolves"
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember window size"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:265
-#, fuzzy
-msgid "Extracting histogram"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/plugins/anvil.py:35
-msgid "Anvil importer"
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember the size of opened windows"
 msgstr ""
 
-#: ../lib/advene/plugins/annotationgraph.py:40
-#, fuzzy
-msgid "AnnotationGraph importer"
-msgstr "Kommentar Typ"
+#: ../lib/advene/gui/main.py:4309
+msgid "Bookmark snapshot width"
+msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:33
-msgid "Final Cut Pro XML importer"
+#: ../lib/advene/gui/main.py:4309
+msgid "Width of the snapshots representing bookmarks"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:55
-msgid "FCP clipitem"
+#: ../lib/advene/gui/main.py:4310
+msgid "Bookmark snapshot precision"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:75
-#, fuzzy
-msgid "Importing subtitles"
-msgstr "Datei _importieren"
+#: ../lib/advene/gui/main.py:4310
+msgid "Precision (in ms) of the displayed bookmark snapshots."
+msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:90
-#, fuzzy
-msgid "Importing clips"
-msgstr "Datei _importieren"
+#: ../lib/advene/gui/main.py:4312
+msgid "General"
+msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:93
-msgid "No clip"
+#: ../lib/advene/gui/main.py:4313
+msgid "Weekly update check"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:219
-#, python-format
-msgid "Cannot export to %(fname)s: %(e)s"
+#: ../lib/advene/gui/main.py:4313 ../lib/advene/gui/util/initialconfig.py:90
+msgid "Weekly check for updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1129
-#: ../lib/advene/plugins/tracebuilder.py:1168
-#, fuzzy, python-format
-msgid "Cannot export to %(host)s:%(port)s %(error)s"
-msgstr "Kann nicht stbvid %(stbvid)s: %(error)s aktivieren"
+#: ../lib/advene/gui/main.py:4314
+msgid "On exit,"
+msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1143
-#, fuzzy, python-format
-msgid "Cannot send data to %(host)s:%(port)s %(error)s"
-msgstr "Kann nicht stbvid %(stbvid)s: %(error)s aktivieren"
+#: ../lib/advene/gui/main.py:4315
+msgid "How to handle screenshots on exit"
+msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1191
-#, fuzzy, python-format
-msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
-msgstr "Kann nicht stbvid %(stbvid)s: %(error)s aktivieren"
+#: ../lib/advene/gui/main.py:4316
+msgid "never save screenshots"
+msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1197
-#, python-format
-msgid "%(nb)s events sent to %(host)s:%(port)s during session."
+#: ../lib/advene/gui/main.py:4317
+msgid "always save screenshots"
 msgstr ""
 
-#: ../lib/advene/plugins/dcp.py:65
-#, fuzzy
-msgid "DCP importer"
-msgstr "Datei _importieren"
+#: ../lib/advene/gui/main.py:4318
+msgid "ask before saving screenshots"
+msgstr ""
 
-#: ../lib/advene/plugins/dcp.py:120
-#, python-format
-msgid "Converting #%(num)d / %(count)d"
+#: ../lib/advene/gui/main.py:4320
+msgid "Auto-save"
 msgstr ""
 
-#: ../lib/advene/plugins/ttl.py:41
-#, fuzzy
-msgid "TurTLe (RDF) importer"
-msgstr "Datei _importieren"
+#: ../lib/advene/gui/main.py:4321
+msgid "Data auto-save functionality"
+msgstr ""
 
-#: ../lib/advene/plugins/aeidon_import.py:48
-msgid "Aeidon (subtitles) importer"
+#: ../lib/advene/gui/main.py:4322
+msgid "is desactivated"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:47
-#: ../lib/advene/plugins/soundenveloppe.py:143
-#: ../lib/advene/plugins/soundenveloppe.py:145
-msgid "Sound enveloppe"
+#: ../lib/advene/gui/main.py:4323
+msgid "is done automatically"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:60
-msgid "Interval (in ms) at which to take samples."
+#: ../lib/advene/gui/main.py:4324
+msgid "is done after confirmation"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:63
-msgid "Maximum number of samples per annotation."
+#: ../lib/advene/gui/main.py:4326
+msgid "Auto-save interval (in s)"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:66
-#: ../lib/advene/plugins/cutter.py:56
-msgid "Channel selection."
+#: ../lib/advene/gui/main.py:4326
+msgid "Interval (in seconds) between package auto-saves"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#: ../lib/advene/plugins/pocketsphinx.py:119
-#: ../lib/advene/plugins/barcode.py:58
+#: ../lib/advene/gui/main.py:4328
 #, fuzzy
-msgid "Generating annotations"
-msgstr "von einem Anmerkungs Typ"
+msgid "Workspace"
+msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/plugins/soundenveloppe.py:115
-#, python-format
-msgid "At %s"
+#: ../lib/advene/gui/main.py:4330
+msgid "On package saving,"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:4331
+msgid "Do you wish to save the default workspace with the package?"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:162
+#: ../lib/advene/gui/main.py:4332
 #, fuzzy
-msgid "Extracting sound enveloppe"
-msgstr "Datei _importieren"
+msgid "never save the current workspace"
+msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/plugins/cutter.py:39
+#: ../lib/advene/gui/main.py:4333
 #, fuzzy
-msgid "Audio segmentation"
-msgstr "von einem Anmerkungs Typ"
+msgid "always save the current workspace"
+msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/plugins/cutter.py:53
-msgid "Volume threshold (in dB, can be negative) before trigger."
+#: ../lib/advene/gui/main.py:4334
+msgid "ask before saving the current workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:101
-#, python-format
-msgid "Detected %(count)d segments until %(time)s"
+#: ../lib/advene/gui/main.py:4336
+msgid "Auto-validation of edited elements"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:119
-msgid "Sound segment"
+#: ../lib/advene/gui/main.py:4336
+msgid "Automatically validate modified elements when saving the package."
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:120
-#, python-format
-msgid ""
-"Sound segmentation with a threshold of %(threshold)d dB - channel: "
-"%(channel)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:4338
+#, fuzzy
+msgid "On package load,"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/plugins/cutter.py:138
-msgid "Starting silence detection"
+#: ../lib/advene/gui/main.py:4339
+msgid "Do you wish to load the workspace saved with the package?"
 msgstr ""
 
-#: ../lib/advene/plugins/montagerenderer.py:43
-msgid "Cannot register montage renderer: Gnonlin plugins are not present."
+#: ../lib/advene/gui/main.py:4340
+msgid "never load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/mpeg7.py:54
-msgid "MPEG7 importer"
+#: ../lib/advene/gui/main.py:4341
+msgid "always load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/transcriber.py:40
-msgid "Transcriber importer"
+#: ../lib/advene/gui/main.py:4342
+msgid "ask before loading the saved workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/transcriber.py:86
-msgid "Parsing section information"
-msgstr ""
+#: ../lib/advene/gui/main.py:4345
+#, fuzzy
+msgid "Video Player"
+msgstr "_Einstellung Spieler"
 
-#: ../lib/advene/plugins/transcriber.py:276
-msgid "Parsing topic and speaker tables information"
+#: ../lib/advene/gui/main.py:4346
+msgid "Autostart"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:42
-msgid "Feature detection (face...)"
+#: ../lib/advene/gui/main.py:4346
+msgid ""
+"Automatically start the player when loading a media file (either directly or "
+"through a package)"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:57
-msgid "Sensitivity level."
+#: ../lib/advene/gui/main.py:4347
+msgid "Fulscreen timestamp"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:60
-msgid ""
-"Scale. Original image size will be divided by this factor, in order to speed "
-"up detection."
+#: ../lib/advene/gui/main.py:4347
+msgid "Display the timestamp over the video when in fullscreen mode"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:63
-msgid "Classifier"
+#: ../lib/advene/gui/main.py:4348
+msgid "Enable captions"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:77
-#, python-format
-msgid "Feature %s"
+#: ../lib/advene/gui/main.py:4348
+#, fuzzy
+msgid "Enable captions over the video"
+msgstr "Zeige Kommentare an einer Timeline"
+
+#: ../lib/advene/gui/main.py:4349
+msgid "Caption font"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:79
-#, python-format
-msgid "Detected %s"
+#: ../lib/advene/gui/main.py:4349
+msgid "TrueType font for captions"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:81
-msgid "Detection started"
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:171
-#, python-format
-msgid "Detected %(count)d feature(s) until %(time)s"
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG captions over the video"
 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."
+#: ../lib/advene/gui/main.py:4352
+msgid "Enable snapshots"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:41
-msgid "Speech recognition (PocketSphinx)"
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:61
-msgid "Filtering noise level [0..1]."
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width in pixels."
 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."
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:69
-msgid "Use default acoustic and language models."
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity level. -1 for no messages."
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:73
-msgid "Acoustic model (directory)"
+#: ../lib/advene/gui/main.py:4357
+msgid "Devices"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:77
-msgid "Phonetic dictionary (.dic file)"
+#: ../lib/advene/gui/main.py:4359
+msgid "Standard"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:81
-msgid "Language model (.DMP file)"
+#: ../lib/advene/gui/main.py:4361
+msgid "DVD drive"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:144
-#: ../lib/advene/plugins/barcode.py:83
-#, python-format
-msgid "%(count)d utterances until %(time)s"
+#: ../lib/advene/gui/main.py:4361
+msgid "Drive letter for the DVD"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:153
-msgid "Speech"
+#: ../lib/advene/gui/main.py:4362
+msgid "GDI"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:155
-msgid "Recognized speech"
+#: ../lib/advene/gui/main.py:4363
+msgid "Direct X"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:191
-msgid "Recognizing speech"
+#: ../lib/advene/gui/main.py:4365
+msgid "DVD device"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:36
-msgid "Cannot register barcode extraction: zbar plugin not found."
+#: ../lib/advene/gui/main.py:4365
+msgid "Device for the DVD"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:40
-msgid "Barcode (qr-code) extraction"
+#: ../lib/advene/gui/main.py:4366
+msgid "X11"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:95
-msgid "Barcode"
+#: ../lib/advene/gui/main.py:4367
+msgid "XVideo"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:97
-msgid "Extracted barcode information"
+#: ../lib/advene/gui/main.py:4368
+msgid "GL"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:115
-#, fuzzy
-msgid "Extraction barcodes"
-msgstr "Datei _importieren"
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output"
+msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:47
-msgid "NERD (Named Entity Recognition and Disambiguation)"
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output module"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:68
-msgid "NERD API key"
+#: ../lib/advene/gui/main.py:4372
+msgid "Recorder options"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:82
-msgid "NER service to use"
+#: ../lib/advene/gui/main.py:4373
+msgid "Audio input"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:88
-#, fuzzy
-msgid "Type of annotation to analyze"
-msgstr "Kommentar Typ"
+#: ../lib/advene/gui/main.py:4373
+msgid "Device name for audio input (with gstrecorder plugin)"
+msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:93
-msgid "Language to analyze"
+#: ../lib/advene/gui/main.py:4374
+msgid "Record video"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:98
-msgid "Minimum confidence level (between 0.0 and 1.0)"
+#: ../lib/advene/gui/main.py:4374
+msgid "Record both video and audio"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:103
-#, fuzzy
-msgid "Interpolate position of annotations"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/main.py:4377
+msgid "<i>Experimental</i>"
+msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:108
-msgid "Split by entity type"
+#: ../lib/advene/gui/main.py:4378 ../lib/advene/gui/views/scroller.py:29
+msgid "Scroller"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:113
-msgid "Store results as markup in the annotation text"
+#: ../lib/advene/gui/main.py:4378
+msgid "Embed the caption scroller below the video"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:118
-msgid "Create relations between the original annotations and the new ones"
+#: ../lib/advene/gui/main.py:4379 ../lib/advene/gui/views/caption.py:29
+msgid "Caption"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:150
-#, python-format
-msgid "NERD applied to %s"
+#: ../lib/advene/gui/main.py:4379
+msgid "Embed the caption view below the video"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:208
-#, python-format
-msgid "NERD %s"
+#: ../lib/advene/gui/main.py:4381
+msgid "Time-related"
 msgstr ""
 
-#: ../lib/advene/plugins/ted.py:39
+#: ../lib/advene/gui/main.py:4382
 #, fuzzy
-msgid "TED importer"
-msgstr "Datei _importieren"
+msgid "Time format"
+msgstr "T_imeline"
 
-#: ../lib/advene/plugins/shotdetect.py:35
-msgid "Shotdetect importer"
+#: ../lib/advene/gui/main.py:4382
+msgid "Format used to display timecodes"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetect.py:79
-msgid "No shots"
+#: ../lib/advene/gui/main.py:4396
+msgid "Default FPS"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:77
-msgid "Pronounce a text"
+#: ../lib/advene/gui/main.py:4397
+msgid ""
+"Default FPS (frame-per-second) value, when entering or displaying timestamps "
+"with frame numbers."
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:78
-msgid "String to pronounce."
+#: ../lib/advene/gui/main.py:4398
+#, fuzzy
+msgid "Time increment"
+msgstr "T_imeline"
+
+#: ../lib/advene/gui/main.py:4398
+msgid ""
+"Skip duration, when using control-left/right or forward/rewind buttons (in "
+"ms)."
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:131 ../lib/advene/gui/plugins/actions.py:259
-#: ../lib/advene/gui/plugins/actions.py:340
-#: ../lib/advene/gui/plugins/actions.py:358
-msgid "No message..."
+#: ../lib/advene/gui/main.py:4399
+msgid "Second time increment"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:156
-msgid "TTS disabled. Cannot find the application 'festival' in PATH"
+#: ../lib/advene/gui/main.py:4399
+msgid "Skip duration, when using control-shift-left/right (in ms)."
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:158
-msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
+#: ../lib/advene/gui/main.py:4400
+#, fuzzy
+msgid "Third time increment"
+msgstr "T_imeline"
+
+#: ../lib/advene/gui/main.py:4400
+msgid "Skip duration, when using control-shift-up/down (in ms)."
 msgstr ""
 
-#: ../lib/advene/player/gstreamer.py:434
-msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+#: ../lib/advene/gui/main.py:4401
+msgid "Custom Up/Down"
 msgstr ""
 
-#: ../lib/advene/rules/importer.py:29
-msgid "Event history importer"
+#: ../lib/advene/gui/main.py:4401
+msgid ""
+"Use third time increment for up/down navigation without having to hold shift."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
-#: ../lib/advene/rules/actions.py:120
-msgid "Message to display"
+#: ../lib/advene/gui/main.py:4403
+msgid "Scroll increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:48
-msgid "Start the player"
+#: ../lib/advene/gui/main.py:4403
+msgid ""
+"On most annotations, control+scrollwheel will increment/decrement their "
+"bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:49
-msgid "Start position (in ms)"
+#: ../lib/advene/gui/main.py:4404
+msgid "Second scroll increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:52 ../lib/advene/rules/actions.py:384
-msgid "The movie start"
+#: ../lib/advene/gui/main.py:4404
+msgid ""
+"On most annotations, control+shift+scrollwheel will increment/decrement "
+"their bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
+#: ../lib/advene/gui/main.py:4406
 #, fuzzy
-msgid "The annotation begin"
-msgstr "von einem Anmerkungs Typ"
+msgid "Player sync"
+msgstr "_Spieler"
 
-#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
-#, fuzzy
-msgid "The annotation end"
-msgstr "Kommentar Typ"
+#: ../lib/advene/gui/main.py:4406
+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/rules/actions.py:63 ../lib/advene/gui/views/logwindow.py:129
-msgid "Go to the given position"
+#: ../lib/advene/gui/main.py:4407
+msgid "Timeline parameters"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:64
-msgid "Goto position (in ms)"
+#: ../lib/advene/gui/main.py:4408 ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:73
-msgid "Stop the player"
+#: ../lib/advene/gui/main.py:4408
+msgid "Font size for annotation widgets"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:80
-msgid "Pause the player"
+#: ../lib/advene/gui/main.py:4409
+msgid "Button height"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:87
-msgid "Resume the player"
+#: ../lib/advene/gui/main.py:4409
+msgid "Height of annotation widgets"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:94
-msgid "Take a snapshot"
+#: ../lib/advene/gui/main.py:4410
+msgid "Interline height"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:101
-msgid "Display a caption"
+#: ../lib/advene/gui/main.py:4410
+msgid "Height of interlines"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:103
-msgid "Duration of the caption"
+#: ../lib/advene/gui/main.py:4412
+#, fuzzy
+msgid "Text content"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:4413
+msgid "Completion mode"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:110 ../lib/advene/rules/actions.py:172
-#: ../lib/advene/gui/plugins/actions.py:61
-#: ../lib/advene/gui/plugins/actions.py:121
-#: ../lib/advene/gui/plugins/actions.py:403
-#: ../lib/advene/gui/plugins/actions.py:538
-msgid "1 second"
+#: ../lib/advene/gui/main.py:4413
+msgid "Enable dynamic completion mode"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
-#: ../lib/advene/gui/plugins/actions.py:62
-#: ../lib/advene/gui/plugins/actions.py:122
-#: ../lib/advene/gui/plugins/actions.py:404
-#: ../lib/advene/gui/plugins/actions.py:539
-#: ../lib/advene/gui/edit/rules.py:773
-#, fuzzy
-msgid "The annotation duration"
-msgstr "Zeige die Anmerkung als Transkription"
+#: ../lib/advene/gui/main.py:4414
+msgid "Predefined terms only"
+msgstr ""
 
-#: ../lib/advene/rules/actions.py:119 ../lib/advene/gui/popup.py:718
-msgid "Caption the annotation"
+#: ../lib/advene/gui/main.py:4414
+msgid "If completion is enabled, complete only with predefined terms."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:131
-#, fuzzy
-msgid "Display a graphical shape"
-msgstr "Verbindungs Type"
+#: ../lib/advene/gui/main.py:4415
+msgid "Abbreviation mode"
+msgstr ""
 
-#: ../lib/advene/rules/actions.py:132
-msgid "Shape (square, circle, triangle)"
+#: ../lib/advene/gui/main.py:4415
+msgid "Enable abbreviation mode"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:133
-#: ../lib/advene/gui/edit/shapewidget.py:342
-#: ../lib/advene/gui/edit/elements.py:891
-#: ../lib/advene/gui/edit/elements.py:971
-#: ../lib/advene/gui/edit/elements.py:1085
-#: ../lib/advene/gui/views/tagbag.py:138
-msgid "Color"
+#: ../lib/advene/gui/main.py:4416
+msgid "Abbreviations"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:134
-msgid "x-position (percentage of screen)"
+#: ../lib/advene/gui/main.py:4416
+msgid ""
+"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
+"followed by its replacement."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:135
-msgid "y-position (percentage of screen)"
+#: ../lib/advene/gui/main.py:4418
+msgid "Text-To-Speech"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:136
-msgid "Size (arbitrary units)"
+#: ../lib/advene/gui/main.py:4419
+msgid "TTS language"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:137
-msgid "Duration of the display in ms"
+#: ../lib/advene/gui/main.py:4420
+msgid "What language settings should be used for text-to-speech"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:145
-msgid "A square"
+#: ../lib/advene/gui/main.py:4421
+msgid "English"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:146
-msgid "A circle"
+#: ../lib/advene/gui/main.py:4422
+msgid "French"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:147
-msgid "A triangle"
+#: ../lib/advene/gui/main.py:4423
+msgid "Spanish"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:150
-msgid "White"
+#: ../lib/advene/gui/main.py:4425
+msgid "TTS Encoding"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:151
-msgid "Black"
+#: ../lib/advene/gui/main.py:4426
+msgid "What encoding should be used to communicate with the TTS engine"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:152
-msgid "Red"
+#: ../lib/advene/gui/main.py:4427
+msgid "TTS Engine"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:153
-msgid "Green"
+#: ../lib/advene/gui/main.py:4428
+msgid ""
+"Which TTS engine should be used (modification requires restarting Advene to "
+"take into account)"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:154
-msgid "Blue"
+#: ../lib/advene/gui/main.py:4429
+msgid "Automatic"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:155
-msgid "Yellow"
+#: ../lib/advene/gui/main.py:4430
+msgid "eSpeak"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:158
-msgid "At the top of the screen"
+#: ../lib/advene/gui/main.py:4431
+msgid "Custom script with standard input"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
-msgid "In the middle of the screen"
+#: ../lib/advene/gui/main.py:4432
+msgid "Custom script with arguments"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:160
-msgid "At the bottom of the screen"
+#: ../lib/advene/gui/main.py:4433
+msgid "SAPI"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:163
-msgid "At the left of the screen"
+#: ../lib/advene/gui/main.py:4434
+msgid "MacOS X say"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:167
-#: ../lib/advene/gui/edit/transcribe.py:1164
-#: ../lib/advene/gui/views/activebookmarks.py:547
-msgid "Small"
+#: ../lib/advene/gui/main.py:4435
+msgid "Generic (text output)"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:168
-#: ../lib/advene/gui/edit/transcribe.py:1165
-#: ../lib/advene/gui/views/activebookmarks.py:548
-msgid "Normal"
+#: ../lib/advene/gui/main.py:4479
+msgid "You should restart Advene to take some options into account."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:169
-#: ../lib/advene/gui/edit/transcribe.py:1166
-#: ../lib/advene/gui/views/activebookmarks.py:549
-msgid "Large"
+#: ../lib/advene/gui/main.py:4488
+#, python-format
+msgid "Imagecache saved to %s"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:181
-msgid "Zero the volume during the annotation"
+#: ../lib/advene/gui/main.py:4501
+msgid "Restarting player..."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:188
-msgid "Zero the volume"
+#: ../lib/advene/gui/main.py:4561
+#, fuzzy
+msgid "Advene log"
+msgstr "Advene"
+
+#: ../lib/advene/gui/main.py:4604 ../lib/advene/gui/views/timeline.py:1045
+#: ../lib/advene/rules/elements.py:1000
+msgid "Creation of a new annotation type"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:195
-msgid "Restore the volume"
+#: ../lib/advene/gui/main.py:4612 ../lib/advene/gui/views/timeline.py:1074
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:203
-msgid "Activate a STBV"
+#: ../lib/advene/gui/main.py:4630
+msgid "Select the package to merge"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:204
-msgid "STBV id"
+#: ../lib/advene/gui/main.py:4651
+msgid "Saving workspace"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:213
-msgid "Send a user event"
+#: ../lib/advene/gui/main.py:4654
+msgid "Enter a view name to save the workspace"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:214
-msgid "Identifier"
+#: ../lib/advene/gui/main.py:4655
+#, fuzzy
+msgid "Default workspace"
+msgstr "Aktuelle Sitzung speichern"
+
+#: ../lib/advene/gui/main.py:4656
+msgid "Open this workspace when opening the package"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:215
-msgid "Delay in ms before sending the event."
+#: ../lib/advene/gui/main.py:4679 ../lib/advene/gui/views/__init__.py:289
+#, python-format
+msgid "Error: the identifier %s contains invalid characters."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:225
-msgid "Open a URL in the web browser"
+#: ../lib/advene/gui/main.py:4690
+#, python-format
+msgid "Error: the view %s exists and is not a workspace view."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:226 ../lib/advene/gui/plugins/actions.py:103
-#: ../lib/advene/gui/views/logwindow.py:159
-msgid "URL"
+#: ../lib/advene/gui/main.py:4721
+#, python-format
+msgid "Cannot save default workspace: %s"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:235
-msgid "Open a static view"
+#: ../lib/advene/gui/main.py:4731
+msgid "Standard workspace has been saved"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:246
-msgid "Set the audio volume"
+#: ../lib/advene/gui/main.py:4738
+msgid "Website export"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:247
-msgid "Volume level (from 0 to 100)"
+#: ../lib/advene/gui/main.py:4739
+msgid "Exporting views to a website"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:256
-msgid "Set the playing rate"
+#: ../lib/advene/gui/main.py:4742
+msgid "Output directory"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:257
-msgid "Rate (100: normal rate, 200: twice slower)"
+#: ../lib/advene/gui/main.py:4751
+msgid "Specify the output directory"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:266
-msgid "Play a sound resource"
+#: ../lib/advene/gui/main.py:4760
+msgid "Maximum recursion depth"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:267
-msgid "Clip id"
+#: ../lib/advene/gui/main.py:4767
+msgid "Video URL"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
-msgid "Volume (0..100)"
+#: ../lib/advene/gui/main.py:4769
+msgid ""
+"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/rules/actions.py:269 ../lib/advene/rules/actions.py:283
-msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
+#: ../lib/advene/gui/main.py:4819
+msgid "Could not export data: "
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:280
-#, fuzzy
-msgid "Play a sound file"
-msgstr "Verbindungs Type"
+#: ../lib/advene/gui/main.py:4821
+#, fuzzy, python-format
+msgid "Website export to %s completed"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/rules/actions.py:281
-msgid "Sound filename"
+#: ../lib/advene/gui/main.py:4860
+msgid "This video player is not able to grab specific screenshots"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:293
-msgid "Set a state variable"
+#: ../lib/advene/gui/main.py:4870
+#, python-format
+msgid "Updating %d snapshots"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
-msgid "State variable name"
+#: ../lib/advene/gui/main.py:4875
+msgid "No snapshot to update"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:295
-msgid "State value"
+#: ../lib/advene/gui/main.py:4884
+msgid "You first must load a movie into Advene"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:305
-msgid "Increment a state variable"
+#: ../lib/advene/gui/main.py:4887
+#, python-format
+msgid "The movie %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:315
-msgid "Clear all state variables"
+#: ../lib/advene/gui/main.py:4943
+msgid "Generating screenshots"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:330
-#, python-format
-msgid "Error in the evaluation of the parameter %s:"
+#: ../lib/advene/gui/main.py:4948
+msgid ""
+"<b>Screenshot generation</b>\n"
+"\n"
+"Screenshots will be captured approximately every 500ms.\n"
+"\n"
+"If the movie was paused or playing, the capture will begin at the current "
+"position. Else, it will begin at the beginning of the movie.\n"
+"Note that the main interface will not be refreshed as long as this window is "
+"open."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:389 ../lib/advene/gui/plugins/actions.py:247
-#, python-format
-msgid "The %s-related outgoing annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:33
+msgid "Shot validation view"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:391 ../lib/advene/gui/plugins/actions.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:35
+#, fuzzy
+msgid "Display shot validation interface"
+msgstr "Zeige Kommentare an einer Timeline"
+
+#: ../lib/advene/gui/plugins/shotvalidation.py:112
 #, python-format
-msgid "The %s-related incoming annotation"
+msgid "Merged #%(first)d-#%(second)d into #%(first)d"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:551
+#: ../lib/advene/gui/plugins/shotvalidation.py:137
+msgid "Last action undone"
+msgstr ""
+
+#: ../lib/advene/gui/plugins/shotvalidation.py:155
 #, python-format
-msgid "Cannot find the stbv %s"
+msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:615 ../lib/advene/gui/views/viewbook.py:263
+#: ../lib/advene/gui/plugins/shotvalidation.py:160
 #, python-format
-msgid "Cannot find the view %s"
+msgid "Cannot split annotation #%(current)d: out of bounds."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:647
-msgid "The set_rate method is unavailable."
+#: ../lib/advene/gui/plugins/shotvalidation.py:180
+#, python-format
+msgid "Changed cut between #%(first)d and %(second)d"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:657
-msgid "No 'soundclips' resource folder in the package"
+#: ../lib/advene/gui/plugins/shotvalidation.py:183
+#, fuzzy
+msgid "Changed begin time for first annotation"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/plugins/shotvalidation.py:189
+#, fuzzy
+msgid "No annotations to adjust"
+msgstr "Kommentar Typ"
+
+#: ../lib/advene/gui/plugins/shotvalidation.py:196
+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/rules/actions.py:683
-msgid "Full volume"
+#: ../lib/advene/gui/plugins/shotvalidation.py:204
+#, python-format
+msgid "Begin of #%(index)d (title: %(content)s)"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:684
-msgid "Left"
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
+msgid "< Previous cut"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:685
-#: ../lib/advene/gui/edit/transcribe.py:1196
+#: ../lib/advene/gui/plugins/shotvalidation.py:219
 #, fuzzy
-msgid "Center"
-msgstr "Erstelle"
+msgid "Display previous cut"
+msgstr "Zeige die Transkription für eine Anmerkung"
 
-#: ../lib/advene/rules/actions.py:686
-msgid "Right"
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
+msgid "Next cut >"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:141
-msgid "is equal to"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:227
+#, fuzzy
+msgid "Display next cut"
+msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/rules/elements.py:142
-msgid "is different from"
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
+#: ../lib/advene/gui/views/annotationdisplay.py:92
+#: ../lib/advene/gui/views/timeline.py:86
+msgid "Current time"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:143
-msgid "contains"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#, fuzzy
+msgid "Go to annotation containing current player time."
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/rules/elements.py:144
-msgid "is greater than"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
+#: ../lib/advene/gui/edit/frameselector.py:197
+#, fuzzy
+msgid "Refresh snapshots"
+msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/rules/elements.py:145
-msgid "is lower than"
+#: ../lib/advene/gui/plugins/shotvalidation.py:258
+#: ../lib/advene/gui/edit/frameselector.py:198
+msgid "Refresh missing snapshots"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:146
-msgid "matches the regexp"
+#: ../lib/advene/gui/plugins/shotvalidation.py:263
+msgid "Undo last modification"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:147
-msgid "is before"
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
+msgid "Merge with previous"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:148
-msgid "meets"
+#: ../lib/advene/gui/plugins/shotvalidation.py:270
+msgid "Merge with previous annotation, i.e. remove this bound."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:149
-msgid "overlaps"
+#: ../lib/advene/gui/plugins/shotvalidation.py:275
+msgid "Close view."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:150
-msgid "during"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:44
+#, fuzzy
+msgid "Activity trace"
+msgstr "Aktivieren und Abspielen"
 
-#: ../lib/advene/rules/elements.py:151
-msgid "starts"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:74
+#: ../lib/advene/gui/plugins/eventaccumulator.py:75
+#: ../lib/advene/gui/plugins/tracetimeline.py:65
+#: ../lib/advene/gui/plugins/tracetimeline.py:66
+#: ../lib/advene/gui/plugins/tracepreview.py:73
+#: ../lib/advene/gui/plugins/tracepreview.py:74
+msgid "Beginning edition"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:152
-msgid "finishes"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:76
+#: ../lib/advene/gui/plugins/eventaccumulator.py:77
+#: ../lib/advene/gui/plugins/eventaccumulator.py:78
+#: ../lib/advene/gui/plugins/tracetimeline.py:67
+#: ../lib/advene/gui/plugins/tracetimeline.py:68
+#: ../lib/advene/gui/plugins/tracetimeline.py:69
+#: ../lib/advene/gui/plugins/tracepreview.py:75
+#: ../lib/advene/gui/plugins/tracepreview.py:76
+#: ../lib/advene/gui/plugins/tracepreview.py:77
+msgid "Canceling edition"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:157
-msgid "is not true"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:79
+#: ../lib/advene/gui/plugins/tracetimeline.py:70
+#: ../lib/advene/gui/plugins/tracepreview.py:78
+msgid "Ending edition"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:158
-msgid "is true"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:135
+msgid " Trace : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:162
-msgid "Basic conditions"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:139
+#, fuzzy
+msgid " Filters"
+msgstr "_Datei"
 
-#: ../lib/advene/rules/elements.py:163
-msgid "Allen relations"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:168
+msgid " Time : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
-msgid "Unknown type for overlaps comparison"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:178
+msgid " Max. : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
-msgid "Unknown type for during comparison"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:187
+#, fuzzy
+msgid "Export"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
-#, python-format
-msgid "Unknown action %s"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:203
+#: ../lib/advene/gui/plugins/tracetimeline.py:665
+#, fuzzy
+msgid "Exporting traces"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/rules/elements.py:522
+#: ../lib/advene/gui/plugins/eventaccumulator.py:208
+#: ../lib/advene/gui/plugins/tracetimeline.py:670
 #, fuzzy, python-format
-msgid "Unknown parameter %s"
-msgstr "Unbekannte STBV identifier: %s"
+msgid ""
+"Export done to\n"
+"%s"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/rules/elements.py:527
-msgid "Unknown actions"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:254
+#, fuzzy
+msgid "Defining Filters"
+msgstr "_Datei"
 
-#: ../lib/advene/rules/elements.py:972
-msgid "Start of the editing of an element"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:560
+#: ../lib/advene/gui/plugins/eventaccumulator.py:615
+#: ../lib/advene/gui/plugins/tracepreview.py:215
+#, fuzzy, python-format
+msgid "of an annotation (%s)"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/rules/elements.py:973
-msgid "Cancel of the editing of an element"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:562
+#: ../lib/advene/gui/plugins/eventaccumulator.py:617
+#: ../lib/advene/gui/plugins/tracepreview.py:217
+#, fuzzy, python-format
+msgid "of a relation (%s)"
+msgstr "Verbindungs Type"
 
-#: ../lib/advene/rules/elements.py:974
-msgid "Destruction of the edit window of an element"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:564
+#: ../lib/advene/gui/plugins/eventaccumulator.py:619
+#: ../lib/advene/gui/plugins/tracepreview.py:219
+#, fuzzy, python-format
+msgid "of an annotation type (%s)"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/rules/elements.py:975
-msgid "Validation of the editing of an element"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:566
+#: ../lib/advene/gui/plugins/eventaccumulator.py:621
+#: ../lib/advene/gui/plugins/tracepreview.py:221
+#, fuzzy, python-format
+msgid "of a relation type (%s)"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/rules/elements.py:976
-msgid "Ending editing of a package"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:568
+#: ../lib/advene/gui/plugins/eventaccumulator.py:623
+#: ../lib/advene/gui/plugins/tracepreview.py:223
+#, fuzzy, python-format
+msgid "of a schema (%s)"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/rules/elements.py:977
-msgid "Beginning of an annotation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:570
+#: ../lib/advene/gui/plugins/eventaccumulator.py:625
+#: ../lib/advene/gui/plugins/tracepreview.py:225
+#, python-format
+msgid "of a view (%s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:978
-msgid "End of an annotation"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:572
+#: ../lib/advene/gui/plugins/eventaccumulator.py:627
+#: ../lib/advene/gui/plugins/tracepreview.py:227
+#, fuzzy, python-format
+msgid "of a package (%s)"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/rules/elements.py:979
-msgid "Creation of a new annotation"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:574
+#: ../lib/advene/gui/plugins/eventaccumulator.py:629
+#: ../lib/advene/gui/plugins/tracepreview.py:229
+#, fuzzy, python-format
+msgid "of an unknown item (%s)"
+msgstr "Unbekannte STBV identifier: %s"
 
-#: ../lib/advene/rules/elements.py:980
-msgid "Ending editing of an annotation"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:380
+#, python-format
+msgid "Rendering type %(type)s as %(presentation)s"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:981
-msgid "Suppression of an annotation"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
+msgid "Snapshot only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:982
-msgid "Activation of an annotation"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
+msgid "Overlayed snapshot only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:983
-msgid "Deactivation of an annotation"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
+msgid "Timestamp only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:984
-msgid "Merging of two annotations"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:528
+msgid "Snapshot+timestamp"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:985
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:529
 #, fuzzy
-msgid "Moving an annotation"
+msgid "Annotation content"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/rules/elements.py:986
-msgid "Activation of a relation"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:544
+msgid "as a list"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:987
-msgid "Deactivation of a relation"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:545
+msgid "as a grid"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:988
-msgid "Creation of a new relation"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:546
+msgid "as a table"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:989
-msgid "Ending editing of a relation"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:547
+#: ../lib/advene/gui/views/viewbook.py:379
+#, fuzzy
+msgid "as a transcription"
+msgstr "T_ranskription"
 
-#: ../lib/advene/rules/elements.py:990
-msgid "Suppression of a relation"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/views/transcription.py:461
+#, python-format
+msgid "Annotation %s"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:991
-msgid "Creation of a new view"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:685
+msgid "Play video"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:992
-msgid "Ending editing of a view"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
+msgid "Show timestamp only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:993
-msgid "Suppression of a view"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
+msgid "Show content only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:994
-msgid "Creation of a new query"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:669
+msgid "Show snapshot only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:995
-msgid "Ending editing of a query"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
+msgid "Show overlayed timestamp"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:996
-msgid "Suppression of a query"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+msgid "Show overlayed content"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:997
-msgid "Creation of a new schema"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#, fuzzy, python-format
+msgid "Annotation type %s"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/rules/elements.py:998
-msgid "Ending editing of a schema"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:675
+#, fuzzy
+msgid "display as list"
+msgstr "Zeige Packet inhalt als Baumdarstellung"
 
-#: ../lib/advene/rules/elements.py:999
-msgid "Suppression of a schema"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:676
+#, fuzzy
+msgid "display as grid"
+msgstr "Zeige Packet inhalt als Baumdarstellung"
 
-#: ../lib/advene/rules/elements.py:1000
-#: ../lib/advene/gui/views/timeline.py:1029 ../lib/advene/gui/main.py:4555
-msgid "Creation of a new annotation type"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:677
+#, fuzzy
+msgid "display as table"
+msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/rules/elements.py:1001
-msgid "Ending editing an annotation type"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:678
+#, fuzzy
+msgid "display as transcription"
+msgstr "T_ranskription"
+
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:687
+msgid "Open link"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1002
-msgid "Suppression of an annotation type"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:743
+#, fuzzy, python-format
+msgid "HTML editor: cannot parse content (%s)"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#, fuzzy, python-format
+msgid "Heading %d"
+msgstr "Datei _importieren"
+
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
+msgid "Bold"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1003
-msgid "Creation of a new relation type"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:786
+msgid "Italic"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1004
-msgid "Ending editing a relation type"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
+msgid "Header"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1005
-msgid "Suppression of a relation type"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+msgid "Copy"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1006
-msgid "Creation of a new resource"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:790
+msgid "Cut"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1007
-msgid "Ending editing of a resource"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
+msgid "Paste"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1008
-msgid "Suppression of a resource"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:793
+#: ../lib/advene/gui/views/timeline.py:139
+msgid "Refresh"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1009
-msgid "Modification of the tag"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:849
+msgid "WYSIWYG editor"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1010
-msgid "Activating a link"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:859
+msgid "Edit HTML source"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1011
-msgid "Player start"
+#: ../lib/advene/gui/plugins/tracetimeline.py:71
+#: ../lib/advene/gui/plugins/tracepreview.py:79
+#, fuzzy
+msgid "Moving to"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/plugins/tracetimeline.py:87
+msgid "Traces"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1012
-msgid "Player stop"
+#: ../lib/advene/gui/plugins/tracetimeline.py:213
+#, python-format
+msgid "%(name)s (%(index)d)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1013
-msgid "Player pause"
+#: ../lib/advene/gui/plugins/tracetimeline.py:241
+msgid "Search"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1014
-msgid "Player resume"
+#: ../lib/advene/gui/plugins/tracetimeline.py:254
+#: ../lib/advene/gui/plugins/tracetimeline.py:1219
+#, python-format
+msgid "%(name)s (%(index)s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1015
-msgid "Going to a given position"
+#: ../lib/advene/gui/plugins/tracetimeline.py:426
+#: ../lib/advene/gui/views/timeline.py:3457
+#: ../lib/advene/gui/edit/montage.py:446
+msgid "Zoom out"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1016
-msgid "Loading a new package"
+#: ../lib/advene/gui/plugins/tracetimeline.py:431
+#: ../lib/advene/gui/views/timeline.py:3462
+#: ../lib/advene/gui/edit/montage.py:451
+msgid "Zoom in"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1017
-msgid "Activating a package"
+#: ../lib/advene/gui/plugins/tracetimeline.py:436
+msgid "Zoom 100%"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1018
-msgid "Saving the package"
+#: ../lib/advene/gui/plugins/tracetimeline.py:440
+msgid "Toggle links lock"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1019
-msgid "Start of the dynamic view"
+#: ../lib/advene/gui/plugins/tracetimeline.py:448
+msgid "Toggle link mode"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1020
-msgid "End of the dynamic view"
+#: ../lib/advene/gui/plugins/tracetimeline.py:455
+msgid "Open a trace file"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1021
-msgid "Start of the application"
+#: ../lib/advene/gui/plugins/tracetimeline.py:470
+msgid "Toggle auto refresh"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1022
-msgid "End of the application"
+#: ../lib/advene/gui/plugins/tracetimeline.py:481
+msgid "Open an existing trace"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1023
-msgid "User-defined event"
+#: ../lib/advene/gui/plugins/tracetimeline.py:487
+#, fuzzy
+msgid "Save trace"
+msgstr "Sichere _ImageCache"
+
+#: ../lib/advene/gui/plugins/tracetimeline.py:492
+#, fuzzy
+msgid "Configuration"
+msgstr "_Einstellung Spieler"
+
+#: ../lib/advene/gui/plugins/tracetimeline.py:946
+msgid "Zoom and center on linked items"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1024
-msgid "Modification of the associated media"
+#: ../lib/advene/gui/plugins/tracetimeline.py:955
+#, fuzzy
+msgid "Edit item"
+msgstr "_Bearbeite"
+
+#: ../lib/advene/gui/plugins/tracetimeline.py:959
+msgid "Recreate item"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1025
-msgid "Highlight a bookmark"
+#: ../lib/advene/gui/plugins/tracetimeline.py:975
+#: ../lib/advene/gui/plugins/tracetimeline.py:996
+#: ../lib/advene/gui/views/timeline.py:2584 ../lib/advene/gui/popup.py:513
+#: ../lib/advene/gui/edit/transcribe.py:500
+msgid "Go to..."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1026
-msgid "Unhighlight a bookmark"
+#: ../lib/advene/gui/plugins/tracetimeline.py:979
+msgid "Zoom on action"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1027
-msgid "Updating duration of the movie"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2023
+#: ../lib/advene/gui/views/timeline.py:3331
+#: ../lib/advene/gui/edit/montage.py:541
+msgid "Inspector"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1028
-msgid "Displaying a popup"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2028
+msgid "Item Id"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1029
-msgid "Updating a snapshot"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2031
+msgid "Item name or class"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1067
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
 #, fuzzy
-msgid "Player control"
-msgstr "_Spieler"
+msgid "Type or schema"
+msgstr "Schema"
 
-#: ../lib/advene/rules/elements.py:1068
-msgid "Audio enrichment"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
+msgid "Operations"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1069
+#: ../lib/advene/gui/plugins/tracetimeline.py:2081
 #, fuzzy
-msgid "Image enrichment"
-msgstr "T_imeline"
+msgid "Comment"
+msgstr "Erstelle"
 
-#: ../lib/advene/rules/elements.py:1070
-msgid "External display control"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2113
+#: ../lib/advene/gui/edit/merge.py:191
+msgid "Action"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1071
-msgid "Popup"
-msgstr ""
+#: ../lib/advene/gui/plugins/logmessages.py:35
+#, fuzzy
+msgid "Log Messages"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/rules/elements.py:1073
-msgid "State"
+#: ../lib/advene/gui/plugins/actions.py:40 ../lib/advene/core/controller.py:277
+#: ../lib/advene/rules/actions.py:36
+msgid "Display a message"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1074
-msgid "GUI actions"
+#: ../lib/advene/gui/plugins/actions.py:41
+#: ../lib/advene/gui/plugins/actions.py:53
+#: ../lib/advene/gui/plugins/actions.py:71
+#: ../lib/advene/gui/plugins/actions.py:86
+#: ../lib/advene/gui/plugins/actions.py:102
+#: ../lib/advene/gui/plugins/actions.py:203
+#: ../lib/advene/core/controller.py:278
+msgid "String to display."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1075
-msgid "Expert"
+#: ../lib/advene/gui/plugins/actions.py:44
+#: ../lib/advene/gui/plugins/actions.py:58
+#: ../lib/advene/gui/plugins/actions.py:110
+#: ../lib/advene/gui/plugins/actions.py:399
+#: ../lib/advene/gui/plugins/actions.py:527 ../lib/advene/gui/edit/rules.py:770
+#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
+#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
+#: ../lib/advene/rules/actions.py:123
+#, fuzzy
+msgid "The annotation content"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/plugins/actions.py:52
+msgid "Display a popup"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:82
-msgid "Initial Advene configuration"
+#: ../lib/advene/gui/plugins/actions.py:54
+#: ../lib/advene/gui/plugins/actions.py:73
+#: ../lib/advene/gui/plugins/actions.py:88
+#: ../lib/advene/gui/plugins/actions.py:104
+#: ../lib/advene/gui/plugins/actions.py:160
+#: ../lib/advene/gui/plugins/actions.py:184
+msgid "Display duration in ms. Ignored if empty."
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:83
-msgid ""
-"<span size='large'><b>Welcome in Advene</b>\n"
-"This is the first time that you run Advene. Please answer some basic "
-"configuration questions. You will be able to modify these choices from the "
-"Advene interface, in the Edit/Preferences menu.</span>"
+#: ../lib/advene/gui/plugins/actions.py:61
+#: ../lib/advene/gui/plugins/actions.py:121
+#: ../lib/advene/gui/plugins/actions.py:403
+#: ../lib/advene/gui/plugins/actions.py:538 ../lib/advene/rules/actions.py:110
+#: ../lib/advene/rules/actions.py:172
+msgid "1 second"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:84
+#: ../lib/advene/gui/plugins/actions.py:62
+#: ../lib/advene/gui/plugins/actions.py:122
+#: ../lib/advene/gui/plugins/actions.py:404
+#: ../lib/advene/gui/plugins/actions.py:539 ../lib/advene/gui/edit/rules.py:777
+#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
 #, fuzzy
-msgid "Interface language"
-msgstr "Oberflächen Eigentschaften"
+msgid "The annotation duration"
+msgstr "Zeige die Anmerkung als Transkription"
 
-#: ../lib/advene/gui/util/initialconfig.py:84
-msgid "Language used for the interface"
+#: ../lib/advene/gui/plugins/actions.py:70
+msgid "Popup an entry box"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:88 ../lib/advene/gui/main.py:4247
-msgid "System default"
+#: ../lib/advene/gui/plugins/actions.py:72
+msgid "Object where to store the answer (should have a content)"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:90
-msgid "Weekly check for Advene updates on the Advene website"
+#: ../lib/advene/gui/plugins/actions.py:84
+msgid "Display a popup to go to another position"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:90 ../lib/advene/gui/main.py:4273
-msgid "Weekly check for updates on the Advene website"
+#: ../lib/advene/gui/plugins/actions.py:85
+#: ../lib/advene/gui/plugins/actions.py:101
+#: ../lib/advene/gui/plugins/actions.py:155
+#: ../lib/advene/gui/plugins/actions.py:177
+msgid "General description"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for data files"
+#: ../lib/advene/gui/plugins/actions.py:87
+msgid "New position"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for storing data files (Advene packages)"
+#: ../lib/advene/gui/plugins/actions.py:90
+#: ../lib/advene/gui/plugins/actions.py:191
+#, fuzzy
+msgid "Go to related annotation"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/plugins/actions.py:100
+msgid "Display a popup linking to an URL"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:94
-msgid "Directories to search for movies"
+#: ../lib/advene/gui/plugins/actions.py:103
+#: ../lib/advene/gui/views/logwindow.py:159 ../lib/advene/rules/actions.py:226
+msgid "URL"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:94
-#, python-format
-msgid ""
-"List of directories (separated by %(pathsep)s) to search for movie files."
+#: ../lib/advene/gui/plugins/actions.py:106
+msgid "string:Display annotation in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid "First look for movie file in the same directory as the package"
+#: ../lib/advene/gui/plugins/actions.py:113
+#: ../lib/advene/gui/views/logwindow.py:160
+#: ../lib/advene/gui/views/logwindow.py:163
+msgid "See the Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid ""
-"If checked, the movie file will be searched for in the same directory as the "
-"referencing package."
+#: ../lib/advene/gui/plugins/actions.py:114
+#: ../lib/advene/gui/views/logwindow.py:164
+#, fuzzy
+msgid "See the annotation"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/plugins/actions.py:117
+#: ../lib/advene/gui/views/logwindow.py:167
+msgid "The Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:39
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
-#: ../lib/advene/gui/edit/create.py:106
-msgid "Plain text content"
+#: ../lib/advene/gui/plugins/actions.py:118
+#: ../lib/advene/gui/views/logwindow.py:168
+#, fuzzy
+msgid "The annotation URL"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/plugins/actions.py:130
+msgid "Open an interface view"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:40
-msgid "HTML content"
+#: ../lib/advene/gui/plugins/actions.py:131
+msgid ""
+"View name (timeline, tree, transcription, browser, webbrowser, transcribe)"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:41
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
-#: ../lib/advene/gui/edit/create.py:107
-msgid "Simple-structured content"
+#: ../lib/advene/gui/plugins/actions.py:132
+msgid "Destination: popup, south, east"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:42
-msgid "List of numeric values"
+#: ../lib/advene/gui/plugins/actions.py:144
+#: ../lib/advene/gui/views/viewbook.py:307
+msgid "Open a saved view"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:43
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
-#: ../lib/advene/gui/edit/create.py:108
-msgid "SVG graphics content"
+#: ../lib/advene/gui/plugins/actions.py:145
+msgid "Identifier of the saved view"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:459
-#, python-format
-msgid ""
-"Annotation Type %(title)s:\n"
-"%(count)s"
+#: ../lib/advene/gui/plugins/actions.py:154
+msgid "Display a popup with 2 options"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:465
-#, python-format
-msgid ""
-"Relation Type %(title)s:\n"
-"%(count)s"
+#: ../lib/advene/gui/plugins/actions.py:156
+#: ../lib/advene/gui/plugins/actions.py:178
+msgid "First option description"
 msgstr ""
 
-#: ../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
-#: ../lib/advene/gui/views/table.py:557 ../lib/advene/gui/main.py:4176
-msgid "Title"
+#: ../lib/advene/gui/plugins/actions.py:157
+#: ../lib/advene/gui/plugins/actions.py:179
+msgid "First position"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/rules.py:1092
-#: ../lib/advene/gui/edit/imports.py:325
-#: ../lib/advene/gui/edit/elements.py:507
-#: ../lib/advene/gui/edit/elements.py:556
-#: ../lib/advene/gui/edit/elements.py:644
-#: ../lib/advene/gui/edit/elements.py:724
-#: ../lib/advene/gui/edit/elements.py:873
-#: ../lib/advene/gui/edit/elements.py:942
-#: ../lib/advene/gui/edit/elements.py:1054
-#: ../lib/advene/gui/edit/elements.py:1115
-#: ../lib/advene/gui/views/table.py:255 ../lib/advene/gui/views/table.py:559
-msgid "Id"
+#: ../lib/advene/gui/plugins/actions.py:158
+#: ../lib/advene/gui/plugins/actions.py:180
+msgid "Second option description"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:404 ../lib/advene/gui/util/dialog.py:443
-msgid "Name the element"
+#: ../lib/advene/gui/plugins/actions.py:159
+#: ../lib/advene/gui/plugins/actions.py:181
+msgid "Second position"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:407 ../lib/advene/gui/util/dialog.py:444
-msgid "Choose a name for the element"
+#: ../lib/advene/gui/plugins/actions.py:163
+#: ../lib/advene/gui/plugins/actions.py:187
+msgid "Go to the beginning"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:482
-msgid "Open a file"
+#: ../lib/advene/gui/plugins/actions.py:165
+#: ../lib/advene/gui/plugins/actions.py:189
+msgid "Go to the end"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:507 ../lib/advene/gui/util/dialog.py:543
-msgid "N/C"
+#: ../lib/advene/gui/plugins/actions.py:176
+msgid "Display a popup with 3 options"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:512
-msgid "Alias"
+#: ../lib/advene/gui/plugins/actions.py:182
+msgid "Third option description"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:532
-msgid ""
-"Press to\n"
-"display\n"
-"information"
+#: ../lib/advene/gui/plugins/actions.py:183
+msgid "Third position"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:551
-msgid "Wait..."
+#: ../lib/advene/gui/plugins/actions.py:202
+msgid "Display a popup to navigate to related annotations"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:555
-#, python-format
-msgid "Error: %s"
+#: ../lib/advene/gui/plugins/actions.py:204
+#: ../lib/advene/gui/plugins/actions.py:559
+msgid "Choose the related annotation you want to visualise."
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:575
-msgid "Any type of file"
+#: ../lib/advene/gui/plugins/actions.py:211
+msgid "Create a bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:577
-msgid "Advene files (.xml, .azp, .apl)"
+#: ../lib/advene/gui/plugins/actions.py:212
+msgid "Bookmark position (in ms)"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:579
-msgid "Advene session (.apl)"
+#: ../lib/advene/gui/plugins/actions.py:213
+msgid "Bookmark content."
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:580
-msgid "Audio files"
+#: ../lib/advene/gui/plugins/actions.py:214
+msgid "Bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:581
-msgid "Video files"
+#: ../lib/advene/gui/plugins/actions.py:234 ../lib/advene/plugins/brltty.py:240
+#: ../lib/advene/plugins/tts.py:110
+msgid "Unknown rule"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:626
-#: ../lib/advene/gui/edit/properties.py:418
-msgid "Choose a directory"
+#: ../lib/advene/gui/plugins/actions.py:235 ../lib/advene/plugins/brltty.py:241
+#: ../lib/advene/plugins/tts.py:111
+#, python-format
+msgid ""
+"Rule %(rulename)s: Error in the evaluation of the parameter "
+"%(parametername)s:"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:679
-msgid "Select an element"
+#: ../lib/advene/gui/plugins/actions.py:247 ../lib/advene/rules/actions.py:389
+#, python-format
+msgid "The %s-related outgoing annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:32
-msgid "Shot validation view"
+#: ../lib/advene/gui/plugins/actions.py:249 ../lib/advene/rules/actions.py:391
+#, python-format
+msgid "The %s-related incoming annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:34
-#, fuzzy
-msgid "Display shot validation interface"
-msgstr "Zeige Kommentare an einer Timeline"
+#: ../lib/advene/gui/plugins/actions.py:259
+#: ../lib/advene/gui/plugins/actions.py:340
+#: ../lib/advene/gui/plugins/actions.py:358 ../lib/advene/plugins/tts.py:131
+msgid "No message..."
+msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:111
+#: ../lib/advene/gui/plugins/actions.py:276
 #, python-format
-msgid "Merged #%(first)d-#%(second)d into #%(first)d"
+msgid "Error: undefined GUI view %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:136
-msgid "Last action undone"
+#: ../lib/advene/gui/plugins/actions.py:322
+#, python-format
+msgid "Element %s does not look like a view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:154
-#, python-format
-msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
+#: ../lib/advene/gui/plugins/actions.py:350
+msgid "Information popup"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:159
+#: ../lib/advene/gui/plugins/actions.py:364
 #, python-format
-msgid "Cannot split annotation #%(current)d: out of bounds."
+msgid "Empty destination for entry popup: %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/actions.py:367
 #, python-format
-msgid "Changed cut between #%(first)d and %(second)d"
+msgid "Destination does not have a content: %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:182
-#, fuzzy
-msgid "Changed begin time for first annotation"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/plugins/actions.py:394
+msgid "Entry popup"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:188
-#, fuzzy
-msgid "No annotations to adjust"
-msgstr "Kommentar Typ"
+#: ../lib/advene/gui/plugins/actions.py:419
+msgid "Follow a link"
+msgstr ""
 
-#: ../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."
+#: ../lib/advene/gui/plugins/actions.py:423
+msgid "Click to open the URL"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:203
-#, python-format
-msgid "Begin of #%(index)d (title: %(content)s)"
+#: ../lib/advene/gui/plugins/actions.py:441
+msgid "URL popup"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:217
-msgid "< Previous cut"
+#: ../lib/advene/gui/plugins/actions.py:454
+#: ../lib/advene/gui/plugins/actions.py:491
+msgid "Make a choice"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:218
-#, fuzzy
-msgid "Display previous cut"
-msgstr "Zeige die Transkription für eine Anmerkung"
+#: ../lib/advene/gui/plugins/actions.py:458
+msgid "Click to go to another position"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:225
-msgid "Next cut >"
+#: ../lib/advene/gui/plugins/actions.py:477
+#: ../lib/advene/gui/plugins/actions.py:515
+#: ../lib/advene/gui/views/singletonpopup.py:98
+msgid "Navigation popup"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:226
-#, fuzzy
-msgid "Display next cut"
-msgstr "Zeige Shortcuts"
+#: ../lib/advene/gui/plugins/actions.py:500
+#, python-format
+msgid "Choice %d"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:251
-#: ../lib/advene/gui/views/timeline.py:81
-#: ../lib/advene/gui/views/annotationdisplay.py:90
-msgid "Current time"
+#: ../lib/advene/gui/plugins/actions.py:521
+msgid "The beginning of the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:252
+#: ../lib/advene/gui/plugins/actions.py:522
 #, fuzzy
-msgid "Go to annotation containing current player time."
-msgstr "Kommentar Typ"
+msgid "The end of the annotation"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:256
-#: ../lib/advene/gui/edit/frameselector.py:193
+#: ../lib/advene/gui/plugins/actions.py:523
 #, fuzzy
-msgid "Refresh snapshots"
-msgstr "Zeige Shortcuts"
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:257
-#: ../lib/advene/gui/edit/frameselector.py:194
-msgid "Refresh missing snapshots"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:261
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:806
-#: ../lib/advene/gui/edit/transcribe.py:1211 ../lib/advene/gui/main.py:350
-msgid "Undo"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:262
-msgid "Undo last modification"
-msgstr ""
+msgid "The next annotation of the same type"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:268
-msgid "Merge with previous"
-msgstr ""
+#: ../lib/advene/gui/plugins/actions.py:524
+#, fuzzy
+msgid "The previous annotation of the same type"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:269
-msgid "Merge with previous annotation, i.e. remove this bound."
+#: ../lib/advene/gui/plugins/actions.py:573
+#, python-format
+msgid ""
+"Through %(title)s%(relation_content)s:\n"
+"%(annotation_content)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:274
-msgid "Close view."
+#: ../lib/advene/gui/plugins/actions.py:581
+msgid "Relation navigation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:60
-#: ../lib/advene/gui/plugins/tracetimeline.py:61
-#: ../lib/advene/gui/plugins/eventaccumulator.py:73
-#: ../lib/advene/gui/plugins/eventaccumulator.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:72
-#: ../lib/advene/gui/plugins/tracepreview.py:73
-msgid "Beginning edition"
+#: ../lib/advene/gui/plugins/actions.py:591
+msgid "New bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:62
-#: ../lib/advene/gui/plugins/tracetimeline.py:63
-#: ../lib/advene/gui/plugins/tracetimeline.py:64
-#: ../lib/advene/gui/plugins/eventaccumulator.py:75
-#: ../lib/advene/gui/plugins/eventaccumulator.py:76
-#: ../lib/advene/gui/plugins/eventaccumulator.py:77
-#: ../lib/advene/gui/plugins/tracepreview.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:75
-#: ../lib/advene/gui/plugins/tracepreview.py:76
-msgid "Canceling edition"
+#: ../lib/advene/gui/plugins/kinect.py:41
+msgid "Kinect Controller"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:65
-#: ../lib/advene/gui/plugins/eventaccumulator.py:78
-#: ../lib/advene/gui/plugins/tracepreview.py:77
-msgid "Ending edition"
+#: ../lib/advene/gui/plugins/kinect.py:43
+msgid "Kinect control interface"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:66
-#: ../lib/advene/gui/plugins/tracepreview.py:78
-#, fuzzy
-msgid "Moving to"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:82
-msgid "Traces"
+#: ../lib/advene/gui/plugins/contenthandlers.py:123
+msgid "Label"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:208
+#: ../lib/advene/gui/plugins/contenthandlers.py:173
 #, python-format
-msgid "%(name)s (%(index)d)"
+msgid ""
+"Error while parsing SVG content:\n"
+"\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:236
-msgid "Search"
+#: ../lib/advene/gui/plugins/contenthandlers.py:248
+msgid " created from "
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1224
-#, python-format
-msgid "%(name)s (%(index)s)"
+#: ../lib/advene/gui/plugins/contenthandlers.py:314
+msgid "Graphical editor"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:421
-#: ../lib/advene/gui/edit/montage.py:439
-#: ../lib/advene/gui/views/timeline.py:3444
-msgid "Zoom out"
-msgstr ""
+#: ../lib/advene/gui/plugins/contenthandlers.py:325
+#, fuzzy
+msgid "Edit XML"
+msgstr "_Bearbeite"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:426
-#: ../lib/advene/gui/edit/montage.py:444
-#: ../lib/advene/gui/views/timeline.py:3449
-msgid "Zoom in"
+#: ../lib/advene/gui/plugins/contenthandlers.py:377
+#: ../lib/advene/gui/plugins/contenthandlers.py:433
+#: ../lib/advene/gui/edit/rules.py:190
+#, python-format
+msgid ""
+"The following items seem to be\n"
+"invalid TALES expressions:\n"
+"\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:431
-msgid "Zoom 100%"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracepreview.py:62
+#, fuzzy
+msgid "Trace preview"
+msgstr "_Baumdarstellung"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:435
-msgid "Toggle links lock"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracepreview.py:100
+#, fuzzy
+msgid "Full trace"
+msgstr "Sichere _ImageCache"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:443
-msgid "Toggle link mode"
+#: ../lib/advene/gui/plugins/tracepreview.py:101
+msgid "Open the trace timeline view fareast"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:450
-msgid "Open a trace file"
+#: ../lib/advene/gui/plugins/videoplayer.py:39
+msgid "Complementary video player"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:465
-msgid "Toggle auto refresh"
+#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/views/bookmarks.py:249
+#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/timeline.py:140 ../lib/advene/gui/edit/montage.py:58
+#: ../lib/advene/gui/edit/transcribe.py:86
+msgid "Save view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:476
-msgid "Open an existing trace"
+#: ../lib/advene/gui/plugins/videoplayer.py:46
+#: ../lib/advene/gui/views/transcription.py:58
+#: ../lib/advene/gui/views/timeline.py:141 ../lib/advene/gui/views/tagbag.py:65
+#: ../lib/advene/gui/views/interactivequery.py:60
+#: ../lib/advene/gui/edit/transcribe.py:87
+msgid "Save default options"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:482
-#, fuzzy
-msgid "Save trace"
-msgstr "Sichere _ImageCache"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:487
+#: ../lib/advene/gui/plugins/videoplayer.py:47
 #, fuzzy
-msgid "Configuration"
-msgstr "_Einstellung Spieler"
+msgid "Select video file"
+msgstr "Wähle einen video stream"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:668
-#: ../lib/advene/gui/plugins/eventaccumulator.py:202
+#: ../lib/advene/gui/plugins/videoplayer.py:128
 #, fuzzy
-msgid "Exporting traces"
-msgstr "Datei _importieren"
+msgid "Select a video file"
+msgstr "Wähle einen video stream"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:673
-#: ../lib/advene/gui/plugins/eventaccumulator.py:207
-#, fuzzy, python-format
-msgid ""
-"Export done to\n"
-"%s"
-msgstr "Datei _importieren"
+#: ../lib/advene/gui/plugins/videoplayer.py:251
+msgid "Synchronize"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:951
-msgid "Zoom and center on linked items"
+#: ../lib/advene/gui/plugins/videoplayer.py:269
+msgid "Offset in ms"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:960
+#: ../lib/advene/gui/plugins/videoplayer.py:277
 #, fuzzy
-msgid "Edit item"
-msgstr "_Bearbeite"
+msgid "Drag and drop to get player time"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:964
-msgid "Recreate item"
+#: ../lib/advene/gui/views/singletonpopup.py:32
+msgid "SingletonPopup"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:980
-#: ../lib/advene/gui/plugins/tracetimeline.py:1001
-#: ../lib/advene/gui/edit/transcribe.py:502
-#: ../lib/advene/gui/views/timeline.py:2556 ../lib/advene/gui/popup.py:513
-msgid "Go to..."
+#: ../lib/advene/gui/views/caption.py:31
+msgid "Display a text caption below the video output"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:984
-msgid "Zoom on action"
+#: ../lib/advene/gui/views/html.py:88
+#, python-format
+msgid "%s%% loaded"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
-#: ../lib/advene/gui/edit/montage.py:535
-#: ../lib/advene/gui/views/timeline.py:3318
-msgid "Inspector"
+#: ../lib/advene/gui/views/html.py:91
+#, fuzzy, python-format
+msgid "Title %s"
+msgstr "Darstellung"
+
+#: ../lib/advene/gui/views/html.py:155
+msgid "HTML Viewer"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2035
-msgid "Item Id"
+#: ../lib/advene/gui/views/html.py:157
+msgid "Embedded HTML widget"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2038
-msgid "Item name or class"
+#: ../lib/advene/gui/views/html.py:185
+msgid "No available HTML rendering component"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2042
+#: ../lib/advene/gui/views/annotationdisplay.py:43
 #, fuzzy
-msgid "Type or schema"
-msgstr "Schema"
+msgid "AnnotationDisplay"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2045
-msgid "Operations"
-msgstr ""
+#: ../lib/advene/gui/views/annotationdisplay.py:45
+#, fuzzy
+msgid "Display the contents of an annotation"
+msgstr "Zeige die Transkription für eine Anmerkung"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2087
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/util/helper.py:606
 #, fuzzy
-msgid "Comment"
-msgstr "Erstelle"
+msgid "No annotation"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2119
-#: ../lib/advene/gui/edit/merge.py:191
-msgid "Action"
+#: ../lib/advene/gui/views/annotationdisplay.py:112
+#, python-format
+msgid ""
+"Schema %(schema)s (id %(id)s)\n"
+"%(description)s\n"
+"%(stats)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/kinect.py:41
-msgid "Kinect Controller"
+#: ../lib/advene/gui/views/annotationdisplay.py:233
+msgid "Screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/kinect.py:43
-msgid "Kinect control interface"
+#: ../lib/advene/gui/views/annotationdisplay.py:255
+#: ../lib/advene/gui/views/relationdisplay.py:104
+msgid "Contents"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:52
-msgid "Display a popup"
+#: ../lib/advene/gui/views/annotationdisplay.py:258
+#: ../lib/advene/gui/views/editaccumulator.py:73
+msgid "Validate"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:54
-#: ../lib/advene/gui/plugins/actions.py:73
-#: ../lib/advene/gui/plugins/actions.py:88
-#: ../lib/advene/gui/plugins/actions.py:104
-#: ../lib/advene/gui/plugins/actions.py:160
-#: ../lib/advene/gui/plugins/actions.py:184
-msgid "Display duration in ms. Ignored if empty."
-msgstr ""
+#: ../lib/advene/gui/views/relationdisplay.py:34
+#, fuzzy
+msgid "RelationDisplay"
+msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/plugins/actions.py:70
-msgid "Popup an entry box"
+#: ../lib/advene/gui/views/relationdisplay.py:36
+#, fuzzy
+msgid "Display the contents of a relation"
+msgstr "Zeige Packet inhalt als Baumdarstellung"
+
+#: ../lib/advene/gui/views/relationdisplay.py:79
+msgid "No relation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:72
-msgid "Object where to store the answer (should have a content)"
+#: ../lib/advene/gui/views/relationdisplay.py:113
+#: ../lib/advene/gui/edit/elements.py:586
+#: ../lib/advene/gui/edit/elements.py:1069
+msgid "Members"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:84
-msgid "Display a popup to go to another position"
+#: ../lib/advene/gui/views/viewplugin.py:60
+msgid "Generic view plugin"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:85
-#: ../lib/advene/gui/plugins/actions.py:101
-#: ../lib/advene/gui/plugins/actions.py:155
-#: ../lib/advene/gui/plugins/actions.py:177
-msgid "General description"
+#: ../lib/advene/gui/views/viewplugin.py:62
+msgid "You should not ever see this tooltip..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:87
-msgid "New position"
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:90
-#: ../lib/advene/gui/plugins/actions.py:191
+#: ../lib/advene/gui/views/checker.py:39
 #, fuzzy
-msgid "Go to related annotation"
-msgstr "von einem Anmerkungs Typ"
+msgid "Check various package properties"
+msgstr "Bearbeite Packet Eigentschaften"
 
-#: ../lib/advene/gui/plugins/actions.py:100
-msgid "Display a popup linking to an URL"
+#: ../lib/advene/gui/views/checker.py:90
+msgid "List of possible issues in the current package"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:106
-msgid "string:Display annotation in web browser"
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:113
-#: ../lib/advene/gui/views/logwindow.py:160
-#: ../lib/advene/gui/views/logwindow.py:163
-msgid "See the Advene website"
+#: ../lib/advene/gui/views/table.py:60
+msgid "Annotation table view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:114
-#: ../lib/advene/gui/views/logwindow.py:164
+#: ../lib/advene/gui/views/table.py:62
+msgid "Display annotations in a table"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:73
 #, fuzzy
-msgid "See the annotation"
-msgstr "von einem Anmerkungs Typ"
+msgid "Export as CSV"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/plugins/actions.py:117
-#: ../lib/advene/gui/views/logwindow.py:167
-msgid "The Advene website"
+#: ../lib/advene/gui/views/table.py:90 ../lib/advene/gui/views/table.py:578
+#: ../lib/advene/gui/views/transcription.py:147
+#, python-format
+msgid "Error in source evaluation %(source)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:118
-#: ../lib/advene/gui/views/logwindow.py:168
-#, fuzzy
-msgid "The annotation URL"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/views/table.py:267 ../lib/advene/gui/views/table.py:544
+msgid "Snapshot"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:130
-msgid "Open an interface view"
+#: ../lib/advene/gui/views/table.py:280
+#: ../lib/advene/gui/views/timeline.py:1667
+msgid "Cannot update the annotation, its representation is too complex"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:131
-msgid ""
-"View name (timeline, tree, transcription, browser, webbrowser, transcribe)"
+#: ../lib/advene/gui/views/table.py:305 ../lib/advene/gui/edit/elements.py:604
+#: ../lib/advene/gui/edit/elements.py:681
+#: ../lib/advene/gui/edit/elements.py:741
+#: ../lib/advene/gui/edit/elements.py:1132
+msgid "Content"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:132
-msgid "Destination: popup, south, east"
+#: ../lib/advene/gui/views/table.py:306 ../lib/advene/gui/views/table.py:675
+#: ../lib/advene/gui/views/browser.py:363 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/edit/elements.py:512
+#: ../lib/advene/gui/edit/elements.py:561
+#: ../lib/advene/gui/edit/elements.py:663
+msgid "Type"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:144
-#: ../lib/advene/gui/views/viewbook.py:308
-msgid "Open a saved view"
+#: ../lib/advene/gui/views/table.py:307 ../lib/advene/gui/edit/elements.py:1807
+msgid "Begin"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:145
-msgid "Identifier of the saved view"
+#: ../lib/advene/gui/views/table.py:310 ../lib/advene/gui/views/table.py:676
+#: ../lib/advene/gui/util/dialog.py:395 ../lib/advene/gui/edit/rules.py:1096
+#: ../lib/advene/gui/edit/imports.py:325 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/edit/elements.py:560
+#: ../lib/advene/gui/edit/elements.py:648
+#: ../lib/advene/gui/edit/elements.py:728
+#: ../lib/advene/gui/edit/elements.py:877
+#: ../lib/advene/gui/edit/elements.py:946
+#: ../lib/advene/gui/edit/elements.py:1058
+#: ../lib/advene/gui/edit/elements.py:1119
+msgid "Id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:154
-msgid "Display a popup with 2 options"
+#: ../lib/advene/gui/views/table.py:449 ../lib/advene/gui/views/table.py:628
+msgid "Export data to file..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:156
-#: ../lib/advene/gui/plugins/actions.py:178
-msgid "First option description"
+#: ../lib/advene/gui/views/table.py:458 ../lib/advene/gui/views/table.py:637
+#, python-format
+msgid "Error while exporting data to %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:157
-#: ../lib/advene/gui/plugins/actions.py:179
-msgid "First position"
+#: ../lib/advene/gui/views/table.py:469
+msgid "id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:158
-#: ../lib/advene/gui/plugins/actions.py:180
-msgid "Second option description"
+#: ../lib/advene/gui/views/table.py:469
+msgid "type"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:159
-#: ../lib/advene/gui/plugins/actions.py:181
-msgid "Second position"
+#: ../lib/advene/gui/views/table.py:469
+msgid "begin"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:163
-#: ../lib/advene/gui/plugins/actions.py:187
-msgid "Go to the beginning"
+#: ../lib/advene/gui/views/table.py:469
+msgid "end"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:165
-#: ../lib/advene/gui/plugins/actions.py:189
-msgid "Go to the end"
+#: ../lib/advene/gui/views/table.py:469
+msgid "content"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:176
-msgid "Display a popup with 3 options"
+#: ../lib/advene/gui/views/table.py:473 ../lib/advene/gui/views/table.py:653
+#: ../lib/advene/core/controller.py:2555
+#, python-format
+msgid "Data exported to %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:182
-msgid "Third option description"
+#: ../lib/advene/gui/views/table.py:493
+#, python-format
+msgid "Set %(attr)s time to %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:183
-msgid "Third position"
+#: ../lib/advene/gui/views/table.py:552
+msgid "Generic table view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:202
-msgid "Display a popup to navigate to related annotations"
+#: ../lib/advene/gui/views/table.py:554
+msgid "Display Advene elements in a table."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:204
-#: ../lib/advene/gui/plugins/actions.py:559
-msgid "Choose the related annotation you want to visualise."
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element title"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:211
-msgid "Create a bookmark"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element type"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:212
-msgid "Bookmark position (in ms)"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:213
-msgid "Bookmark content."
+#: ../lib/advene/gui/views/accumulatorpopup.py:49
+msgid "PopupAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:214
-msgid "Bookmark"
+#: ../lib/advene/gui/views/bookmarks.py:51
+msgid "Bookmarks importer"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:276
-#, python-format
-msgid "Error: undefined GUI view %s"
+#: ../lib/advene/gui/views/bookmarks.py:72
+msgid "Bookmarks"
+msgstr ""
+
+#: ../lib/advene/gui/views/bookmarks.py:74
+msgid "Bookmark timecodes with their corresponding screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:286
-#: ../lib/advene/gui/views/viewbook.py:124 ../lib/advene/gui/main.py:1189
-msgid "...in its own window"
+#: ../lib/advene/gui/views/bookmarks.py:80 ../lib/advene/gui/views/tagbag.py:63
+#: ../lib/advene/gui/views/activebookmarks.py:62
+#: ../lib/advene/gui/views/logwindow.py:50 ../lib/advene/gui/edit/montage.py:59
+msgid "Clear"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:287
-#: ../lib/advene/gui/views/viewbook.py:125
-#: ../lib/advene/gui/views/__init__.py:381 ../lib/advene/gui/main.py:1190
-msgid "...embedded east of the video"
+#: ../lib/advene/gui/views/bookmarks.py:145
+msgid "Select the annotation type to generate"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:288
-#: ../lib/advene/gui/views/viewbook.py:126
-#: ../lib/advene/gui/views/__init__.py:382 ../lib/advene/gui/main.py:1191
-msgid "...embedded west of the video"
+#: ../lib/advene/gui/views/bookmarks.py:150
+msgid "Choose a duration"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:289
-#: ../lib/advene/gui/views/viewbook.py:127
-#: ../lib/advene/gui/views/__init__.py:383 ../lib/advene/gui/main.py:1192
-msgid "...embedded south of the video"
+#: ../lib/advene/gui/views/bookmarks.py:151
+msgid "Enter the standard duration (in ms) of created annotations."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:290
-#: ../lib/advene/gui/views/viewbook.py:128
-#: ../lib/advene/gui/views/__init__.py:384 ../lib/advene/gui/main.py:1193
-msgid "...embedded at the right of the window"
+#: ../lib/advene/gui/views/bookmarks.py:168
+msgid "Converted from bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:322
+#: ../lib/advene/gui/views/bookmarks.py:172
+#: ../lib/advene/gui/edit/transcribe.py:1139
 #, python-format
-msgid "Element %s does not look like a view"
+msgid ""
+"Conversion completed.\n"
+"%s annotations generated."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:350
-msgid "Information popup"
+#: ../lib/advene/gui/views/bookmarks.py:226
+msgid "Drop a position here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:364
-#, python-format
-msgid "Empty destination for entry popup: %s"
+#: ../lib/advene/gui/views/bookmarks.py:247
+#: ../lib/advene/gui/views/activebookmarks.py:522
+msgid "Insert a bookmark for the current video time"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:367
-#, python-format
-msgid "Destination does not have a content: %s"
+#: ../lib/advene/gui/views/bookmarks.py:248
+msgid "Convert bookmarks to annotations"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:394
-msgid "Entry popup"
+#: ../lib/advene/gui/views/viewbook.py:37
+msgid "ViewBook"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:419
-msgid "Follow a link"
+#: ../lib/advene/gui/views/viewbook.py:58
+#: ../lib/advene/gui/views/viewbook.py:65
+msgid "Cannot remove this widget, it is essential."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:423
-msgid "Click to open the URL"
+#: ../lib/advene/gui/views/viewbook.py:135
+msgid "Detach"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:441
-msgid "URL popup"
+#: ../lib/advene/gui/views/viewbook.py:139
+#: ../lib/advene/gui/views/editaccumulator.py:79
+msgid "Close"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:454
-#: ../lib/advene/gui/plugins/actions.py:491
-msgid "Make a choice"
+#: ../lib/advene/gui/views/viewbook.py:156
+msgid "Rename the view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:458
-msgid "Click to go to another position"
+#: ../lib/advene/gui/views/viewbook.py:157
+msgid "Please enter the new name of the view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:477
-#: ../lib/advene/gui/plugins/actions.py:515
-#: ../lib/advene/gui/views/singletonpopup.py:98
-msgid "Navigation popup"
+#: ../lib/advene/gui/views/viewbook.py:196
+msgid "Detach view in its own window, or drag-and-drop to another zone"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:500
-#, python-format
-msgid "Choice %d"
+#: ../lib/advene/gui/views/viewbook.py:210
+msgid "Close view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:521
-msgid "The beginning of the annotation"
+#: ../lib/advene/gui/views/viewbook.py:233
+#: ../lib/advene/gui/views/viewbook.py:239
+#: ../lib/advene/gui/edit/elements.py:335
+#, python-format
+msgid "Edit %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:522
-#, fuzzy
-msgid "The end of the annotation"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/views/viewbook.py:262 ../lib/advene/rules/actions.py:615
+#, python-format
+msgid "Cannot find the view %s"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:523
-#, fuzzy
-msgid "The next annotation of the same type"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/views/viewbook.py:285
+#, python-format
+msgid "Open a new %s for..."
+msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:524
+#: ../lib/advene/gui/views/viewbook.py:297
 #, fuzzy
-msgid "The previous annotation of the same type"
+msgid "Create a new comment view"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/plugins/actions.py:573
-#, python-format
-msgid ""
-"Through %(title)s%(relation_content)s:\n"
-"%(annotation_content)s"
+#: ../lib/advene/gui/views/viewbook.py:299
+msgid "Open a new view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:581
-msgid "Relation navigation"
-msgstr ""
+#: ../lib/advene/gui/views/viewbook.py:373
+#, fuzzy, python-format
+msgid "Use annotation-type %s :"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/plugins/actions.py:591
-msgid "New bookmark"
+#: ../lib/advene/gui/views/viewbook.py:377
+#: ../lib/advene/gui/views/viewbook.py:403
+msgid "to edit it"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:43
-#, fuzzy
-msgid "Activity trace"
-msgstr "Aktivieren und Abspielen"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:134
-msgid " Trace : "
+#: ../lib/advene/gui/views/viewbook.py:378
+#: ../lib/advene/gui/views/viewbook.py:404
+#: ../lib/advene/gui/views/viewbook.py:436
+msgid "to create a new static view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:138
+#: ../lib/advene/gui/views/viewbook.py:380
 #, fuzzy
-msgid " Filters"
-msgstr "_Datei"
+msgid "in a timeline"
+msgstr "T_imeline"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4178
-msgid "Reset"
+#: ../lib/advene/gui/views/viewbook.py:381
+msgid "as a montage"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:167
-msgid " Time : "
+#: ../lib/advene/gui/views/viewbook.py:382
+#: ../lib/advene/gui/views/viewbook.py:435
+msgid "in a table"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:177
-msgid " Max. : "
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
+msgid "in a query"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:186
-#, fuzzy
-msgid "Export"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:253
-#, fuzzy
-msgid "Defining Filters"
-msgstr "_Datei"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:559
-#: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:214
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
 #, fuzzy, python-format
-msgid "of an annotation (%s)"
-msgstr "von einem Anmerkungs Typ"
+msgid "Query %s"
+msgstr "Abfragen"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:561
-#: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:216
-#, fuzzy, python-format
-msgid "of a relation (%s)"
-msgstr "Verbindungs Type"
+#: ../lib/advene/gui/views/viewbook.py:384
+#: ../lib/advene/gui/views/viewbook.py:406
+#, fuzzy
+msgid "in the TALES browser"
+msgstr "Bearbeite Packet Eigentschaften"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:563
-#: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:218
-#, fuzzy, python-format
-msgid "of an annotation type (%s)"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/views/viewbook.py:384
+#, python-format
+msgid "Browsing %s"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:565
-#: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:220
+#: ../lib/advene/gui/views/viewbook.py:400
 #, fuzzy, python-format
-msgid "of a relation type (%s)"
+msgid "Use annotation %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: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:224
+#: ../lib/advene/gui/views/viewbook.py:406
 #, python-format
-msgid "of a view (%s)"
+msgid "Browse %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:571
-#: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../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:228
-#, fuzzy, python-format
-msgid "of an unknown item (%s)"
-msgstr "Unbekannte STBV identifier: %s"
-
-#: ../lib/advene/gui/plugins/contenthandlers.py:122
-msgid "Label"
-msgstr ""
+#: ../lib/advene/gui/views/viewbook.py:407
+#, fuzzy
+msgid "to display its contents"
+msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:172
+#: ../lib/advene/gui/views/viewbook.py:407
 #, python-format
-msgid ""
-"Error while parsing SVG content:\n"
-"\n"
-"%s"
+msgid "%s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:247
-msgid " created from "
+#: ../lib/advene/gui/views/viewbook.py:408
+msgid "as a bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:315
-msgid "Graphical editor"
+#: ../lib/advene/gui/views/viewbook.py:426
+msgid "as the context for the query..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:326
+#: ../lib/advene/gui/views/viewbook.py:430
 #, fuzzy
-msgid "Edit XML"
-msgstr "_Bearbeite"
-
-#: ../lib/advene/gui/plugins/contenthandlers.py:378
-#: ../lib/advene/gui/plugins/contenthandlers.py:434
-#: ../lib/advene/gui/edit/rules.py:186
-#, python-format
-msgid ""
-"The following items seem to be\n"
-"invalid TALES expressions:\n"
-"\n"
-"%s"
-msgstr ""
+msgid "Set of annotations"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
+#: ../lib/advene/gui/views/viewbook.py:431
 #, fuzzy
-msgid "Video player"
-msgstr "_Einstellung Spieler"
+msgid "Use annotations:"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:38
-msgid "Complementary video player"
+#: ../lib/advene/gui/views/viewbook.py:434
+msgid "to edit them"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:44
-#: ../lib/advene/gui/edit/montage.py:54
-#: ../lib/advene/gui/edit/transcribe.py:85
-#: ../lib/advene/gui/views/transcription.py:56
-#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:135
-msgid "Save view"
+#: ../lib/advene/gui/views/viewbook.py:437
+msgid "as bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
-#: ../lib/advene/gui/edit/transcribe.py:86
-#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/transcription.py:57
-#: ../lib/advene/gui/views/interactivequery.py:60
-#: ../lib/advene/gui/views/timeline.py:136
-msgid "Save default options"
+#: ../lib/advene/gui/views/transcription.py:49
+msgid "Transcription"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:46
-#, fuzzy
-msgid "Select video file"
-msgstr "Wähle einen video stream"
-
-#: ../lib/advene/gui/plugins/videoplayer.py:127
+#: ../lib/advene/gui/views/transcription.py:51
 #, fuzzy
-msgid "Select a video file"
-msgstr "Wähle einen video stream"
+msgid "Display annotations as a text transcription"
+msgstr "Zeige die Anmerkung als Transkription"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:250
-msgid "Synchronize"
+#: ../lib/advene/gui/views/transcription.py:164
+msgid "Transcription options"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:266
-msgid "Offset in ms"
+#: ../lib/advene/gui/views/transcription.py:165
+msgid "Default representation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:274
-#, fuzzy
-msgid "Drag and drop to get player time"
-msgstr "Kommentar Typ"
-
-#: ../lib/advene/gui/plugins/tracepreview.py:61
-#, fuzzy
-msgid "Trace preview"
-msgstr "_Baumdarstellung"
-
-#: ../lib/advene/gui/plugins/tracepreview.py:99
-#, fuzzy
-msgid "Full trace"
-msgstr "Sichere _ImageCache"
+#: ../lib/advene/gui/views/transcription.py:165
+msgid "Use the default representation for annotations"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/tracepreview.py:100
-msgid "Open the trace timeline view fareast"
+#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/edit/elements.py:986
+msgid "Representation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:376
-#, python-format
-msgid "Rendering type %(type)s as %(presentation)s"
+#: ../lib/advene/gui/views/transcription.py:166
+msgid ""
+"If default representation is unchecked,\n"
+"this TALES expression that will be used to format the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:521
-msgid "Snapshot only"
+#: ../lib/advene/gui/views/transcription.py:167
+msgid "Separator"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:522
-msgid "Overlayed snapshot only"
+#: ../lib/advene/gui/views/transcription.py:168
+msgid "This separator will be inserted between the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:523
-msgid "Timestamp only"
+#: ../lib/advene/gui/views/transcription.py:169
+msgid "Whitespace"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:524
-msgid "Snapshot+timestamp"
+#: ../lib/advene/gui/views/transcription.py:170
+msgid "Newline"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
-#, fuzzy
-msgid "Annotation content"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:540
-msgid "as a list"
+#: ../lib/advene/gui/views/transcription.py:171
+msgid "Tabulation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:541
-msgid "as a grid"
+#: ../lib/advene/gui/views/transcription.py:172
+msgid "Dash"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:542
-msgid "as a table"
+#: ../lib/advene/gui/views/transcription.py:173
+msgid "User defined"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:543
-#: ../lib/advene/gui/views/viewbook.py:380
-#, fuzzy
-msgid "as a transcription"
-msgstr "T_ranskription"
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:661
-#: ../lib/advene/gui/views/transcription.py:461
-#, python-format
-msgid "Annotation %s"
+#: ../lib/advene/gui/views/transcription.py:175
+msgid "User-defined separator"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:681
-msgid "Play video"
+#: ../lib/advene/gui/views/transcription.py:175
+msgid ""
+"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
+"a tabulation."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
-msgid "Show timestamp only"
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Display timestamps"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
-msgid "Show content only"
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Insert timestsamp values"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
-msgid "Show snapshot only"
+#: ../lib/advene/gui/views/transcription.py:177
+msgid "Display annotation bounds"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
-msgid "Show overlayed timestamp"
+#: ../lib/advene/gui/views/transcription.py:237
+#, python-format
+msgid ""
+"Cannot convert the following annotations,\n"
+"the representation pattern is too complex.\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
-msgid "Show overlayed content"
+#: ../lib/advene/gui/views/transcription.py:248
+msgid ""
+"Cannot validate the update.\n"
+"The representation pattern is too complex."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:670
-#, fuzzy, python-format
-msgid "Annotation type %s"
-msgstr "Kommentar Typ"
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
-#, fuzzy
-msgid "display as list"
-msgstr "Zeige Packet inhalt als Baumdarstellung"
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/views/transcription.py:274
 #, fuzzy
-msgid "display as grid"
-msgstr "Zeige Packet inhalt als Baumdarstellung"
+msgid "Save transcription to a text file"
+msgstr "Zeige die Transkription für eine Anmerkung"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:673
-#, fuzzy
-msgid "display as table"
-msgstr "Zeige Kommentare an einer Timeline"
+#: ../lib/advene/gui/views/transcription.py:275
+msgid "Apply the modifications"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
-#, fuzzy
-msgid "display as transcription"
-msgstr "T_ranskription"
+#: ../lib/advene/gui/views/transcription.py:276
+msgid "Find text"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:683
-msgid "Open link"
+#: ../lib/advene/gui/views/transcription.py:277
+msgid "Quickly switch display options"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:739
-#, fuzzy, python-format
-msgid "HTML editor: cannot parse content (%s)"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/views/transcription.py:278
+#, fuzzy
+msgid "Refresh the transcription"
+msgstr "T_ranskription"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
-#, fuzzy, python-format
-msgid "Heading %d"
-msgstr "Datei _importieren"
+#: ../lib/advene/gui/views/transcription.py:279
+#, fuzzy
+msgid "Edit preferences"
+msgstr "E_instellungen"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:783
-msgid "Bold"
+#: ../lib/advene/gui/views/transcription.py:697
+#, python-format
+msgid "Cannot write to %(filename)s: %(error)s:"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:784
-msgid "Italic"
+#: ../lib/advene/gui/views/transcription.py:703
+#: ../lib/advene/gui/edit/transcribe.py:882
+#, python-format
+msgid "Transcription saved to %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
-msgid "Header"
+#: ../lib/advene/gui/views/browser.py:164
+#: ../lib/advene/gui/views/browser.py:166
+msgid "TALES browser"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
-msgid "Copy"
+#: ../lib/advene/gui/views/browser.py:171
+msgid "Display result in table"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:788
-msgid "Cut"
+#: ../lib/advene/gui/views/browser.py:194
+msgid "Insert path"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
-msgid "Paste"
+#: ../lib/advene/gui/views/browser.py:195
+msgid "Insert value"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
-#: ../lib/advene/gui/edit/schemaeditor.py:64
-#: ../lib/advene/gui/views/timeline.py:134 ../lib/advene/gui/views/tree.py:428
-msgid "Refresh"
+#: ../lib/advene/gui/views/browser.py:250
+msgid "Expression returned None (there was an exception)"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:847
-msgid "WYSIWYG editor"
+#: ../lib/advene/gui/views/browser.py:303
+msgid "Result is not a list"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:857
-msgid "Edit HTML source"
+#: ../lib/advene/gui/views/browser.py:360
+#: ../lib/advene/gui/edit/shapewidget.py:942
+msgid "Path"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/logmessages.py:35
-#, fuzzy
-msgid "Log Messages"
-msgstr "Kein Pakte"
-
-#: ../lib/advene/gui/edit/dvdselect.py:73
-#: ../lib/advene/gui/edit/importer.py:143
-msgid "Stop"
+#: ../lib/advene/gui/views/browser.py:367
+#: ../lib/advene/gui/edit/elements.py:2173
+msgid "Value"
 msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:82
-#: ../lib/advene/gui/edit/dvdselect.py:112
-msgid "Preview"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:128
+msgid "Display annotations on a timeline"
+msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/gui/edit/dvdselect.py:91
-msgid ""
-"Select the correct\n"
-"title and chapter\n"
-"of the DVD"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:142
+#, fuzzy
+msgid "Limit display to current area"
+msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/gui/edit/dvdselect.py:104
-msgid "Chapter"
+#: ../lib/advene/gui/views/timeline.py:143
+#: ../lib/advene/gui/views/timeline.py:3276
+msgid "Display whole movie"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:33
-msgid "Create element"
+#: ../lib/advene/gui/views/timeline.py:173
+#, python-format
+msgid "Cannot find annotation type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:34
-msgid "Create annotation (duplicate id)"
+#: ../lib/advene/gui/views/timeline.py:222
+msgid "No scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:35
-msgid "Create relation (duplicate id)"
+#: ../lib/advene/gui/views/timeline.py:223
+msgid "Continuous scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:36
-msgid "Update the color"
+#: ../lib/advene/gui/views/timeline.py:224
+msgid "Discrete scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:37
-msgid "Update the representation"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:225
+#, fuzzy
+msgid "Annotation scrolling"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/edit/merge.py:38
-msgid "Update the description"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:501
+#, fuzzy, python-format
+msgid "%d annotations"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/merge.py:39
-msgid "Update the title"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:504
+#, fuzzy
+msgid "Display all types"
+msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/edit/merge.py:40
-msgid "Update the mimetype"
+#: ../lib/advene/gui/views/timeline.py:506
+#, python-format
+msgid ""
+"There are %d annotations.\n"
+"The current timeline may take a long time to display them, so only the first "
+"two annotation types are displayed. Use the annotation type selector (second "
+"button in the timeline) to select other annotations types to display, or "
+"click on the 'Display all types' button below."
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:41
-msgid "Update the begin time"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:979
+#, fuzzy
+msgid "Split at current player position"
+msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/gui/edit/merge.py:42
-msgid "Update the end time"
+#: ../lib/advene/gui/views/timeline.py:983
+msgid "Center and zoom"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:43
-msgid "Update the content"
+#: ../lib/advene/gui/views/timeline.py:1087
+msgid "Create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:44
-msgid "Update the matchFilter"
+#: ../lib/advene/gui/views/timeline.py:1097
+msgid "Create a new relation-type."
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:45
-msgid "Update the member types"
+#: ../lib/advene/gui/views/timeline.py:1123
+msgid "Merge with this annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:46
-msgid "Update tags"
+#: ../lib/advene/gui/views/timeline.py:1132
+msgid "Align both begin times"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:90
-msgid "Difference between original and merged elements"
+#: ../lib/advene/gui/views/timeline.py:1133
+msgid "Align both end times"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:136
-msgid "Current element"
+#: ../lib/advene/gui/views/timeline.py:1134
+msgid "Align end time to selected begin time"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:141
-msgid "Updated element"
+#: ../lib/advene/gui/views/timeline.py:1135
+msgid "Align begin time to selected end time"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:147
-msgid "Show diff"
+#: ../lib/advene/gui/views/timeline.py:1136
+msgid "Align all times"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:180
-msgid "Merge?"
+#: ../lib/advene/gui/views/timeline.py:1174
+msgid "Cannot delete the annotation : it has relations."
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:197
-msgid "Element"
+#: ../lib/advene/gui/views/timeline.py:1249
+msgid "Select the appropriate relation type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
+#: ../lib/advene/gui/views/timeline.py:1268
 #, python-format
-msgid "Package %s"
+msgid "Duplicate selection to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
-msgid "No title"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:1271
+#, fuzzy, python-format
+msgid "Move selection to type %s"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/merge.py:267
-msgid "All"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:1280
+#, fuzzy, python-format
+msgid "Duplicate annotation to type %s"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1588
-msgid "Properties"
+#: ../lib/advene/gui/views/timeline.py:1284
+#, fuzzy, python-format
+msgid "Move annotation to type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/views/timeline.py:1291
+#, python-format
+msgid "Duplicate to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/properties.py:46
-#: ../lib/advene/gui/edit/transcribe.py:147
-#: ../lib/advene/gui/edit/transcribe.py:1195
-#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3483
-#: ../lib/advene/gui/views/timeline.py:3624 ../lib/advene/gui/main.py:4235
-msgid "Preferences"
+#: ../lib/advene/gui/views/timeline.py:1297
+#, python-format
+msgid "Move to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/properties.py:371
-msgid "Choose a file"
+#: ../lib/advene/gui/views/timeline.py:1307
+msgid "Duplicate and create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:45
-msgid "Importer"
+#: ../lib/advene/gui/views/timeline.py:1318
+#, python-format
+msgid "Duplicate at %s and create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:101
-#: ../lib/advene/gui/edit/importer.py:111
+#: ../lib/advene/gui/views/timeline.py:1349
 #, fuzzy
-msgid "Advene package importer"
-msgstr "Bearbeite Packet Eigentschaften"
+msgid "Annotation filter"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/edit/importer.py:115
-msgid "Not likely"
+#: ../lib/advene/gui/views/timeline.py:1350
+msgid "Enter the searched string"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:137
+#: ../lib/advene/gui/views/timeline.py:1458
+#, fuzzy, python-format
+msgid "Duplicate all annotations to type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/views/timeline.py:1460
+#, fuzzy, python-format
+msgid "Move all annotations to type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/views/timeline.py:1462
 #, python-format
-msgid "Completed conversion: %(statistics)s"
+msgid "Duplicate all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Choose the file to import"
+#: ../lib/advene/gui/views/timeline.py:1464
+#, python-format
+msgid "Move all annotations matching a string to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:272
-#, fuzzy
-msgid "Filter"
-msgstr "_Datei"
-
-#: ../lib/advene/gui/edit/importer.py:276
-msgid "Options"
+#: ../lib/advene/gui/views/timeline.py:1466
+#, python-format
+msgid "Align all annotation time codes using %s as reference."
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:287
-msgid "Start"
+#: ../lib/advene/gui/views/timeline.py:1468
+#, python-format
+msgid "Align all annotation contents using %s as reference"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:57
-#, fuzzy
-msgid "Schema Editor"
-msgstr "Schema"
-
-#: ../lib/advene/gui/edit/schemaeditor.py:132
-#, fuzzy
-msgid "Display"
-msgstr "Verbindungs Type"
-
-#: ../lib/advene/gui/edit/schemaeditor.py:155
-#: ../lib/advene/gui/edit/shapewidget.py:1587 ../lib/advene/gui/popup.py:472
-#: ../lib/advene/gui/popup.py:476
-msgid "Delete"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:1960
+#: ../lib/advene/gui/views/timeline.py:1989
+#, fuzzy, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Zeige die Transkription für eine Anmerkung"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:762
+#: ../lib/advene/gui/views/timeline.py:1971
 #, fuzzy
-msgid "Remove relation type"
+msgid "Displaying done."
 msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:765
-#: ../lib/advene/gui/edit/schemaeditor.py:997
-msgid "Create HTML view"
+#: ../lib/advene/gui/views/timeline.py:2463
+msgid "Create a new annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:831
-#, fuzzy
-msgid "Remove annotation type"
-msgstr "Kommentar Typ"
-
-#: ../lib/advene/gui/edit/schemaeditor.py:834
-msgid "Create relation type between this one and..."
+#: ../lib/advene/gui/views/timeline.py:2464
+msgid "Zoom on region"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:969
+#: ../lib/advene/gui/views/timeline.py:2465
 #, fuzzy
-msgid "New schema"
-msgstr "Schema"
+msgid "Restrict display to region"
+msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:985 ../lib/advene/gui/popup.py:690
-#: ../lib/advene/gui/popup.py:750 ../lib/advene/gui/popup.py:803
-msgid "Select a color"
+#: ../lib/advene/gui/views/timeline.py:2578
+#: ../lib/advene/gui/edit/transcribe.py:494
+#, python-format
+msgid "Position %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:988
+#: ../lib/advene/gui/views/timeline.py:2588
 #, fuzzy
-msgid "New annotation type"
+msgid "New annotation at player time"
 msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:991
+#: ../lib/advene/gui/views/timeline.py:2592
 #, fuzzy
-msgid "New relation type"
-msgstr "Verbindungs Type"
-
-#: ../lib/advene/gui/edit/schemaeditor.py:994
-msgid "Hide this schema"
-msgstr ""
+msgid "New annotation at mouse position"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1000
-msgid "Export drawing to pdf"
+#: ../lib/advene/gui/views/timeline.py:2596
+msgid "Selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1042
-msgid "Choose a filename to export the schema as PDF"
+#: ../lib/advene/gui/views/timeline.py:2718
+msgid "Cannot zoom more"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:84 ../lib/advene/gui/edit/rules.py:86
-#: ../lib/advene/gui/edit/create.py:252
-msgid "Rule"
+#: ../lib/advene/gui/views/timeline.py:2933
+#, python-format
+msgid "From schema %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:95 ../lib/advene/gui/edit/create.py:242
-msgid "Subviews"
+#: ../lib/advene/gui/views/timeline.py:2996
+msgid "Restrict playing to this annotation-type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:122
-msgid "Add a new rule"
+#: ../lib/advene/gui/views/timeline.py:3003
+msgid "Goto previous annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:126
-msgid "Subview"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3014
+#, fuzzy
+msgid "Goto next annotation"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/rules.py:129
-msgid "Add a subview list"
+#: ../lib/advene/gui/views/timeline.py:3025
+msgid "+"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:135
+#: ../lib/advene/gui/views/timeline.py:3084
 #, fuzzy
-msgid "Remove the current rule"
-msgstr "Aktuelle Sitzung speichern"
-
-#: ../lib/advene/gui/edit/rules.py:275
-msgid "Source expression"
-msgstr ""
+msgid "Open an annotation display view"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/rules.py:277
-msgid "Return expression"
+#: ../lib/advene/gui/views/timeline.py:3091
+msgid "Open a slave montage view (coordinated zoom level)"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:351
-msgid "For all elements in "
+#: ../lib/advene/gui/views/timeline.py:3126
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:352
-msgid "All annotations of the package"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3133
+#, fuzzy
+msgid "No selected annotation"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/rules.py:353
-msgid "All views of the package"
+#: ../lib/advene/gui/views/timeline.py:3137
+#, python-format
+msgid "%d selected annotation(s)"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:354 ../lib/advene/gui/edit/rules.py:798
-msgid "The context annotations"
+#: ../lib/advene/gui/views/timeline.py:3144
+msgid "Unselect all annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:355 ../lib/advene/gui/edit/rules.py:799
-msgid "The annotations of the context type"
+#: ../lib/advene/gui/views/timeline.py:3145
+msgid "Create a static view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:370
-msgid "Return "
+#: ../lib/advene/gui/views/timeline.py:3146
+msgid "Highlight selection in other views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:372 ../lib/advene/gui/edit/rules.py:787
-msgid "The element"
+#: ../lib/advene/gui/views/timeline.py:3147
+#: ../lib/advene/gui/views/timeline.py:3736
+msgid "Tag selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:373 ../lib/advene/gui/edit/rules.py:788
-msgid "The element's content"
+#: ../lib/advene/gui/views/timeline.py:3148
+msgid "Delete selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:388
-msgid "If the element matches "
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3149
+#, fuzzy
+msgid "Display selection in a table"
+msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/gui/edit/rules.py:390
-msgid "Return the element if it matches "
+#: ../lib/advene/gui/views/timeline.py:3150
+msgid "Center and zoom on selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:408 ../lib/advene/gui/edit/rules.py:617
-msgid "All conditions must be met"
+#: ../lib/advene/gui/views/timeline.py:3151
+msgid "Edit selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:409 ../lib/advene/gui/edit/rules.py:618
-msgid "Any condition can be met"
+#: ../lib/advene/gui/views/timeline.py:3152
+msgid "Merge annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:493 ../lib/advene/gui/edit/rules.py:563
-#, python-format
-msgid "Rule <b>%s</b>"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3153
+#, fuzzy
+msgid "Display statistics"
+msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/gui/edit/rules.py:574
-msgid "Rule name"
+#: ../lib/advene/gui/views/timeline.py:3269
+msgid "Goto previous page"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:591
-msgid "Event"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3281
+#, fuzzy
+msgid "Goto next page"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/rules.py:599
-msgid "If"
+#: ../lib/advene/gui/views/timeline.py:3337
+msgid "Inspector locked. Click here or in the timeline background to unlock."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:638
-msgid "Then"
+#: ../lib/advene/gui/views/timeline.py:3365
+msgid ""
+"Delete the selected annotations or drop an annotation here to delete it."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:683
-msgid "When the "
+#: ../lib/advene/gui/views/timeline.py:3387
+msgid ""
+"Drag an annotation type here to remove it from display.\n"
+"Click to edit all displayed types"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:696
-msgid " occurs,"
+#: ../lib/advene/gui/views/timeline.py:3399
+msgid "Selection actions"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:723 ../lib/advene/gui/edit/rules.py:726
-#, python-format
-msgid "Condition expression: %s"
+#: ../lib/advene/gui/views/timeline.py:3414
+msgid "Display relations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:765
+#: ../lib/advene/gui/views/timeline.py:3420
 #, fuzzy
-msgid "The annotation type"
-msgstr "Kommentar Typ"
-
-#: ../lib/advene/gui/edit/rules.py:768
-#, fuzzy, python-format
-msgid "The value of the %s attribute"
-msgstr "von einem Anmerkungs Typ"
+msgid "Display all relations"
+msgstr "Zeige Packet inhalt als Baumdarstellung"
 
-#: ../lib/advene/gui/edit/rules.py:770
-msgid "The annotation fragment"
+#: ../lib/advene/gui/views/timeline.py:3497
+msgid "Center on current player position."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:771
-msgid "The annotation begin time"
+#: ../lib/advene/gui/views/timeline.py:3513
+msgid "Automatically activate loop when clicking on an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:772
-msgid "The annotation end time"
+#: ../lib/advene/gui/views/timeline.py:3537
+msgid "Displayed"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:774
-#, fuzzy
-msgid "The annotation MIME-type"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/edit/rules.py:775
-msgid "The annotation's incoming relations"
+#: ../lib/advene/gui/views/timeline.py:3545
+msgid "Not displayed"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:776
-msgid "The annotation's outgoing relations"
+#: ../lib/advene/gui/views/timeline.py:3594
+msgid "< All <"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:779
-#, python-format
-msgid "The %s-related incoming annotations"
+#: ../lib/advene/gui/views/timeline.py:3598
+msgid "> All >"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:783
-#, python-format
-msgid "The %s-related outgoing annotations"
+#: ../lib/advene/gui/views/timeline.py:3622
+msgid "Displayed annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:789
-msgid "The element fragment"
+#: ../lib/advene/gui/views/timeline.py:3648
+msgid "Relation type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:790
-msgid "The element begin time"
+#: ../lib/advene/gui/views/timeline.py:3648
+msgid "Display relation types"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:791
-msgid "The element end time"
+#: ../lib/advene/gui/views/timeline.py:3649
+msgid "Relation content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:792
-msgid "The element duration"
+#: ../lib/advene/gui/views/timeline.py:3649
+msgid "Display relation content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:793
-#, fuzzy
-msgid "The element type"
-msgstr "Wähle einen DVD"
-
-#: ../lib/advene/gui/edit/rules.py:794
-msgid "The element's incoming relations"
+#: ../lib/advene/gui/views/timeline.py:3650 ../lib/advene/gui/popup.py:516
+msgid "Highlight"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:795
-msgid "The element's outgoing relations"
+#: ../lib/advene/gui/views/timeline.py:3650
+msgid "Highlight active annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:796
-msgid "The context"
+#: ../lib/advene/gui/views/timeline.py:3737
+msgid "Enter the tag for the selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:797
-msgid "The context fragment"
+#: ../lib/advene/gui/views/timeline.py:3743
+#: ../lib/advene/gui/views/tagbag.py:165
+msgid "The tag contains invalid characters"
 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"
+#: ../lib/advene/gui/views/relation.py:71
+msgid "Relations view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:878
-#, python-format
-msgid "Parameter %s"
+#: ../lib/advene/gui/views/editionhistory.py:40
+msgid "Edition History"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:992
-msgid "Select an action"
+#: ../lib/advene/gui/views/editionhistory.py:42
+msgid "Access last edited/created elements"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:1083
+#: ../lib/advene/gui/views/editionhistory.py:102
 #, fuzzy
-msgid "Activate?"
-msgstr "Aktivieren und Abspielen"
-
-#: ../lib/advene/gui/edit/shapewidget.py:83
-msgid "Generic shape"
-msgstr ""
-
-#: ../lib/advene/gui/edit/shapewidget.py:234
-#: ../lib/advene/gui/edit/shapewidget.py:741
-#, python-format
-msgid "Link to %s"
-msgstr ""
-
-#: ../lib/advene/gui/edit/shapewidget.py:321
-#: ../lib/advene/gui/views/tagbag.py:132
-msgid "Name"
-msgstr ""
-
-#: ../lib/advene/gui/edit/shapewidget.py:326
-#: ../lib/advene/gui/edit/shapewidget.py:1299
-msgid "Link"
-msgstr ""
+msgid "Created"
+msgstr "Erstelle"
 
-#: ../lib/advene/gui/edit/shapewidget.py:331
-msgid "Link label"
-msgstr ""
+#: ../lib/advene/gui/views/editionhistory.py:103
+#, fuzzy
+msgid "Edited"
+msgstr "_Bearbeite"
 
-#: ../lib/advene/gui/edit/shapewidget.py:349
-msgid "Linewidth"
+#: ../lib/advene/gui/views/tagbag.py:55
+msgid "Tag Bag"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:354
-msgid "Filled"
+#: ../lib/advene/gui/views/tagbag.py:62
+msgid "New tag"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:362
-msgid "Opacity"
+#: ../lib/advene/gui/views/tagbag.py:125
+msgid "New tag name"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:404
-#, python-format
-msgid "Properties of %s"
+#: ../lib/advene/gui/views/tagbag.py:131
+msgid "Enter a new tag name and select its color."
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:451
-msgid "Rectangle"
+#: ../lib/advene/gui/views/tagbag.py:135
+#: ../lib/advene/gui/edit/shapewidget.py:341
+msgid "Name"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:532
-#: ../lib/advene/gui/edit/shapewidget.py:652
-msgid "Text"
+#: ../lib/advene/gui/views/tagbag.py:141
+#: ../lib/advene/gui/edit/shapewidget.py:362
+#: ../lib/advene/gui/edit/elements.py:895
+#: ../lib/advene/gui/edit/elements.py:975
+#: ../lib/advene/gui/edit/elements.py:1089 ../lib/advene/rules/actions.py:133
+msgid "Color"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:663
-msgid "Textsize"
+#: ../lib/advene/gui/views/tagbag.py:178
+msgid "Tag bag options"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:677
-msgid "Image"
+#: ../lib/advene/gui/views/tagbag.py:179
+msgid "Update with new tags"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:761
-msgid "Href"
+#: ../lib/advene/gui/views/tagbag.py:179
+msgid "Automatically display new defined tags"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:771
-msgid "Line"
+#: ../lib/advene/gui/views/tagbag.py:228
+#, python-format
+msgid "Choose the color for tag %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:872
-msgid "Draw an arrow"
+#: ../lib/advene/gui/views/tagbag.py:252
+msgid "Set color"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:883
-msgid "Arrow size"
+#: ../lib/advene/gui/views/tagbag.py:253
+msgid "Remove"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:935
-#: ../lib/advene/gui/views/browser.py:359
-msgid "Path"
+#: ../lib/advene/gui/views/tagbag.py:326
+msgid "Drop a tag here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1102
-#, fuzzy
-msgid "Close path"
-msgstr "Kein Pakte"
-
-#: ../lib/advene/gui/edit/shapewidget.py:1181
-msgid "Circle"
+#: ../lib/advene/gui/views/tagbag.py:336
+msgid "Save as adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1239
-msgid "Ellipse"
+#: ../lib/advene/gui/views/tagbag.py:337
+msgid "Add a new tag"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1589
-msgid "SVG"
+#: ../lib/advene/gui/views/tagbag.py:338
+msgid "Display all defined tags"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:2172
-msgid "Load SVG"
+#: ../lib/advene/gui/views/__init__.py:194
+msgid "Invalid view id"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:2178
-msgid "Save SVG"
+#: ../lib/advene/gui/views/__init__.py:240
+#, python-format
+msgid "Cannot save default options: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:74
-#: ../lib/advene/gui/widget.py:1063
-#, fuzzy
-msgid "Refresh snapshot"
-msgstr "Zeige Shortcuts"
-
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/views/__init__.py:251
 #, python-format
-msgid "Decrement value by %.2f s"
+msgid "Default options saved for view %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:104
+#: ../lib/advene/gui/views/__init__.py:283
 #, python-format
-msgid "Increment value by %.2f s"
+msgid "Saving %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:130
-msgid ""
-"Click to play\n"
-"Control+click to set to current time\n"
-"Scroll to modify value (with control/shift)\n"
-"Right-click to invalidate screenshot"
+#: ../lib/advene/gui/views/__init__.py:286
+msgid "Enter a view name to save this parametered view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:145
-msgid ""
-"Enter a timecode.\n"
-"An integer value will be considered as milliseconds.\n"
-"A float value (12.2) will be considered as seconds.\n"
-"HH:MM:SS.sss values are possible."
+#: ../lib/advene/gui/views/__init__.py:304
+#, python-format
+msgid "Error: the view %s is not an adhoc view."
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:159
-msgid "Set to current player position"
+#: ../lib/advene/gui/views/__init__.py:329
+msgid "HTML export"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:81
-#, python-format
-msgid "%s creation"
+#: ../lib/advene/gui/views/__init__.py:330
+msgid "Specify a name for the export view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:82
+#: ../lib/advene/gui/views/__init__.py:349
 #, python-format
 msgid ""
-"To create a new element of type %s,\n"
-"you must give the following information."
-msgstr ""
-
-#: ../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:659
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:251
-#: ../lib/advene/gui/views/table.py:558
-msgid "Type"
+"View successfully exported as %s.\n"
+"Open it in the web browser ?"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:111
-msgid "Dynamic view"
+#: ../lib/advene/gui/views/__init__.py:428
+msgid "Actions"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:112
-msgid "HTML template"
+#: ../lib/advene/gui/views/__init__.py:453
+msgid "Click or drag-and-drop to reattach view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:113
-msgid "Plain XML"
+#: ../lib/advene/gui/views/finder.py:105 ../lib/advene/util/helper.py:402
+msgid "Package"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:114
-msgid "SVG template"
+#: ../lib/advene/gui/views/finder.py:106
+msgid "List of views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:115
-msgid "Plain text template"
+#: ../lib/advene/gui/views/finder.py:107
+msgid "Static views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:118
-msgid "Simple query"
+#: ../lib/advene/gui/views/finder.py:108
+msgid "Dynamic views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:120
-msgid "Directory"
+#: ../lib/advene/gui/views/finder.py:109
+msgid "Admin views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:128
-msgid "No available type."
+#: ../lib/advene/gui/views/finder.py:110
+msgid "Adhoc views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:172
+#: ../lib/advene/gui/views/finder.py:515
 #, python-format
 msgid ""
-"The identifier %s is not valid.\n"
-"It must be composed of non-accentuated alphabetic characters\n"
-"Underscore is allowed."
-msgstr ""
-
-#: ../lib/advene/gui/edit/create.py:177
-#, python-format
-msgid "The identifier %s is already defined."
+"View <b>%(title)s</b>\n"
+"Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:310
-msgid "New resource data"
+#: ../lib/advene/gui/views/finder.py:522
+msgid "Open in webbrowser"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
-msgid "Schemas"
+#: ../lib/advene/gui/views/finder.py:523
+#, python-format
+msgid "View applied to %s\n"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
-#: ../lib/advene/gui/views/interactivequery.py:464
-msgid "Annotations"
+#: ../lib/advene/gui/views/finder.py:528 ../lib/advene/gui/popup.py:496
+msgid "Activate"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
-#: ../lib/advene/gui/edit/elements.py:517
-msgid "Relations"
+#: ../lib/advene/gui/views/finder.py:531
+msgid "Open in GUI"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
-msgid "Queries"
+#: ../lib/advene/gui/views/finder.py:533
+msgid "Unknown type of view??"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:320
-msgid "Imported?"
+#: ../lib/advene/gui/views/finder.py:558
+msgid "Edit view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:337
-#: ../lib/advene/gui/edit/elements.py:509
-#: ../lib/advene/gui/edit/elements.py:558
-#: ../lib/advene/gui/edit/elements.py:645
-#: ../lib/advene/gui/edit/elements.py:725
-#: ../lib/advene/gui/edit/elements.py:782
-#: ../lib/advene/gui/edit/elements.py:874
-#: ../lib/advene/gui/edit/elements.py:943
-#: ../lib/advene/gui/edit/elements.py:1055
-#: ../lib/advene/gui/edit/elements.py:1117
-msgid "URI"
+#: ../lib/advene/gui/views/finder.py:567
+msgid "Open view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:359
-msgid "Choose the package to import, and its alias"
+#: ../lib/advene/gui/views/finder.py:607 ../lib/advene/gui/views/finder.py:673
+#, python-format
+msgid ""
+"%(type)s <b>%(title)s</b>\n"
+"Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:47
-msgid "Montage"
+#: ../lib/advene/gui/views/finder.py:622
+#: ../lib/advene/gui/views/interactivequery.py:400
+msgid "Edit query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:49
-msgid "Dynamic montage of annotations"
+#: ../lib/advene/gui/views/finder.py:630
+msgid "Try to apply the query on..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:55
-#: ../lib/advene/gui/views/logwindow.py:50
-#: ../lib/advene/gui/views/tagbag.py:60
-#: ../lib/advene/gui/views/activebookmarks.py:59
-#: ../lib/advene/gui/views/bookmarks.py:77
-msgid "Clear"
-msgstr ""
+#: ../lib/advene/gui/views/finder.py:650 ../lib/advene/gui/popup.py:829
+#, fuzzy
+msgid "the package"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/edit/montage.py:56
-#: ../lib/advene/gui/views/transcription.py:472
-#: ../lib/advene/gui/widget.py:1059
-msgid "Play"
-msgstr ""
+#: ../lib/advene/gui/views/finder.py:651 ../lib/advene/gui/popup.py:830
+#, fuzzy
+msgid "all annotations of the package"
+msgstr "Transkription für das gesamte Packet"
 
-#: ../lib/advene/gui/edit/montage.py:57
-msgid "Render"
-msgstr ""
+#: ../lib/advene/gui/views/finder.py:652 ../lib/advene/gui/popup.py:831
+#, fuzzy
+msgid "the first annotation of the package"
+msgstr "Transkription für das gesamte Packet"
 
-#: ../lib/advene/gui/edit/montage.py:171
-msgid "Remove from montage"
+#: ../lib/advene/gui/views/finder.py:697
+msgid "Edit resource"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:303 ../lib/advene/gui/popup.py:444
-#, fuzzy, python-format
-msgid "Extracting %s"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/gui/edit/montage.py:304
+#: ../lib/advene/gui/views/finder.py:732 ../lib/advene/util/helper.py:565
 #, python-format
 msgid ""
-"Exporting montage %(title)s\n"
-"to %%(filename)s"
+"Package %(title)s:\n"
+"%(schema)s\n"
+"%(annotation)s in %(annotation_type)s\n"
+"%(relation)s in %(relation_type)s\n"
+"%(query)s\n"
+"%(view)s\n"
+"\n"
+"Description:\n"
+"%(description)s\n"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:396
-msgid "Drop an annotation here to remove it from the list"
+#: ../lib/advene/gui/views/finder.py:753
+#, python-format
+msgid "%(type)s %(title)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:407
-msgid "Play the montage"
+#: ../lib/advene/gui/views/finder.py:756 ../lib/advene/gui/edit/elements.py:517
+#: ../lib/advene/gui/edit/elements.py:566
+#: ../lib/advene/gui/edit/elements.py:653
+#: ../lib/advene/gui/edit/elements.py:733
+#: ../lib/advene/gui/edit/elements.py:791
+#: ../lib/advene/gui/edit/elements.py:882
+#: ../lib/advene/gui/edit/elements.py:952
+#: ../lib/advene/gui/edit/elements.py:1064
+msgid "Metadata"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:412
-#, fuzzy
-msgid "Save the view in the package"
-msgstr "Kein Pakte"
-
-#: ../lib/advene/gui/edit/montage.py:460
-msgid "Set zoom level"
+#: ../lib/advene/gui/views/finder.py:773
+msgid "Column-based package finder"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:465
-msgid "Set 100% zoom"
+#: ../lib/advene/gui/views/editaccumulator.py:45
+msgid "EditAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:471
-#: ../lib/advene/gui/views/interactivequery.py:439
-msgid "Unhighlight annotations"
+#: ../lib/advene/gui/views/activebookmarks.py:55
+#: ../lib/advene/gui/views/activebookmarks.py:57
+msgid "ActiveBookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:475 ../lib/advene/gui/edit/montage.py:484
-#: ../lib/advene/gui/views/interactivequery.py:443
-#: ../lib/advene/gui/views/interactivequery.py:480
-msgid "Highlight annotations"
+#: ../lib/advene/gui/views/activebookmarks.py:63
+#: ../lib/advene/gui/edit/transcribe.py:88
+msgid "Export as static view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:545
-msgid "Total duration:"
+#: ../lib/advene/gui/views/activebookmarks.py:443
+msgid "Chronological order"
 msgstr ""
 
-#: ../lib/advene/gui/edit/frameselector.py:43
-msgid "Click on a frame to select its time."
+#: ../lib/advene/gui/views/activebookmarks.py:444
+msgid "Completeness and chronological order"
 msgstr ""
 
-#: ../lib/advene/gui/edit/frameselector.py:177
-msgid "Select the appropriate snapshot"
+#: ../lib/advene/gui/views/activebookmarks.py:460
+msgid "Bookmark duration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/frameselector.py:230
-#: ../lib/advene/gui/edit/frameselector.py:283
-msgid "Click to see more frames or scroll with the mouse wheel"
+#: ../lib/advene/gui/views/activebookmarks.py:461
+msgid "Enter the duration (in ms) to convert bookmarks into annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:67
-msgid "Transcription importer"
+#: ../lib/advene/gui/views/activebookmarks.py:483
+msgid "User-specified duration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:78
-msgid "Note taking"
+#: ../lib/advene/gui/views/activebookmarks.py:484
+msgid "2s duration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:80
-msgid "Take notes on the fly as a timestamped transcription"
-msgstr "Schreibe Noitzen on the fly als transkription mit zeitangabe"
-
-#: ../lib/advene/gui/edit/transcribe.py:87
-#: ../lib/advene/gui/views/activebookmarks.py:60
-msgid "Export as static view"
+#: ../lib/advene/gui/views/activebookmarks.py:485
+msgid "Complete coverage"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Timestamp"
+#: ../lib/advene/gui/views/activebookmarks.py:503
+msgid "Drop a bookmark here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Click inserts timestamp marks"
+#: ../lib/advene/gui/views/activebookmarks.py:530
+msgid "Type of the annotations that will be created"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "Insert on single-click"
+#: ../lib/advene/gui/views/activebookmarks.py:548
+#: ../lib/advene/gui/edit/transcribe.py:1155
+msgid "Smallish"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "A single click will insert the mark (else a double click is needed)"
+#: ../lib/advene/gui/views/activebookmarks.py:549
+#: ../lib/advene/gui/edit/transcribe.py:1156 ../lib/advene/rules/actions.py:167
+msgid "Small"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play on scroll"
+#: ../lib/advene/gui/views/activebookmarks.py:550
+#: ../lib/advene/gui/edit/transcribe.py:1157 ../lib/advene/rules/actions.py:168
+msgid "Normal"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play the new position upon timestamp modification"
+#: ../lib/advene/gui/views/activebookmarks.py:551
+#: ../lib/advene/gui/edit/transcribe.py:1158 ../lib/advene/rules/actions.py:169
+msgid "Large"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:151
-msgid "Generate empty annotations"
+#: ../lib/advene/gui/views/activebookmarks.py:552
+#: ../lib/advene/gui/edit/transcribe.py:1159
+msgid "Larger"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:151
-msgid "If checked, generate annotations for empty text"
+#: ../lib/advene/gui/views/activebookmarks.py:553
+#: ../lib/advene/gui/edit/transcribe.py:1160
+msgid "Huge"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid "Reaction time"
+#: ../lib/advene/gui/views/activebookmarks.py:563
+msgid "Reorder active bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid ""
-"Reaction time (substracted from current player time, except when paused.)"
+#: ../lib/advene/gui/views/activebookmarks.py:564
+msgid "Complete bookmarks into annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Auto-insert"
-msgstr ""
+#: ../lib/advene/gui/views/activebookmarks.py:565
+#, fuzzy
+msgid "Save the current state"
+msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Automatic timestamp mark insertion"
+#: ../lib/advene/gui/views/activebookmarks.py:566
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Set the size of snaphots"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:154
-msgid "Automatic insertion delay"
+#: ../lib/advene/gui/views/activebookmarks.py:833
+msgid "Remove end timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:154
+#: ../lib/advene/gui/views/activebookmarks.py:1041
 msgid ""
-"If autoinsert is active, timestamp marks will be automatically inserted when "
-"text is entered after no interaction since this delay (in ms).\n"
-"1000 is typically a good value."
+"Error: cannot find an appropriate schema to create the Active-bookmark type."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:155 ../lib/advene/gui/main.py:4368
-msgid "Font size"
+#: ../lib/advene/gui/views/activebookmarks.py:1046
+msgid "Active bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:155
-msgid "Font size for text (0 for standard size)"
+#: ../lib/advene/gui/views/activebookmarks.py:1084
+msgid "Validate the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:215
-#: ../lib/advene/gui/edit/transcribe.py:219
-#: ../lib/advene/gui/edit/transcribe.py:379
-#: ../lib/advene/gui/edit/transcribe.py:383
-msgid "Invalid timestamp mark"
+#: ../lib/advene/gui/views/activebookmarks.py:1228
+msgid "Duplicate bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:496
-#: ../lib/advene/gui/views/timeline.py:2550
-#, python-format
-msgid "Position %s"
+#: ../lib/advene/gui/views/activebookmarks.py:1229
+msgid "Remove bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:506 ../lib/advene/gui/popup.py:456
-msgid "Edit"
+#: ../lib/advene/gui/views/activebookmarks.py:1238
+msgid "Remove begin timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:510
-msgid "Ignore the following text (toggle)"
+#: ../lib/advene/gui/views/activebookmarks.py:1245
+msgid "Complete bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:514
-msgid "Remove mark"
+#: ../lib/advene/gui/views/activebookmarks.py:1249
+msgid "Change type to"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:518
-msgid "Reaction-time offset"
+#: ../lib/advene/gui/views/logwindow.py:43
+msgid "Links"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:522
-msgid "-1 sec"
-msgstr ""
+#: ../lib/advene/gui/views/logwindow.py:45
+#, fuzzy
+msgid "URL stack"
+msgstr "_URL stapel"
 
-#: ../lib/advene/gui/edit/transcribe.py:525
-msgid "-0.5 sec"
+#: ../lib/advene/gui/views/logwindow.py:123
+#, python-format
+msgid "Go to %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:528
-msgid "-0.1 sec"
+#: ../lib/advene/gui/views/logwindow.py:129 ../lib/advene/rules/actions.py:63
+msgid "Go to the given position"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:532
-msgid "+1 sec"
+#: ../lib/advene/gui/views/logwindow.py:157
+msgid "Push a URL on the stack"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:535
-msgid "+0.5 sec"
-msgstr ""
+#: ../lib/advene/gui/views/logwindow.py:158
+#, fuzzy
+msgid "Description of the URL"
+msgstr "Transkription für das gesamte Packet"
 
-#: ../lib/advene/gui/edit/transcribe.py:538
-msgid "+0.1 sec"
+#: ../lib/advene/gui/views/interactivequery.py:51
+#: ../lib/advene/gui/views/interactivequery.py:99
+msgid "Interactive query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:629
-msgid "Invalid timestamp"
+#: ../lib/advene/gui/views/interactivequery.py:53
+msgid "Interactive query dialog"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:762
-#, python-format
-msgid "Invalid timestamp mark in conversion: %s"
+#: ../lib/advene/gui/views/interactivequery.py:59
+#: ../lib/advene/gui/views/interactivequery.py:256
+msgid "Save query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:879
+#: ../lib/advene/gui/views/interactivequery.py:122
+#: ../lib/advene/gui/views/interactivequery.py:172
 #, python-format
-msgid "Cannot save the file: %s"
+msgid ""
+"Invalid query.\n"
+"The following fields have an invalid value:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:884
-#: ../lib/advene/gui/views/transcription.py:703
-#, python-format
-msgid "Transcription saved to %s"
+#: ../lib/advene/gui/views/interactivequery.py:136
+#: ../lib/advene/gui/views/interactivequery.py:296
+msgid "Saving the query..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:890
-#: ../lib/advene/gui/edit/transcribe.py:980
-msgid "This will overwrite the current textual content. Are you sure?"
+#: ../lib/advene/gui/views/interactivequery.py:137
+#: ../lib/advene/gui/views/interactivequery.py:297
+msgid "Give a title and identifier for saving the query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:893
-msgid "Select transcription file to load"
+#: ../lib/advene/gui/views/interactivequery.py:180
+msgid "Expert search"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:910
+#: ../lib/advene/gui/views/interactivequery.py:186
 #, python-format
-msgid "Cannot open %(filename)s: %(error)s"
+msgid ""
+"TALES error in interactive expression:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:965
-msgid "Cannot import annotations: no existing interface"
+#: ../lib/advene/gui/views/interactivequery.py:247
+msgid "Interactive result"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:967
-msgid "Select the annotation type to import"
+#: ../lib/advene/gui/views/interactivequery.py:249
+msgid "Interactive result display"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:976
-#, fuzzy, python-format
-msgid "There are no annotations of type %s"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/views/interactivequery.py:274
+msgid "Result of interactive query"
+msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1005
-msgid "Cannot convert the data: no associated package"
+#: ../lib/advene/gui/views/interactivequery.py:278
+msgid "Result of a query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1008
-#, fuzzy
-msgid "Converting transcription"
-msgstr "T_ranskription"
+#: ../lib/advene/gui/views/interactivequery.py:333
+#, fuzzy, python-format
+msgid "Comment on annotations containing %s"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/transcribe.py:1014
-msgid "Choose the annotation-type where to create annotations.\n"
+#: ../lib/advene/gui/views/interactivequery.py:352
+msgid "Choose the annotation type where annotations will be created."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1022
-msgid "Delete existing annotations in this type"
+#: ../lib/advene/gui/views/interactivequery.py:356
+#, python-format
+msgid "Copied result of the '%s' query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1027
-#: ../lib/advene/gui/views/timeline.py:3009 ../lib/advene/gui/main.py:3222
-msgid "Create a new annotation type"
+#: ../lib/advene/gui/views/interactivequery.py:368
+#, python-format
+msgid "Search/replace content in %d elements"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1045
-#, fuzzy
-msgid "Select type"
-msgstr "Wähle einen DVD"
-
-#: ../lib/advene/gui/edit/transcribe.py:1049
-msgid "You want to create a new type. Please specify its schema and title."
+#: ../lib/advene/gui/views/interactivequery.py:396
+msgid "Edit query again"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1061
-msgid "Containing schema"
+#: ../lib/advene/gui/views/interactivequery.py:410
+msgid "Search again"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1074
-msgid "Export options"
+#: ../lib/advene/gui/views/interactivequery.py:416
+msgid "Empty result"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1079
-#, fuzzy
-msgid "Generate annotations for empty contents"
-msgstr "Erschaffe Anmerkung auf Basis des DVD Kapitels"
-
-#: ../lib/advene/gui/edit/transcribe.py:1104
+#: ../lib/advene/gui/views/interactivequery.py:425
 #, python-format
-msgid "The %s identifier already exists. Choose another one."
-msgstr ""
-
-#: ../lib/advene/gui/edit/transcribe.py:1143
-msgid "Notes converted"
+msgid "Result is a list of %d annotations."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1147
-#: ../lib/advene/gui/views/bookmarks.py:169
+#: ../lib/advene/gui/views/interactivequery.py:427
 #, python-format
-msgid ""
-"Conversion completed.\n"
-"%s annotations generated."
+msgid "Result is a list of  %(number)d elements with %(elements)s."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1163
-#: ../lib/advene/gui/views/activebookmarks.py:546
-msgid "Smallish"
+#: ../lib/advene/gui/views/interactivequery.py:439
+#: ../lib/advene/gui/edit/montage.py:478
+msgid "Unhighlight annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1167
-#: ../lib/advene/gui/views/activebookmarks.py:550
-msgid "Larger"
+#: ../lib/advene/gui/views/interactivequery.py:443
+#: ../lib/advene/gui/views/interactivequery.py:480
+#: ../lib/advene/gui/edit/montage.py:482 ../lib/advene/gui/edit/montage.py:491
+msgid "Highlight annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1168
-#: ../lib/advene/gui/views/activebookmarks.py:551
-msgid "Huge"
+#: ../lib/advene/gui/views/interactivequery.py:464
+#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
+msgid "Annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1190
-msgid "Open"
+#: ../lib/advene/gui/views/interactivequery.py:470
+msgid "Other elements"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1191
-msgid "Save"
+#: ../lib/advene/gui/views/interactivequery.py:474
+msgid "Display annotations in timeline"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1192
-msgid "Save As"
-msgstr ""
+#: ../lib/advene/gui/views/interactivequery.py:475
+#, fuzzy
+msgid "Display annotations as transcription"
+msgstr "Zeige die Anmerkung als Transkription"
 
-#: ../lib/advene/gui/edit/transcribe.py:1193
-msgid "Import"
+#: ../lib/advene/gui/views/interactivequery.py:481
+#: ../lib/advene/gui/views/interactivequery.py:503
+msgid "Export table"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1193
-msgid "Import from annotations"
+#: ../lib/advene/gui/views/interactivequery.py:482
+#, fuzzy
+msgid "Create annotations from the result"
+msgstr "Erschaffe Anmerkung auf Basis des DVD Kapitels"
+
+#: ../lib/advene/gui/views/interactivequery.py:483
+msgid "Define a montage with the result"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
-msgid "Convert"
+#: ../lib/advene/gui/views/interactivequery.py:484
+#, fuzzy
+msgid "Create a comment view with the result"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/views/interactivequery.py:485
+msgid "Search and replace strings in the annotations content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
-msgid "Convert to annotations"
+#: ../lib/advene/gui/views/interactivequery.py:510
+msgid "Edit elements"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1196
-msgid "Center on the current mark"
+#: ../lib/advene/gui/views/interactivequery.py:516
+msgid "Open in python evaluator"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1197
-msgid "Find"
+#: ../lib/advene/gui/views/interactivequery.py:519
+#, python-format
+msgid ""
+"Result:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1197
-msgid "Search a string"
+#: ../lib/advene/gui/views/interactivequery.py:561
+msgid "Results of _interactive query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-msgid "Scale"
+#: ../lib/advene/gui/popup.py:138
+msgid "Choose the file to insert"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-#: ../lib/advene/gui/views/activebookmarks.py:564
-msgid "Set the size of snaphots"
+#: ../lib/advene/gui/popup.py:146
+msgid "Select a valid identifier"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1221
-msgid "Automatically scroll to the mark position when playing"
+#: ../lib/advene/gui/popup.py:147
+#, python-format
+msgid ""
+"The filename %s contains invalid characters\n"
+"that have been replaced.\n"
+"You can modify this identifier if necessary:"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1223
-msgid "Autoscroll"
+#: ../lib/advene/gui/popup.py:158
+msgid "Choose the soundclip to insert"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1230
-msgid "Autoinsert"
+#: ../lib/advene/gui/popup.py:162
+msgid "Choose the directory to insert"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1232
-msgid "Automatically insert marks"
+#: ../lib/advene/gui/popup.py:177
+msgid "Named-Entity extraction using NERD"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:74
-#, python-format
-msgid "No edit popup available for element %s"
+#: ../lib/advene/gui/popup.py:181
+msgid ""
+"Give the offset to use\n"
+"on specified element.\n"
+"It is in ms and can be\n"
+"either positive or negative."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:95
-msgid "Edit Window"
+#: ../lib/advene/gui/popup.py:225
+#, python-format
+msgid "Replace content in %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:134
-msgid "Apply changes and close the edit window"
-msgstr ""
+#: ../lib/advene/gui/popup.py:228
+#, fuzzy, python-format
+msgid "Replace content in annotations of type %s"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/elements.py:139
-msgid "Apply changes"
-msgstr ""
+#: ../lib/advene/gui/popup.py:231
+#, fuzzy
+msgid "Replace content in all annotations"
+msgstr "Zeige die Transkription für eine Anmerkung"
 
-#: ../lib/advene/gui/edit/elements.py:273
-msgid "Content has been modified. Close anyway and lose data?"
+#: ../lib/advene/gui/popup.py:324
+#, python-format
+msgid "Copy id %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:331
-#: ../lib/advene/gui/views/viewbook.py:234
-#: ../lib/advene/gui/views/viewbook.py:240
+#: ../lib/advene/gui/popup.py:358
 #, python-format
-msgid "Edit %s"
+msgid ""
+"<b>Statistics about %s</b>\n"
+"\n"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:333
-#, python-format
-msgid "View %s (read-only)"
+#: ../lib/advene/gui/popup.py:364
+#, fuzzy, python-format
+msgid "Renumbering annotations of type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/popup.py:371
+msgid ""
+"<b>Renumber all annotations according to their order.</b>\n"
+"\n"
+"<i>Note that this action cannot be undone.</i>\n"
+"Replace the first numeric value of the annotation content with the new "
+"annotation number.\n"
+"If no numeric value is found and the annotation is structured, it will "
+"insert the number.\n"
+"If no numeric value is found and the annotation is of type text/plain, it "
+"will overwrite the annotation content.\n"
+"The offset parameter allows you to renumber from a given annotation."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:369
-#, python-format
-msgid "Display %s"
+#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
+msgid "Offset"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:453
-#, fuzzy
-msgid "Apply changes and edit previous annotation of same type"
+#: ../lib/advene/gui/popup.py:399
+#, fuzzy, python-format
+msgid "Renumbering %d annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/elements.py:457
-#, fuzzy
-msgid "Apply changes and edit next annotation of same type"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/popup.py:408
+#, fuzzy, python-format
+msgid "Annotation #%d"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/edit/elements.py:463
-msgid "Unhighlight annotation"
-msgstr ""
+#: ../lib/advene/gui/popup.py:444 ../lib/advene/gui/edit/montage.py:309
+#, fuzzy, python-format
+msgid "Extracting %s"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/edit/elements.py:467
-msgid "Highlight annotation"
+#: ../lib/advene/gui/popup.py:445
+#, python-format
+msgid ""
+"Exporting annotation %(title)s\n"
+"from %(begin)s to %(end)s\n"
+"to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:498
-msgid "Fragment"
+#: ../lib/advene/gui/popup.py:456 ../lib/advene/gui/edit/transcribe.py:504
+msgid "Edit"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:510
-#: ../lib/advene/gui/edit/elements.py:559
-#: ../lib/advene/gui/edit/elements.py:646
-#: ../lib/advene/gui/edit/elements.py:726
-#: ../lib/advene/gui/edit/elements.py:783
-#: ../lib/advene/gui/edit/elements.py:875
-#: ../lib/advene/gui/edit/elements.py:944
-#: ../lib/advene/gui/edit/elements.py:1056
-#: ../lib/advene/gui/edit/elements.py:1118 ../lib/advene/gui/main.py:4174
-msgid "Author"
+#: ../lib/advene/gui/popup.py:458
+msgid "Browse"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:511
-#: ../lib/advene/gui/edit/elements.py:560
-#: ../lib/advene/gui/edit/elements.py:647
-#: ../lib/advene/gui/edit/elements.py:727
-#: ../lib/advene/gui/edit/elements.py:784
-#: ../lib/advene/gui/edit/elements.py:876
-#: ../lib/advene/gui/edit/elements.py:945
-#: ../lib/advene/gui/edit/elements.py:1057
-#: ../lib/advene/gui/edit/elements.py:1119 ../lib/advene/gui/main.py:4175
-msgid "Date"
+#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
+msgid "Open in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:513
-#: ../lib/advene/gui/edit/elements.py:562
-#: ../lib/advene/gui/edit/elements.py:649
-#: ../lib/advene/gui/edit/elements.py:729
-#: ../lib/advene/gui/edit/elements.py:787
-#: ../lib/advene/gui/edit/elements.py:878
-#: ../lib/advene/gui/edit/elements.py:948
-#: ../lib/advene/gui/edit/elements.py:1060
-msgid "Metadata"
+#: ../lib/advene/gui/popup.py:472 ../lib/advene/gui/popup.py:476
+#: ../lib/advene/gui/edit/shapewidget.py:1598
+msgid "Delete"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:582
-#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/views/relationdisplay.py:113
-msgid "Members"
+#: ../lib/advene/gui/popup.py:479
+msgid "Search/replace content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:600
-#: ../lib/advene/gui/edit/elements.py:677
-#: ../lib/advene/gui/edit/elements.py:737
-#: ../lib/advene/gui/edit/elements.py:1128
-#: ../lib/advene/gui/views/table.py:250
-msgid "Content"
+#: ../lib/advene/gui/popup.py:497
+msgid "Desactivate"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:617
-msgid "Apply changes and visualise in web browser"
+#: ../lib/advene/gui/popup.py:514
+msgid "Loop"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:622
-msgid "Apply changes and activate the view"
+#: ../lib/advene/gui/popup.py:515
+msgid "Duplicate"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:630
-#: ../lib/advene/gui/edit/elements.py:711
-#: ../lib/advene/gui/edit/elements.py:768
-#: ../lib/advene/gui/edit/elements.py:859
-#: ../lib/advene/gui/edit/elements.py:928
-#: ../lib/advene/gui/edit/elements.py:1030
+#: ../lib/advene/gui/popup.py:519
 #, fuzzy
-msgid "Title (name)"
-msgstr "Darstellung"
-
-#: ../lib/advene/gui/edit/elements.py:634
-msgid "Name of the view"
-msgstr ""
+msgid "Save snapshot..."
+msgstr "Zeige Shortcuts"
 
-#: ../lib/advene/gui/edit/elements.py:658
-msgid "Class"
-msgstr ""
+#: ../lib/advene/gui/popup.py:521
+#, fuzzy
+msgid "Extract video fragment"
+msgstr "Gebe eine Video Stream Adresse ein"
 
-#: ../lib/advene/gui/edit/elements.py:661
-msgid "Match Filter"
+#: ../lib/advene/gui/popup.py:551
+msgid "Incoming"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:699 ../lib/advene/gui/popup.py:821
-#, python-format
-msgid "Exception in query: %s"
+#: ../lib/advene/gui/popup.py:567
+msgid "Outgoing"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:704
+#: ../lib/advene/gui/popup.py:582
 #, fuzzy
-msgid "Validate and run query on package"
+msgid "Related annotations"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/elements.py:715
-msgid "Name of the query"
+#: ../lib/advene/gui/popup.py:589
+msgid "Incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:772
-#, fuzzy
-msgid "Name of the package"
-msgstr "Kein Pakte"
-
-#: ../lib/advene/gui/edit/elements.py:790
-#: ../lib/advene/gui/edit/elements.py:881
-#: ../lib/advene/gui/edit/elements.py:960
-#: ../lib/advene/gui/edit/elements.py:1074
-msgid "Description"
+#: ../lib/advene/gui/popup.py:596
+msgid "Outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:794
-#: ../lib/advene/gui/edit/elements.py:885
-#: ../lib/advene/gui/edit/elements.py:964
-#: ../lib/advene/gui/edit/elements.py:1078
-msgid "Textual description of the package"
+#: ../lib/advene/gui/popup.py:612
+#, python-format
+msgid "Begin: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:799
-msgid "Default dynamic view"
+#: ../lib/advene/gui/popup.py:614
+#, python-format
+msgid "End: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:803
-msgid "Dynamic view to activate on package load"
-msgstr ""
+#: ../lib/advene/gui/popup.py:615
+#, fuzzy, python-format
+msgid "Duration: %s"
+msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/edit/elements.py:808
-msgid "Default static view"
+#: ../lib/advene/gui/popup.py:622
+msgid "Members:"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:812
-msgid "Static view to open on package load"
+#: ../lib/advene/gui/popup.py:635
+#, fuzzy
+msgid "Edit package properties..."
+msgstr "Bearbeite Packet Eigentschaften"
+
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
+#, python-format
+msgid "%d annotations(s) - statistics"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:817
-msgid "Default adhoc view"
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
+msgid "Create a new static view..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:821
-msgid "Adhoc view to open on package load"
+#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:865
+msgid "Create a new dynamic view..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:826
-msgid "Cached duration"
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
+msgid "Create a new annotation..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:830
-msgid "Cached duration in ms"
+#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
+msgid "Create a new schema..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:835
-msgid "Mediafile"
+#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
+msgid "Create a new query..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:839
-msgid "Location of associated media file"
+#: ../lib/advene/gui/popup.py:651
+msgid "Create a new folder..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:863
-#, fuzzy
-msgid "Name of the schema"
-msgstr "Schema"
+#: ../lib/advene/gui/popup.py:652
+msgid "Create a new resource file..."
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:895
-#: ../lib/advene/gui/edit/elements.py:975
-msgid "TALES expression returning a color for the element"
+#: ../lib/advene/gui/popup.py:653
+msgid "Insert a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:902
-#: ../lib/advene/gui/edit/elements.py:993
-msgid "Item color"
+#: ../lib/advene/gui/popup.py:654
+msgid "Insert a new resource directory..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:906
-#: ../lib/advene/gui/edit/elements.py:997
-msgid ""
-"TALES expression returning a color for the items contained by the element"
+#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
+msgid "Insert a soundclip..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:932
-#: ../lib/advene/gui/edit/elements.py:1034
-msgid "Name of the type"
+#: ../lib/advene/gui/popup.py:676
+msgid "Play sound"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:950
-#: ../lib/advene/gui/edit/elements.py:1039
-#: ../lib/advene/gui/edit/elements.py:1308
-msgid "MIME Type"
+#: ../lib/advene/gui/popup.py:686
+msgid "Create a new annotation type..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:954
-#: ../lib/advene/gui/edit/elements.py:1043
-msgid "MIMEType of the content"
+#: ../lib/advene/gui/popup.py:688
+msgid "Create a new relation type..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:982
-#: ../lib/advene/gui/views/transcription.py:165
-msgid "Representation"
+#: ../lib/advene/gui/popup.py:690 ../lib/advene/gui/popup.py:750
+#: ../lib/advene/gui/popup.py:803
+msgid "Select a color"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:986
-msgid ""
-"TALES expression used to get a compact representation of the annotations"
+#: ../lib/advene/gui/popup.py:699
+#, python-format
+msgid "A caption dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:987
+#: ../lib/advene/gui/popup.py:708
 #, fuzzy, python-format
-msgid "Display %s key"
-msgstr "Verbindungs Type"
-
-#: ../lib/advene/gui/edit/elements.py:1003
-msgid "Completions"
-msgstr ""
+msgid "Caption %s annotations"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/elements.py:1007
-msgid "Space-separated list of words used for content completion"
+#: ../lib/advene/gui/popup.py:718 ../lib/advene/rules/actions.py:119
+msgid "Caption the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1013
+#: ../lib/advene/gui/popup.py:740
 #, fuzzy
-msgid "Advanced"
-msgstr "Advene"
-
-#: ../lib/advene/gui/edit/elements.py:1063
-msgid "Any annotation type"
-msgstr ""
+msgid "Create a comment view"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/elements.py:1089
-msgid "TALES expression specifying a color"
+#: ../lib/advene/gui/popup.py:741
+msgid "Generate a caption dynamic view..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1116
-msgid "MIMEType"
+#: ../lib/advene/gui/popup.py:742
+msgid "Display as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1341
-#, python-format
-msgid "Error: cannot find a content handler for %s"
-msgstr ""
+#: ../lib/advene/gui/popup.py:743
+#, fuzzy
+msgid "Display annotations in table"
+msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/gui/edit/elements.py:1457
-#: ../lib/advene/gui/edit/elements.py:1682
-#, python-format
-msgid ""
-"Cannot read the data:\n"
-"%s"
-msgstr ""
+#: ../lib/advene/gui/popup.py:744
+#, fuzzy
+msgid "Export to another format..."
+msgstr "Importiere Daten von einer Externen Quelle"
 
-#: ../lib/advene/gui/edit/elements.py:1481
-#: ../lib/advene/gui/edit/elements.py:1707
-msgid "Save content to..."
+#: ../lib/advene/gui/popup.py:746
+msgid "Extract Named Entities..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1492
-#: ../lib/advene/gui/edit/elements.py:1720
-#, python-format
-msgid ""
-"Cannot save the data:\n"
-"%s"
-msgstr ""
+#: ../lib/advene/gui/popup.py:752
+#, fuzzy
+msgid "Delete all annotations"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/elements.py:1511
-#: ../lib/advene/gui/edit/elements.py:1734
-msgid "Open a file (C-o)"
-msgstr ""
+#: ../lib/advene/gui/popup.py:753
+#, fuzzy
+msgid "Renumber annotations..."
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/elements.py:1516
-#: ../lib/advene/gui/edit/elements.py:1739
-msgid "Save to a file (C-s)"
-msgstr ""
+#: ../lib/advene/gui/popup.py:754
+#, fuzzy
+msgid "Shot validation view..."
+msgstr "Zeige Kommentare an einer Timeline"
 
-#: ../lib/advene/gui/edit/elements.py:1521
-#: ../lib/advene/gui/edit/elements.py:1744
-msgid "Reload the file (C-r)"
+#: ../lib/advene/gui/popup.py:766
+#, python-format
+msgid "A follow dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1527
-msgid "Insert a value from the browser (C-i)"
-msgstr ""
+#: ../lib/advene/gui/popup.py:775
+#, fuzzy, python-format
+msgid "Follow %s relation-type"
+msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/edit/elements.py:1773
-msgid "Begin time is greater than end time"
+#: ../lib/advene/gui/popup.py:784
+msgid "Follow the relation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1803
-#: ../lib/advene/gui/views/table.py:252
-msgid "Begin"
+#: ../lib/advene/gui/popup.py:804
+msgid "Delete all relations..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1812
-#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/main.py:628
-msgid "End"
-msgstr ""
+#: ../lib/advene/gui/popup.py:805
+#, fuzzy
+msgid "Create montage from related annotations"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/edit/elements.py:2044
-msgid "Expecting an integer."
+#: ../lib/advene/gui/popup.py:806
+msgid "Create dynamic view following relations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2076
+#: ../lib/advene/gui/popup.py:821 ../lib/advene/gui/edit/elements.py:703
 #, python-format
-msgid ""
-"The %(attribute)s attribute could not be updated:\n"
-"\n"
-"%(error)s\n"
-"\n"
-"Resetting to the original value."
+msgid "Exception in query: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2103
-#, python-format
-msgid ""
-"The following attributes cannot be updated:\n"
-"\n"
-"%s"
+#: ../lib/advene/gui/popup.py:824
+msgid "Apply query on..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2143
-#, python-format
-msgid ""
-"The following attributes could not be updated:\n"
-"\n"
-"%s"
+#: ../lib/advene/gui/popup.py:849
+msgid "Activate view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2160
-msgid "Attribute"
+#: ../lib/advene/gui/popup.py:851
+msgid "Open adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2168
-#: ../lib/advene/gui/views/browser.py:366
-msgid "Value"
+#: ../lib/advene/gui/util/initialconfig.py:82
+msgid "Initial Advene configuration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2259
-msgid "Insert an element"
+#: ../lib/advene/gui/util/initialconfig.py:83
+msgid ""
+"<span size='large'><b>Welcome in Advene</b>\n"
+"This is the first time that you run Advene. Please answer some basic "
+"configuration questions. You will be able to modify these choices from the "
+"Advene interface, in the Edit/Preferences menu.</span>"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2260
-msgid "Choose the element to insert."
-msgstr ""
+#: ../lib/advene/gui/util/initialconfig.py:84
+#, fuzzy
+msgid "Interface language"
+msgstr "Oberflächen Eigentschaften"
 
-#: ../lib/advene/gui/edit/elements.py:2330
-#: ../lib/advene/gui/edit/elements.py:2373
-#, python-format
-msgid "Some tags contain invalid characters: %s"
+#: ../lib/advene/gui/util/initialconfig.py:84
+msgid "Language used for the interface"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2353
-msgid "Tags:"
+#: ../lib/advene/gui/util/initialconfig.py:90
+msgid "Weekly check for Advene updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:163
-#: ../lib/advene/gui/views/browser.py:165
-msgid "TALES browser"
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for data files"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:170
-msgid "Display result in table"
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for storing data files (Advene packages)"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:193
-msgid "Insert path"
+#: ../lib/advene/gui/util/initialconfig.py:94
+msgid "Directories to search for movies"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:194
-msgid "Insert value"
+#: ../lib/advene/gui/util/initialconfig.py:94
+#, python-format
+msgid ""
+"List of directories (separated by %(pathsep)s) to search for movie files."
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:249
-msgid "Expression returned None (there was an exception)"
+#: ../lib/advene/gui/util/initialconfig.py:95
+msgid "First look for movie file in the same directory as the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:302
-msgid "Result is not a list"
+#: ../lib/advene/gui/util/initialconfig.py:95
+msgid ""
+"If checked, the movie file will be searched for in the same directory as the "
+"referencing package."
 msgstr ""
 
-#: ../lib/advene/gui/views/accumulatorpopup.py:49
-msgid "PopupAccumulator"
+#: ../lib/advene/gui/util/__init__.py:44 ../lib/advene/gui/edit/create.py:106
+msgid "Plain text content"
 msgstr ""
 
-#: ../lib/advene/gui/views/editionhistory.py:40
-msgid "Edition History"
+#: ../lib/advene/gui/util/__init__.py:45
+msgid "HTML content"
 msgstr ""
 
-#: ../lib/advene/gui/views/editionhistory.py:42
-msgid "Access last edited/created elements"
+#: ../lib/advene/gui/util/__init__.py:46 ../lib/advene/gui/edit/create.py:107
+msgid "Simple-structured content"
 msgstr ""
 
-#: ../lib/advene/gui/views/editionhistory.py:102
-#, fuzzy
-msgid "Created"
-msgstr "Erstelle"
-
-#: ../lib/advene/gui/views/editionhistory.py:103
-#, fuzzy
-msgid "Edited"
-msgstr "_Bearbeite"
-
-#: ../lib/advene/gui/views/logwindow.py:43
-msgid "Links"
+#: ../lib/advene/gui/util/__init__.py:47
+msgid "List of numeric values"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:45
-#, fuzzy
-msgid "URL stack"
-msgstr "_URL stapel"
+#: ../lib/advene/gui/util/__init__.py:48 ../lib/advene/gui/edit/create.py:108
+msgid "SVG graphics content"
+msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:123
+#: ../lib/advene/gui/util/__init__.py:389
 #, python-format
-msgid "Go to %s"
+msgid ""
+"Annotation Type %(title)s:\n"
+"%(count)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:157
-msgid "Push a URL on the stack"
+#: ../lib/advene/gui/util/__init__.py:395
+#, python-format
+msgid ""
+"Relation Type %(title)s:\n"
+"%(count)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:158
-#, fuzzy
-msgid "Description of the URL"
-msgstr "Transkription für das gesamte Packet"
-
-#: ../lib/advene/gui/views/checker.py:37
-msgid "Checker"
+#: ../lib/advene/gui/util/dialog.py:414 ../lib/advene/gui/util/dialog.py:453
+msgid "Name the element"
 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"
+#: ../lib/advene/gui/util/dialog.py:417 ../lib/advene/gui/util/dialog.py:454
+msgid "Choose a name for the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/checker.py:108
-msgid "Overlapping"
+#: ../lib/advene/gui/util/dialog.py:492
+msgid "Open a file"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:52
-msgid "Tag Bag"
+#: ../lib/advene/gui/util/dialog.py:517 ../lib/advene/gui/util/dialog.py:553
+msgid "N/C"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
-msgid "Bag of tags"
+#: ../lib/advene/gui/util/dialog.py:522
+msgid "Alias"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:59
-msgid "New tag"
+#: ../lib/advene/gui/util/dialog.py:542
+msgid ""
+"Press to\n"
+"display\n"
+"information"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:122
-msgid "New tag name"
+#: ../lib/advene/gui/util/dialog.py:561
+msgid "Wait..."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:128
-msgid "Enter a new tag name and select its color."
+#: ../lib/advene/gui/util/dialog.py:565
+#, python-format
+msgid "Error: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3720
-msgid "The tag contains invalid characters"
+#: ../lib/advene/gui/util/dialog.py:585
+msgid "Any type of file"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:175
-msgid "Tag bag options"
+#: ../lib/advene/gui/util/dialog.py:587
+msgid "Advene files (.xml, .azp, .apl)"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:176
-msgid "Update with new tags"
+#: ../lib/advene/gui/util/dialog.py:589
+msgid "Advene session (.apl)"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:176
-msgid "Automatically display new defined tags"
+#: ../lib/advene/gui/util/dialog.py:590
+msgid "Audio files"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:225
-#, python-format
-msgid "Choose the color for tag %s"
+#: ../lib/advene/gui/util/dialog.py:591
+msgid "Video files"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:249
-msgid "Set color"
+#: ../lib/advene/gui/util/dialog.py:636
+#: ../lib/advene/gui/edit/properties.py:423
+msgid "Choose a directory"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:250
-msgid "Remove"
+#: ../lib/advene/gui/util/dialog.py:689
+msgid "Select an element"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:324
-msgid "Drop a tag here to remove it from the list"
+#: ../lib/advene/gui/edit/rules.py:88 ../lib/advene/gui/edit/rules.py:90
+#: ../lib/advene/gui/edit/create.py:252
+msgid "Rule"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:333
-msgid "Save as adhoc view"
+#: ../lib/advene/gui/edit/rules.py:99 ../lib/advene/gui/edit/create.py:242
+msgid "Subviews"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:334
-msgid "Add a new tag"
+#: ../lib/advene/gui/edit/rules.py:126
+msgid "Add a new rule"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:335
-msgid "Display all defined tags"
+#: ../lib/advene/gui/edit/rules.py:130
+msgid "Subview"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:48
-msgid "Transcription"
+#: ../lib/advene/gui/edit/rules.py:133
+msgid "Add a subview list"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/edit/rules.py:139
 #, fuzzy
-msgid "Display annotations as a text transcription"
-msgstr "Zeige die Anmerkung als Transkription"
-
-#: ../lib/advene/gui/views/transcription.py:146
-#, python-format
-msgid "Error in source evaluation %(source)s: %(error)s"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:163
-msgid "Transcription options"
-msgstr ""
+msgid "Remove the current rule"
+msgstr "Aktuelle Sitzung speichern"
 
-#: ../lib/advene/gui/views/transcription.py:164
-msgid "Default representation"
+#: ../lib/advene/gui/edit/rules.py:279
+msgid "Source expression"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
-msgid "Use the default representation for annotations"
+#: ../lib/advene/gui/edit/rules.py:281
+msgid "Return expression"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
-msgid ""
-"If default representation is unchecked,\n"
-"this TALES expression that will be used to format the annotations."
+#: ../lib/advene/gui/edit/rules.py:355
+msgid "For all elements in "
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:166
-msgid "Separator"
+#: ../lib/advene/gui/edit/rules.py:356
+msgid "All annotations of the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:167
-msgid "This separator will be inserted between the annotations."
+#: ../lib/advene/gui/edit/rules.py:357
+msgid "All views of the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:168
-msgid "Whitespace"
+#: ../lib/advene/gui/edit/rules.py:358 ../lib/advene/gui/edit/rules.py:802
+msgid "The context annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:169
-msgid "Newline"
+#: ../lib/advene/gui/edit/rules.py:359 ../lib/advene/gui/edit/rules.py:803
+msgid "The annotations of the context type"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:170
-msgid "Tabulation"
+#: ../lib/advene/gui/edit/rules.py:362 ../lib/advene/core/controller.py:584
+#, python-format
+msgid "Annotations of type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:171
-msgid "Dash"
+#: ../lib/advene/gui/edit/rules.py:374
+msgid "Return "
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:172
-msgid "User defined"
+#: ../lib/advene/gui/edit/rules.py:376 ../lib/advene/gui/edit/rules.py:791
+msgid "The element"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid "User-defined separator"
+#: ../lib/advene/gui/edit/rules.py:377 ../lib/advene/gui/edit/rules.py:792
+msgid "The element's content"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid ""
-"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
-"a tabulation."
+#: ../lib/advene/gui/edit/rules.py:392
+msgid "If the element matches "
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Display timestamps"
+#: ../lib/advene/gui/edit/rules.py:394
+msgid "Return the element if it matches "
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Insert timestsamp values"
+#: ../lib/advene/gui/edit/rules.py:412 ../lib/advene/gui/edit/rules.py:621
+msgid "All conditions must be met"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:176
-msgid "Display annotation bounds"
+#: ../lib/advene/gui/edit/rules.py:413 ../lib/advene/gui/edit/rules.py:622
+msgid "Any condition can be met"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:236
+#: ../lib/advene/gui/edit/rules.py:497 ../lib/advene/gui/edit/rules.py:567
 #, python-format
-msgid ""
-"Cannot convert the following annotations,\n"
-"the representation pattern is too complex.\n"
-"%s"
+msgid "Rule <b>%s</b>"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:247
-msgid ""
-"Cannot validate the update.\n"
-"The representation pattern is too complex."
+#: ../lib/advene/gui/edit/rules.py:578
+msgid "Rule name"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:273
-#, fuzzy
-msgid "Save transcription to a text file"
-msgstr "Zeige die Transkription für eine Anmerkung"
-
-#: ../lib/advene/gui/views/transcription.py:274
-msgid "Apply the modifications"
+#: ../lib/advene/gui/edit/rules.py:595
+msgid "Event"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:275
-msgid "Find text"
+#: ../lib/advene/gui/edit/rules.py:603
+msgid "If"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:276
-msgid "Quickly switch display options"
+#: ../lib/advene/gui/edit/rules.py:642
+msgid "Then"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:277
-#, fuzzy
-msgid "Refresh the transcription"
-msgstr "T_ranskription"
+#: ../lib/advene/gui/edit/rules.py:687
+msgid "When the "
+msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:278
-#, fuzzy
-msgid "Edit preferences"
-msgstr "E_instellungen"
+#: ../lib/advene/gui/edit/rules.py:700
+msgid " occurs,"
+msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:697
+#: ../lib/advene/gui/edit/rules.py:727 ../lib/advene/gui/edit/rules.py:730
 #, python-format
-msgid "Cannot write to %(filename)s: %(error)s:"
+msgid "Condition expression: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:52
-#: ../lib/advene/gui/views/activebookmarks.py:54
-msgid "ActiveBookmarks"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:769
+#, fuzzy
+msgid "The annotation type"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/views/activebookmarks.py:441
-msgid "Chronological order"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:772
+#, fuzzy, python-format
+msgid "The value of the %s attribute"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/activebookmarks.py:442
-msgid "Completeness and chronological order"
+#: ../lib/advene/gui/edit/rules.py:774
+msgid "The annotation fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:458
-msgid "Bookmark duration"
+#: ../lib/advene/gui/edit/rules.py:775
+msgid "The annotation begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:459
-msgid "Enter the duration (in ms) to convert bookmarks into annotations"
+#: ../lib/advene/gui/edit/rules.py:776
+msgid "The annotation end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:481
-msgid "User-specified duration"
+#: ../lib/advene/gui/edit/rules.py:778
+#, fuzzy
+msgid "The annotation MIME-type"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/edit/rules.py:779
+msgid "The annotation's incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:482
-msgid "2s duration"
+#: ../lib/advene/gui/edit/rules.py:780
+msgid "The annotation's outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:483
-msgid "Complete coverage"
+#: ../lib/advene/gui/edit/rules.py:783
+#, python-format
+msgid "The %s-related incoming annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:501
-msgid "Drop a bookmark here to remove it from the list"
+#: ../lib/advene/gui/edit/rules.py:787
+#, python-format
+msgid "The %s-related outgoing annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:520
-#: ../lib/advene/gui/views/bookmarks.py:243
-msgid "Insert a bookmark for the current video time"
+#: ../lib/advene/gui/edit/rules.py:793
+msgid "The element fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:528
-msgid "Type of the annotations that will be created"
+#: ../lib/advene/gui/edit/rules.py:794
+msgid "The element begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:561
-msgid "Reorder active bookmarks"
+#: ../lib/advene/gui/edit/rules.py:795
+msgid "The element end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:562
-msgid "Complete bookmarks into annotations"
+#: ../lib/advene/gui/edit/rules.py:796
+msgid "The element duration"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:563
+#: ../lib/advene/gui/edit/rules.py:797
 #, fuzzy
-msgid "Save the current state"
-msgstr "Aktuelle Sitzung speichern"
+msgid "The element type"
+msgstr "Wähle einen DVD"
 
-#: ../lib/advene/gui/views/activebookmarks.py:863
-msgid "Remove end timestamp"
+#: ../lib/advene/gui/edit/rules.py:798
+msgid "The element's incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1071
-msgid ""
-"Error: cannot find an appropriate schema to create the Active-bookmark type."
+#: ../lib/advene/gui/edit/rules.py:799
+msgid "The element's outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1076
-msgid "Active bookmark"
+#: ../lib/advene/gui/edit/rules.py:800
+msgid "The context"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1114
-msgid "Validate the annotation"
+#: ../lib/advene/gui/edit/rules.py:801
+msgid "The context fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1260
-msgid "Duplicate bookmark"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:813
+#, fuzzy, python-format
+msgid "annotation-type %s"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1261
-msgid "Remove bookmark"
+#: ../lib/advene/gui/edit/rules.py:816
+#, fuzzy, python-format
+msgid "relation-type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/edit/rules.py:838
+msgid "Select a condition"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1270
-msgid "Remove begin timestamp"
+#: ../lib/advene/gui/edit/rules.py:882
+#, python-format
+msgid "Parameter %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1277
-msgid "Complete bookmark"
+#: ../lib/advene/gui/edit/rules.py:996
+msgid "Select an action"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1281
-msgid "Change type to"
+#: ../lib/advene/gui/edit/rules.py:1087
+#, fuzzy
+msgid "Activate?"
+msgstr "Aktivieren und Abspielen"
+
+#: ../lib/advene/gui/edit/properties.py:37
+#: ../lib/advene/gui/edit/shapewidget.py:1599
+msgid "Properties"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:48
-msgid "Bookmarks importer"
+#: ../lib/advene/gui/edit/properties.py:376
+msgid "Choose a file"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:69
-msgid "Bookmarks"
+#: ../lib/advene/gui/edit/frameselector.py:44
+msgid "Click on a frame to select its time."
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:71
-msgid "Bookmark timecodes with their corresponding screenshots"
+#: ../lib/advene/gui/edit/frameselector.py:181
+msgid "Select the appropriate snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:142
-msgid "Select the annotation type to generate"
+#: ../lib/advene/gui/edit/frameselector.py:234
+#: ../lib/advene/gui/edit/frameselector.py:287
+msgid "Click to see more frames or scroll with the mouse wheel"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:147
-msgid "Choose a duration"
+#: ../lib/advene/gui/edit/create.py:81
+#, python-format
+msgid "%s creation"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:148
-msgid "Enter the standard duration (in ms) of created annotations."
+#: ../lib/advene/gui/edit/create.py:82
+#, python-format
+msgid ""
+"To create a new element of type %s,\n"
+"you must give the following information."
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:165
-msgid "Converted from bookmarks"
+#: ../lib/advene/gui/edit/create.py:111
+msgid "Dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:223
-msgid "Drop a position here to remove it from the list"
+#: ../lib/advene/gui/edit/create.py:112
+msgid "HTML template"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:244
-msgid "Convert bookmarks to annotations"
+#: ../lib/advene/gui/edit/create.py:113
+msgid "Plain XML"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3609
-msgid "Comment here"
+#: ../lib/advene/gui/edit/create.py:114
+msgid "SVG template"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewplugin.py:60
-msgid "Generic view plugin"
+#: ../lib/advene/gui/edit/create.py:115
+msgid "Plain text template"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewplugin.py:62
-msgid "You should not ever see this tooltip..."
+#: ../lib/advene/gui/edit/create.py:118
+msgid "Simple query"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:51
-#: ../lib/advene/gui/views/interactivequery.py:99
-msgid "Interactive query"
+#: ../lib/advene/gui/edit/create.py:120
+msgid "Directory"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:53
-msgid "Interactive query dialog"
+#: ../lib/advene/gui/edit/create.py:122 ../lib/advene/util/helper.py:411
+msgid "Resource File"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:59
-#: ../lib/advene/gui/views/interactivequery.py:256
-msgid "Save query"
+#: ../lib/advene/gui/edit/create.py:128
+msgid "No available type."
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:122
-#: ../lib/advene/gui/views/interactivequery.py:172
+#: ../lib/advene/gui/edit/create.py:172
 #, python-format
 msgid ""
-"Invalid query.\n"
-"The following fields have an invalid value:\n"
-"%s"
+"The identifier %s is not valid.\n"
+"It must be composed of non-accentuated alphabetic characters\n"
+"Underscore is allowed."
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:136
-#: ../lib/advene/gui/views/interactivequery.py:296
-msgid "Saving the query..."
+#: ../lib/advene/gui/edit/create.py:177
+#, python-format
+msgid "The identifier %s is already defined."
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:137
-#: ../lib/advene/gui/views/interactivequery.py:297
-msgid "Give a title and identifier for saving the query"
+#: ../lib/advene/gui/edit/create.py:310
+msgid "New resource data"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:180
-msgid "Expert search"
+#: ../lib/advene/gui/edit/imports.py:129 ../lib/advene/gui/edit/imports.py:130
+#: ../lib/advene/core/controller.py:585
+msgid "Views"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:186
-#, python-format
-msgid ""
-"TALES error in interactive expression:\n"
-"%s"
+#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
+msgid "Schemas"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:247
-msgid "Interactive result"
+#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
+#: ../lib/advene/gui/edit/elements.py:521
+msgid "Relations"
+msgstr ""
+
+#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
+msgid "Queries"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:249
-msgid "Interactive result display"
+#: ../lib/advene/gui/edit/imports.py:320
+msgid "Imported?"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:274
-msgid "Result of interactive query"
+#: ../lib/advene/gui/edit/imports.py:337 ../lib/advene/gui/edit/elements.py:513
+#: ../lib/advene/gui/edit/elements.py:562
+#: ../lib/advene/gui/edit/elements.py:649
+#: ../lib/advene/gui/edit/elements.py:729
+#: ../lib/advene/gui/edit/elements.py:786
+#: ../lib/advene/gui/edit/elements.py:878
+#: ../lib/advene/gui/edit/elements.py:947
+#: ../lib/advene/gui/edit/elements.py:1059
+#: ../lib/advene/gui/edit/elements.py:1121
+msgid "URI"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:278
-msgid "Result of a query"
+#: ../lib/advene/gui/edit/imports.py:359
+msgid "Choose the package to import, and its alias"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3188
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
 #, python-format
-msgid "'%s'"
+msgid "Package %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:333
-#, fuzzy, python-format
-msgid "Comment on annotations containing %s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/views/interactivequery.py:352
-msgid "Choose the annotation type where annotations will be created."
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
+msgid "No title"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:356
-#, python-format
-msgid "Copied result of the '%s' query"
+#: ../lib/advene/gui/edit/shapewidget.py:89
+msgid "Generic shape"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:368
+#: ../lib/advene/gui/edit/shapewidget.py:254
+#: ../lib/advene/gui/edit/shapewidget.py:753
 #, python-format
-msgid "Search/replace content in %d elements"
+msgid "Link to %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3185
-msgid "Empty quicksearch string"
+#: ../lib/advene/gui/edit/shapewidget.py:346
+#: ../lib/advene/gui/edit/shapewidget.py:1301
+msgid "Link"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:396
-msgid "Edit query again"
+#: ../lib/advene/gui/edit/shapewidget.py:351
+msgid "Link label"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:400
-#: ../lib/advene/gui/views/finder.py:436
-msgid "Edit query"
+#: ../lib/advene/gui/edit/shapewidget.py:369
+msgid "Linewidth"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:537
-msgid "String to search"
+#: ../lib/advene/gui/edit/shapewidget.py:374
+msgid "Filled"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:410
-msgid "Search again"
+#: ../lib/advene/gui/edit/shapewidget.py:382
+msgid "Opacity"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:416
-msgid "Empty result"
+#: ../lib/advene/gui/edit/shapewidget.py:424
+#, python-format
+msgid "Properties of %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:425
-#, python-format
-msgid "Result is a list of %d annotations."
+#: ../lib/advene/gui/edit/shapewidget.py:471
+msgid "Rectangle"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:427
-#, python-format
-msgid "Result is a list of  %(number)d elements with %(elements)s."
+#: ../lib/advene/gui/edit/shapewidget.py:551
+#: ../lib/advene/gui/edit/shapewidget.py:664
+msgid "Text"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:470
-msgid "Other elements"
+#: ../lib/advene/gui/edit/shapewidget.py:675
+msgid "Textsize"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:474
-msgid "Display annotations in timeline"
+#: ../lib/advene/gui/edit/shapewidget.py:689
+msgid "Image"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:475
-#, fuzzy
-msgid "Display annotations as transcription"
-msgstr "Zeige die Anmerkung als Transkription"
+#: ../lib/advene/gui/edit/shapewidget.py:773
+msgid "Href"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:481
-#: ../lib/advene/gui/views/interactivequery.py:503
-msgid "Export table"
+#: ../lib/advene/gui/edit/shapewidget.py:783
+msgid "Line"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:482
-#, fuzzy
-msgid "Create annotations from the result"
-msgstr "Erschaffe Anmerkung auf Basis des DVD Kapitels"
+#: ../lib/advene/gui/edit/shapewidget.py:879
+msgid "Draw an arrow"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:483
-msgid "Define a montage with the result"
+#: ../lib/advene/gui/edit/shapewidget.py:890
+msgid "Arrow size"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:484
+#: ../lib/advene/gui/edit/shapewidget.py:1105
 #, fuzzy
-msgid "Create a comment view with the result"
-msgstr "von einem Anmerkungs Typ"
+msgid "Close path"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/views/interactivequery.py:485
-msgid "Search and replace strings in the annotations content"
+#: ../lib/advene/gui/edit/shapewidget.py:1184
+msgid "Circle"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:510
-msgid "Edit elements"
+#: ../lib/advene/gui/edit/shapewidget.py:1239
+msgid "Ellipse"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:516
-msgid "Open in python evaluator"
+#: ../lib/advene/gui/edit/shapewidget.py:1600
+msgid "SVG"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:519
-#, python-format
-msgid ""
-"Result:\n"
-"%s"
+#: ../lib/advene/gui/edit/shapewidget.py:2158
+msgid "Load SVG"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:561
-msgid "Results of _interactive query"
+#: ../lib/advene/gui/edit/shapewidget.py:2164
+msgid "Save SVG"
 msgstr ""
 
-#: ../lib/advene/gui/views/relationdisplay.py:34
-#, fuzzy
-msgid "RelationDisplay"
-msgstr "Verbindungs Type"
+#: ../lib/advene/gui/edit/importer.py:46
+msgid "Importer"
+msgstr ""
 
-#: ../lib/advene/gui/views/relationdisplay.py:36
+#: ../lib/advene/gui/edit/importer.py:102
+#: ../lib/advene/gui/edit/importer.py:112
 #, fuzzy
-msgid "Display the contents of a relation"
-msgstr "Zeige Packet inhalt als Baumdarstellung"
+msgid "Advene package importer"
+msgstr "Bearbeite Packet Eigentschaften"
 
-#: ../lib/advene/gui/views/relationdisplay.py:79
-msgid "No relation"
+#: ../lib/advene/gui/edit/importer.py:116
+msgid "Not likely"
 msgstr ""
 
-#: ../lib/advene/gui/views/relationdisplay.py:104
-#: ../lib/advene/gui/views/annotationdisplay.py:253
-msgid "Contents"
+#: ../lib/advene/gui/edit/importer.py:138
+#, python-format
+msgid "Completed conversion: %(statistics)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:62
-msgid "Cannot go back: first item in history"
+#: ../lib/advene/gui/edit/importer.py:144
+#: ../lib/advene/gui/edit/dvdselect.py:73
+msgid "Stop"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:220
-#, python-format
-msgid "%s%% loaded"
+#: ../lib/advene/gui/edit/importer.py:254
+msgid "Choose the file to import"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:223
-#, fuzzy, python-format
-msgid "Title %s"
-msgstr "Darstellung"
+#: ../lib/advene/gui/edit/importer.py:273
+#, fuzzy
+msgid "Filter"
+msgstr "_Datei"
 
-#: ../lib/advene/gui/views/html.py:287
-msgid "HTML Viewer"
+#: ../lib/advene/gui/edit/importer.py:277
+msgid "Options"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:289
-msgid "Embedded HTML widget"
+#: ../lib/advene/gui/edit/importer.py:287
+msgid "Start"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:319
-msgid "No available HTML rendering component"
+#: ../lib/advene/gui/edit/dvdselect.py:82
+#: ../lib/advene/gui/edit/dvdselect.py:112
+msgid "Preview"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:36
-msgid "ViewBook"
+#: ../lib/advene/gui/edit/dvdselect.py:91
+msgid ""
+"Select the correct\n"
+"title and chapter\n"
+"of the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:57
-#: ../lib/advene/gui/views/viewbook.py:64
-msgid "Cannot remove this widget, it is essential."
+#: ../lib/advene/gui/edit/dvdselect.py:104
+msgid "Chapter"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:135
-msgid "Detach"
+#: ../lib/advene/gui/edit/merge.py:33
+msgid "Create element"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:139
-#: ../lib/advene/gui/views/editaccumulator.py:76
-msgid "Close"
+#: ../lib/advene/gui/edit/merge.py:34
+msgid "Create annotation (duplicate id)"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:157
-msgid "Rename the view"
+#: ../lib/advene/gui/edit/merge.py:35
+msgid "Create relation (duplicate id)"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:158
-msgid "Please enter the new name of the view"
+#: ../lib/advene/gui/edit/merge.py:36
+msgid "Update the color"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:197
-msgid "Detach view in its own window, or drag-and-drop to another zone"
+#: ../lib/advene/gui/edit/merge.py:37
+msgid "Update the representation"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:211
-msgid "Close view"
+#: ../lib/advene/gui/edit/merge.py:38
+msgid "Update the description"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:286
-msgid "Open a new transcription for..."
+#: ../lib/advene/gui/edit/merge.py:39
+msgid "Update the title"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:298
-#, fuzzy
-msgid "Create a new comment view"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/views/viewbook.py:300
-msgid "Open a new view"
+#: ../lib/advene/gui/edit/merge.py:40
+msgid "Update the mimetype"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:375
-#, fuzzy, python-format
-msgid "Use annotation-type %s :"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/views/viewbook.py:378
-#: ../lib/advene/gui/views/viewbook.py:404
-msgid "to edit it"
+#: ../lib/advene/gui/edit/merge.py:41
+msgid "Update the begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:379
-#: ../lib/advene/gui/views/viewbook.py:405
-#: ../lib/advene/gui/views/viewbook.py:437
-msgid "to create a new static view"
+#: ../lib/advene/gui/edit/merge.py:42
+msgid "Update the end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:381
-#, fuzzy
-msgid "in a timeline"
-msgstr "T_imeline"
-
-#: ../lib/advene/gui/views/viewbook.py:382
-msgid "as a montage"
+#: ../lib/advene/gui/edit/merge.py:43
+msgid "Update the content"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:383
-#: ../lib/advene/gui/views/viewbook.py:436
-msgid "in a table"
+#: ../lib/advene/gui/edit/merge.py:44
+msgid "Update the matchFilter"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
-msgid "in a query"
+#: ../lib/advene/gui/edit/merge.py:45
+msgid "Update the member types"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
-#, fuzzy, python-format
-msgid "Query %s"
-msgstr "Abfragen"
-
-#: ../lib/advene/gui/views/viewbook.py:385
-#: ../lib/advene/gui/views/viewbook.py:407
-#, fuzzy
-msgid "in the TALES browser"
-msgstr "Bearbeite Packet Eigentschaften"
-
-#: ../lib/advene/gui/views/viewbook.py:385
-#, python-format
-msgid "Browsing %s"
+#: ../lib/advene/gui/edit/merge.py:46
+msgid "Update tags"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:401
-#, fuzzy, python-format
-msgid "Use annotation %s :"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/views/viewbook.py:407
-#, python-format
-msgid "Browse %s"
+#: ../lib/advene/gui/edit/merge.py:90
+msgid "Difference between original and merged elements"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:408
-#, fuzzy
-msgid "to display its contents"
-msgstr "Zeige Shortcuts"
+#: ../lib/advene/gui/edit/merge.py:136
+msgid "Current element"
+msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:408
-#, python-format
-msgid "%s"
+#: ../lib/advene/gui/edit/merge.py:141
+msgid "Updated element"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:409
-msgid "as a bookmark"
+#: ../lib/advene/gui/edit/merge.py:147
+msgid "Show diff"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:427
-msgid "as the context for the query..."
+#: ../lib/advene/gui/edit/merge.py:180
+msgid "Merge?"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:431
-#, fuzzy
-msgid "Set of annotations"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/edit/merge.py:197
+msgid "Element"
+msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:432
-#, fuzzy
-msgid "Use annotations:"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/edit/merge.py:215
+#, fuzzy, python-format
+msgid "Merge elements from %s into %s"
+msgstr "Füge Elemente von anderen Packeten hinzu"
 
-#: ../lib/advene/gui/views/viewbook.py:435
-msgid "to edit them"
+#: ../lib/advene/gui/edit/merge.py:267
+msgid "All"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:438
-msgid "as bookmarks"
+#: ../lib/advene/gui/edit/merge.py:272 ../lib/advene/core/controller.py:1152
+msgid "None"
 msgstr ""
 
-#: ../lib/advene/gui/views/singletonpopup.py:32
-msgid "SingletonPopup"
+#: ../lib/advene/gui/edit/montage.py:51
+msgid "Montage"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
-msgid "Timeline"
+#: ../lib/advene/gui/edit/montage.py:53
+msgid "Dynamic montage of annotations"
 msgstr ""
 
-#: ../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:137
-#, fuzzy
-msgid "Limit display to current area"
-msgstr "Zeige Shortcuts"
-
-#: ../lib/advene/gui/views/timeline.py:138
-#: ../lib/advene/gui/views/timeline.py:3265
-msgid "Display whole movie"
+#: ../lib/advene/gui/edit/montage.py:61
+msgid "Render"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:168
-#, python-format
-msgid "Cannot find annotation type %s"
+#: ../lib/advene/gui/edit/montage.py:176
+msgid "Remove from montage"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:218
-msgid "No scrolling"
+#: ../lib/advene/gui/edit/montage.py:310
+#, python-format
+msgid ""
+"Exporting montage %(title)s\n"
+"to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:219
-msgid "Continuous scrolling"
+#: ../lib/advene/gui/edit/montage.py:402
+msgid "Drop an annotation here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:220
-msgid "Discrete scrolling"
+#: ../lib/advene/gui/edit/montage.py:414
+msgid "Play the montage"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:221
-#, fuzzy
-msgid "Annotation scrolling"
-msgstr "Kommentar Typ"
-
-#: ../lib/advene/gui/views/timeline.py:483
-#, fuzzy, python-format
-msgid "%d annotations"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/views/timeline.py:486
+#: ../lib/advene/gui/edit/montage.py:419
 #, fuzzy
-msgid "Display all types"
-msgstr "Verbindungs Type"
+msgid "Save the view in the package"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/views/timeline.py:488
-#, python-format
-msgid ""
-"There are %d annotations.\n"
-"The current timeline may take a long time to display them, so only the first "
-"two annotation types are displayed. Use the annotation type selector (second "
-"button in the timeline) to select other annotations types to display, or "
-"click on the 'Display all types' button below."
+#: ../lib/advene/gui/edit/montage.py:467
+msgid "Set zoom level"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:963
-#, fuzzy
-msgid "Split at current player position"
-msgstr "Aktuelle Sitzung speichern"
+#: ../lib/advene/gui/edit/montage.py:472
+msgid "Set 100% zoom"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:967
-msgid "Center and zoom"
+#: ../lib/advene/gui/edit/montage.py:551
+msgid "Total duration:"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1058
-#: ../lib/advene/gui/views/tree.py:808 ../lib/advene/gui/main.py:4563
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
+#: ../lib/advene/gui/edit/timeadjustment.py:97
+#, python-format
+msgid "Decrement value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1071
-#: ../lib/advene/gui/views/tree.py:821
-msgid "Create a relation"
+#: ../lib/advene/gui/edit/timeadjustment.py:99
+#, python-format
+msgid "Increment value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1081
-#: ../lib/advene/gui/views/tree.py:831
-msgid "Create a new relation-type."
+#: ../lib/advene/gui/edit/timeadjustment.py:125
+msgid ""
+"Click to play\n"
+"Control+click to set to current time\n"
+"Scroll to modify value (with control/shift)\n"
+"Right-click to invalidate screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1107
-msgid "Merge with this annotation"
+#: ../lib/advene/gui/edit/timeadjustment.py:140
+msgid ""
+"Enter a timecode.\n"
+"An integer value will be considered as milliseconds.\n"
+"A float value (12.2) will be considered as seconds.\n"
+"HH:MM:SS.sss values are possible."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1116
-msgid "Align both begin times"
+#: ../lib/advene/gui/edit/timeadjustment.py:154
+msgid "Set to current player position"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1117
-msgid "Align both end times"
+#: ../lib/advene/gui/edit/elements.py:78
+#, python-format
+msgid "No edit popup available for element %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1118
-msgid "Align end time to selected begin time"
+#: ../lib/advene/gui/edit/elements.py:99
+msgid "Edit Window"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1119
-msgid "Align begin time to selected end time"
+#: ../lib/advene/gui/edit/elements.py:138
+msgid "Apply changes and close the edit window"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1120
-msgid "Align all times"
+#: ../lib/advene/gui/edit/elements.py:143
+msgid "Apply changes"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1158
-#: ../lib/advene/gui/views/tree.py:700
-msgid "Cannot delete the annotation : it has relations."
+#: ../lib/advene/gui/edit/elements.py:277
+msgid "Content has been modified. Close anyway and lose data?"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1233
-msgid "Select the appropriate relation type"
+#: ../lib/advene/gui/edit/elements.py:337
+#, python-format
+msgid "View %s (read-only)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1252
-#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/edit/elements.py:373
 #, python-format
-msgid "Duplicate selection to type %s"
+msgid "Display %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1255
-#: ../lib/advene/gui/views/tree.py:760
-#, fuzzy, python-format
-msgid "Move selection to type %s"
+#: ../lib/advene/gui/edit/elements.py:457
+#, fuzzy
+msgid "Apply changes and edit previous annotation of same type"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/timeline.py:1264
-#: ../lib/advene/gui/views/tree.py:769
-#, fuzzy, python-format
-msgid "Duplicate annotation to type %s"
+#: ../lib/advene/gui/edit/elements.py:461
+#, fuzzy
+msgid "Apply changes and edit next annotation of same type"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/timeline.py:1268
-#: ../lib/advene/gui/views/tree.py:773
-#, fuzzy, python-format
-msgid "Move annotation to type %s"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/edit/elements.py:467
+msgid "Unhighlight annotation"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1275
-#, python-format
-msgid "Duplicate to type %(type)s at %(position)s"
+#: ../lib/advene/gui/edit/elements.py:471
+msgid "Highlight annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1281
-#, python-format
-msgid "Move to type %(type)s at %(position)s"
+#: ../lib/advene/gui/edit/elements.py:502
+msgid "Fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1291
-#: ../lib/advene/gui/views/tree.py:784
-msgid "Duplicate and create a relation"
+#: ../lib/advene/gui/edit/elements.py:525 ../lib/advene/core/controller.py:585
+msgid "Tags"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1302
-#, python-format
-msgid "Duplicate at %s and create a relation"
+#: ../lib/advene/gui/edit/elements.py:621
+msgid "Apply changes and visualise in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1333
+#: ../lib/advene/gui/edit/elements.py:626
+msgid "Apply changes and activate the view"
+msgstr ""
+
+#: ../lib/advene/gui/edit/elements.py:634
+#: ../lib/advene/gui/edit/elements.py:715
+#: ../lib/advene/gui/edit/elements.py:772
+#: ../lib/advene/gui/edit/elements.py:863
+#: ../lib/advene/gui/edit/elements.py:932
+#: ../lib/advene/gui/edit/elements.py:1034
 #, fuzzy
-msgid "Annotation filter"
-msgstr "Kommentar Typ"
+msgid "Title (name)"
+msgstr "Darstellung"
 
-#: ../lib/advene/gui/views/timeline.py:1334
-msgid "Enter the searched string"
+#: ../lib/advene/gui/edit/elements.py:638
+msgid "Name of the view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1442
-#, fuzzy, python-format
-msgid "Duplicate all annotations to type %s"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/edit/elements.py:662
+msgid "Class"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1444
-#, fuzzy, python-format
-msgid "Move all annotations to type %s"
+#: ../lib/advene/gui/edit/elements.py:665
+msgid "Match Filter"
+msgstr ""
+
+#: ../lib/advene/gui/edit/elements.py:708
+#, fuzzy
+msgid "Validate and run query on package"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/timeline.py:1446
-#, python-format
-msgid "Duplicate all annotations matching a string to type %s"
+#: ../lib/advene/gui/edit/elements.py:719
+msgid "Name of the query"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1448
-#, python-format
-msgid "Move all annotations matching a string to type %s"
+#: ../lib/advene/gui/edit/elements.py:776
+#, fuzzy
+msgid "Name of the package"
+msgstr "Kein Pakte"
+
+#: ../lib/advene/gui/edit/elements.py:794
+#: ../lib/advene/gui/edit/elements.py:885
+#: ../lib/advene/gui/edit/elements.py:964
+#: ../lib/advene/gui/edit/elements.py:1078
+msgid "Description"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1450
-#, python-format
-msgid "Align all annotation time codes using %s as reference."
+#: ../lib/advene/gui/edit/elements.py:798
+#: ../lib/advene/gui/edit/elements.py:889
+#: ../lib/advene/gui/edit/elements.py:968
+#: ../lib/advene/gui/edit/elements.py:1082
+msgid "Textual description of the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1452
-#, python-format
-msgid "Align all annotation contents using %s as reference"
+#: ../lib/advene/gui/edit/elements.py:803
+msgid "Default dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1642
-#: ../lib/advene/gui/views/table.py:240
-msgid "Cannot update the annotation, its representation is too complex"
+#: ../lib/advene/gui/edit/elements.py:807
+msgid "Dynamic view to activate on package load"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1936
-#: ../lib/advene/gui/views/timeline.py:1965
-#, fuzzy, python-format
-msgid "Displaying %(count)d / %(total)d annotations..."
-msgstr "Zeige die Transkription für eine Anmerkung"
+#: ../lib/advene/gui/edit/elements.py:812
+msgid "Default static view"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1947
-#, fuzzy
-msgid "Displaying done."
-msgstr "Verbindungs Type"
+#: ../lib/advene/gui/edit/elements.py:816
+msgid "Static view to open on package load"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2439
-msgid "Create a new annotation"
+#: ../lib/advene/gui/edit/elements.py:821
+msgid "Default adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2440
-msgid "Zoom on region"
+#: ../lib/advene/gui/edit/elements.py:825
+msgid "Adhoc view to open on package load"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2441
-#, fuzzy
-msgid "Restrict display to region"
-msgstr "Zeige Shortcuts"
+#: ../lib/advene/gui/edit/elements.py:830
+msgid "Cached duration"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2560
-#, fuzzy
-msgid "New annotation at player time"
-msgstr "Kommentar Typ"
+#: ../lib/advene/gui/edit/elements.py:834
+msgid "Cached duration in ms"
+msgstr ""
+
+#: ../lib/advene/gui/edit/elements.py:839
+msgid "Mediafile"
+msgstr ""
+
+#: ../lib/advene/gui/edit/elements.py:843
+msgid "Location of associated media file"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2564
+#: ../lib/advene/gui/edit/elements.py:867
 #, fuzzy
-msgid "New annotation at mouse position"
-msgstr "Kommentar Typ"
+msgid "Name of the schema"
+msgstr "Schema"
 
-#: ../lib/advene/gui/views/timeline.py:2568
-msgid "Selection"
+#: ../lib/advene/gui/edit/elements.py:899
+#: ../lib/advene/gui/edit/elements.py:979
+msgid "TALES expression returning a color for the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2694
-msgid "Cannot zoom more"
+#: ../lib/advene/gui/edit/elements.py:906
+#: ../lib/advene/gui/edit/elements.py:997
+msgid "Item color"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2915
-#, python-format
-msgid "From schema %s"
+#: ../lib/advene/gui/edit/elements.py:910
+#: ../lib/advene/gui/edit/elements.py:1001
+msgid ""
+"TALES expression returning a color for the items contained by the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2977
-msgid "Restrict playing to this annotation-type"
+#: ../lib/advene/gui/edit/elements.py:936
+#: ../lib/advene/gui/edit/elements.py:1038
+msgid "Name of the type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2984
-msgid "Goto previous annotation"
+#: ../lib/advene/gui/edit/elements.py:954
+#: ../lib/advene/gui/edit/elements.py:1043
+#: ../lib/advene/gui/edit/elements.py:1312
+msgid "MIME Type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2995
-#, fuzzy
-msgid "Goto next annotation"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/edit/elements.py:958
+#: ../lib/advene/gui/edit/elements.py:1047
+msgid "MIMEType of the content"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3006
-msgid "+"
+#: ../lib/advene/gui/edit/elements.py:990
+msgid ""
+"TALES expression used to get a compact representation of the annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3064
-#, fuzzy
-msgid "Open an annotation display view"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/edit/elements.py:991
+#, fuzzy, python-format
+msgid "Display %s key"
+msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/views/timeline.py:3071
-msgid "Open a slave montage view (coordinated zoom level)"
+#: ../lib/advene/gui/edit/elements.py:1007
+msgid "Completions"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3106
-msgid ""
-"<b>Statistics about current selection</b>\n"
-"\n"
+#: ../lib/advene/gui/edit/elements.py:1011
+msgid "Space-separated list of words used for content completion"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3113
+#: ../lib/advene/gui/edit/elements.py:1017
 #, fuzzy
-msgid "No selected annotation"
-msgstr "von einem Anmerkungs Typ"
+msgid "Advanced"
+msgstr "Advene"
 
-#: ../lib/advene/gui/views/timeline.py:3117
-#, python-format
-msgid "%d selected annotation(s)"
+#: ../lib/advene/gui/edit/elements.py:1067
+msgid "Any annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3124
-msgid "Unselect all annotations"
+#: ../lib/advene/gui/edit/elements.py:1093
+msgid "TALES expression specifying a color"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3125
-msgid "Create a static view"
+#: ../lib/advene/gui/edit/elements.py:1120
+msgid "MIMEType"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3126
-msgid "Highlight selection in other views"
+#: ../lib/advene/gui/edit/elements.py:1345
+#, python-format
+msgid "Error: cannot find a content handler for %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3127
-#: ../lib/advene/gui/views/timeline.py:3713
-msgid "Tag selection"
+#: ../lib/advene/gui/edit/elements.py:1461
+#: ../lib/advene/gui/edit/elements.py:1686
+#, python-format
+msgid ""
+"Cannot read the data:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3128
-msgid "Delete selected annotations"
+#: ../lib/advene/gui/edit/elements.py:1485
+#: ../lib/advene/gui/edit/elements.py:1711
+msgid "Save content to..."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3129
-#, fuzzy
-msgid "Display selection in a table"
-msgstr "Zeige Kommentare an einer Timeline"
-
-#: ../lib/advene/gui/views/timeline.py:3130
-msgid "Center and zoom on selection"
+#: ../lib/advene/gui/edit/elements.py:1496
+#: ../lib/advene/gui/edit/elements.py:1724
+#, python-format
+msgid ""
+"Cannot save the data:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3131
-msgid "Edit selected annotations"
+#: ../lib/advene/gui/edit/elements.py:1515
+#: ../lib/advene/gui/edit/elements.py:1738
+msgid "Open a file (C-o)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3132
-msgid "Merge annotations"
+#: ../lib/advene/gui/edit/elements.py:1520
+#: ../lib/advene/gui/edit/elements.py:1743
+msgid "Save to a file (C-s)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3133
-#, fuzzy
-msgid "Display statistics"
-msgstr "Zeige Shortcuts"
+#: ../lib/advene/gui/edit/elements.py:1525
+#: ../lib/advene/gui/edit/elements.py:1748
+msgid "Reload the file (C-r)"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3258
-msgid "Goto previous page"
+#: ../lib/advene/gui/edit/elements.py:1531
+msgid "Insert a value from the browser (C-i)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3270
-#, fuzzy
-msgid "Goto next page"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/gui/edit/elements.py:1777
+msgid "Begin time is greater than end time"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3324
-msgid "Inspector locked. Click here or in the timeline background to unlock."
+#: ../lib/advene/gui/edit/elements.py:2049
+msgid "Expecting an integer."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3352
+#: ../lib/advene/gui/edit/elements.py:2081
+#, python-format
 msgid ""
-"Delete the selected annotations or drop an annotation here to delete it."
+"The %(attribute)s attribute could not be updated:\n"
+"\n"
+"%(error)s\n"
+"\n"
+"Resetting to the original value."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3374
+#: ../lib/advene/gui/edit/elements.py:2108
+#, python-format
 msgid ""
-"Drag an annotation type here to remove it from display.\n"
-"Click to edit all displayed types"
+"The following attributes cannot be updated:\n"
+"\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3386
-msgid "Selection actions"
+#: ../lib/advene/gui/edit/elements.py:2148
+#, python-format
+msgid ""
+"The following attributes could not be updated:\n"
+"\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3401
-msgid "Display relations"
+#: ../lib/advene/gui/edit/elements.py:2165
+msgid "Attribute"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3407
-#, fuzzy
-msgid "Display all relations"
-msgstr "Zeige Packet inhalt als Baumdarstellung"
-
-#: ../lib/advene/gui/views/timeline.py:3484
-msgid "Center on current player position."
+#: ../lib/advene/gui/edit/elements.py:2264
+msgid "Insert an element"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3500
-msgid "Automatically activate loop when clicking on an annotation"
+#: ../lib/advene/gui/edit/elements.py:2265
+msgid "Choose the element to insert."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3524
-msgid "Displayed"
+#: ../lib/advene/gui/edit/elements.py:2335
+#: ../lib/advene/gui/edit/elements.py:2378
+#, python-format
+msgid "Some tags contain invalid characters: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3532
-msgid "Not displayed"
+#: ../lib/advene/gui/edit/elements.py:2358
+msgid "Tags:"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3580
-msgid "< All <"
+#: ../lib/advene/gui/edit/transcribe.py:68
+msgid "Transcription importer"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3584
-msgid "> All >"
+#: ../lib/advene/gui/edit/transcribe.py:79
+msgid "Note taking"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3600
-msgid "Displayed annotation types"
-msgstr ""
+#: ../lib/advene/gui/edit/transcribe.py:81
+msgid "Take notes on the fly as a timestamped transcription"
+msgstr "Schreibe Noitzen on the fly als transkription mit zeitangabe"
 
-#: ../lib/advene/gui/views/timeline.py:3625
-msgid "Relation type"
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3625
-msgid "Display relation types"
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Click inserts timestamp marks"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3626
-msgid "Relation content"
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "Insert on single-click"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3626
-msgid "Display relation content"
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "A single click will insert the mark (else a double click is needed)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3627 ../lib/advene/gui/popup.py:516
-msgid "Highlight"
+#: ../lib/advene/gui/edit/transcribe.py:150
+msgid "Play on scroll"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3627
-msgid "Highlight active annotations"
+#: ../lib/advene/gui/edit/transcribe.py:150
+msgid "Play the new position upon timestamp modification"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3714
-msgid "Enter the tag for the selection"
+#: ../lib/advene/gui/edit/transcribe.py:151
+msgid "Generate empty annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:248
-msgid "No children in on_iter_children()!"
+#: ../lib/advene/gui/edit/transcribe.py:151
+msgid "If checked, generate annotations for empty text"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:263
-msgid "No children in on_iter_nth_child()"
+#: ../lib/advene/gui/edit/transcribe.py:152
+msgid "Reaction time"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:317
-msgid "List of views"
+#: ../lib/advene/gui/edit/transcribe.py:152
+msgid ""
+"Reaction time (substracted from current player time, except when paused.)"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:318
-msgid "Static views"
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Auto-insert"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:319
-msgid "Dynamic views"
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Automatic timestamp mark insertion"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:320
-msgid "Admin views"
+#: ../lib/advene/gui/edit/transcribe.py:154
+msgid "Automatic insertion delay"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:321
-msgid "Adhoc views"
+#: ../lib/advene/gui/edit/transcribe.py:154
+msgid ""
+"If autoinsert is active, timestamp marks will be automatically inserted when "
+"text is entered after no interaction since this delay (in ms).\n"
+"1000 is typically a good value."
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
-msgid "Tree view"
+#: ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size for text (0 for standard size)"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:453
-msgid "Package View"
+#: ../lib/advene/gui/edit/transcribe.py:215
+#: ../lib/advene/gui/edit/transcribe.py:219
+#: ../lib/advene/gui/edit/transcribe.py:377
+#: ../lib/advene/gui/edit/transcribe.py:381
+msgid "Invalid timestamp mark"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:42
-msgid "EditAccumulator"
+#: ../lib/advene/gui/edit/transcribe.py:508
+msgid "Ignore the following text (toggle)"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-#: ../lib/advene/gui/views/annotationdisplay.py:256
-msgid "Validate"
+#: ../lib/advene/gui/edit/transcribe.py:512
+msgid "Remove mark"
 msgstr ""
 
-#: ../lib/advene/gui/views/relation.py:68
-msgid "Relations view"
+#: ../lib/advene/gui/edit/transcribe.py:516
+msgid "Reaction-time offset"
 msgstr ""
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4339
-msgid "Caption"
+#: ../lib/advene/gui/edit/transcribe.py:520
+msgid "-1 sec"
 msgstr ""
 
-#: ../lib/advene/gui/views/caption.py:32
-msgid "Display a text caption below the video output"
+#: ../lib/advene/gui/edit/transcribe.py:523
+msgid "-0.5 sec"
 msgstr ""
 
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4338
-msgid "Scroller"
+#: ../lib/advene/gui/edit/transcribe.py:526
+msgid "-0.1 sec"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:329
-#, python-format
-msgid ""
-"View <b>%(title)s</b>\n"
-"Id: %(id)s"
+#: ../lib/advene/gui/edit/transcribe.py:530
+msgid "+1 sec"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:336
-msgid "Open in webbrowser"
+#: ../lib/advene/gui/edit/transcribe.py:533
+msgid "+0.5 sec"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:337
-#, python-format
-msgid "View applied to %s\n"
+#: ../lib/advene/gui/edit/transcribe.py:536
+msgid "+0.1 sec"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:342 ../lib/advene/gui/popup.py:496
-msgid "Activate"
+#: ../lib/advene/gui/edit/transcribe.py:627
+msgid "Invalid timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:345
-msgid "Open in GUI"
+#: ../lib/advene/gui/edit/transcribe.py:760
+#, python-format
+msgid "Invalid timestamp mark in conversion: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:347
-msgid "Unknown type of view??"
+#: ../lib/advene/gui/edit/transcribe.py:877
+#, python-format
+msgid "Cannot save the file: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:372
-msgid "Edit view"
+#: ../lib/advene/gui/edit/transcribe.py:888
+#: ../lib/advene/gui/edit/transcribe.py:972
+msgid "This will overwrite the current textual content. Are you sure?"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:381
-msgid "Open view"
+#: ../lib/advene/gui/edit/transcribe.py:891
+msgid "Select transcription file to load"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:421 ../lib/advene/gui/views/finder.py:487
+#: ../lib/advene/gui/edit/transcribe.py:908
 #, python-format
-msgid ""
-"%(type)s <b>%(title)s</b>\n"
-"Id: %(id)s"
+msgid "Cannot open %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:444
-msgid "Try to apply the query on..."
+#: ../lib/advene/gui/edit/transcribe.py:957
+msgid "Cannot import annotations: no existing interface"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:464 ../lib/advene/gui/popup.py:829
-#, fuzzy
-msgid "the package"
-msgstr "Kein Pakte"
-
-#: ../lib/advene/gui/views/finder.py:465 ../lib/advene/gui/popup.py:830
-#, fuzzy
-msgid "all annotations of the package"
-msgstr "Transkription für das gesamte Packet"
-
-#: ../lib/advene/gui/views/finder.py:466 ../lib/advene/gui/popup.py:831
-#, fuzzy
-msgid "the first annotation of the package"
-msgstr "Transkription für das gesamte Packet"
-
-#: ../lib/advene/gui/views/finder.py:509
-msgid "Edit resource"
+#: ../lib/advene/gui/edit/transcribe.py:959
+msgid "Select the annotation type to import"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
-#, fuzzy
-msgid "Package finder"
-msgstr "Pakete"
+#: ../lib/advene/gui/edit/transcribe.py:968
+#, fuzzy, python-format
+msgid "There are no annotations of type %s"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/views/finder.py:525
-msgid "Column-based package finder"
+#: ../lib/advene/gui/edit/transcribe.py:997
+msgid "Cannot convert the data: no associated package"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:41
-#, fuzzy
-msgid "AnnotationDisplay"
-msgstr "Kommentar Typ"
-
-#: ../lib/advene/gui/views/annotationdisplay.py:43
-#, fuzzy
-msgid "Display the contents of an annotation"
-msgstr "Zeige die Transkription für eine Anmerkung"
-
-#: ../lib/advene/gui/views/annotationdisplay.py:84
+#: ../lib/advene/gui/edit/transcribe.py:1000
 #, fuzzy
-msgid "No annotation"
-msgstr "von einem Anmerkungs Typ"
+msgid "Converting transcription"
+msgstr "T_ranskription"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:110
-#, python-format
-msgid ""
-"Schema %(schema)s (id %(id)s)\n"
-"%(description)s\n"
-"%(stats)s"
+#: ../lib/advene/gui/edit/transcribe.py:1006
+msgid "Choose the annotation-type where to create annotations.\n"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:231
-msgid "Screenshot"
+#: ../lib/advene/gui/edit/transcribe.py:1014
+msgid "Delete existing annotations in this type"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:193
-msgid "Invalid view id"
-msgstr ""
+#: ../lib/advene/gui/edit/transcribe.py:1037
+#, fuzzy
+msgid "Select type"
+msgstr "Wähle einen DVD"
 
-#: ../lib/advene/gui/views/__init__.py:239
-#, python-format
-msgid "Cannot save default options: %s"
+#: ../lib/advene/gui/edit/transcribe.py:1041
+msgid "You want to create a new type. Please specify its schema and title."
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:250
-#, python-format
-msgid "Default options saved for view %s"
+#: ../lib/advene/gui/edit/transcribe.py:1053
+msgid "Containing schema"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:282
-#, python-format
-msgid "Saving %s"
+#: ../lib/advene/gui/edit/transcribe.py:1066
+msgid "Export options"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:285
-msgid "Enter a view name to save this parametered view"
-msgstr ""
+#: ../lib/advene/gui/edit/transcribe.py:1071
+#, fuzzy
+msgid "Generate annotations for empty contents"
+msgstr "Erschaffe Anmerkung auf Basis des DVD Kapitels"
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4630
+#: ../lib/advene/gui/edit/transcribe.py:1096
 #, python-format
-msgid "Error: the identifier %s contains invalid characters."
+msgid "The %s identifier already exists. Choose another one."
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:303
-#, python-format
-msgid "Error: the view %s is not an adhoc view."
+#: ../lib/advene/gui/edit/transcribe.py:1135
+msgid "Notes converted"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:328
-msgid "HTML export"
+#: ../lib/advene/gui/edit/transcribe.py:1182
+msgid "Open"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:329
-msgid "Specify a name for the export view"
+#: ../lib/advene/gui/edit/transcribe.py:1183
+msgid "Save"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:348
-#, python-format
-msgid ""
-"View successfully exported as %s.\n"
-"Open it in the web browser ?"
+#: ../lib/advene/gui/edit/transcribe.py:1184
+msgid "Save As"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:427
-msgid "Actions"
+#: ../lib/advene/gui/edit/transcribe.py:1185
+msgid "Import"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:452
-msgid "Click or drag-and-drop to reattach view"
+#: ../lib/advene/gui/edit/transcribe.py:1185
+msgid "Import from annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:55
-msgid "Annotation table view"
+#: ../lib/advene/gui/edit/transcribe.py:1186
+msgid "Convert"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:57
-msgid "Display annotations in a table"
+#: ../lib/advene/gui/edit/transcribe.py:1186
+msgid "Convert to annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:227 ../lib/advene/gui/views/table.py:452
-msgid "Snapshot"
-msgstr ""
+#: ../lib/advene/gui/edit/transcribe.py:1188 ../lib/advene/rules/actions.py:685
+#, fuzzy
+msgid "Center"
+msgstr "Erstelle"
 
-#: ../lib/advene/gui/views/table.py:254 ../lib/advene/gui/main.py:4178
-msgid "Duration"
+#: ../lib/advene/gui/edit/transcribe.py:1188
+msgid "Center on the current mark"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:382 ../lib/advene/gui/views/table.py:511
-msgid "Export data to file..."
+#: ../lib/advene/gui/edit/transcribe.py:1189
+msgid "Find"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:391 ../lib/advene/gui/views/table.py:520
-#, python-format
-msgid "Error while exporting data to %(filename)s: %(error)s"
+#: ../lib/advene/gui/edit/transcribe.py:1189
+msgid "Search a string"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "id"
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Scale"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "type"
+#: ../lib/advene/gui/edit/transcribe.py:1213
+msgid "Automatically scroll to the mark position when playing"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "begin"
+#: ../lib/advene/gui/edit/transcribe.py:1215
+msgid "Autoscroll"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "end"
+#: ../lib/advene/gui/edit/transcribe.py:1222
+msgid "Autoinsert"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "content"
+#: ../lib/advene/gui/edit/transcribe.py:1224
+msgid "Automatically insert marks"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:460
-msgid "Generic table view"
+#: ../lib/advene/core/webcherry.py:51
+msgid "The webserver requires version 3.0 of CherryPy at least."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:462
-msgid "Display Advene elements in a table."
+#: ../lib/advene/core/webcherry.py:167
+#, python-format
+msgid ""
+"\n"
+"            <p>\n"
+"            <a href=\"/admin\">Server administration</a> |\n"
+"            <a href=\"/media\">Media control</a> |\n"
+"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
+"            </p>\n"
+"            Location: %(locationbar)s\n"
+"            <hr>\n"
+"            "
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element title"
+#: ../lib/advene/core/webcherry.py:227
+msgid "Unspecified Error"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element type"
+#: ../lib/advene/core/webcherry.py:228
+#, python-format
+msgid ""
+"\n"
+"        <h1>Error</h1>\n"
+"        <p>An error occurred:</p>\n"
+"        %s\n"
+"        "
 msgstr ""
+"\n"
+"        <h1>Fehler</h1>\n"
+"        <p>Ein Fehler tauchte auf:</p>\n"
+"        %s\n"
+"        "
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element id"
-msgstr ""
+#: ../lib/advene/core/webcherry.py:261
+msgid "<h1>No available mediaplayer</h1>"
+msgstr "<h1>Kein verfügbarer Mediaplayer</h1>"
 
-#: ../lib/advene/gui/widget.py:327
-#, fuzzy, python-format
-msgid "Set of %s annotations"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/core/webcherry.py:265
+#, python-format
+msgid ""
+"\n"
+"            <h1>Current STBV: %(currentstbv)s</h1>\n"
+"\n"
+"            <h1>Player status</h1>\n"
+"            <table border=\"1\">\n"
+"            <tr>\n"
+"            <td>Current position</td><td>%(position)s</td>\n"
+"            <td>Duration</td><td>%(duration)s</td>\n"
+"            <td>Player status</td><td>%(status)s</td>\n"
+"            </tr>\n"
+"            </table>\n"
+"            "
+msgstr ""
 
-#: ../lib/advene/gui/widget.py:1067
-#, fuzzy
-msgid "Save as..."
-msgstr "Kein Pakte"
+#: ../lib/advene/core/webcherry.py:284
+msgid "<h1>No playlist</h1>"
+msgstr "<h1>Keine Abspielliste</h1>"
 
-#: ../lib/advene/gui/widget.py:1072
-#, fuzzy
-msgid "Use current player position"
-msgstr "Aktuelle Sitzung speichern"
+#: ../lib/advene/core/webcherry.py:286
+#, python-format
+msgid ""
+"<h1>Current playlist</h1>\n"
+"                <ul>%s</ul>"
+msgstr ""
+"<h1>Gegenwärtige Abspielliste</h1>\n"
+"                <ul>%s</ul>"
 
-#: ../lib/advene/gui/widget.py:1078
-msgid "Adjust timestamp"
+#: ../lib/advene/core/webcherry.py:288
+msgid ""
+"\n"
+"                <form action=\"/media/play\" method=\"GET\">\n"
+"                Starting pos: <input type=\"text\" name=\"position\" value="
+"\"0\">\n"
+"                <input type=\"submit\" value=\"Play\">\n"
+"                </form>\n"
+"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
+"\">Pause</a><br>\n"
+"                "
 msgstr ""
+"\n"
+"                <form action=\"/media/play\" method=\"GET\">\n"
+"                Start position: <input type=\"text\" name=\"position\" value="
+"\"0\">\n"
+"                <input type=\"submit\" value=\"Play\">\n"
+"                </form>\n"
+"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
+"\">Pause</a><br>\n"
+"                "
 
-#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
-#, fuzzy
-msgid "_Select player"
-msgstr "Wähle einen DVD"
+#: ../lib/advene/core/webcherry.py:295
+msgid ""
+"<hr />\n"
+"            <form action=\"/media/load\" method=\"GET\">\n"
+"            Add a new file (<em>dvd</em> to play a DVD):\n"
+"            <input type=\"text\" name=\"filename\">\n"
+"            <input type=\"submit\" value=\"Add\">\n"
+"            </form>"
+msgstr ""
+"<hr />\n"
+"            <form action=\"/media/load\" method=\"GET\">\n"
+"            Neue DAtei hinzufügen (<em>dvd</em> für  DVD):\n"
+"            <input type=\"text\" name=\"filename\">\n"
+"            <input type=\"submit\" value=\"Add\">\n"
+"            </form>"
 
-#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
-msgid "_View"
-msgstr "_Zeige"
+#: ../lib/advene/core/webcherry.py:301
+msgid ""
+"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
+msgstr ""
+"<h3><a href=\"/media/snapshot\">zugriff auf gegenwärtige Paket "
+"Schnappschüsse</h3>"
 
-#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
-msgid "Packages"
-msgstr "Pakete"
+#: ../lib/advene/core/webcherry.py:310
+#, python-format
+msgid "Unknown STBV identifier: %s"
+msgstr "Unbekannte STBV identifier: %s"
 
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
-msgid "Open recent"
+#: ../lib/advene/core/webcherry.py:385
+msgid "Media information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:239
-msgid "Input from the keyboard (function keys)"
+#: ../lib/advene/core/webcherry.py:398
+msgid "File added"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:243
-msgid "_File"
-msgstr "_Datei"
+#: ../lib/advene/core/webcherry.py:399
+#, python-format
+msgid "<p><strong>%s has been added to the playlist</strong></p>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:244
-#, fuzzy
-msgid "_New package"
-msgstr "Kein Pakte"
+#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
+msgid "Access to packages snapshots"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:244
-#, fuzzy
-msgid "Create a new package"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
+msgid "Unknown package alias"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:245
-#, fuzzy
-msgid "_Open package"
-msgstr "Kein Pakte"
+#: ../lib/advene/core/webcherry.py:426
+#, python-format
+msgid "Available snapshots for %s"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:245
-#, fuzzy
-msgid "Open a package"
-msgstr "Kein Pakte"
+#: ../lib/advene/core/webcherry.py:432
+#, python-format
+msgid ""
+"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
+"a></p>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:246
-#, fuzzy
-msgid "Show recently opened packages"
-msgstr "Aktuelle Sitzung speichern"
+#: ../lib/advene/core/webcherry.py:439
+msgid "Done"
+msgstr "Erledigt"
 
-#: ../lib/advene/gui/main.py:247
-#, fuzzy
-msgid "_Save package"
-msgstr "Kein Pakte"
+#: ../lib/advene/core/webcherry.py:441
+msgid "Pending"
+msgstr "Ausstehend"
 
-#: ../lib/advene/gui/main.py:247
-#, fuzzy
-msgid "Save the package"
-msgstr "Kein Pakte"
+#: ../lib/advene/core/webcherry.py:487
+#, fuzzy, python-format
+msgid "Unknown annotation id: %s"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:248
-#, fuzzy
-msgid "Save package as..."
-msgstr "Kein Pakte"
+#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
+#, python-format
+msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
+msgstr "Kann nicht stbvid %(stbvid)s: %(error)s aktivieren"
 
-#: ../lib/advene/gui/main.py:248
-#, fuzzy
-msgid "Save the package as..."
-msgstr "Kein Pakte"
+#: ../lib/advene/core/webcherry.py:675
+msgid "<p>No GUI is available."
+msgstr "<p>Kein GUI zur Verfügung"
 
-#: ../lib/advene/gui/main.py:249
-#, fuzzy
-msgid "Close package"
-msgstr "Kein Pakte"
+#: ../lib/advene/core/webcherry.py:677
+#, python-format
+msgid "<p>Opened adhoc views: %s</p>"
+msgstr "<p>Geöffnete adhoc ansichten: %s</p>"
 
-#: ../lib/advene/gui/main.py:249
-#, fuzzy
-msgid "Close the package"
-msgstr "Kein Pakte"
+#: ../lib/advene/core/webcherry.py:678
+msgid "<p>Available adhoc views:</p><ul>"
+msgstr "<p>Verfügbare adhoc ansichten:</p><ul>"
 
-#: ../lib/advene/gui/main.py:251
-msgid "Save session"
-msgstr "Sitzung speichern"
+#: ../lib/advene/core/webcherry.py:699
+#, python-format
+msgid "<p>Current stbv: %s</p>"
+msgstr "<p>Gegenwärtige stbv: %s</p>"
 
-#: ../lib/advene/gui/main.py:251
-#, fuzzy
-msgid "Save the current session (list of opened packages)"
-msgstr "Aktuelle Sitzung speichern"
+#: ../lib/advene/core/webcherry.py:700
+#, python-format
+msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
+msgstr "<p>Du kannst nicht folgende STBV:</p><ul>%s</ul> aktivieren"
 
-#: ../lib/advene/gui/main.py:252
-msgid "Save workspace"
+#: ../lib/advene/core/webcherry.py:702
+msgid "Activate and play"
+msgstr "Aktivieren und Abspielen"
+
+#: ../lib/advene/core/webcherry.py:708
+msgid "Application information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
-msgid "...as package view"
+#: ../lib/advene/core/webcherry.py:778
+msgid "Missing element id parameter"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:254
-msgid "...as standard workspace"
+#: ../lib/advene/core/webcherry.py:782
+#, python-format
+msgid "No existing element with id %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:254
-msgid "Use the current layout as standard workspace in the future"
+#: ../lib/advene/core/webcherry.py:791
+#, python-format
+msgid "<p>The GUI view %s does not exist.</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:256
-#, fuzzy
-msgid "Associate a video _File"
-msgstr "Wähle eine Video Datei"
+#: ../lib/advene/core/webcherry.py:798
+msgid "Invalid request"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:256
-#, fuzzy
-msgid "Associate a video file"
-msgstr "Wähle eine Video Datei"
+#: ../lib/advene/core/webcherry.py:803
+msgid "Invalid configuration variable name"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:257
-#, fuzzy
-msgid "Associate a _DVD"
-msgstr "Wähle eine DVD Kapitel"
+#: ../lib/advene/core/webcherry.py:815
+msgid "Invalid value"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:257
-#, fuzzy
-msgid "Associate a chapter from a DVD"
-msgstr "Wähle eine DVD Kapitel"
+#: ../lib/advene/core/webcherry.py:819
+#, python-format
+msgid "Unsupported method %s"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:258
-#, fuzzy
-msgid "Associate a _Video stream"
-msgstr "Wähle einen video stream"
+#: ../lib/advene/core/webcherry.py:845
+#, python-format
+msgid ""
+"\n"
+"        <h1>Authorized hosts</h1>\n"
+"        <table border=\"1\">\n"
+"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
+"        %s\n"
+"        </table>\n"
+"        <form method=\"GET\">\n"
+"        Add a new hostname to the list :<br>\n"
+"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
+"\"Add\">\n"
+"        </form>\n"
+"        "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:258
-msgid "Enter a video stream address"
-msgstr "Gebe eine Video Stream Adresse ein"
+#: ../lib/advene/core/webcherry.py:859
+msgid "Access control"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:260
-msgid "_Import File"
-msgstr "Datei _importieren"
+#: ../lib/advene/core/webcherry.py:864
+msgid "Access control - add a hostname"
+msgstr "Zugriffs Kontrolle - Füge Hostname hinzu"
 
-#: ../lib/advene/gui/main.py:260
-msgid "Import data from an external source"
-msgstr "Importiere Daten von einer Externen Quelle"
+#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
+#, python-format
+msgid "<strong>Error: %s is an invalid hostname.</strong>"
+msgstr "<strong>Fehler: %s ist ein ungültiger hostname.</strong>"
 
-#: ../lib/advene/gui/main.py:261
-#, fuzzy
-msgid "_Process video"
-msgstr "Datei _importieren"
+#: ../lib/advene/core/webcherry.py:875
+#, python-format
+msgid "<p>Added %s to authorized hosts list.</p>"
+msgstr "<p>Füge %s zur authorisierten host liste.</p>"
 
-#: ../lib/advene/gui/main.py:261
-#, fuzzy
-msgid "Import data from video processing algorithms"
-msgstr "Importiere Daten von einer Externen Quelle"
+#: ../lib/advene/core/webcherry.py:881
+msgid "Access control - delete a hostname"
+msgstr "Zugriffs Kontrolle - Lösche einen Hostnamen"
 
-#: ../lib/advene/gui/main.py:263
-msgid "Merge package"
-msgstr "Vereine Packete"
+#: ../lib/advene/core/webcherry.py:889
+msgid "<strong>Cannot remove the localhost access.</strong>"
+msgstr "<strong>Du kannst nicht den localhost zugriff löschen</strong>"
 
-#: ../lib/advene/gui/main.py:263
-msgid "Merge elements from another package"
-msgstr "Füge Elemente von anderen Packeten hinzu"
+#: ../lib/advene/core/webcherry.py:894
+#, python-format
+msgid "<p>Removed %s from authorized hosts list.</p>"
+msgstr "<p>lösche %s von der Host liste</p>"
 
-#: ../lib/advene/gui/main.py:264
-msgid "Import _DVD chapters"
-msgstr "Importiere _DVD Kapitel"
+#: ../lib/advene/core/webcherry.py:896
+#, python-format
+msgid "<p>%s is not in authorized hosts list.</p>"
+msgstr "<p>%s ist keine authorisierte Hostliste</p>"
 
-#: ../lib/advene/gui/main.py:264
-msgid "Create annotations based on DVD chapters"
-msgstr "Erschaffe Anmerkung auf Basis des DVD Kapitels"
+#: ../lib/advene/core/webcherry.py:945
+msgid "Server Administration"
+msgstr "Server Administration"
 
-#: ../lib/advene/gui/main.py:266
-#, fuzzy
-msgid "_Export..."
-msgstr "Datei _importieren"
+#: ../lib/advene/core/webcherry.py:953
+#, python-format
+msgid ""
+"\n"
+"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
+"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
+"        <p><a href=\"/action\">List available actions</a></p>\n"
+"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
+"        <p><a href=\"/media\">Media control</a></p>\n"
+"        <p><a href=\"/application\">Display GUI status</a></p>\n"
+"        <p><a href=\"/admin/list\">List available files</a></p>\n"
+"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
+"p>\n"
+"        <p>Display mode : %(displaymode)s</p>\n"
+"        <hr>\n"
+"        <p>Load a package :\n"
+"        <form action=\"/admin/load\" method=\"GET\">\n"
+"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
+"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
+"        <input type=\"submit\" value=\"Load\" />\n"
+"        </form>\n"
+"        </body></html>\n"
+"        "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:266
-#, fuzzy
-msgid "Export data to another format"
-msgstr "Importiere Daten von einer Externen Quelle"
+#: ../lib/advene/core/webcherry.py:983
+msgid "Available files"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:267
-msgid "_Website export..."
+#: ../lib/advene/core/webcherry.py:1009
+msgid "You should specify an alias"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:267
-msgid "Export views to a website"
+#: ../lib/advene/core/webcherry.py:1014
+msgid "You should specify an uri"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:269
-#, fuzzy
-msgid "_Quit"
-msgstr "_Bearbeite"
+#: ../lib/advene/core/webcherry.py:1020
+#, python-format
+msgid "Package %s loaded"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:271
-msgid "_Edit"
-msgstr "_Bearbeite"
+#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
+#, python-format
+msgid ""
+"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
+"the <a href=\"/packages\">package list</a>."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:272
-msgid "_Undo"
+#: ../lib/advene/core/webcherry.py:1024
+#, python-format
+msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:273
-#, fuzzy
-msgid "_Find"
-msgstr "_Datei"
+#: ../lib/advene/core/webcherry.py:1035
+#, python-format
+msgid "Package %s deleted"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:274
-msgid "_Delete"
+#: ../lib/advene/core/webcherry.py:1036
+msgid "<p>Go to the <a href=\"/packages\">package list</a>."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:275
-msgid "Create"
-msgstr "Erstelle"
+#: ../lib/advene/core/webcherry.py:1039
+#, python-format
+msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:284
-msgid "P_ackage properties"
-msgstr "P_acket Eigenschaften"
+#: ../lib/advene/core/webcherry.py:1056
+#, python-format
+msgid "Package %s saved"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:284
-msgid "Edit package properties"
-msgstr "Bearbeite Packet Eigentschaften"
+#: ../lib/advene/core/webcherry.py:1060
+#, python-format
+msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:285
-msgid "P_references"
-msgstr "E_instellungen"
+#: ../lib/advene/core/webcherry.py:1070
+msgid "Server reset"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:285
-msgid "Interface preferences"
-msgstr "Oberflächen Eigentschaften"
+#: ../lib/advene/core/webcherry.py:1076
+msgid "Available TALES methods"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:289
-msgid "_Start Web Browser"
+#: ../lib/advene/core/webcherry.py:1117
+msgid "Loaded package(s)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:289
-msgid "Start the web browser"
+#: ../lib/advene/core/webcherry.py:1119
+msgid ""
+"\n"
+"        <h1>Loaded package(s)</h1>\n"
+"        <table border=\"1\" width=\"50%\">\n"
+"        <tr>\n"
+"        <th>Alias</th>\n"
+"        <th>Action</th>\n"
+"        <th>URI</th>\n"
+"        <th>Annotations</th>\n"
+"        </tr>\n"
+"        "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:291
-msgid "Simplify interface"
+#: ../lib/advene/core/webcherry.py:1131
+#, python-format
+msgid ""
+"<tr>\n"
+"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
+"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
+"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
+"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
+"            <td>%(uri)s</td>\n"
+"            <td>%(size)d</td>\n"
+"            </tr>\n"
+"            "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:291
-#, fuzzy
-msgid "Simplify the application interface (toggle)"
-msgstr "Zeige Kommentare an einer Timeline"
+#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
+#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
+#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
+#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
+#: ../lib/advene/core/webcherry.py:2039
+msgid "Error"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:292
-msgid "Evaluator"
+#: ../lib/advene/core/webcherry.py:1205
+#, python-format
+msgid "The TALES expression %s is not valid."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:292
-msgid "Open python evaluator window"
+#: ../lib/advene/core/webcherry.py:1256
+msgid "Content mode not available on non-content data"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4022
-msgid "Webserver log"
+#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
+#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
+#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
+#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
+#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
+#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
+msgid "<h1>Error</h1>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:296
-msgid "_Player"
-msgstr "_Spieler"
+#: ../lib/advene/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
+#, python-format
+msgid ""
+"<p>There was an error in the template code.</p>\n"
+"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"                <p>Error message: <em>%(message)s</em></p>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:297
-msgid "Go to _Time"
+#: ../lib/advene/core/webcherry.py:1290
+#, python-format
+msgid ""
+"<p>An invalid character is in the Context:</p>\n"
+"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
+"pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:297
-msgid "Goto a specified time code"
+#: ../lib/advene/core/webcherry.py:1298
+#, python-format
+msgid ""
+"<p>There was an error in the TALES expression.</p>\n"
+"                <pre>%s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save _ImageCache"
-msgstr "Sichere _ImageCache"
+#: ../lib/advene/core/webcherry.py:1318
+#, python-format
+msgid ""
+"<p>There was an error.</p>\n"
+"                <pre>%s</pre>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save the contents of the ImageCache to disk"
-msgstr "Sichere den Inhalt des ImageCaches auf die Festplatte"
+#: ../lib/advene/core/webcherry.py:1342
+#, python-format
+msgid ""
+"\n"
+"            <hr>\n"
+"            <p>\n"
+"            Location: %(location)s<br>\n"
+"            <form name=\"navigation\" method=\"GET\">\n"
+"            <a href=\"%(levelup)s\">Up one level</a> |\n"
+"            Next level :\n"
+"            <select name=\"path\" onchange=\"submit()\">\n"
+"            "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:299
-#, fuzzy
-msgid "Reset ImageCache"
-msgstr "Sichere _ImageCache"
+#: ../lib/advene/core/webcherry.py:1360
+msgid ""
+"\n"
+"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
+"            <option selected></option>\n"
+"            "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:299
-#, fuzzy
-msgid "Reset the ImageCache"
-msgstr "Sichere _ImageCache"
+#: ../lib/advene/core/webcherry.py:1378
+#, python-format
+msgid ""
+"<hr>\n"
+"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
+"package %(uri)s returns %(value)s</p>\n"
+"            "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:300
-msgid "_Restart player"
-msgstr "_Neustart Spieler"
+#: ../lib/advene/core/webcherry.py:1414
+#, python-format
+msgid "<p>Package <strong>%s</strong> not loaded</p>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:300
-#, fuzzy
-msgid "Restart the player"
-msgstr "_Neustart Spieler"
+#: ../lib/advene/core/webcherry.py:1456
+#, python-format
+msgid ""
+"<p>There was an error in the template code.</p>\n"
+"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"            <p>Error message: <em>%(message)s</em></p>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:302
-#, fuzzy
-msgid "Update annotation screenshots"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/core/webcherry.py:1464
+#, python-format
+msgid ""
+"<p>There was an error in the expression.</p>\n"
+"            <pre>%s</pre>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:302
-msgid "Update screenshots for annotation bounds"
+#: ../lib/advene/core/webcherry.py:1472
+#, python-format
+msgid ""
+"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
+"            %(type)s\n"
+"            %(value)s\n"
+"            %(traceback)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:303
-msgid "Detect shots"
+#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
+msgid "<p>Cannot set the value : invalid path</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:303
-msgid "Automatically detect shots"
+#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
+#, python-format
+msgid ""
+"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
+"%(folder)s could not be created.</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:304
-msgid "Select the player plugin"
+#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
+msgid "Resource successfuly created/updated"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:307
-msgid "No package"
-msgstr "Kein Pakte"
+#: ../lib/advene/core/webcherry.py:1611
+msgid "Value successfuly updated"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:309
-msgid "_Help"
-msgstr "_Hilfe"
+#: ../lib/advene/core/webcherry.py:1613
+#, python-format
+msgid ""
+"Unable to update the attribute %(attribute)s for element %(element)s: "
+"%(error)s."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:310
-#, fuzzy
-msgid "Help"
-msgstr "_Hilfe"
+#: ../lib/advene/core/webcherry.py:1724
+msgid "<p>Invalid request</p>."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:311
-msgid "Get support"
+#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
+msgid "Value updated"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:312
-msgid "Check for updates"
+#: ../lib/advene/core/webcherry.py:1789
+#, python-format
+msgid ""
+"\n"
+"                <h1>Value updated</h1>\n"
+"                The value of %(path)s has been updated to\n"
+"                <pre>\n"
+"                %(value)s\n"
+"                </pre>\n"
+"                "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:313
-msgid "Display shortcuts"
-msgstr "Zeige Shortcuts"
+#: ../lib/advene/core/webcherry.py:1806
+#, python-format
+msgid ""
+"\n"
+"                    <h1>Value updated</h1>\n"
+"                    The value of %(path)s has been updated to\n"
+"                    <pre>\n"
+"                    %(value)s\n"
+"                    </pre>\n"
+"                    "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:314
-#, fuzzy
-msgid "Display logfile"
-msgstr "Verbindungs Type"
+#: ../lib/advene/core/webcherry.py:1817
+#, python-format
+msgid ""
+"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:314
-#, fuzzy
-msgid "Display log file"
-msgstr "Verbindungs Type"
+#: ../lib/advene/core/webcherry.py:1860
+msgid "Cannot create an element in something else than a package."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:315
-msgid "Open logfile folder"
+#: ../lib/advene/core/webcherry.py:1877
+#, python-format
+msgid "The identifier %s already exists."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:315
-msgid ""
-"Display logfile folder. It can help when sending the advene.log file by e-"
-"mail."
+#: ../lib/advene/core/webcherry.py:1889
+#, python-format
+msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:316
-msgid "_About"
+#: ../lib/advene/core/webcherry.py:1895
+msgid "View created"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3750
+#: ../lib/advene/core/webcherry.py:1896
 #, python-format
 msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
+"\n"
+"                 <h1>View <em>%(id)s</em> created</h1>\n"
+"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
+"created.</p>\n"
+"                 "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:344
-msgid "Open a package file"
+#: ../lib/advene/core/webcherry.py:1912
+#, python-format
+msgid "Missing %s parameter"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:345
-msgid "Save the current package"
+#: ../lib/advene/core/webcherry.py:1915
+#, python-format
+msgid "Relation type %s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:346
-msgid "Save the package with a new name"
+#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
+#, python-format
+msgid "Annotation %s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:347
-msgid "Select movie file..."
+#: ../lib/advene/core/webcherry.py:1928
+#, python-format
+msgid ""
+"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
+"p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:348
-msgid "Select DVD"
+#: ../lib/advene/core/webcherry.py:1940
+#, python-format
+msgid ""
+"<p>Error while creating relation between %(member1)s and %(member2)s :</"
+"p><pre>%(error)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:352
-#, fuzzy
-msgid "Create a text annotation"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/main.py:353
-#, fuzzy
-msgid "Create a graphical annotation"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/main.py:359
-msgid "List recently opened packages"
+#: ../lib/advene/core/webcherry.py:1943
+msgid "Relation created"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:389
-msgid "Snapshotter activity"
+#: ../lib/advene/core/webcherry.py:1944
+#, python-format
+msgid "<h1>Relation <em>%s</em> created</h1>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/core/webcherry.py:1954
 #, python-format
-msgid "%d queued requests"
+msgid "Annotation type %s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:392
-msgid "Cancel all requests"
+#: ../lib/advene/core/webcherry.py:1971
+#, python-format
+msgid ""
+"<p>Error while creating annotation of type %(type)s :<pre>\n"
+"                    %(errortype)s\n"
+"                    %(value)s\n"
+"                    %(traceback)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:397
-#, fuzzy
-msgid "No snapshotter"
-msgstr "Zeige Shortcuts"
-
-#: ../lib/advene/gui/main.py:419
-msgid "No snapshotting activity"
+#: ../lib/advene/core/webcherry.py:1983
+#, python-format
+msgid "Annotation %s created"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:423
-msgid "Snapshotting"
+#: ../lib/advene/core/webcherry.py:1985
+#, python-format
+msgid "Error: Cannot create an object of type %s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:440
-#, fuzzy
-msgid "Display application log messages"
-msgstr "Verbindungs Type"
-
-#: ../lib/advene/gui/main.py:482
-msgid "Quicksearch lists"
+#: ../lib/advene/core/webcherry.py:1988
+#, python-format
+msgid ""
+"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
+"code></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:488
-msgid "Please specify the lists of elements to be searched."
+#: ../lib/advene/core/webcherry.py:2001
+msgid "Available actions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:507
+#: ../lib/advene/core/webcherry.py:2010
 #, python-format
-msgid ""
-"Searching on %s.\n"
-"Left click to launch the search, right-click to set the quicksearch options"
+msgid "<li>%(name)s: %(value)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:508
+#: ../lib/advene/core/webcherry.py:2033
 #, python-format
-msgid "String to search in %s"
+msgid "<p>Unknown action</p><pre>Action: %s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
-msgid "Tracing : "
+#: ../lib/advene/core/webcherry.py:2040
+msgid "Missing parameter(s) :<ul>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:521
-msgid "off"
+#: ../lib/advene/core/webcherry.py:2076
+msgid "Advene web resources"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:525
-#, fuzzy
-msgid "on"
-msgstr "Erledigt"
-
-#: ../lib/advene/gui/main.py:545
-msgid "Launch search"
+#: ../lib/advene/core/webcherry.py:2082
+msgid "Advene webserver"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:550
-msgid "Ignore case"
+#: ../lib/advene/core/webcherry.py:2083
+#, python-format
+msgid ""
+"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
+"webserver run by %(userid)s on %(serveraddress)s.</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:555
-msgid "Searched elements"
+#: ../lib/advene/core/webcherry.py:2090
+msgid ""
+" <p>No package is loaded. You can access the <a href=\"/admin\">server "
+"administration page</a>.<p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:625
-msgid "Playing"
+#: ../lib/advene/core/webcherry.py:2100
+#, python-format
+msgid ""
+"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
+"view</a>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:626
-msgid "Pause"
+#: ../lib/advene/core/webcherry.py:2102
+#, python-format
+msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:627
-msgid "Init"
+#: ../lib/advene/core/webcherry.py:2104
+msgid "the <a href=\"/packages\">loaded packages' data</a>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:629
-msgid "Undefined"
+#: ../lib/advene/core/webcherry.py:2105
+#, python-format
+msgid ""
+" <p>You can either access %s or the <a href=\"/admin\">server administration "
+"page</a>.<p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:901
-msgid "Enter the new time value"
+#: ../lib/advene/core/webcherry.py:2107
+#, python-format
+msgid ""
+"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
+"fr/advene/\">Advene</a> v. %s.</em></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:925
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
 #, python-format
-msgid "Replace content in %d elements"
+msgid "Cannot start HTTP server: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:938
-msgid "Find word"
+#: ../lib/advene/core/controller.py:375
+msgid "Exception (traceback in console):"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:945
-msgid "Replace by"
+#: ../lib/advene/core/controller.py:408
+msgid "No available GUI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:973
-#, python-format
-msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
+#: ../lib/advene/core/controller.py:427
+msgid "No available event handler"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:982
-msgid "The video extracting feature is not available."
+#: ../lib/advene/core/controller.py:435
+msgid "No available gui"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:985
-#, fuzzy
-msgid "Video export"
-msgstr "_Einstellung Spieler"
-
-#: ../lib/advene/gui/main.py:987
+#: ../lib/advene/core/controller.py:451
 #, python-format
-msgid "Exporting video montage/fragment to %%(filename)s"
+msgid "Warning: redefining an existing feature %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:989
-msgid "Please choose a destination filename"
+#: ../lib/advene/core/controller.py:583
+msgid "All annotations"
 msgstr ""
 
-#: ../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."
+#: ../lib/advene/core/controller.py:585
+msgid "Ids"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1069
+#: ../lib/advene/core/controller.py:773
 #, 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."
+"Cannot start the webserver\n"
+"The following processes seem to use the %(port)s port: %(processes)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1071
+#: ../lib/advene/core/controller.py:822 ../lib/advene/core/controller.py:833
 #, python-format
-msgid ""
-"You are now working with the following video:\n"
-"%s"
+msgid "Loaded %(uri)s as %(alias)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1188
-msgid "Open this view..."
+#: ../lib/advene/core/controller.py:824 ../lib/advene/core/controller.py:836
+#, python-format
+msgid "Cannot load package from file %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1205
-msgid "_All available views"
+#: ../lib/advene/core/controller.py:875
+msgid "Deactivating web server"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1224
-msgid "Transcription of annotations"
+#: ../lib/advene/core/controller.py:992
+#, python-format
+msgid "Cannot get audio volume: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1227
-msgid "Note-taking editor"
+#: ../lib/advene/core/controller.py:1042
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1228
-msgid "Active bookmarks"
+#: ../lib/advene/core/controller.py:1246
+#, python-format
+msgid "Found matching video file in moviepath: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1229
-#, fuzzy
-msgid "Schema editor"
-msgstr "Schema"
+#: ../lib/advene/core/controller.py:1287 ../lib/advene/core/controller.py:1289
+msgid "Analysis of "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:1233
-msgid "TALES explorer"
+#: ../lib/advene/core/controller.py:1489
+msgid "Cannot split the annotation: the given position is outside."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1234
-msgid "Dynamic montage"
+#: ../lib/advene/core/controller.py:1654
+#, python-format
+msgid "Cannot find the template package %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1238
-msgid "Open a comment view in the web browser"
+#: ../lib/advene/core/controller.py:1697
+#, python-format
+msgid "Cannot read the imported package %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1239
-msgid "Create or open a comment view"
+#: ../lib/advene/core/controller.py:1932
+msgid "Package URI has changed. Reloading package with new URI."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1242
+#: ../lib/advene/core/controller.py:1950
 msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
+"Cannot load package: the following annotations do not have Millisecond "
+"fragments:"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1243
-#, fuzzy
-msgid "Display edition history"
-msgstr "Zeige Kommentare an einer Timeline"
+#: ../lib/advene/core/controller.py:1977
+#, python-format
+msgid "Cannot handle master attribute, the package %s is not imported."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:1244
-#, fuzzy
-msgid "Visualise the activity trace preview"
-msgstr "Aktivieren und Abspielen"
+#: ../lib/advene/core/controller.py:1979
+#, python-format
+msgid "Checking master package %s for not yet imported elements."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:1245
-#, fuzzy
-msgid "Visualise the activity trace as a timeline"
-msgstr "Aktivieren und Abspielen"
+#: ../lib/advene/core/controller.py:2019
+msgid "Standard summary"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:1274
-msgid "The webserver could not be started. Static views cannot be accessed."
+#: ../lib/advene/core/controller.py:2024
+msgid "Default view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1352
+#: ../lib/advene/core/controller.py:2066
 #, python-format
 msgid ""
-"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
-"released</b> on %(date)s, but you are running version %(current)s.\n"
-"You can download the latest version from the Advene website: http://liris."
-"cnrs.fr/advene/</span>"
+"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1357
-msgid "Go to the website"
+#: ../lib/advene/core/controller.py:2156
+#, python-format
+msgid "Got exception %s when stopping player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1363
-#, fuzzy
-msgid "Advene release"
-msgstr "Advene"
-
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/core/controller.py:2242
 #, python-format
-msgid "You are using a up-to-date version of Advene (%(current)s)."
+msgid "Raised exception in update_status: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1369
-msgid "Advene is up-to-date"
+#: ../lib/advene/core/controller.py:2269
+msgid "Unable to start the player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1383
-msgid "Choose a color"
-msgstr ""
+#: ../lib/advene/core/controller.py:2478
+#, fuzzy, python-format
+msgid "Comment on set of %d annotations"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:1415
-msgid "Select an annotation to loop on it"
+#: ../lib/advene/core/controller.py:2480
+#, python-format
+msgid "Comment on %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1417
+#: ../lib/advene/core/controller.py:2484
 #, python-format
-msgid "Looping on %s"
+msgid ""
+"<h1>Comment on %(title)s</h1>\n"
+"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
+"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
+"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
+"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
+"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
+"\"%(imgurl)s\" ></img></a></span>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1476 ../lib/advene/gui/main.py:2367
-msgid "No active dynamic view"
+#: ../lib/advene/core/controller.py:2494
+#, fuzzy, python-format
+msgid "List of %s annotations"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/core/controller.py:2529
+#, python-format
+msgid "Cannot export to %(filename)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1487
-msgid "Create a new dynamic view."
+#: ../lib/advene/core/controller.py:2544 ../lib/advene/core/controller.py:2553
+#, python-format
+msgid "Error when exporting: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1506
-msgid "Edit the current dynamic view."
+#: ../lib/advene/plugins/featuredetect.py:42
+msgid "Feature detection (face...)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1518
-msgid "No dynamic view"
+#: ../lib/advene/plugins/featuredetect.py:57
+msgid "Sensitivity level."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1550
-msgid "Playing rate"
+#: ../lib/advene/plugins/featuredetect.py:60
+msgid ""
+"Scale. Original image size will be divided by this factor, in order to speed "
+"up detection."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1698
-msgid "History"
+#: ../lib/advene/plugins/featuredetect.py:63
+msgid "Classifier"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1705
-msgid "Popups"
+#: ../lib/advene/plugins/featuredetect.py:77
+#, python-format
+msgid "Feature %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1709
-msgid ""
-"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"notebooks to embed various views."
+#: ../lib/advene/plugins/featuredetect.py:79
+#, python-format
+msgid "Detected %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1709
-msgid "Information"
+#: ../lib/advene/plugins/featuredetect.py:81
+msgid "Detection started"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2004
-msgid "Cannot create annotation. There is no schema to put it in."
+#: ../lib/advene/plugins/featuredetect.py:171
+#, python-format
+msgid "Detected %(count)d feature(s) until %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2013
+#: ../lib/advene/plugins/ted.py:39
 #, fuzzy
-msgid "Default annotation type"
-msgstr "von einem Anmerkungs Typ"
+msgid "TED importer"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:2025
+#: ../lib/advene/plugins/cutter.py:39
 #, fuzzy
-msgid "Annotation created"
+msgid "Audio segmentation"
 msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:2057
-msgid "Play/Pause [Control-Tab / Control-Space]"
+#: ../lib/advene/plugins/cutter.py:53
+msgid "Volume threshold (in dB, can be negative) before trigger."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2058
-#, python-format
-msgid "Rewind (%.02f s) [Control-Left]"
+#: ../lib/advene/plugins/cutter.py:56
+#: ../lib/advene/plugins/soundenveloppe.py:62
+msgid "Channel selection."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2059
+#: ../lib/advene/plugins/cutter.py:101
 #, python-format
-msgid "Forward (%.02f s) [Control-Right]"
+msgid "Detected %(count)d segments until %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2060
-msgid "Previous frame [Control-Down]"
+#: ../lib/advene/plugins/cutter.py:119
+msgid "Sound segment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2061
-msgid "Next frame [Control-Up]"
+#: ../lib/advene/plugins/cutter.py:120
+#, python-format
+msgid ""
+"Sound segmentation with a threshold of %(threshold)d dB - channel: "
+"%(channel)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2062
-msgid "Fullscreen"
+#: ../lib/advene/plugins/cutter.py:138
+msgid "Starting silence detection"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2214
-#, python-format
-msgid "Screenshot saved to %s"
+#: ../lib/advene/plugins/ttl.py:41
+#, fuzzy
+msgid "TurTLe (RDF) importer"
+msgstr "Datei _importieren"
+
+#: ../lib/advene/plugins/shotdetect.py:35
+msgid "Shotdetect importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2216
-#, python-format
-msgid ""
-"Screenshot saved in\n"
-" %s"
+#: ../lib/advene/plugins/shotdetect.py:79
+msgid "No shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2218
-#, fuzzy, python-format
+#: ../lib/advene/plugins/pocketsphinx.py:37
 msgid ""
-"Could not save screenshot:\n"
-" %s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/main.py:2226
-msgid "Save screenshot to..."
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2244
-msgid "Could not take snapshot with enough precision"
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2282
-#, fuzzy
-msgid "Export package data"
-msgstr "durchsuche Packet daten"
-
-#: ../lib/advene/gui/main.py:2284
-#, fuzzy, python-format
-msgid "Export annotation type %s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/main.py:2286
-#, fuzzy, python-format
-msgid "Export element %s"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/gui/main.py:2312
-#, fuzzy
-msgid "Export format"
-msgstr "Datei _importieren"
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:2349
-msgid " (modified)"
+#: ../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/gui/main.py:2352
-#, python-format
-msgid "Activate %s"
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2523
-msgid "Saved workspace"
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2575
-msgid "Restoring workspace..."
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2581
-#, python-format
-msgid "Do you wish to restore the %s workspace ?"
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2586
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:86
+#: ../lib/advene/plugins/barcode.py:58
 #, fuzzy
-msgid "Clear the current workspace"
-msgstr "Aktuelle Sitzung speichern"
+msgid "Generating annotations"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:2607
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#: ../lib/advene/plugins/barcode.py:83
 #, python-format
-msgid "View %s is not an adhoc view"
+msgid "%(count)d utterances until %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2618
-#, python-format
-msgid "Cannot identify the adhoc view %s"
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2632
-msgid "Choose the annotation type to display as transcription."
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2667
-#, python-format
-msgid ""
-"Error: unable to find an edit popup for %(element)s:\n"
-"%(error)s"
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2675
-#, fuzzy, python-format
-msgid "Editing %s"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/gui/main.py:2687
-#, python-format
-msgid "Comment view (%s)"
+#: ../lib/advene/plugins/brltty.py:62
+msgid "Input from the braille table."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2754
-#, python-format
-msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
+#: ../lib/advene/plugins/brltty.py:66
+msgid "BrlTTY not installed. There will be no braille support."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2765
-#, python-format
-msgid "Activating package %s"
+#: ../lib/advene/plugins/brltty.py:78
+msgid "Could not initialize BrlTTY. No braille support."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2793
-#, python-format
-msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
+#: ../lib/advene/plugins/brltty.py:84
+msgid "Display a message in Braille"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2826
-msgid "Do you want to restore the saved workspace ?"
+#: ../lib/advene/plugins/brltty.py:85
+msgid "Message to display."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2833
-msgid "Advene"
-msgstr "Advene"
-
-#: ../lib/advene/gui/main.py:3038
+#: ../lib/advene/plugins/brltty.py:256
 #, python-format
-msgid "Got exception %s. Trying to continue."
+msgid "BrlTTY connection error: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3062 ../lib/advene/gui/main.py:3083
-#: ../lib/advene/gui/main.py:4033
-msgid "Unknown"
+#: ../lib/advene/plugins/brltty.py:273
+msgid "Braille display: "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3153
-#, python-format
-msgid ""
-"The package(s) %s are modified.\n"
-"Save them now?"
-msgstr ""
+#: ../lib/advene/plugins/brltty.py:279
+#, fuzzy
+msgid "No message"
+msgstr "Kein Pakte"
 
-#: ../lib/advene/gui/main.py:3203
-msgid "Choose an annotation type."
-msgstr ""
+#: ../lib/advene/plugins/transcript.py:32
+#, fuzzy
+msgid "Youtube XML importer"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/main.py:3247
-msgid "No annotation type is defined."
+#: ../lib/advene/plugins/transcript.py:69
+#, fuzzy
+msgid "Importing transcript"
+msgstr "T_ranskription"
+
+#: ../lib/advene/plugins/aeidon_import.py:48
+msgid "Aeidon (subtitles) importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3256
-msgid "Creating a new type."
+#: ../lib/advene/plugins/anvil.py:35
+msgid "Anvil importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3260
-msgid "Title of the new type"
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3261
-msgid ""
-"Id of the new type. It is generated from the title, but you may change it if "
-"necessary."
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3265
+#: ../lib/advene/plugins/fcp.py:75
 #, fuzzy
-msgid "Specify the content-type for the annotation type"
-msgstr "Zeige die Transkription für eine Anmerkung"
+msgid "Importing subtitles"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:3267
-msgid "Content type"
+#: ../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/gui/main.py:3274 ../lib/advene/gui/main.py:3383
-msgid "Create a new schema"
+#: ../lib/advene/plugins/tracebuilder.py:219
+#, python-format
+msgid "Cannot export to %(fname)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3287
-msgid "Choose an existing schema for the new type, or create a new one"
+#: ../lib/advene/plugins/tracebuilder.py:1129
+#: ../lib/advene/plugins/tracebuilder.py:1168
+#, fuzzy, python-format
+msgid "Cannot export to %(host)s:%(port)s %(error)s"
+msgstr "Kann nicht stbvid %(stbvid)s: %(error)s aktivieren"
+
+#: ../lib/advene/plugins/tracebuilder.py:1143
+#, fuzzy, python-format
+msgid "Cannot send data to %(host)s:%(port)s %(error)s"
+msgstr "Kann nicht stbvid %(stbvid)s: %(error)s aktivieren"
+
+#: ../lib/advene/plugins/tracebuilder.py:1191
+#, fuzzy, python-format
+msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
+msgstr "Kann nicht stbvid %(stbvid)s: %(error)s aktivieren"
+
+#: ../lib/advene/plugins/tracebuilder.py:1197
+#, python-format
+msgid "%(nb)s events sent to %(host)s:%(port)s during session."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3290 ../lib/advene/gui/main.py:3398
-msgid "Specify the schema title"
+#: ../lib/advene/plugins/goodshotdetector.py:45
+msgid "Shot detection (Delakis version)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3294
-msgid "Title of the new schema"
+#: ../lib/advene/plugins/goodshotdetector.py:60
+msgid "Cache histogram alongside video files."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3295
+#: ../lib/advene/plugins/goodshotdetector.py:63
 msgid ""
-"Id of the new schema. It is generated from the title, but you may change it "
-"if necessary."
+"Parameter profile: safe will detect less cuts, aggressive will detect more "
+"cuts (but more false ones too). default is a compromise."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3318
-msgid ""
-"You specified a annotation-type identifier that already exists. Aborting."
+#: ../lib/advene/plugins/goodshotdetector.py:77
+#, python-format
+msgid "Shot (%s profile)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3336
-msgid "You specified a existing schema identifier. Using the existing schema."
+#: ../lib/advene/plugins/goodshotdetector.py:78
+#: ../lib/advene/plugins/shotdetectapp.py:87
+msgid "Detected shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3338
-msgid ""
-"You specified an existing identifier that does not reference a schema. "
-"Aborting."
+#: ../lib/advene/plugins/goodshotdetector.py:83
+msgid "Loading histogram"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3365
-msgid "Choose a schema."
+#: ../lib/advene/plugins/goodshotdetector.py:146
+msgid "Computing hdiff"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3425
-msgid "You specified an existing identifier. Aborting."
+#: ../lib/advene/plugins/goodshotdetector.py:153
+msgid "Detecting cuts"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3445
-#, python-format
-msgid "Package %s modified"
+#: ../lib/advene/plugins/goodshotdetector.py:180
+msgid "Detecting dissolves"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3446
-#, python-format
-msgid ""
-"The package %s has been modified but not saved.\n"
-"Save it now?"
-msgstr ""
+#: ../lib/advene/plugins/goodshotdetector.py:265
+#, fuzzy
+msgid "Extracting histogram"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:3456
-#, python-format
-msgid "%s snapshots"
-msgstr ""
+#: ../lib/advene/plugins/webannotation_import.py:45
+#, fuzzy
+msgid "WebAnnotation importer"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/main.py:3457
+#: ../lib/advene/plugins/webannotation_import.py:63
+#: ../lib/advene/plugins/owl_import.py:58 ../lib/advene/util/importer.py:363
 #, python-format
-msgid "Do you want to save the snapshots for media %s?"
+msgid "Converted from %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3464 ../lib/advene/gui/main.py:3473
-#: ../lib/advene/gui/main.py:4449
-#, python-format
-msgid "Cannot save imagecache for %(media)s: %(e)s"
+#: ../lib/advene/plugins/montagerenderer.py:43
+msgid "Cannot register montage renderer: Gnonlin plugins are not present."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3487
-msgid "first frame"
+#: ../lib/advene/plugins/transcriber.py:40
+msgid "Transcriber importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3488
-msgid "last frame"
+#: ../lib/advene/plugins/transcriber.py:86
+msgid "Parsing section information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3496
-#, fuzzy, python-format
-msgid "Click on %(bound)s of %(annotation)s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/main.py:3499
-#, fuzzy, python-format
-msgid "Update %(bound)s of %(annotation)s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/main.py:3518
-msgid "Click on the frame corresponding to the timestamp value"
+#: ../lib/advene/plugins/transcriber.py:254 ../lib/advene/util/importer.py:1520
+msgid "Creating package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3520
-msgid "Set new timestamp value"
+#: ../lib/advene/plugins/transcriber.py:260 ../lib/advene/util/importer.py:1527
+msgid "Creating annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3527
-msgid ""
-"<b>Annotation statistics</b>\n"
-"\n"
+#: ../lib/advene/plugins/transcriber.py:265 ../lib/advene/util/importer.py:1533
+msgid "Parsing header information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3599
-#, fuzzy
-msgid "Text annotation"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/main.py:3607 ../lib/advene/gui/main.py:3632
-#, fuzzy
-msgid "Cannot find an appropriate annotation type"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/main.py:3625
-#, fuzzy
-msgid "Graphical annotation"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/main.py:3677
-msgid ""
-"An unsaved template package exists\n"
-"Save it first."
+#: ../lib/advene/plugins/transcriber.py:276
+msgid "Parsing topic and speaker tables information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3686
-msgid "Package modified"
+#: ../lib/advene/plugins/tts.py:77
+msgid "Pronounce a text"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3687
-msgid ""
-"The package that you want to close has been modified but not saved.\n"
-"Save it now?"
+#: ../lib/advene/plugins/tts.py:78
+msgid "String to pronounce."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3718
-msgid "Load a package"
+#: ../lib/advene/plugins/tts.py:156
+msgid "TTS disabled. Cannot find the application 'festival' in PATH"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3727
-msgid ""
-"A video file was selected. Pretend that the user selected 'Select a video "
-"file'..."
+#: ../lib/advene/plugins/tts.py:158
+msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3732
-#, 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?"
+#: ../lib/advene/plugins/soundenveloppe.py:40
+#: ../lib/advene/plugins/soundenveloppe.py:139
+#: ../lib/advene/plugins/soundenveloppe.py:141
+msgid "Sound enveloppe"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3741
-msgid ""
-"You are trying to load a session file, but there are unsaved packages. "
-"Proceed anyway?"
+#: ../lib/advene/plugins/soundenveloppe.py:56
+msgid "Interval (in ms) at which to take samples."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3769 ../lib/advene/gui/main.py:3825
-msgid "Do you want to save the current workspace ?"
+#: ../lib/advene/plugins/soundenveloppe.py:59
+msgid "Maximum number of samples per annotation."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3784 ../lib/advene/gui/main.py:3840
+#: ../lib/advene/plugins/soundenveloppe.py:111
 #, python-format
-msgid "Could not save the package: %s"
+msgid "At %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3797
-#, python-format
-msgid "Save the package %s"
-msgstr ""
+#: ../lib/advene/plugins/soundenveloppe.py:158
+#, fuzzy
+msgid "Extracting sound enveloppe"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:3810
-msgid "Invalid file extension"
+#: ../lib/advene/plugins/barcode.py:36
+msgid "Cannot register barcode extraction: zbar plugin not found."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3811
-#, python-format
-msgid ""
-"Your package contains resources,\n"
-"the filename (%s) should have a .azp extension.\n"
-"Should I put the correct extension?"
+#: ../lib/advene/plugins/barcode.py:40
+msgid "Barcode (qr-code) extraction"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3815
-msgid "OK, the resources will be lost."
+#: ../lib/advene/plugins/barcode.py:95
+msgid "Barcode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3817
-msgid "Aborting package saving"
+#: ../lib/advene/plugins/barcode.py:97
+msgid "Extracted barcode information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3851
-msgid "Save the session in..."
-msgstr ""
+#: ../lib/advene/plugins/barcode.py:115
+#, fuzzy
+msgid "Extraction barcodes"
+msgstr "Datei _importieren"
+
+#: ../lib/advene/plugins/dcp.py:65
+#, fuzzy
+msgid "DCP importer"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:3862
+#: ../lib/advene/plugins/dcp.py:120
 #, python-format
-msgid "Session saved in %s"
+msgid "Converting #%(num)d / %(count)d"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3871
-msgid "Do you confirm the creation of annotations matching the DVD chapters?"
+#: ../lib/advene/plugins/nerd_plugin.py:47
+msgid "NERD (Named Entity Recognition and Disambiguation)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3877
-msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
+#: ../lib/advene/plugins/nerd_plugin.py:68
+msgid "NERD API key"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3885
-msgid "The associated media is not a DVD."
+#: ../lib/advene/plugins/nerd_plugin.py:82
+msgid "NER service to use"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3896
-#, fuzzy, python-format
-msgid "Processing %s video"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/gui/main.py:3899
+#: ../lib/advene/plugins/nerd_plugin.py:88
 #, fuzzy
-msgid "No associated video file"
-msgstr "Wähle eine Video Datei"
+msgid "Type of annotation to analyze"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/main.py:3926
-msgid "Standard RuleSet"
+#: ../lib/advene/plugins/nerd_plugin.py:93
+msgid "Language to analyze"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4042
-#, python-format
-msgid ""
-"Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
+#: ../lib/advene/plugins/nerd_plugin.py:98
+msgid "Minimum confidence level (between 0.0 and 1.0)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4054
-msgid ""
-"GNU General Public License v. 2\n"
-"See http://www.gnu.org/copyleft/gpl.html for more details"
-msgstr ""
+#: ../lib/advene/plugins/nerd_plugin.py:103
+#, fuzzy
+msgid "Interpolate position of annotations"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:4056
-msgid "Visit the Advene web site for examples and documentation."
+#: ../lib/advene/plugins/nerd_plugin.py:108
+msgid "Split by entity type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4089 ../lib/advene/gui/main.py:4177
-msgid "Select a movie file"
+#: ../lib/advene/plugins/nerd_plugin.py:113
+msgid "Store results as markup in the annotation text"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4101
-msgid "Title/Chapter selection"
+#: ../lib/advene/plugins/nerd_plugin.py:118
+msgid "Create relations between the original annotations and the new ones"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
-msgid "Select a video stream"
-msgstr "Wähle einen video stream"
-
-#: ../lib/advene/gui/main.py:4144
-msgid "Enter the address of a video stream"
+#: ../lib/advene/plugins/nerd_plugin.py:150
+#, python-format
+msgid "NERD applied to %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4148
+#: ../lib/advene/plugins/nerd_plugin.py:208
 #, python-format
-msgid "Successfully extracted the video stream address (%s) from the url.\n"
+msgid "NERD %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4173
-msgid "Package properties"
-msgstr ""
+#: ../lib/advene/plugins/annotationgraph.py:40
+#, fuzzy
+msgid "AnnotationGraph importer"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/main.py:4174
-msgid "Author name"
-msgstr ""
+#: ../lib/advene/plugins/shotdetectapp.py:48
+#, fuzzy
+msgid "ShotdetectApp importer"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:4175
-msgid "Package creation date"
+#: ../lib/advene/plugins/shotdetectapp.py:59
+msgid ""
+"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
+"too many shots are detected, try to increase its value."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4176
-msgid "Package title"
+#: ../lib/advene/plugins/shotdetectapp.py:146
+#, python-format
+msgid "Detected shot #%(num)d at %(pos)s "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4177
-msgid "Associated media"
+#: ../lib/advene/plugins/mpeg7.py:54
+msgid "MPEG7 importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4178
-msgid "Media duration in ms"
-msgstr ""
+#: ../lib/advene/plugins/cinelab.py:76
+#, fuzzy
+msgid "Cinelab importer"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:4237
-msgid "Paths"
+#: ../lib/advene/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
+#, python-format
+msgid "File %s is not an Advene2 zip package."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4239
-msgid "Data"
-msgstr ""
+#: ../lib/advene/plugins/cinelab.py:176
+#, fuzzy
+msgid "Converting annotation types"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/main.py:4239
-msgid "Standard directory for data files"
-msgstr ""
+#: ../lib/advene/plugins/cinelab.py:217
+#, fuzzy
+msgid "Converting views"
+msgstr "Aktivieren und Abspielen"
+
+#: ../lib/advene/plugins/cinelab.py:249
+#, fuzzy
+msgid "Importing annotations"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:4240
-msgid "Movie path"
-msgstr ""
+#: ../lib/advene/plugins/owl_import.py:40
+#, fuzzy
+msgid "OWL (schema) importer"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/main.py:4240
-#, python-format
-msgid ""
-"List of directories (separated by %s) to search for movie files (_ means "
-"package directory)"
+#: ../lib/advene/player/gstreamer.py:421
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Imagecache"
+#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
+#: ../lib/advene/rules/actions.py:120
+msgid "Message to display"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Directory for storing the snapshot cache"
+#: ../lib/advene/rules/actions.py:48
+msgid "Start the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Player"
+#: ../lib/advene/rules/actions.py:49
+msgid "Start position (in ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Directory of the video player"
+#: ../lib/advene/rules/actions.py:52 ../lib/advene/rules/actions.py:384
+msgid "The movie start"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4243
-msgid "Shotdetect"
-msgstr ""
+#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
+#, fuzzy
+msgid "The annotation begin"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:4243
-msgid "Shotdetect application"
-msgstr ""
+#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
+#, fuzzy
+msgid "The annotation end"
+msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/main.py:4245
-msgid "GUI"
+#: ../lib/advene/rules/actions.py:64
+msgid "Goto position (in ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4246
-msgid "Interface language (after restart)"
+#: ../lib/advene/rules/actions.py:73
+msgid "Stop the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4246
-msgid ""
-"Language used for the interface (necessitates to restart the application)"
+#: ../lib/advene/rules/actions.py:80
+msgid "Pause the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4252
-msgid "Record activity trace"
+#: ../lib/advene/rules/actions.py:87
+msgid "Resume the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Expert mode"
+#: ../lib/advene/rules/actions.py:94
+msgid "Take a snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Offer advanced possibilities"
+#: ../lib/advene/rules/actions.py:101
+msgid "Display a caption"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Prefer WYSIWYG"
+#: ../lib/advene/rules/actions.py:103
+msgid "Duration of the caption"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Use WYSIWYG editors when possible (HTML, SVG)"
-msgstr ""
+#: ../lib/advene/rules/actions.py:131
+#, fuzzy
+msgid "Display a graphical shape"
+msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/main.py:4255
-msgid "Player control in edit popups"
+#: ../lib/advene/rules/actions.py:132
+msgid "Shape (square, circle, triangle)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
-msgid ""
-"Enable generic player controls in edit windows. This may be undesirable "
-"since it overloads some standard text-edition behaviours (esp. control-left/"
-"right)."
+#: ../lib/advene/rules/actions.py:134
+msgid "x-position (percentage of screen)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
-msgid "Open popups"
+#: ../lib/advene/rules/actions.py:135
+msgid "y-position (percentage of screen)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4258
-msgid "Where should we open adhoc views?"
+#: ../lib/advene/rules/actions.py:136
+msgid "Size (arbitrary units)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
-msgid "as a popup window"
+#: ../lib/advene/rules/actions.py:137
+msgid "Duration of the display in ms"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
-msgid "embedded east of the video"
+#: ../lib/advene/rules/actions.py:145
+msgid "A square"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4261
-msgid "embedded west of the video"
+#: ../lib/advene/rules/actions.py:146
+msgid "A circle"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
-msgid "embedded south of the video"
+#: ../lib/advene/rules/actions.py:147
+msgid "A triangle"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4263
-msgid "embedded at the right of the window"
+#: ../lib/advene/rules/actions.py:150
+msgid "White"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History size"
+#: ../lib/advene/rules/actions.py:151
+msgid "Black"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History filelist size limit"
+#: ../lib/advene/rules/actions.py:152
+msgid "Red"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember window size"
+#: ../lib/advene/rules/actions.py:153
+msgid "Green"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember the size of opened windows"
+#: ../lib/advene/rules/actions.py:154
+msgid "Blue"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Bookmark snapshot width"
+#: ../lib/advene/rules/actions.py:155
+msgid "Yellow"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Width of the snapshots representing bookmarks"
+#: ../lib/advene/rules/actions.py:158
+msgid "At the top of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Bookmark snapshot precision"
+#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
+msgid "In the middle of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Precision (in ms) of the displayed bookmark snapshots."
+#: ../lib/advene/rules/actions.py:160
+msgid "At the bottom of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4272
-msgid "General"
+#: ../lib/advene/rules/actions.py:163
+msgid "At the left of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4273
-msgid "Weekly update check"
+#: ../lib/advene/rules/actions.py:181
+msgid "Zero the volume during the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4274
-msgid "On exit,"
+#: ../lib/advene/rules/actions.py:188
+msgid "Zero the volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4275
-msgid "How to handle screenshots on exit"
+#: ../lib/advene/rules/actions.py:195
+msgid "Restore the volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4276
-msgid "never save screenshots"
+#: ../lib/advene/rules/actions.py:203
+msgid "Activate a STBV"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4277
-msgid "always save screenshots"
+#: ../lib/advene/rules/actions.py:204
+msgid "STBV id"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4278
-msgid "ask before saving screenshots"
+#: ../lib/advene/rules/actions.py:213
+msgid "Send a user event"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4280
-msgid "Auto-save"
+#: ../lib/advene/rules/actions.py:214
+msgid "Identifier"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4281
-msgid "Data auto-save functionality"
+#: ../lib/advene/rules/actions.py:215
+msgid "Delay in ms before sending the event."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4282
-msgid "is desactivated"
+#: ../lib/advene/rules/actions.py:225
+msgid "Open a URL in the web browser"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4283
-msgid "is done automatically"
+#: ../lib/advene/rules/actions.py:235
+msgid "Open a static view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4284
-msgid "is done after confirmation"
+#: ../lib/advene/rules/actions.py:246
+msgid "Set the audio volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Auto-save interval (in s)"
+#: ../lib/advene/rules/actions.py:247
+msgid "Volume level (from 0 to 100)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Interval (in seconds) between package auto-saves"
+#: ../lib/advene/rules/actions.py:256
+msgid "Set the playing rate"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4288
-#, fuzzy
-msgid "Workspace"
-msgstr "Aktuelle Sitzung speichern"
-
-#: ../lib/advene/gui/main.py:4290
-msgid "On package saving,"
+#: ../lib/advene/rules/actions.py:257
+msgid "Rate (100: normal rate, 200: twice slower)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4291
-msgid "Do you wish to save the default workspace with the package?"
+#: ../lib/advene/rules/actions.py:266
+msgid "Play a sound resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4292
-#, fuzzy
-msgid "never save the current workspace"
-msgstr "Aktuelle Sitzung speichern"
-
-#: ../lib/advene/gui/main.py:4293
-#, fuzzy
-msgid "always save the current workspace"
-msgstr "Aktuelle Sitzung speichern"
-
-#: ../lib/advene/gui/main.py:4294
-msgid "ask before saving the current workspace"
+#: ../lib/advene/rules/actions.py:267
+msgid "Clip id"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4296
-msgid "Auto-validation of edited elements"
+#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
+msgid "Volume (0..100)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4296
-msgid "Automatically validate modified elements when saving the package."
+#: ../lib/advene/rules/actions.py:269 ../lib/advene/rules/actions.py:283
+msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4298
+#: ../lib/advene/rules/actions.py:280
 #, fuzzy
-msgid "On package load,"
-msgstr "Kein Pakte"
+msgid "Play a sound file"
+msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/main.py:4299
-msgid "Do you wish to load the workspace saved with the package?"
+#: ../lib/advene/rules/actions.py:281
+msgid "Sound filename"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4300
-msgid "never load the saved workspace"
+#: ../lib/advene/rules/actions.py:293
+msgid "Set a state variable"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4301
-msgid "always load the saved workspace"
+#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
+msgid "State variable name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4302
-msgid "ask before loading the saved workspace"
+#: ../lib/advene/rules/actions.py:295
+msgid "State value"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4305
-#, fuzzy
-msgid "Video Player"
-msgstr "_Einstellung Spieler"
-
-#: ../lib/advene/gui/main.py:4306
-msgid "Autostart"
+#: ../lib/advene/rules/actions.py:305
+msgid "Increment a state variable"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4306
-msgid ""
-"Automatically start the player when loading a media file (either directly or "
-"through a package)"
+#: ../lib/advene/rules/actions.py:315
+msgid "Clear all state variables"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4307
-msgid "Fulscreen timestamp"
+#: ../lib/advene/rules/actions.py:330
+#, python-format
+msgid "Error in the evaluation of the parameter %s:"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4307
-msgid "Display the timestamp over the video when in fullscreen mode"
+#: ../lib/advene/rules/actions.py:551
+#, python-format
+msgid "Cannot find the stbv %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4308
-msgid "Enable captions"
+#: ../lib/advene/rules/actions.py:647
+msgid "The set_rate method is unavailable."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4308
-#, fuzzy
-msgid "Enable captions over the video"
-msgstr "Zeige Kommentare an einer Timeline"
-
-#: ../lib/advene/gui/main.py:4309
-msgid "Caption font"
+#: ../lib/advene/rules/actions.py:657
+msgid "No 'soundclips' resource folder in the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4309
-msgid "TrueType font for captions"
+#: ../lib/advene/rules/actions.py:683
+msgid "Full volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG"
+#: ../lib/advene/rules/actions.py:684
+msgid "Left"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG captions over the video"
+#: ../lib/advene/rules/actions.py:686
+msgid "Right"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4312
-msgid "Enable snapshots"
+#: ../lib/advene/rules/importer.py:29
+msgid "Event history importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width"
+#: ../lib/advene/rules/elements.py:141
+msgid "is equal to"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width in pixels."
+#: ../lib/advene/rules/elements.py:142
+msgid "is different from"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity"
+#: ../lib/advene/rules/elements.py:143
+msgid "contains"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity level. -1 for no messages."
+#: ../lib/advene/rules/elements.py:144
+msgid "is greater than"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4317
-msgid "Devices"
+#: ../lib/advene/rules/elements.py:145
+msgid "is lower than"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4319
-msgid "Standard"
+#: ../lib/advene/rules/elements.py:146
+msgid "matches the regexp"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4321
-msgid "DVD drive"
+#: ../lib/advene/rules/elements.py:147
+msgid "is before"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4321
-msgid "Drive letter for the DVD"
+#: ../lib/advene/rules/elements.py:148
+msgid "meets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4322
-msgid "GDI"
+#: ../lib/advene/rules/elements.py:149
+msgid "overlaps"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4323
-msgid "Direct X"
+#: ../lib/advene/rules/elements.py:150
+msgid "during"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4325
-msgid "DVD device"
+#: ../lib/advene/rules/elements.py:151
+msgid "starts"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4325
-msgid "Device for the DVD"
+#: ../lib/advene/rules/elements.py:152
+msgid "finishes"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4326
-msgid "X11"
+#: ../lib/advene/rules/elements.py:157
+msgid "is not true"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4327
-msgid "XVideo"
+#: ../lib/advene/rules/elements.py:158
+msgid "is true"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4328
-msgid "GL"
+#: ../lib/advene/rules/elements.py:162
+msgid "Basic conditions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output"
+#: ../lib/advene/rules/elements.py:163
+msgid "Allen relations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output module"
+#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
+msgid "Unknown type for overlaps comparison"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4332
-msgid "Recorder options"
+#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
+msgid "Unknown type for during comparison"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4333
-msgid "Audio input"
+#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
+#, python-format
+msgid "Unknown action %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4333
-msgid "Device name for audio input (with gstrecorder plugin)"
-msgstr ""
+#: ../lib/advene/rules/elements.py:522
+#, fuzzy, python-format
+msgid "Unknown parameter %s"
+msgstr "Unbekannte STBV identifier: %s"
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record video"
+#: ../lib/advene/rules/elements.py:527
+msgid "Unknown actions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record both video and audio"
+#: ../lib/advene/rules/elements.py:972
+msgid "Start of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4337
-msgid "<i>Experimental</i>"
+#: ../lib/advene/rules/elements.py:973
+msgid "Cancel of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4338
-msgid "Embed the caption scroller below the video"
+#: ../lib/advene/rules/elements.py:974
+msgid "Destruction of the edit window of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4339
-msgid "Embed the caption view below the video"
+#: ../lib/advene/rules/elements.py:975
+msgid "Validation of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4341
-msgid "Time-related"
+#: ../lib/advene/rules/elements.py:976
+msgid "Ending editing of a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4342
-#, fuzzy
-msgid "Time format"
-msgstr "T_imeline"
+#: ../lib/advene/rules/elements.py:977
+msgid "Beginning of an annotation"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4342
-msgid "Format used to display timecodes"
+#: ../lib/advene/rules/elements.py:978
+msgid "End of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4356
-msgid "Default FPS"
+#: ../lib/advene/rules/elements.py:979
+msgid "Creation of a new annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4357
-msgid ""
-"Default FPS (frame-per-second) value, when entering or displaying timestamps "
-"with frame numbers."
+#: ../lib/advene/rules/elements.py:980
+msgid "Ending editing of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4358
-#, fuzzy
-msgid "Time increment"
-msgstr "T_imeline"
+#: ../lib/advene/rules/elements.py:981
+msgid "Suppression of an annotation"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4358
-msgid ""
-"Skip duration, when using control-left/right or forward/rewind buttons (in "
-"ms)."
+#: ../lib/advene/rules/elements.py:982
+msgid "Activation of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4359
-msgid "Second time increment"
+#: ../lib/advene/rules/elements.py:983
+msgid "Deactivation of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4359
-msgid "Skip duration, when using control-shift-left/right (in ms)."
+#: ../lib/advene/rules/elements.py:984
+msgid "Merging of two annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4360
+#: ../lib/advene/rules/elements.py:985
 #, fuzzy
-msgid "Third time increment"
-msgstr "T_imeline"
+msgid "Moving an annotation"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/main.py:4360
-msgid "Skip duration, when using control-shift-up/down (in ms)."
+#: ../lib/advene/rules/elements.py:986
+msgid "Activation of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4361
-msgid "Custom Up/Down"
+#: ../lib/advene/rules/elements.py:987
+msgid "Deactivation of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4361
-msgid ""
-"Use third time increment for up/down navigation without having to hold shift."
+#: ../lib/advene/rules/elements.py:988
+msgid "Creation of a new relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4363
-msgid "Scroll increment"
+#: ../lib/advene/rules/elements.py:989
+msgid "Ending editing of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4363
-msgid ""
-"On most annotations, control+scrollwheel will increment/decrement their "
-"bounds by this value (in ms)."
+#: ../lib/advene/rules/elements.py:990
+msgid "Suppression of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4364
-msgid "Second scroll increment"
+#: ../lib/advene/rules/elements.py:991
+msgid "Creation of a new view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4364
-msgid ""
-"On most annotations, control+shift+scrollwheel will increment/decrement "
-"their bounds by this value (in ms)."
+#: ../lib/advene/rules/elements.py:992
+msgid "Ending editing of a view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4366
-#, fuzzy
-msgid "Player sync"
-msgstr "_Spieler"
+#: ../lib/advene/rules/elements.py:993
+msgid "Suppression of a view"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4366
-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."
+#: ../lib/advene/rules/elements.py:994
+msgid "Creation of a new query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4367
-msgid "Timeline parameters"
+#: ../lib/advene/rules/elements.py:995
+msgid "Ending editing of a query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4368
-msgid "Font size for annotation widgets"
+#: ../lib/advene/rules/elements.py:996
+msgid "Suppression of a query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4369
-msgid "Button height"
+#: ../lib/advene/rules/elements.py:997
+msgid "Creation of a new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4369
-msgid "Height of annotation widgets"
+#: ../lib/advene/rules/elements.py:998
+msgid "Ending editing of a schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Interline height"
+#: ../lib/advene/rules/elements.py:999
+msgid "Suppression of a schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Height of interlines"
+#: ../lib/advene/rules/elements.py:1001
+msgid "Ending editing an annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4372
-#, fuzzy
-msgid "Text content"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/rules/elements.py:1002
+msgid "Suppression of an annotation type"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4373
-msgid "Completion mode"
+#: ../lib/advene/rules/elements.py:1003
+msgid "Creation of a new relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4373
-msgid "Enable dynamic completion mode"
+#: ../lib/advene/rules/elements.py:1004
+msgid "Ending editing a relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4374
-msgid "Abbreviation mode"
+#: ../lib/advene/rules/elements.py:1005
+msgid "Suppression of a relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4374
-msgid "Enable abbreviation mode"
+#: ../lib/advene/rules/elements.py:1006
+msgid "Creation of a new resource"
+msgstr ""
+
+#: ../lib/advene/rules/elements.py:1007
+msgid "Ending editing of a resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4375
-msgid "Abbreviations"
+#: ../lib/advene/rules/elements.py:1008
+msgid "Suppression of a resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4375
-msgid ""
-"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
-"followed by its replacement."
+#: ../lib/advene/rules/elements.py:1009
+msgid "Modification of the tag"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4377
-msgid "Text-To-Speech"
+#: ../lib/advene/rules/elements.py:1010
+msgid "Activating a link"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4378
-msgid "TTS language"
+#: ../lib/advene/rules/elements.py:1011
+msgid "Player start"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4379
-msgid "What language settings should be used for text-to-speech"
+#: ../lib/advene/rules/elements.py:1012
+msgid "Player stop"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4380
-msgid "English"
+#: ../lib/advene/rules/elements.py:1013
+msgid "Player pause"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4381
-msgid "French"
+#: ../lib/advene/rules/elements.py:1014
+msgid "Player resume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4382
-msgid "Spanish"
+#: ../lib/advene/rules/elements.py:1015
+msgid "Going to a given position"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4384
-msgid "TTS Encoding"
+#: ../lib/advene/rules/elements.py:1016
+msgid "Loading a new package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4385
-msgid "What encoding should be used to communicate with the TTS engine"
+#: ../lib/advene/rules/elements.py:1017
+msgid "Activating a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4386
-msgid "TTS Engine"
+#: ../lib/advene/rules/elements.py:1018
+msgid "Saving the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4387
-msgid ""
-"Which TTS engine should be used (modification requires restarting Advene to "
-"take into account)"
+#: ../lib/advene/rules/elements.py:1019
+msgid "Start of the dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4388
-msgid "Automatic"
+#: ../lib/advene/rules/elements.py:1020
+msgid "End of the dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4389
-msgid "eSpeak"
+#: ../lib/advene/rules/elements.py:1021
+msgid "Start of the application"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4390
-msgid "Custom script with standard input"
+#: ../lib/advene/rules/elements.py:1022
+msgid "End of the application"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4391
-msgid "Custom script with arguments"
+#: ../lib/advene/rules/elements.py:1023
+msgid "User-defined event"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4392
-msgid "SAPI"
+#: ../lib/advene/rules/elements.py:1024
+msgid "Modification of the associated media"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4393
-msgid "MacOS X say"
+#: ../lib/advene/rules/elements.py:1025
+msgid "Highlight a bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4394
-msgid "Generic (text output)"
+#: ../lib/advene/rules/elements.py:1026
+msgid "Unhighlight a bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4438
-msgid "You should restart Advene to take some options into account."
+#: ../lib/advene/rules/elements.py:1027
+msgid "Updating duration of the movie"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4447
-#, python-format
-msgid "Imagecache saved to %s"
+#: ../lib/advene/rules/elements.py:1028
+msgid "Displaying a popup"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4460
-msgid "Restarting player..."
+#: ../lib/advene/rules/elements.py:1029
+msgid "Updating a snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4512
+#: ../lib/advene/rules/elements.py:1067
 #, fuzzy
-msgid "Advene log"
-msgstr "Advene"
+msgid "Player control"
+msgstr "_Spieler"
 
-#: ../lib/advene/gui/main.py:4581
-msgid "Select the package to merge"
+#: ../lib/advene/rules/elements.py:1068
+msgid "Audio enrichment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4602
-msgid "Saving workspace"
-msgstr ""
+#: ../lib/advene/rules/elements.py:1069
+#, fuzzy
+msgid "Image enrichment"
+msgstr "T_imeline"
 
-#: ../lib/advene/gui/main.py:4605
-msgid "Enter a view name to save the workspace"
+#: ../lib/advene/rules/elements.py:1070
+msgid "External display control"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4606
-#, fuzzy
-msgid "Default workspace"
-msgstr "Aktuelle Sitzung speichern"
+#: ../lib/advene/rules/elements.py:1071
+msgid "Popup"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4607
-msgid "Open this workspace when opening the package"
+#: ../lib/advene/rules/elements.py:1073
+msgid "State"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4641
-#, python-format
-msgid "Error: the view %s exists and is not a workspace view."
+#: ../lib/advene/rules/elements.py:1074
+msgid "GUI actions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4672
-#, python-format
-msgid "Cannot save default workspace: %s"
+#: ../lib/advene/rules/elements.py:1075
+msgid "Expert"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4682
-msgid "Standard workspace has been saved"
+#: ../lib/advene/util/helper.py:403
+msgid "Annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4689
-msgid "Website export"
+#: ../lib/advene/util/helper.py:404
+msgid "Relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4690
-msgid "Exporting views to a website"
+#: ../lib/advene/util/helper.py:410
+msgid "Resource Folder"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4693
-msgid "Output directory"
+#: ../lib/advene/util/helper.py:446
+msgid "---- Elements ----"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4702
-msgid "Specify the output directory"
+#: ../lib/advene/util/helper.py:452
+msgid "---- Attributes ----"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4711
-msgid "Maximum recursion depth"
+#: ../lib/advene/util/helper.py:455
+msgid "---- Methods ----"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4718
-msgid "Video URL"
+#: ../lib/advene/util/helper.py:531
+#, python-format
+msgid "Cannot read %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4720
+#: ../lib/advene/util/helper.py:555
+#, python-format
 msgid ""
-"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."
+"Error:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4770
-msgid "Could not export data: "
+#: ../lib/advene/util/helper.py:637
+msgid "schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4772
-#, fuzzy, python-format
-msgid "Website export to %s completed"
-msgstr "Datei _importieren"
+#: ../lib/advene/util/helper.py:637
+msgid "schemas"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4811
-msgid "This video player is not able to grab specific screenshots"
+#: ../lib/advene/util/helper.py:638
+msgid "annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4821
-#, python-format
-msgid "Updating %d snapshots"
+#: ../lib/advene/util/helper.py:638
+msgid "annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4826
-msgid "No snapshot to update"
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4835 ../lib/advene/gui/main.py:4947
-msgid "You first must load a movie into Advene"
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4838 ../lib/advene/gui/main.py:4950
-#, python-format
-msgid "The movie %s does not seem to exist."
+#: ../lib/advene/util/helper.py:641
+msgid "relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4895
-msgid "Generating screenshots"
+#: ../lib/advene/util/helper.py:641
+msgid "relations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4900
-msgid ""
-"<b>Screenshot generation</b>\n"
-"\n"
-"Screenshots will be captured approximately every 500ms.\n"
-"\n"
-"If the movie was paused or playing, the capture will begin at the current "
-"position. Else, it will begin at the beginning of the movie.\n"
-"Note that the main interface will not be refreshed as long as this window is "
-"open."
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4941
-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."
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation types"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4981
-msgid ""
-"Cannot import shotdetect output. Did you install the shotdetect software?"
+#: ../lib/advene/util/helper.py:644
+msgid "query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4998
-msgid "Incomplete shots"
+#: ../lib/advene/util/helper.py:644
+msgid "queries"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5001
-#, python-format
-msgid "Detected %s shots"
+#: ../lib/advene/util/helper.py:645
+msgid "view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5103
-#, python-format
-msgid "Could not run shotdetect: %s"
+#: ../lib/advene/util/helper.py:645
+msgid "views"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5107
-#, python-format
-msgid "Detecting shots from %s"
+#: ../lib/advene/util/helper.py:646
+msgid "package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5160
-msgid "Shot detection"
+#: ../lib/advene/util/helper.py:646
+msgid "packages"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5166
-msgid ""
-"<b>Shot detection</b>\n"
-"\n"
-"Advene will try to detect shots from the currently loaded movie. The "
-"threshold parameter is used to specify the sensitivity of the algorithm, and "
-"should typically be between 50 and 80. If too many shots are detected, try "
-"to augment its value."
+#: ../lib/advene/util/helper.py:658
+#, python-format
+msgid "No %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5182
-msgid "Sensitivity"
+#: ../lib/advene/util/helper.py:660
+#, python-format
+msgid "1 %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:138
-msgid "Choose the file to insert"
+#: ../lib/advene/util/helper.py:662
+#, python-format
+msgid "%(count)d %(plural)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:146
-msgid "Select a valid identifier"
+#: ../lib/advene/util/website_export.py:61
+#, python-format
+msgid "%s exists but is not a directory. Cancelling website export"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:147
+#: ../lib/advene/util/website_export.py:67
 #, python-format
-msgid ""
-"The filename %s contains invalid characters\n"
-"that have been replaced.\n"
-"You can modify this identifier if necessary:"
+msgid "%s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:158
-msgid "Choose the soundclip to insert"
+#: ../lib/advene/util/website_export.py:422
+msgid "Starting export"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:162
-msgid "Choose the directory to insert"
+#: ../lib/advene/util/website_export.py:451
+#, python-format
+msgid "Depth %d"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:177
-msgid "Named-Entity extraction using NERD"
+#: ../lib/advene/util/website_export.py:455
+#, python-format
+msgid "Depth %(depth)d: processing %(url)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:181
-msgid ""
-"Give the offset to use\n"
-"on specified element.\n"
-"It is in ms and can be\n"
-"either positive or negative."
+#: ../lib/advene/util/website_export.py:477
+msgid "Finalizing"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:225
+#: ../lib/advene/util/website_export.py:511
 #, python-format
-msgid "Replace content in %s"
+msgid ""
+"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
+"strong></p>"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:228
-#, fuzzy, python-format
-msgid "Replace content in annotations of type %s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/popup.py:231
+#: ../lib/advene/util/website_export.py:554
 #, fuzzy
-msgid "Replace content in all annotations"
-msgstr "Zeige die Transkription für eine Anmerkung"
+msgid "Export complete"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/popup.py:324
-#, python-format
-msgid "Copy id %s"
+#: ../lib/advene/util/importer.py:138
+msgid "Generic importer"
 msgstr ""
-
-#: ../lib/advene/gui/popup.py:358
-#, python-format
-msgid ""
-"<b>Statistics about %s</b>\n"
-"\n"
+
+#: ../lib/advene/util/importer.py:165
+msgid "Usage: %prog [options] source-file destination-file"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:364
-#, fuzzy, python-format
-msgid "Renumbering annotations of type %s"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/util/importer.py:169
+msgid "Specify the offset in ms"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:371
+#: ../lib/advene/util/importer.py:229
 msgid ""
-"<b>Renumber all annotations according to their order.</b>\n"
-"\n"
-"<i>Note that this action cannot be undone.</i>\n"
-"Replace the first numeric value of the annotation content with the new "
-"annotation number.\n"
-"If no numeric value is found and the annotation is structured, it will "
-"insert the number.\n"
-"If no numeric value is found and the annotation is of type text/plain, it "
-"will overwrite the annotation content.\n"
-"The offset parameter allows you to renumber from a given annotation."
+"Import filter error. The asynchronous API should be used, please report a "
+"bug."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
-msgid "Offset"
+#: ../lib/advene/util/importer.py:231
+msgid ""
+"Import filter error. No conversion method is defined,  please report a bug."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:399
-#, fuzzy, python-format
-msgid "Renumbering %d annotations"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/popup.py:408
-#, fuzzy, python-format
-msgid "Annotation #%d"
-msgstr "Kommentar Typ"
+#: ../lib/advene/util/importer.py:488
+#, fuzzy
+msgid "ExternalApp importer"
+msgstr "Datei _importieren"
 
-#: ../lib/advene/gui/popup.py:445
+#: ../lib/advene/util/importer.py:502
 #, python-format
 msgid ""
-"Exporting annotation %(title)s\n"
-"from %(begin)s to %(end)s\n"
-"to %%(filename)s"
+"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/gui/popup.py:458
-msgid "Browse"
+#: ../lib/advene/util/importer.py:504
+#, python-format
+msgid "The file %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
-msgid "Open in web browser"
+#: ../lib/advene/util/importer.py:526
+#, python-format
+msgid "Could not run %(appname)s: %(msg)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:479
-msgid "Search/replace content"
+#: ../lib/advene/util/importer.py:528
+#, fuzzy, python-format
+msgid "Processing %s"
+msgstr "Datei _importieren"
+
+#: ../lib/advene/util/importer.py:532
+msgid "Cleaning up..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:497
-msgid "Desactivate"
+#: ../lib/advene/util/importer.py:652
+msgid "Text importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:514
-msgid "Loop"
+#: ../lib/advene/util/importer.py:665 ../lib/advene/util/importer.py:1195
+msgid "Specify the encoding of the input file (latin1, utf8...)"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:515
-msgid "Duplicate"
+#: ../lib/advene/util/importer.py:668
+msgid "Should the timestamps be encoded relative to the first timestamp?"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:519
-#, fuzzy
-msgid "Save snapshot..."
-msgstr "Zeige Shortcuts"
+#: ../lib/advene/util/importer.py:671
+msgid "Unit to consider for integers"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:521
-#, fuzzy
-msgid "Extract video fragment"
-msgstr "Gebe eine Video Stream Adresse ein"
+#: ../lib/advene/util/importer.py:674
+msgid ""
+"What timestamps are present in a line (only begin, both begin and end, or "
+"automatic recognition)"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:551
-msgid "Incoming"
+#: ../lib/advene/util/importer.py:817
+msgid "lsdvd importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:567
-msgid "Outgoing"
+#: ../lib/advene/util/importer.py:844
+msgid "Processing data"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:582
+#: ../lib/advene/util/importer.py:862 ../lib/advene/util/importer.py:922
 #, fuzzy
-msgid "Related annotations"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/popup.py:589
-msgid "Incoming relations"
-msgstr ""
+msgid "DVD Chapter"
+msgstr "Importiere _DVD Kapitel"
 
-#: ../lib/advene/gui/popup.py:596
-msgid "Outgoing relations"
+#: ../lib/advene/util/importer.py:866
+msgid "Launching lsdvd..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:612
-#, python-format
-msgid "Begin: %s"
+#: ../lib/advene/util/importer.py:878
+msgid "chaplin importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:614
-#, python-format
-msgid "End: %s"
+#: ../lib/advene/util/importer.py:936
+msgid "Xi importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:615
-#, fuzzy, python-format
-msgid "Duration: %s"
-msgstr "Verbindungs Type"
-
-#: ../lib/advene/gui/popup.py:622
-msgid "Members:"
+#: ../lib/advene/util/importer.py:1005
+msgid "ELAN importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:635
-#, fuzzy
-msgid "Edit package properties..."
-msgstr "Bearbeite Packet Eigentschaften"
-
-#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
+#: ../lib/advene/util/importer.py:1058
 #, python-format
-msgid "%d annotations(s) - statistics"
+msgid "Converting tier %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
-msgid "Create a new static view..."
+#: ../lib/advene/util/importer.py:1159
+msgid "Processing time slots"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:865
-msgid "Create a new dynamic view..."
+#: ../lib/advene/util/importer.py:1174
+msgid "Fixing forward references"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
-msgid "Create a new annotation..."
+#: ../lib/advene/util/importer.py:1176
+msgid "Creating relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
-msgid "Create a new schema..."
+#: ../lib/advene/util/importer.py:1188
+msgid "Subtitle (SRT) importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
-msgid "Create a new query..."
+#: ../lib/advene/util/importer.py:1257
+#, python-format
+msgid "Subtitles from %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:651
-msgid "Create a new folder..."
+#: ../lib/advene/util/importer.py:1270
+msgid "PRAAT importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:652
-msgid "Create a new resource file..."
+#: ../lib/advene/util/importer.py:1360
+msgid "CMML importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:653
-msgid "Insert a new resource file..."
+#: ../lib/advene/util/importer.py:1423
+msgid "Parsing clip information"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:654
-msgid "Insert a new resource directory..."
+#: ../lib/advene/util/importer.py:1523
+msgid "Creating CMML schema"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
-msgid "Insert a soundclip..."
+#: ../lib/advene/util/importer.py:1547
+msgid "Parsing stream information"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:676
-msgid "Play sound"
+#: ../lib/advene/util/importer.py:1581
+msgid "IRI importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:686
-msgid "Create a new annotation type..."
+#: ../lib/advene/util/importer.py:1590
+msgid "Generate one type per view"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:688
-msgid "Create a new relation type..."
+#: ../lib/advene/util/importer.py:1610
+#, python-format
+msgid "Parsing ensemble %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:699
+#: ../lib/advene/util/importer.py:1621
 #, python-format
-msgid "A caption dynamic view for %s already seems to exist."
+msgid "Parsing decoupage %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:708
-#, fuzzy, python-format
-msgid "Caption %s annotations"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/util/importer.py:1657
+msgid "Parsing views"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:740
-#, fuzzy
-msgid "Create a comment view"
-msgstr "von einem Anmerkungs Typ"
+#: ../lib/advene/util/importer.py:1705 ../lib/advene/util/importer.py:1794
+msgid "Initializing package"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:741
-msgid "Generate a caption dynamic view..."
+#: ../lib/advene/util/importer.py:1743
+msgid "IRIData importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:742
-msgid "Display as transcription"
+#: ../lib/advene/util/importer.py:1757
+msgid "Parsing sound values"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/util/importer.py:1769
 #, fuzzy
-msgid "Display annotations in table"
-msgstr "Zeige Kommentare an einer Timeline"
+msgid "Creating annotations"
+msgstr "von einem Anmerkungs Typ"
 
-#: ../lib/advene/gui/popup.py:744
 #, fuzzy
-msgid "Export to another format..."
-msgstr "Importiere Daten von einer Externen Quelle"
-
-#: ../lib/advene/gui/popup.py:746
-msgid "Extract Named Entities..."
-msgstr ""
+#~ msgid "Schema editor"
+#~ msgstr "Schema"
 
-#: ../lib/advene/gui/popup.py:752
 #, fuzzy
-msgid "Delete all annotations"
-msgstr "von einem Anmerkungs Typ"
+#~ msgid "Visualise the activity trace preview"
+#~ msgstr "Aktivieren und Abspielen"
 
-#: ../lib/advene/gui/popup.py:753
 #, fuzzy
-msgid "Renumber annotations..."
-msgstr "von einem Anmerkungs Typ"
+#~ msgid "Visualise the activity trace as a timeline"
+#~ msgstr "Aktivieren und Abspielen"
 
-#: ../lib/advene/gui/popup.py:754
 #, fuzzy
-msgid "Shot validation view..."
-msgstr "Zeige Kommentare an einer Timeline"
+#~ msgid "Min duration"
+#~ msgstr "_Einstellung Spieler"
 
-#: ../lib/advene/gui/popup.py:766
-#, python-format
-msgid "A follow dynamic view for %s already seems to exist."
-msgstr ""
+#, fuzzy
+#~ msgid "Mean duration"
+#~ msgstr "Zeige die Anmerkung als Transkription"
 
-#: ../lib/advene/gui/popup.py:775
-#, fuzzy, python-format
-msgid "Follow %s relation-type"
-msgstr "Verbindungs Type"
+#, fuzzy
+#~ msgid "Total duration"
+#~ msgstr "Zeige die Anmerkung als Transkription"
 
-#: ../lib/advene/gui/popup.py:784
-msgid "Follow the relation"
-msgstr ""
+#, fuzzy
+#~ msgid "Schema Editor"
+#~ msgstr "Schema"
 
-#: ../lib/advene/gui/popup.py:804
-msgid "Delete all relations..."
-msgstr ""
+#, fuzzy
+#~ msgid "Display"
+#~ msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/popup.py:805
 #, fuzzy
-msgid "Create montage from related annotations"
-msgstr "von einem Anmerkungs Typ"
+#~ msgid "Remove relation type"
+#~ msgstr "Verbindungs Type"
 
-#: ../lib/advene/gui/popup.py:806
-msgid "Create dynamic view following relations"
-msgstr ""
+#, fuzzy
+#~ msgid "Remove annotation type"
+#~ msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/popup.py:824
-msgid "Apply query on..."
-msgstr ""
+#, fuzzy
+#~ msgid "New schema"
+#~ msgstr "Schema"
 
-#: ../lib/advene/gui/popup.py:849
-msgid "Activate view"
-msgstr ""
+#, fuzzy
+#~ msgid "New annotation type"
+#~ msgstr "Kommentar Typ"
 
-#: ../lib/advene/gui/popup.py:851
-msgid "Open adhoc view"
-msgstr ""
+#, fuzzy
+#~ msgid "New relation type"
+#~ msgstr "Verbindungs Type"
 
 #, fuzzy
 #~ msgid "Adjust annotation bounds..."
@@ -9269,10 +9199,6 @@ msgstr ""
 #~ msgstr "durchsuche Packet daten"
 
 #, fuzzy
-#~ msgid "Export trace"
-#~ msgstr "Datei _importieren"
-
-#, fuzzy
 #~ msgid "_New"
 #~ msgstr "_Zeige"
 
diff --git a/po/eo.po b/po/eo.po
index 5b2fddb..6ce889e 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: 2014-07-09 17:25+0200\n"
+"POT-Creation-Date: 2017-05-09 11:32+0200\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"
@@ -15,17 +15,6 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
-#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
-#, python-format
-msgid "File %s is not an Advene zip package."
-msgstr ""
-
-#: ../lib/advene/model/zippackage.py:243
-#, python-format
-msgid "Directory %s is not an extracted Advene zip package."
-msgstr ""
-
 #: ../lib/advene/model/bundle.py:296
 #, python-format
 msgid "%s not in bundle"
@@ -40,9400 +29,9344 @@ msgstr ""
 msgid "List of %s elements"
 msgstr "Arbvido"
 
-#: ../lib/advene/core/controller.py:263 ../lib/advene/rules/actions.py:36
-#: ../lib/advene/gui/plugins/actions.py:40
-msgid "Display a message"
+#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
+#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
+#, python-format
+msgid "File %s is not an Advene zip package."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:264
-#: ../lib/advene/gui/plugins/actions.py:41
-#: ../lib/advene/gui/plugins/actions.py:53
-#: ../lib/advene/gui/plugins/actions.py:71
-#: ../lib/advene/gui/plugins/actions.py:86
-#: ../lib/advene/gui/plugins/actions.py:102
-#: ../lib/advene/gui/plugins/actions.py:203
-msgid "String to display."
+#: ../lib/advene/model/zippackage.py:243
+#, python-format
+msgid "Directory %s is not an extracted Advene zip package."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:362
-msgid "Exception (traceback in console):"
-msgstr ""
+#: ../lib/advene/gui/widget.py:293
+#, fuzzy, python-format
+msgid "Set of %s annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/controller.py:393
-msgid "No available GUI"
+#: ../lib/advene/gui/widget.py:1017
+#: ../lib/advene/gui/views/transcription.py:472
+#: ../lib/advene/gui/edit/montage.py:60
+msgid "Play"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:412
-msgid "No available event handler"
-msgstr ""
+#: ../lib/advene/gui/widget.py:1021 ../lib/advene/gui/edit/timeadjustment.py:77
+#, fuzzy
+msgid "Refresh snapshot"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/controller.py:420
-msgid "No available gui"
-msgstr ""
+#: ../lib/advene/gui/widget.py:1025
+#, fuzzy
+msgid "Save as..."
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/core/controller.py:436
-#, python-format
-msgid "Warning: redefining an existing feature %s"
+#: ../lib/advene/gui/widget.py:1030
+#, fuzzy
+msgid "Use current player position"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/widget.py:1036
+#, fuzzy
+msgid "Adjust timestamp"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:189 ../lib/advene/gui/main.py:298
+#, fuzzy
+msgid "_Select player"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/main.py:191 ../lib/advene/gui/main.py:283
+msgid "_View"
+msgstr "Vido"
+
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:300
+#, fuzzy
+msgid "Packages"
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:242
+#, fuzzy
+msgid "Open recent"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/main.py:236
+msgid "Input from the keyboard (function keys)"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:568
+#: ../lib/advene/gui/main.py:239
+msgid "_File"
+msgstr "Dosiero"
+
+#: ../lib/advene/gui/main.py:240
 #, fuzzy
-msgid "All annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "_New package"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/core/controller.py:569 ../lib/advene/gui/edit/rules.py:358
-#, fuzzy, python-format
-msgid "Annotations of type %s"
+#: ../lib/advene/gui/main.py:240
+#, fuzzy
+msgid "Create a new package"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/imports.py:129
-#: ../lib/advene/gui/edit/imports.py:130
-msgid "Views"
-msgstr ""
+#: ../lib/advene/gui/main.py:241
+#, fuzzy
+msgid "_Open package"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/elements.py:521
-msgid "Tags"
-msgstr ""
+#: ../lib/advene/gui/main.py:241
+#, fuzzy
+msgid "Open a package"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/core/controller.py:570
-msgid "Ids"
-msgstr ""
+#: ../lib/advene/gui/main.py:242
+#, fuzzy
+msgid "Show recently opened packages"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/core/controller.py:747
-#, python-format
-msgid ""
-"Cannot start the webserver\n"
-"The following processes seem to use the %(port)s port: %(processes)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:243
+#, fuzzy
+msgid "_Save package"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/core/controller.py:797 ../lib/advene/core/controller.py:808
-#, python-format
-msgid "Loaded %(uri)s as %(alias)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:243
+#, fuzzy
+msgid "Save the package"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/core/controller.py:799 ../lib/advene/core/controller.py:811
-#, python-format
-msgid "Cannot load package from file %(uri)s: %(error)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:244
+#, fuzzy
+msgid "Save package as..."
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/core/controller.py:850
-msgid "Deactivating web server"
-msgstr ""
+#: ../lib/advene/gui/main.py:244
+#, fuzzy
+msgid "Save the package as..."
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/core/controller.py:970
-#, python-format
-msgid "Cannot get audio volume: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:245
+#, fuzzy
+msgid "Close package"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/core/controller.py:1020
-#, python-format
-msgid "Cannot open Advene URL %s: the webserver is not running."
+#: ../lib/advene/gui/main.py:245
+#, fuzzy
+msgid "Close the package"
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/main.py:247
+msgid "Save session"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1128 ../lib/advene/gui/edit/merge.py:272
-msgid "None"
+#: ../lib/advene/gui/main.py:247
+#, fuzzy
+msgid "Save the current session (list of opened packages)"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/main.py:248
+msgid "Save workspace"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1222
-#, python-format
-msgid "Found matching video file in moviepath: %s"
+#: ../lib/advene/gui/main.py:249
+msgid "...as package view"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1263 ../lib/advene/core/controller.py:1265
-msgid "Analysis of "
+#: ../lib/advene/gui/main.py:250
+msgid "...as standard workspace"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1465
-msgid "Cannot split the annotation: the given position is outside."
+#: ../lib/advene/gui/main.py:250
+msgid "Use the current layout as standard workspace in the future"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1630
-#, python-format
-msgid "Cannot find the template package %(filename)s: %(error)s"
+#: ../lib/advene/gui/main.py:252
+msgid "Associate a video _File"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1672
-#, python-format
-msgid "Cannot read the imported package %(uri)s: %(error)s"
+#: ../lib/advene/gui/main.py:252
+msgid "Associate a video file"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1907
-msgid "Package URI has changed. Reloading package with new URI."
+#: ../lib/advene/gui/main.py:253
+msgid "Associate a _DVD"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1925
-msgid ""
-"Cannot load package: the following annotations do not have Millisecond "
-"fragments:"
+#: ../lib/advene/gui/main.py:253
+msgid "Associate a chapter from a DVD"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1952
-#, python-format
-msgid "Cannot handle master attribute, the package %s is not imported."
+#: ../lib/advene/gui/main.py:254
+msgid "Associate a _Video stream"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1954
-#, python-format
-msgid "Checking master package %s for not yet imported elements."
+#: ../lib/advene/gui/main.py:254
+msgid "Enter a video stream address"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1994
-#, fuzzy
-msgid "Standard summary"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/main.py:256
+msgid "_Import File"
+msgstr "Importi dosieron"
+
+#: ../lib/advene/gui/main.py:256
+msgid "Import data from an external source"
+msgstr "Importi datumo de alia ???"
 
-#: ../lib/advene/core/controller.py:1999
+#: ../lib/advene/gui/main.py:257
 #, fuzzy
-msgid "Default view"
-msgstr "Defauxlta regularo"
+msgid "_Process video"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/core/controller.py:2041
-#, python-format
-msgid ""
-"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
-msgstr ""
+#: ../lib/advene/gui/main.py:257
+#, fuzzy
+msgid "Import data from video processing algorithms"
+msgstr "Importi datumo de alia ???"
 
-#: ../lib/advene/core/controller.py:2131
-#, python-format
-msgid "Got exception %s when stopping player."
+#: ../lib/advene/gui/main.py:259
+msgid "Merge package"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2214
-#, python-format
-msgid "Raised exception in update_status: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:259
+#, fuzzy
+msgid "Merge elements from another package"
+msgstr "Redakti importitaj elementojn de aliaj komentaroj"
 
-#: ../lib/advene/core/controller.py:2241
-msgid "Unable to start the player."
-msgstr ""
+#: ../lib/advene/gui/main.py:260
+msgid "Import _DVD chapters"
+msgstr "Importi DVD cxapitrojn"
 
-#: ../lib/advene/core/controller.py:2448
-#, fuzzy, python-format
-msgid "Comment on set of %d annotations"
+#: ../lib/advene/gui/main.py:260
+msgid "Create annotations based on DVD chapters"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/controller.py:2450
-#, fuzzy, python-format
-msgid "Comment on %s"
-msgstr "Arbvido"
+#: ../lib/advene/gui/main.py:262
+#, fuzzy
+msgid "_Export..."
+msgstr "Importi dosieron"
 
-#: ../lib/advene/core/controller.py:2454
-#, python-format
-msgid ""
-"<h1>Comment on %(title)s</h1>\n"
-"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
-"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
-"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
-"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
-"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
-"\"%(imgurl)s\" ></img></a></span>"
+#: ../lib/advene/gui/main.py:262
+#, fuzzy
+msgid "Export data to another format"
+msgstr "Importi datumo de alia ???"
+
+#: ../lib/advene/gui/main.py:263
+msgid "_Website export..."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2464
-#, fuzzy, python-format
-msgid "List of %s annotations"
+#: ../lib/advene/gui/main.py:263
+#, fuzzy
+msgid "Export views to a website"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/controller.py:2499
-#, python-format
-msgid "Cannot export to %(filename)s: %(e)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:265
+#, fuzzy
+msgid "_Quit"
+msgstr "Redakti"
 
-#: ../lib/advene/core/controller.py:2514 ../lib/advene/core/controller.py:2523
-#, python-format
-msgid "Error when exporting: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:267
+msgid "_Edit"
+msgstr "Redakti"
 
-#: ../lib/advene/core/controller.py:2525 ../lib/advene/gui/views/table.py:406
-#: ../lib/advene/gui/views/table.py:536
-#, python-format
-msgid "Data exported to %s"
+#: ../lib/advene/gui/main.py:268
+msgid "_Undo"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:51
-msgid "The webserver requires version 3.0 of CherryPy at least."
+#: ../lib/advene/gui/main.py:269
+#, fuzzy
+msgid "_Find"
+msgstr "Dosiero"
+
+#: ../lib/advene/gui/main.py:270
+msgid "_Delete"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:167
-#, python-format
-msgid ""
-"\n"
-"            <p>\n"
-"            <a href=\"/admin\">Server administration</a> |\n"
-"            <a href=\"/media\">Media control</a> |\n"
-"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
-"            </p>\n"
-"            Location: %(locationbar)s\n"
-"            <hr>\n"
-"            "
+#: ../lib/advene/gui/main.py:271
+#, fuzzy
+msgid "Create"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:272 ../lib/advene/gui/main.py:3309
+#: ../lib/advene/util/helper.py:405
+msgid "Schema"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:227
-msgid "Unspecified Error"
+#: ../lib/advene/gui/main.py:273 ../lib/advene/gui/edit/rules.py:1091
+#: ../lib/advene/rules/actions.py:236 ../lib/advene/util/helper.py:408
+msgid "View"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:228
-#, python-format
-msgid ""
-"\n"
-"        <h1>Error</h1>\n"
-"        <p>An error occurred:</p>\n"
-"        %s\n"
-"        "
+#: ../lib/advene/gui/main.py:274 ../lib/advene/gui/popup.py:459
+#: ../lib/advene/util/helper.py:409
+msgid "Query"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:261
-msgid "<h1>No available mediaplayer</h1>"
+#: ../lib/advene/gui/main.py:275 ../lib/advene/util/helper.py:406
+msgid "Annotation Type"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:265
-#, python-format
-msgid ""
-"\n"
-"            <h1>Current STBV: %(currentstbv)s</h1>\n"
-"\n"
-"            <h1>Player status</h1>\n"
-"            <table border=\"1\">\n"
-"            <tr>\n"
-"            <td>Current position</td><td>%(position)s</td>\n"
-"            <td>Duration</td><td>%(duration)s</td>\n"
-"            <td>Player status</td><td>%(status)s</td>\n"
-"            </tr>\n"
-"            </table>\n"
-"            "
+#: ../lib/advene/gui/main.py:276 ../lib/advene/util/helper.py:407
+msgid "Relation Type"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:284
-msgid "<h1>No playlist</h1>"
+#: ../lib/advene/gui/main.py:280
+msgid "P_ackage properties"
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/main.py:280
+msgid "Edit package properties"
+msgstr "Redakti komentarajn attributojn"
+
+#: ../lib/advene/gui/main.py:281
+msgid "P_references"
+msgstr "Preferoj"
+
+#: ../lib/advene/gui/main.py:281
+msgid "Interface preferences"
+msgstr "Interfacaj preferoj"
+
+#: ../lib/advene/gui/main.py:285
+msgid "_Start Web Browser"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:286
-#, python-format
-msgid ""
-"<h1>Current playlist</h1>\n"
-"                <ul>%s</ul>"
+#: ../lib/advene/gui/main.py:285
+msgid "Start the web browser"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:288
-msgid ""
-"\n"
-"                <form action=\"/media/play\" method=\"GET\">\n"
-"                Starting pos: <input type=\"text\" name=\"position\" value="
-"\"0\">\n"
-"                <input type=\"submit\" value=\"Play\">\n"
-"                </form>\n"
-"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
-"\">Pause</a><br>\n"
-"                "
+#: ../lib/advene/gui/main.py:287
+msgid "Simplify interface"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:295
-msgid ""
-"<hr />\n"
-"            <form action=\"/media/load\" method=\"GET\">\n"
-"            Add a new file (<em>dvd</em> to play a DVD):\n"
-"            <input type=\"text\" name=\"filename\">\n"
-"            <input type=\"submit\" value=\"Add\">\n"
-"            </form>"
+#: ../lib/advene/gui/main.py:287
+#, fuzzy
+msgid "Simplify the application interface (toggle)"
+msgstr "Vidi komentajxojn sur templinio"
+
+#: ../lib/advene/gui/main.py:288
+msgid "Evaluator"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:301
-msgid ""
-"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
+#: ../lib/advene/gui/main.py:288
+msgid "Open python evaluator window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:310
-#, python-format
-msgid "Unknown STBV identifier: %s"
+#: ../lib/advene/gui/main.py:289 ../lib/advene/gui/main.py:4061
+msgid "Webserver log"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:385
-msgid "Media information"
+#: ../lib/advene/gui/main.py:292
+msgid "_Player"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:398
-msgid "File added"
+#: ../lib/advene/gui/main.py:293
+msgid "Go to _Time"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:399
-#, python-format
-msgid "<p><strong>%s has been added to the playlist</strong></p>"
+#: ../lib/advene/gui/main.py:293
+msgid "Goto a specified time code"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
-msgid "Access to packages snapshots"
+#: ../lib/advene/gui/main.py:294
+msgid "Save _ImageCache"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
-msgid "Unknown package alias"
+#: ../lib/advene/gui/main.py:294
+msgid "Save the contents of the ImageCache to disk"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:426
-#, python-format
-msgid "Available snapshots for %s"
+#: ../lib/advene/gui/main.py:295
+msgid "Reset ImageCache"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:432
-#, python-format
-msgid ""
-"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
-"a></p>"
+#: ../lib/advene/gui/main.py:295
+msgid "Reset the ImageCache"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:439
-msgid "Done"
+#: ../lib/advene/gui/main.py:296
+msgid "_Restart player"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:441
-msgid "Pending"
+#: ../lib/advene/gui/main.py:296
+msgid "Restart the player"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:487
-#, fuzzy, python-format
-msgid "Unknown annotation id: %s"
+#: ../lib/advene/gui/main.py:297
+#, fuzzy
+msgid "Update annotation screenshots"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
-#, python-format
-msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
+#: ../lib/advene/gui/main.py:297
+#, fuzzy
+msgid "Update screenshots for annotation bounds"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:298
+#, fuzzy
+msgid "Select the player plugin"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:301
+msgid "No package"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:675
-msgid "<p>No GUI is available."
+#: ../lib/advene/gui/main.py:303
+msgid "_Help"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:677
-#, fuzzy, python-format
-msgid "<p>Opened adhoc views: %s</p>"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/main.py:304
+msgid "Help"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:678
-msgid "<p>Available adhoc views:</p><ul>"
+#: ../lib/advene/gui/main.py:305
+msgid "Get support"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:699
-#, python-format
-msgid "<p>Current stbv: %s</p>"
+#: ../lib/advene/gui/main.py:306
+msgid "Check for updates"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:700
-#, python-format
-msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
+#: ../lib/advene/gui/main.py:307
+msgid "Display shortcuts"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:702
-msgid "Activate and play"
+#: ../lib/advene/gui/main.py:308
+#, fuzzy
+msgid "Display logfile"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:308
+#, fuzzy
+msgid "Display log file"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:309
+msgid "Open logfile folder"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:708
-msgid "Application information"
+#: ../lib/advene/gui/main.py:309
+msgid ""
+"Display logfile folder. It can help when sending the advene.log file by e-"
+"mail."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:778
-msgid "Missing element id parameter"
+#: ../lib/advene/gui/main.py:310
+msgid "_About"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:782
+#: ../lib/advene/gui/main.py:332 ../lib/advene/gui/main.py:3789
 #, python-format
-msgid "No existing element with id %s"
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:791
-#, python-format
-msgid "<p>The GUI view %s does not exist.</p>"
+#: ../lib/advene/gui/main.py:340
+msgid "Open a package file"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:798
-msgid "Invalid request"
+#: ../lib/advene/gui/main.py:341
+msgid "Save the current package"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:803
-msgid "Invalid configuration variable name"
+#: ../lib/advene/gui/main.py:342
+msgid "Save the package with a new name"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:815
-msgid "Invalid value"
+#: ../lib/advene/gui/main.py:343
+msgid "Select movie file..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:819
-#, python-format
-msgid "Unsupported method %s"
+#: ../lib/advene/gui/main.py:344
+msgid "Select DVD"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:845
-#, python-format
-msgid ""
-"\n"
-"        <h1>Authorized hosts</h1>\n"
-"        <table border=\"1\">\n"
-"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
-"        %s\n"
-"        </table>\n"
-"        <form method=\"GET\">\n"
-"        Add a new hostname to the list :<br>\n"
-"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
-"\"Add\">\n"
-"        </form>\n"
-"        "
+#: ../lib/advene/gui/main.py:346
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:808
+#: ../lib/advene/gui/edit/transcribe.py:1203
+msgid "Undo"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:859
-msgid "Access control"
-msgstr ""
+#: ../lib/advene/gui/main.py:348
+#, fuzzy
+msgid "Create a text annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/webcherry.py:864
-msgid "Access control - add a hostname"
-msgstr ""
+#: ../lib/advene/gui/main.py:349
+#, fuzzy
+msgid "Create a graphical annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
-#, python-format
-msgid "<strong>Error: %s is an invalid hostname.</strong>"
+#: ../lib/advene/gui/main.py:355
+msgid "List recently opened packages"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:875
+#: ../lib/advene/gui/main.py:385
+#, fuzzy
+msgid "Snapshotter activity"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/main.py:387
 #, python-format
-msgid "<p>Added %s to authorized hosts list.</p>"
+msgid "%d queued requests"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:881
-msgid "Access control - delete a hostname"
+#: ../lib/advene/gui/main.py:388
+msgid "Cancel all requests"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:889
-msgid "<strong>Cannot remove the localhost access.</strong>"
-msgstr ""
+#: ../lib/advene/gui/main.py:393
+#, fuzzy
+msgid "No snapshotter"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/core/webcherry.py:894
-#, python-format
-msgid "<p>Removed %s from authorized hosts list.</p>"
+#: ../lib/advene/gui/main.py:415
+msgid "No snapshotting activity"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:896
-#, python-format
-msgid "<p>%s is not in authorized hosts list.</p>"
+#: ../lib/advene/gui/main.py:419
+#, fuzzy
+msgid "Snapshotting"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/main.py:436
+#, fuzzy
+msgid "Display application log messages"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:477
+msgid "Quicksearch lists"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:945
-msgid "Server Administration"
+#: ../lib/advene/gui/main.py:483
+msgid "Please specify the lists of elements to be searched."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:953
+#: ../lib/advene/gui/main.py:502
 #, python-format
 msgid ""
-"\n"
-"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
-"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
-"        <p><a href=\"/action\">List available actions</a></p>\n"
-"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
-"        <p><a href=\"/media\">Media control</a></p>\n"
-"        <p><a href=\"/application\">Display GUI status</a></p>\n"
-"        <p><a href=\"/admin/list\">List available files</a></p>\n"
-"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
-"p>\n"
-"        <p>Display mode : %(displaymode)s</p>\n"
-"        <hr>\n"
-"        <p>Load a package :\n"
-"        <form action=\"/admin/load\" method=\"GET\">\n"
-"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
-"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
-"        <input type=\"submit\" value=\"Load\" />\n"
-"        </form>\n"
-"        </body></html>\n"
-"        "
+"Searching on %s.\n"
+"Left click to launch the search, right-click to set the quicksearch options"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:983
-msgid "Available files"
+#: ../lib/advene/gui/main.py:503
+#, python-format
+msgid "String to search in %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1009
-msgid "You should specify an alias"
+#: ../lib/advene/gui/main.py:516 ../lib/advene/gui/main.py:520
+msgid "Tracing : "
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1014
-msgid "You should specify an uri"
+#: ../lib/advene/gui/main.py:516
+msgid "off"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1020
-#, python-format
-msgid "Package %s loaded"
+#: ../lib/advene/gui/main.py:520
+msgid "on"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
-#, python-format
-msgid ""
-"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
-"the <a href=\"/packages\">package list</a>."
+#: ../lib/advene/gui/main.py:532
+#: ../lib/advene/gui/views/interactivequery.py:409
+msgid "String to search"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1024
-#, python-format
-msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:540
+msgid "Launch search"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1035
-#, python-format
-msgid "Package %s deleted"
+#: ../lib/advene/gui/main.py:545
+msgid "Ignore case"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1036
-msgid "<p>Go to the <a href=\"/packages\">package list</a>."
-msgstr ""
+#: ../lib/advene/gui/main.py:550
+#, fuzzy
+msgid "Searched elements"
+msgstr "Arbvido"
 
-#: ../lib/advene/core/webcherry.py:1039
-#, python-format
-msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:634
+msgid "Playing"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1056
-#, python-format
-msgid "Package %s saved"
+#: ../lib/advene/gui/main.py:635
+msgid "Pause"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1060
-#, python-format
-msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:636
+msgid "Init"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1070
-msgid "Server reset"
+#: ../lib/advene/gui/main.py:637 ../lib/advene/gui/views/table.py:308
+#: ../lib/advene/gui/edit/elements.py:1816
+msgid "End"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1076
-msgid "Available TALES methods"
+#: ../lib/advene/gui/main.py:638
+msgid "Undefined"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1117
-msgid "Loaded package(s)"
+#: ../lib/advene/gui/main.py:660
+#, fuzzy, python-format
+msgid "Exception in update_annotation: %s."
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:691
+#, python-format
+msgid "Exception in update_relation: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1119
-msgid ""
-"\n"
-"        <h1>Loaded package(s)</h1>\n"
-"        <table border=\"1\" width=\"50%\">\n"
-"        <tr>\n"
-"        <th>Alias</th>\n"
-"        <th>Action</th>\n"
-"        <th>URI</th>\n"
-"        <th>Annotations</th>\n"
-"        </tr>\n"
-"        "
+#: ../lib/advene/gui/main.py:716
+#, python-format
+msgid "Exception in update_view: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1131
+#: ../lib/advene/gui/main.py:747
 #, python-format
-msgid ""
-"<tr>\n"
-"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
-"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
-"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
-"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
-"            <td>%(uri)s</td>\n"
-"            <td>%(size)d</td>\n"
-"            </tr>\n"
-"            "
+msgid "Exception in update_query: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
-#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
-#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
-#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
-#: ../lib/advene/core/webcherry.py:2039
-msgid "Error"
+#: ../lib/advene/gui/main.py:770
+#, python-format
+msgid "Exception in update_resource: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1205
+#: ../lib/advene/gui/main.py:793
 #, python-format
-msgid "The TALES expression %s is not valid."
+msgid "Exception in update_schema: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1256
-msgid "Content mode not available on non-content data"
+#: ../lib/advene/gui/main.py:816
+#, fuzzy, python-format
+msgid "Exception in update_annotationtype: %s."
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:844
+#, fuzzy, python-format
+msgid "Exception in update_relationtype: %s."
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:950
+msgid "Enter the new time value"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
-#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
-#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
-#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
-#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
-#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
-msgid "<h1>Error</h1>"
+#: ../lib/advene/gui/main.py:974
+#, fuzzy, python-format
+msgid "Replace content in %d elements"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:987
+#, fuzzy
+msgid "Find word"
+msgstr "Dosiero"
+
+#: ../lib/advene/gui/main.py:994
+msgid "Replace by"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
+#: ../lib/advene/gui/main.py:1022
 #, python-format
-msgid ""
-"<p>There was an error in the template code.</p>\n"
-"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"                <p>Error message: <em>%(message)s</em></p>"
+msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1290
-#, python-format
-msgid ""
-"<p>An invalid character is in the Context:</p>\n"
-"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
-"pre>"
+#: ../lib/advene/gui/main.py:1031
+msgid "The video extracting feature is not available."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1298
+#: ../lib/advene/gui/main.py:1034
+#, fuzzy
+msgid "Video export"
+msgstr "Vido"
+
+#: ../lib/advene/gui/main.py:1036
 #, python-format
-msgid ""
-"<p>There was an error in the TALES expression.</p>\n"
-"                <pre>%s</pre>"
+msgid "Exporting video montage/fragment to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1318
-#, python-format
+#: ../lib/advene/gui/main.py:1038
+#, fuzzy
+msgid "Please choose a destination filename"
+msgstr "Elekti ilobretan stilon"
+
+#: ../lib/advene/gui/main.py:1116
 msgid ""
-"<p>There was an error.</p>\n"
-"                <pre>%s</pre>"
+"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/core/webcherry.py:1342
+#: ../lib/advene/gui/main.py:1118
 #, python-format
 msgid ""
-"\n"
-"            <hr>\n"
-"            <p>\n"
-"            Location: %(location)s<br>\n"
-"            <form name=\"navigation\" method=\"GET\">\n"
-"            <a href=\"%(levelup)s\">Up one level</a> |\n"
-"            Next level :\n"
-"            <select name=\"path\" onchange=\"submit()\">\n"
-"            "
+"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/core/webcherry.py:1360
+#: ../lib/advene/gui/main.py:1120
+#, python-format
 msgid ""
-"\n"
-"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
-"            <option selected></option>\n"
-"            "
+"You are now working with the following video:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1378
-#, python-format
-msgid ""
-"<hr>\n"
-"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
-"package %(uri)s returns %(value)s</p>\n"
-"            "
-msgstr ""
+#: ../lib/advene/gui/main.py:1237
+#, fuzzy
+msgid "Open this view..."
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/core/webcherry.py:1414
-#, python-format
-msgid "<p>Package <strong>%s</strong> not loaded</p>"
+#: ../lib/advene/gui/main.py:1238 ../lib/advene/gui/plugins/actions.py:286
+#: ../lib/advene/gui/views/viewbook.py:124
+msgid "...in its own window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1456
-#, python-format
-msgid ""
-"<p>There was an error in the template code.</p>\n"
-"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"            <p>Error message: <em>%(message)s</em></p>"
+#: ../lib/advene/gui/main.py:1239 ../lib/advene/gui/plugins/actions.py:287
+#: ../lib/advene/gui/views/viewbook.py:125
+#: ../lib/advene/gui/views/__init__.py:382
+msgid "...embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1464
-#, python-format
-msgid ""
-"<p>There was an error in the expression.</p>\n"
-"            <pre>%s</pre>"
+#: ../lib/advene/gui/main.py:1240 ../lib/advene/gui/plugins/actions.py:288
+#: ../lib/advene/gui/views/viewbook.py:126
+#: ../lib/advene/gui/views/__init__.py:383
+msgid "...embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1472
-#, python-format
-msgid ""
-"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
-"            %(type)s\n"
-"            %(value)s\n"
-"            %(traceback)s</pre>"
+#: ../lib/advene/gui/main.py:1241 ../lib/advene/gui/plugins/actions.py:289
+#: ../lib/advene/gui/views/viewbook.py:127
+#: ../lib/advene/gui/views/__init__.py:384
+msgid "...embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
-msgid "<p>Cannot set the value : invalid path</p>"
+#: ../lib/advene/gui/main.py:1242 ../lib/advene/gui/plugins/actions.py:290
+#: ../lib/advene/gui/views/viewbook.py:128
+#: ../lib/advene/gui/views/__init__.py:385
+msgid "...embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
-#, python-format
-msgid ""
-"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
-"%(folder)s could not be created.</p>"
-msgstr ""
+#: ../lib/advene/gui/main.py:1254
+#, fuzzy
+msgid "_All available views"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
-msgid "Resource successfuly created/updated"
+#: ../lib/advene/gui/main.py:1270 ../lib/advene/gui/views/timeline.py:126
+msgid "Timeline"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1611
-msgid "Value successfuly updated"
+#: ../lib/advene/gui/main.py:1271 ../lib/advene/gui/views/finder.py:771
+#, fuzzy
+msgid "Package finder"
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/main.py:1272
+#, fuzzy
+msgid "Transcription of annotations"
+msgstr "Importi transkribon"
+
+#: ../lib/advene/gui/main.py:1273
+#, fuzzy
+msgid "Annotation table"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:1276
+msgid "Note-taking editor"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1613
-#, python-format
-msgid ""
-"Unable to update the attribute %(attribute)s for element %(element)s: "
-"%(error)s."
+#: ../lib/advene/gui/main.py:1277
+msgid "Active bookmarks"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1724
-msgid "<p>Invalid request</p>."
+#: ../lib/advene/gui/main.py:1280 ../lib/advene/gui/views/tagbag.py:57
+msgid "Bag of tags"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
-msgid "Value updated"
+#: ../lib/advene/gui/main.py:1281
+msgid "TALES explorer"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1789
-#, python-format
+#: ../lib/advene/gui/main.py:1282
+#, fuzzy
+msgid "Dynamic montage"
+msgstr "Importi transkribon"
+
+#: ../lib/advene/gui/main.py:1283 ../lib/advene/gui/plugins/videoplayer.py:37
+#, fuzzy
+msgid "Video player"
+msgstr "Vido"
+
+#: ../lib/advene/gui/main.py:1286
+#, fuzzy
+msgid "Open a comment view in the web browser"
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/main.py:1287
+#, fuzzy
+msgid "Create or open a comment view"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:1290
 msgid ""
-"\n"
-"                <h1>Value updated</h1>\n"
-"                The value of %(path)s has been updated to\n"
-"                <pre>\n"
-"                %(value)s\n"
-"                </pre>\n"
-"                "
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1806
-#, python-format
-msgid ""
-"\n"
-"                    <h1>Value updated</h1>\n"
-"                    The value of %(path)s has been updated to\n"
-"                    <pre>\n"
-"                    %(value)s\n"
-"                    </pre>\n"
-"                    "
+#: ../lib/advene/gui/main.py:1291
+#, fuzzy
+msgid "Display edition history"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:1320
+msgid "The webserver could not be started. Static views cannot be accessed."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1817
+#: ../lib/advene/gui/main.py:1398
 #, python-format
 msgid ""
-"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
+"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
+"released</b> on %(date)s, but you are running version %(current)s.\n"
+"You can download the latest version from the Advene website: http://advene."
+"org/</span>"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1860
-msgid "Cannot create an element in something else than a package."
-msgstr ""
+#: ../lib/advene/gui/main.py:1403
+#, fuzzy
+msgid "Go to the website"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/webcherry.py:1877
-#, python-format
-msgid "The identifier %s already exists."
-msgstr ""
+#: ../lib/advene/gui/main.py:1409
+#, fuzzy
+msgid "Advene release"
+msgstr "Advene"
 
-#: ../lib/advene/core/webcherry.py:1889
+#: ../lib/advene/gui/main.py:1415
 #, python-format
-msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
+msgid "You are using a up-to-date version of Advene (%(current)s)."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1895
-msgid "View created"
+#: ../lib/advene/gui/main.py:1415
+msgid "Advene is up-to-date"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1896
+#: ../lib/advene/gui/main.py:1429
+#, fuzzy
+msgid "Choose a color"
+msgstr "Elekti ilobretan stilon"
+
+#: ../lib/advene/gui/main.py:1461
+#, fuzzy
+msgid "Select an annotation to loop on it"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:1463
 #, python-format
-msgid ""
-"\n"
-"                 <h1>View <em>%(id)s</em> created</h1>\n"
-"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
-"created.</p>\n"
-"                 "
+msgid "Looping on %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1912
-#, python-format
-msgid "Missing %s parameter"
+#: ../lib/advene/gui/main.py:1521 ../lib/advene/gui/main.py:2409
+#, fuzzy
+msgid "No active dynamic view"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:1532
+#, fuzzy
+msgid "Create a new dynamic view."
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:1551
+#, fuzzy
+msgid "Edit the current dynamic view."
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:1563
+#, fuzzy
+msgid "No dynamic view"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:1594
+msgid "Playing rate"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1915
-#, python-format
-msgid "Relation type %s does not exist"
+#: ../lib/advene/gui/main.py:1742
+msgid "History"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
-#, fuzzy, python-format
-msgid "Annotation %s does not exist"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:1749
+msgid "Popups"
+msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1928
-#, python-format
+#: ../lib/advene/gui/main.py:1753
 msgid ""
-"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
-"p>"
+"You can drag and drop view icons (timeline, treeview, transcription...) in "
+"notebooks to embed various views."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1940
-#, python-format
-msgid ""
-"<p>Error while creating relation between %(member1)s and %(member2)s :</"
-"p><pre>%(error)s</pre>"
+#: ../lib/advene/gui/main.py:1753
+msgid "Information"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1943
+#: ../lib/advene/gui/main.py:2046
+msgid "Cannot create annotation. There is no schema to put it in."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2055
 #, fuzzy
-msgid "Relation created"
-msgstr "Defauxlta regularo"
+msgid "Default annotation type"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/webcherry.py:1944
-#, fuzzy, python-format
-msgid "<h1>Relation <em>%s</em> created</h1>"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/main.py:2067
+#, fuzzy
+msgid "Annotation created"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/core/webcherry.py:1954
-#, python-format
-msgid "Annotation type %s does not exist"
+#: ../lib/advene/gui/main.py:2099
+msgid "Play/Pause [Control-Tab / Control-Space]"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1971
+#: ../lib/advene/gui/main.py:2100
 #, python-format
-msgid ""
-"<p>Error while creating annotation of type %(type)s :<pre>\n"
-"                    %(errortype)s\n"
-"                    %(value)s\n"
-"                    %(traceback)s</pre>"
+msgid "Rewind (%.02f s) [Control-Left]"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1983
-#, fuzzy, python-format
-msgid "Annotation %s created"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/core/webcherry.py:1985
+#: ../lib/advene/gui/main.py:2101
 #, python-format
-msgid "Error: Cannot create an object of type %s."
+msgid "Forward (%.02f s) [Control-Right]"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1988
-#, python-format
-msgid ""
-"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
-"code></p>"
+#: ../lib/advene/gui/main.py:2102
+msgid "Previous frame [Control-Down]"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2001
-msgid "Available actions"
+#: ../lib/advene/gui/main.py:2103
+msgid "Next frame [Control-Up]"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2010
-#, python-format
-msgid "<li>%(name)s: %(value)s"
+#: ../lib/advene/gui/main.py:2104
+msgid "Fullscreen"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2033
+#: ../lib/advene/gui/main.py:2256
 #, python-format
-msgid "<p>Unknown action</p><pre>Action: %s</pre>"
+msgid "Screenshot saved to %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2040
-msgid "Missing parameter(s) :<ul>"
+#: ../lib/advene/gui/main.py:2258
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2076
-msgid "Advene web resources"
+#: ../lib/advene/gui/main.py:2260
+#, fuzzy, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:2268
+msgid "Save screenshot to..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2082
-msgid "Advene webserver"
+#: ../lib/advene/gui/main.py:2286
+msgid "Could not take snapshot with enough precision"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2083
+#: ../lib/advene/gui/main.py:2324
+#, fuzzy
+msgid "Export package data"
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/main.py:2326
+#, fuzzy, python-format
+msgid "Export annotation type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:2328
+#, fuzzy, python-format
+msgid "Export element %s"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:2354
+#, fuzzy
+msgid "Export format"
+msgstr "Importi dosieron"
+
+#: ../lib/advene/gui/main.py:2391
+#, fuzzy
+msgid " (modified)"
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/main.py:2394
 #, python-format
-msgid ""
-"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
-"webserver run by %(userid)s on %(serveraddress)s.</p>"
+msgid "Activate %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2090
-msgid ""
-" <p>No package is loaded. You can access the <a href=\"/admin\">server "
-"administration page</a>.<p>"
+#: ../lib/advene/gui/main.py:2564
+msgid "Saved workspace"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2100
-#, python-format
-msgid ""
-"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
-"view</a>"
+#: ../lib/advene/gui/main.py:2616
+msgid "Restoring workspace..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2102
+#: ../lib/advene/gui/main.py:2622
 #, python-format
-msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
+msgid "Do you wish to restore the %s workspace ?"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2104
-msgid "the <a href=\"/packages\">loaded packages' data</a>"
-msgstr ""
+#: ../lib/advene/gui/main.py:2627
+#, fuzzy
+msgid "Clear the current workspace"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/core/webcherry.py:2105
+#: ../lib/advene/gui/main.py:2648
 #, python-format
-msgid ""
-" <p>You can either access %s or the <a href=\"/admin\">server administration "
-"page</a>.<p>"
+msgid "View %s is not an adhoc view"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2107
+#: ../lib/advene/gui/main.py:2659
 #, python-format
-msgid ""
-"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
-"fr/advene/\">Advene</a> v. %s.</em></p>"
+msgid "Cannot identify the adhoc view %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
-#, python-format
-msgid "Cannot start HTTP server: %s"
+#: ../lib/advene/gui/main.py:2673
+msgid "Choose the annotation type to display as transcription."
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:61
+#: ../lib/advene/gui/main.py:2708
 #, python-format
-msgid "%s exists but is not a directory. Cancelling website export"
+msgid "Error: unable to find an edit popup for %(element)s"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:67
+#: ../lib/advene/gui/main.py:2715
 #, fuzzy, python-format
-msgid "%s does not exist"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Editing %s"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/util/website_export.py:422
-msgid "Starting export"
+#: ../lib/advene/gui/main.py:2727
+#, fuzzy, python-format
+msgid "Comment view (%s)"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:2794
+#, python-format
+msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:451
+#: ../lib/advene/gui/main.py:2805
 #, python-format
-msgid "Depth %d"
+msgid "Activating package %s"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:455
+#: ../lib/advene/gui/main.py:2833
 #, python-format
-msgid "Depth %(depth)d: processing %(url)s"
+msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:477
-msgid "Finalizing"
+#: ../lib/advene/gui/main.py:2865
+msgid "Do you want to restore the saved workspace ?"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:511
+#: ../lib/advene/gui/main.py:2872
+msgid "Advene"
+msgstr "Advene"
+
+#: ../lib/advene/gui/main.py:3077
 #, python-format
-msgid ""
-"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
-"strong></p>"
+msgid "Got exception %s. Trying to continue."
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:554
+#: ../lib/advene/gui/main.py:3101 ../lib/advene/gui/main.py:3122
+#: ../lib/advene/gui/main.py:4072
 #, fuzzy
-msgid "Export complete"
-msgstr "Importi dosieron"
+msgid "Unknown"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/util/importer.py:134
-msgid "Generic importer"
+#: ../lib/advene/gui/main.py:3192
+#, python-format
+msgid ""
+"The package(s) %s are modified.\n"
+"Save them now?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:161
-msgid "Usage: %prog [options] source-file destination-file"
+#: ../lib/advene/gui/main.py:3224
+#: ../lib/advene/gui/views/interactivequery.py:375
+msgid "Empty quicksearch string"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:165
-msgid "Specify the offset in ms"
+#: ../lib/advene/gui/main.py:3227
+#: ../lib/advene/gui/views/interactivequery.py:280
+#, python-format
+msgid "'%s'"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:210
-msgid ""
-"Import filter error. The asynchronous API should be used, please report a "
-"bug."
+#: ../lib/advene/gui/main.py:3242
+msgid "Choose an annotation type."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:212
-msgid ""
-"Import filter error. No conversion method is defined,  please report a bug."
+#: ../lib/advene/gui/main.py:3261 ../lib/advene/gui/views/timeline.py:3028
+#: ../lib/advene/gui/edit/transcribe.py:1019
+msgid "Create a new annotation type"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:344
-#, python-format
-msgid "Converted from %s"
+#: ../lib/advene/gui/main.py:3286
+msgid "No annotation type is defined."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:469
+#: ../lib/advene/gui/main.py:3295
 #, fuzzy
-msgid "ExternalApp importer"
-msgstr "Importi dosieron"
+msgid "Creating a new type."
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/importer.py:483
-#, python-format
+#: ../lib/advene/gui/main.py:3299
+#, fuzzy
+msgid "Title of the new type"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:3300
 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."
+"Id of the new type. It is generated from the title, but you may change it if "
+"necessary."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:485
-#, fuzzy, python-format
-msgid "The file %s does not seem to exist."
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/util/importer.py:507
-#, fuzzy, python-format
-msgid "Could not run %(appname)s: %(msg)s"
+#: ../lib/advene/gui/main.py:3304
+#, fuzzy
+msgid "Specify the content-type for the annotation type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/importer.py:509
-#, fuzzy, python-format
-msgid "Processing %s"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/util/importer.py:513
-msgid "Cleaning up..."
-msgstr ""
+#: ../lib/advene/gui/main.py:3306
+#, fuzzy
+msgid "Content type"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/util/importer.py:633
-msgid "Text importer"
+#: ../lib/advene/gui/main.py:3313 ../lib/advene/gui/main.py:3422
+msgid "Create a new schema"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:646 ../lib/advene/util/importer.py:1176
-msgid "Specify the encoding of the input file (latin1, utf8...)"
+#: ../lib/advene/gui/main.py:3326
+msgid "Choose an existing schema for the new type, or create a new one"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:649
-msgid "Should the timestamps be encoded relative to the first timestamp?"
+#: ../lib/advene/gui/main.py:3329 ../lib/advene/gui/main.py:3437
+msgid "Specify the schema title"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:652
-msgid "Unit to consider for integers"
+#: ../lib/advene/gui/main.py:3333
+msgid "Title of the new schema"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:655
+#: ../lib/advene/gui/main.py:3334
 msgid ""
-"What timestamps are present in a line (only begin, both begin and end, or "
-"automatic recognition)"
+"Id of the new schema. It is generated from the title, but you may change it "
+"if necessary."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:798
-msgid "lsdvd importer"
+#: ../lib/advene/gui/main.py:3357
+msgid ""
+"You specified a annotation-type identifier that already exists. Aborting."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:825
-msgid "Processing data"
+#: ../lib/advene/gui/main.py:3375
+msgid "You specified a existing schema identifier. Using the existing schema."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:843 ../lib/advene/util/importer.py:903
-#, fuzzy
-msgid "DVD Chapter"
-msgstr "Importi DVD cxapitrojn"
-
-#: ../lib/advene/util/importer.py:847
-msgid "Launching lsdvd..."
+#: ../lib/advene/gui/main.py:3377
+msgid ""
+"You specified an existing identifier that does not reference a schema. "
+"Aborting."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:859
-msgid "chaplin importer"
+#: ../lib/advene/gui/main.py:3404
+msgid "Choose a schema."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:917
-msgid "Xi importer"
+#: ../lib/advene/gui/main.py:3464
+msgid "You specified an existing identifier. Aborting."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:986
-msgid "ELAN importer"
-msgstr ""
+#: ../lib/advene/gui/main.py:3484
+#, fuzzy, python-format
+msgid "Package %s modified"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/util/importer.py:1039
+#: ../lib/advene/gui/main.py:3485
 #, python-format
-msgid "Converting tier %s"
-msgstr ""
-
-#: ../lib/advene/util/importer.py:1140
-msgid "Processing time slots"
+msgid ""
+"The package %s has been modified but not saved.\n"
+"Save it now?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1155
-#, fuzzy
-msgid "Fixing forward references"
-msgstr "Interfacaj preferoj"
-
-#: ../lib/advene/util/importer.py:1157
-msgid "Creating relations"
+#: ../lib/advene/gui/main.py:3495
+#, python-format
+msgid "%s snapshots"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1169
-msgid "Subtitle (SRT) importer"
+#: ../lib/advene/gui/main.py:3496
+#, python-format
+msgid "Do you want to save the snapshots for media %s?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1238
+#: ../lib/advene/gui/main.py:3503 ../lib/advene/gui/main.py:3512
+#: ../lib/advene/gui/main.py:4490
 #, python-format
-msgid "Subtitles from %s"
+msgid "Cannot save imagecache for %(media)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1251
-msgid "PRAAT importer"
+#: ../lib/advene/gui/main.py:3526
+msgid "first frame"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1341
-msgid "CMML importer"
+#: ../lib/advene/gui/main.py:3527
+msgid "last frame"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1404
-msgid "Parsing clip information"
-msgstr ""
+#: ../lib/advene/gui/main.py:3535
+#, fuzzy, python-format
+msgid "Click on %(bound)s of %(annotation)s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/importer.py:1501
-#: ../lib/advene/plugins/transcriber.py:254
-msgid "Creating package"
-msgstr ""
+#: ../lib/advene/gui/main.py:3538
+#, fuzzy, python-format
+msgid "Update %(bound)s of %(annotation)s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/importer.py:1504
-msgid "Creating CMML schema"
+#: ../lib/advene/gui/main.py:3557
+msgid "Click on the frame corresponding to the timestamp value"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1508
-#: ../lib/advene/plugins/transcriber.py:260
+#: ../lib/advene/gui/main.py:3559
 #, fuzzy
-msgid "Creating annotation types"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Set new timestamp value"
+msgstr "Arbvido"
 
-#: ../lib/advene/util/importer.py:1514
-#: ../lib/advene/plugins/transcriber.py:265
-msgid "Parsing header information"
-msgstr ""
+#: ../lib/advene/gui/main.py:3566
+#, fuzzy
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/importer.py:1528
-msgid "Parsing stream information"
-msgstr ""
+#: ../lib/advene/gui/main.py:3638
+#, fuzzy
+msgid "Text annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/importer.py:1562
+#: ../lib/advene/gui/main.py:3646 ../lib/advene/gui/main.py:3671
 #, fuzzy
-msgid "IRI importer"
-msgstr "Importi dosieron"
+msgid "Cannot find an appropriate annotation type"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/importer.py:1571
-msgid "Generate one type per view"
+#: ../lib/advene/gui/main.py:3648 ../lib/advene/gui/views/bookmarks.py:296
+#, fuzzy
+msgid "Comment here"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:3664
+#, fuzzy
+msgid "Graphical annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:3716
+msgid ""
+"An unsaved template package exists\n"
+"Save it first."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1591
-#, python-format
-msgid "Parsing ensemble %s"
+#: ../lib/advene/gui/main.py:3725
+msgid "Package modified"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1602
-#, python-format
-msgid "Parsing decoupage %s"
+#: ../lib/advene/gui/main.py:3726
+msgid ""
+"The package that you want to close has been modified but not saved.\n"
+"Save it now?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1638
-msgid "Parsing views"
+#: ../lib/advene/gui/main.py:3757
+msgid "Load a package"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1686 ../lib/advene/util/importer.py:1775
-msgid "Initializing package"
+#: ../lib/advene/gui/main.py:3766
+msgid ""
+"A video file was selected. Pretend that the user selected 'Select a video "
+"file'..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1724
-#, fuzzy
-msgid "IRIData importer"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/main.py:3771
+#, 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/util/importer.py:1738
-msgid "Parsing sound values"
+#: ../lib/advene/gui/main.py:3780
+msgid ""
+"You are trying to load a session file, but there are unsaved packages. "
+"Proceed anyway?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1750
+#: ../lib/advene/gui/main.py:3808 ../lib/advene/gui/main.py:3864
 #, fuzzy
-msgid "Creating annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Do you want to save the current workspace ?"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/util/helper.py:402
-msgid "Package"
-msgstr ""
+#: ../lib/advene/gui/main.py:3823 ../lib/advene/gui/main.py:3879
+#, fuzzy, python-format
+msgid "Could not save the package: %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/util/helper.py:403
-msgid "Annotation"
+#: ../lib/advene/gui/main.py:3836
+#, python-format
+msgid "Save the package %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:404
-msgid "Relation"
+#: ../lib/advene/gui/main.py:3849
+msgid "Invalid file extension"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/edit/schemaeditor.py:111
-#: ../lib/advene/gui/main.py:276 ../lib/advene/gui/main.py:3270
-msgid "Schema"
+#: ../lib/advene/gui/main.py:3850
+#, python-format
+msgid ""
+"Your package contains resources,\n"
+"the filename (%s) should have a .azp extension.\n"
+"Should I put the correct extension?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:279
-msgid "Annotation Type"
+#: ../lib/advene/gui/main.py:3854
+msgid "OK, the resources will be lost."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/main.py:280
-msgid "Relation Type"
+#: ../lib/advene/gui/main.py:3856
+msgid "Aborting package saving"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:408 ../lib/advene/rules/actions.py:236
-#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/gui/main.py:277
-msgid "View"
+#: ../lib/advene/gui/main.py:3890
+msgid "Save the session in..."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/main.py:278
-#: ../lib/advene/gui/popup.py:459
-msgid "Query"
+#: ../lib/advene/gui/main.py:3901
+#, python-format
+msgid "Session saved in %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:410
-msgid "Resource Folder"
+#: ../lib/advene/gui/main.py:3910
+msgid "Do you confirm the creation of annotations matching the DVD chapters?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:411 ../lib/advene/gui/edit/create.py:122
-msgid "Resource File"
+#: ../lib/advene/gui/main.py:3916
+msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:446
-msgid "---- Elements ----"
+#: ../lib/advene/gui/main.py:3924
+msgid "The associated media is not a DVD."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:452
-msgid "---- Attributes ----"
-msgstr ""
+#: ../lib/advene/gui/main.py:3935
+#, fuzzy, python-format
+msgid "Processing %s video"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/util/helper.py:455
-msgid "---- Methods ----"
-msgstr ""
+#: ../lib/advene/gui/main.py:3938
+#, fuzzy
+msgid "No associated video file"
+msgstr "Vido"
 
-#: ../lib/advene/util/helper.py:531
-#, python-format
-msgid "Cannot read %(filename)s: %(error)s"
+#: ../lib/advene/gui/main.py:3965
+msgid "Standard RuleSet"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:555
+#: ../lib/advene/gui/main.py:4081
 #, python-format
 msgid ""
-"Error:\n"
-"%s"
+"Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:565
-#, python-format
-msgid ""
-"Package %(title)s:\n"
-"%(schema)s\n"
-"%(annotation)s in %(annotation_type)s\n"
-"%(relation)s in %(relation_type)s\n"
-"%(query)s\n"
-"%(view)s\n"
-"\n"
-"Description:\n"
-"%(description)s\n"
+#: ../lib/advene/gui/main.py:4096
+msgid "Visit the Advene web site for examples and documentation."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:592
-#, fuzzy
-msgid "Min duration"
-msgstr "Elekti ilobretan stilon"
-
-#: ../lib/advene/util/helper.py:593
-#, fuzzy
-msgid "Max duration"
-msgstr "Elekti ilobretan stilon"
-
-#: ../lib/advene/util/helper.py:594
-#, fuzzy
-msgid "Mean duration"
-msgstr "Elekti ilobretan stilon"
-
-#: ../lib/advene/util/helper.py:595
-#, fuzzy
-msgid "Total duration"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4129 ../lib/advene/gui/main.py:4217
+msgid "Select a movie file"
+msgstr ""
 
-#: ../lib/advene/util/helper.py:601
-msgid "schema"
+#: ../lib/advene/gui/main.py:4141
+msgid "Title/Chapter selection"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:601
-msgid "schemas"
+#: ../lib/advene/gui/main.py:4183
+msgid "Select a video stream"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotation"
+#: ../lib/advene/gui/main.py:4184
+msgid "Enter the address of a video stream"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotations"
+#: ../lib/advene/gui/main.py:4188
+#, python-format
+msgid "Successfully extracted the video stream address (%s) from the url.\n"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation type"
+#: ../lib/advene/gui/main.py:4213
+msgid "Package properties"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation types"
+#: ../lib/advene/gui/main.py:4214 ../lib/advene/gui/edit/elements.py:514
+#: ../lib/advene/gui/edit/elements.py:563
+#: ../lib/advene/gui/edit/elements.py:650
+#: ../lib/advene/gui/edit/elements.py:730
+#: ../lib/advene/gui/edit/elements.py:787
+#: ../lib/advene/gui/edit/elements.py:879
+#: ../lib/advene/gui/edit/elements.py:948
+#: ../lib/advene/gui/edit/elements.py:1060
+#: ../lib/advene/gui/edit/elements.py:1122
+msgid "Author"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:605
-msgid "relation"
+#: ../lib/advene/gui/main.py:4214
+msgid "Author name"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:605
-msgid "relations"
+#: ../lib/advene/gui/main.py:4215 ../lib/advene/gui/edit/elements.py:515
+#: ../lib/advene/gui/edit/elements.py:564
+#: ../lib/advene/gui/edit/elements.py:651
+#: ../lib/advene/gui/edit/elements.py:731
+#: ../lib/advene/gui/edit/elements.py:788
+#: ../lib/advene/gui/edit/elements.py:880
+#: ../lib/advene/gui/edit/elements.py:949
+#: ../lib/advene/gui/edit/elements.py:1061
+#: ../lib/advene/gui/edit/elements.py:1123
+msgid "Date"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation type"
+#: ../lib/advene/gui/main.py:4215
+#, fuzzy
+msgid "Package creation date"
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/main.py:4216 ../lib/advene/gui/views/table.py:674
+#: ../lib/advene/gui/util/dialog.py:386 ../lib/advene/gui/edit/imports.py:331
+#: ../lib/advene/gui/edit/dvdselect.py:95
+#: ../lib/advene/gui/edit/transcribe.py:1047
+msgid "Title"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation types"
+#: ../lib/advene/gui/main.py:4216
+#, fuzzy
+msgid "Package title"
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/main.py:4217
+msgid "Associated media"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:608
-msgid "query"
+#: ../lib/advene/gui/main.py:4218 ../lib/advene/gui/views/table.py:309
+msgid "Duration"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:608
-msgid "queries"
+#: ../lib/advene/gui/main.py:4218
+msgid "Media duration in ms"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
-msgid "view"
+#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/plugins/eventaccumulator.py:143
+msgid "Reset"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
-msgid "views"
+#: ../lib/advene/gui/main.py:4275 ../lib/advene/gui/views/timeline.py:3496
+#: ../lib/advene/gui/views/timeline.py:3647
+#: ../lib/advene/gui/views/tagbag.py:64 ../lib/advene/gui/edit/properties.py:51
+#: ../lib/advene/gui/edit/transcribe.py:147
+#: ../lib/advene/gui/edit/transcribe.py:1187
+msgid "Preferences"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:610
-msgid "package"
+#: ../lib/advene/gui/main.py:4277
+msgid "Paths"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:610
-msgid "packages"
+#: ../lib/advene/gui/main.py:4279
+msgid "Data"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:622
-#, python-format
-msgid "No %s"
+#: ../lib/advene/gui/main.py:4279
+msgid "Standard directory for data files"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:624
-#, python-format
-msgid "1 %s"
+#: ../lib/advene/gui/main.py:4280
+msgid "Movie path"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:626
+#: ../lib/advene/gui/main.py:4280
 #, python-format
-msgid "%(count)d %(plural)s"
+msgid ""
+"List of directories (separated by %s) to search for movie files (_ means "
+"package directory)"
 msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:76
-#, fuzzy
-msgid "Cinelab importer"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/main.py:4281
+msgid "Imagecache"
+msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
-#, python-format
-msgid "File %s is not an Advene2 zip package."
+#: ../lib/advene/gui/main.py:4281
+msgid "Directory for storing the snapshot cache"
 msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:176
-#, fuzzy
-msgid "Converting annotation types"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4282
+msgid "Player"
+msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:217
-#, fuzzy
-msgid "Converting views"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4282
+msgid "Directory of the video player"
+msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:249
-#: ../lib/advene/plugins/youtubeannotations.py:72
+#: ../lib/advene/gui/main.py:4283
 #, fuzzy
-msgid "Importing annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Shotdetect"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/plugins/shotdetectapp.py:41
+#: ../lib/advene/gui/main.py:4283
 #, fuzzy
-msgid "ShotdetectApp importer"
+msgid "Shotdetect application"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/plugins/shotdetectapp.py:52
-msgid ""
-"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
-"too many shots are detected, try to increase its value."
+#: ../lib/advene/gui/main.py:4285
+msgid "GUI"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:80
-#: ../lib/advene/plugins/goodshotdetector.py:78
-msgid "Detected shots"
+#: ../lib/advene/gui/main.py:4286
+msgid "Interface language (after restart)"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:140 ../lib/advene/gui/main.py:5130
-#, fuzzy, python-format
-msgid "Detected shot #%(num)d at %(pos)s "
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4286
+msgid ""
+"Language used for the interface (necessitates to restart the application)"
+msgstr ""
 
-#: ../lib/advene/plugins/youtubeannotations.py:33
+#: ../lib/advene/gui/main.py:4287 ../lib/advene/gui/util/initialconfig.py:88
 #, fuzzy
-msgid "Youtube XML annotations importer"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "System default"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/plugins/brltty.py:62
-msgid "Input from the braille table."
+#: ../lib/advene/gui/main.py:4292
+msgid "Record activity trace"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:66
-msgid "BrlTTY not installed. There will be no braille support."
+#: ../lib/advene/gui/main.py:4293
+msgid "Expert mode"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:78
-msgid "Could not initialize BrlTTY. No braille support."
+#: ../lib/advene/gui/main.py:4293
+msgid "Offer advanced possibilities"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:84
-#, fuzzy
-msgid "Display a message in Braille"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4294
+msgid "Prefer WYSIWYG"
+msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:85
-msgid "Message to display."
+#: ../lib/advene/gui/main.py:4294
+msgid "Use WYSIWYG editors when possible (HTML, SVG)"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
-#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
-#: ../lib/advene/rules/actions.py:123 ../lib/advene/gui/plugins/actions.py:44
-#: ../lib/advene/gui/plugins/actions.py:58
-#: ../lib/advene/gui/plugins/actions.py:110
-#: ../lib/advene/gui/plugins/actions.py:399
-#: ../lib/advene/gui/plugins/actions.py:527
-#: ../lib/advene/gui/edit/rules.py:766
-#, fuzzy
-msgid "The annotation content"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/plugins/brltty.py:240 ../lib/advene/plugins/tts.py:110
-#: ../lib/advene/gui/plugins/actions.py:234
-msgid "Unknown rule"
+#: ../lib/advene/gui/main.py:4295
+msgid "Player control in edit popups"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:241 ../lib/advene/plugins/tts.py:111
-#: ../lib/advene/gui/plugins/actions.py:235
-#, python-format
+#: ../lib/advene/gui/main.py:4295
 msgid ""
-"Rule %(rulename)s: Error in the evaluation of the parameter "
-"%(parametername)s:"
+"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/plugins/brltty.py:256
-#, python-format
-msgid "BrlTTY connection error: %s"
+#: ../lib/advene/gui/main.py:4297
+msgid "Open popups"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:273
-msgid "Braille display: "
+#: ../lib/advene/gui/main.py:4298
+msgid "Where should we open adhoc views?"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:279
-msgid "No message"
+#: ../lib/advene/gui/main.py:4299
+msgid "as a popup window"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:45
-#, fuzzy
-msgid "Shot detection (Delakis version)"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/plugins/goodshotdetector.py:60
-msgid "Cache histogram alongside video files."
+#: ../lib/advene/gui/main.py:4300
+msgid "embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:63
-msgid ""
-"Parameter profile: safe will detect less cuts, aggressive will detect more "
-"cuts (but more false ones too). default is a compromise."
+#: ../lib/advene/gui/main.py:4301
+msgid "embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:77
-#, python-format
-msgid "Shot (%s profile)"
+#: ../lib/advene/gui/main.py:4302
+msgid "embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:83
-msgid "Loading histogram"
+#: ../lib/advene/gui/main.py:4303
+msgid "embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:146
-#, fuzzy
-msgid "Computing hdiff"
-msgstr "Arbvido"
+#: ../lib/advene/gui/main.py:4306
+msgid "History size"
+msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:153
-#, fuzzy
-msgid "Detecting cuts"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/main.py:4306
+msgid "History filelist size limit"
+msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:180
-msgid "Detecting dissolves"
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember window size"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:265
-#, fuzzy
-msgid "Extracting histogram"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember the size of opened windows"
+msgstr ""
 
-#: ../lib/advene/plugins/anvil.py:35
-#, fuzzy
-msgid "Anvil importer"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/main.py:4309
+msgid "Bookmark snapshot width"
+msgstr ""
 
-#: ../lib/advene/plugins/annotationgraph.py:40
-#, fuzzy
-msgid "AnnotationGraph importer"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4309
+msgid "Width of the snapshots representing bookmarks"
+msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:33
-msgid "Final Cut Pro XML importer"
+#: ../lib/advene/gui/main.py:4310
+msgid "Bookmark snapshot precision"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:55
-msgid "FCP clipitem"
+#: ../lib/advene/gui/main.py:4310
+msgid "Precision (in ms) of the displayed bookmark snapshots."
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:75
-#, fuzzy
-msgid "Importing subtitles"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/main.py:4312
+msgid "General"
+msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:90
-#, fuzzy
-msgid "Importing clips"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/main.py:4313
+msgid "Weekly update check"
+msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:93
-msgid "No clip"
+#: ../lib/advene/gui/main.py:4313 ../lib/advene/gui/util/initialconfig.py:90
+msgid "Weekly check for updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:219
-#, python-format
-msgid "Cannot export to %(fname)s: %(e)s"
+#: ../lib/advene/gui/main.py:4314
+msgid "On exit,"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1129
-#: ../lib/advene/plugins/tracebuilder.py:1168
-#, python-format
-msgid "Cannot export to %(host)s:%(port)s %(error)s"
+#: ../lib/advene/gui/main.py:4315
+msgid "How to handle screenshots on exit"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1143
-#, fuzzy, python-format
-msgid "Cannot send data to %(host)s:%(port)s %(error)s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4316
+msgid "never save screenshots"
+msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1191
-#, fuzzy, python-format
-msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4317
+msgid "always save screenshots"
+msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1197
-#, python-format
-msgid "%(nb)s events sent to %(host)s:%(port)s during session."
+#: ../lib/advene/gui/main.py:4318
+msgid "ask before saving screenshots"
 msgstr ""
 
-#: ../lib/advene/plugins/dcp.py:65
-#, fuzzy
-msgid "DCP importer"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/main.py:4320
+msgid "Auto-save"
+msgstr ""
 
-#: ../lib/advene/plugins/dcp.py:120
-#, python-format
-msgid "Converting #%(num)d / %(count)d"
+#: ../lib/advene/gui/main.py:4321
+msgid "Data auto-save functionality"
 msgstr ""
 
-#: ../lib/advene/plugins/ttl.py:41
-#, fuzzy
-msgid "TurTLe (RDF) importer"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/main.py:4322
+msgid "is desactivated"
+msgstr ""
 
-#: ../lib/advene/plugins/aeidon_import.py:48
-#, fuzzy
-msgid "Aeidon (subtitles) importer"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/main.py:4323
+msgid "is done automatically"
+msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:47
-#: ../lib/advene/plugins/soundenveloppe.py:143
-#: ../lib/advene/plugins/soundenveloppe.py:145
-#, fuzzy
-msgid "Sound enveloppe"
-msgstr "Dosiero"
+#: ../lib/advene/gui/main.py:4324
+msgid "is done after confirmation"
+msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:60
-msgid "Interval (in ms) at which to take samples."
+#: ../lib/advene/gui/main.py:4326
+msgid "Auto-save interval (in s)"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:63
-msgid "Maximum number of samples per annotation."
+#: ../lib/advene/gui/main.py:4326
+msgid "Interval (in seconds) between package auto-saves"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:66
-#: ../lib/advene/plugins/cutter.py:56
+#: ../lib/advene/gui/main.py:4328
 #, fuzzy
-msgid "Channel selection."
-msgstr "Vido"
+msgid "Workspace"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#: ../lib/advene/plugins/pocketsphinx.py:119
-#: ../lib/advene/plugins/barcode.py:58
-#, fuzzy
-msgid "Generating annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4330
+msgid "On package saving,"
+msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:115
-#, python-format
-msgid "At %s"
+#: ../lib/advene/gui/main.py:4331
+msgid "Do you wish to save the default workspace with the package?"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:162
+#: ../lib/advene/gui/main.py:4332
 #, fuzzy
-msgid "Extracting sound enveloppe"
-msgstr "Importi dosieron"
+msgid "never save the current workspace"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/plugins/cutter.py:39
+#: ../lib/advene/gui/main.py:4333
 #, fuzzy
-msgid "Audio segmentation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "always save the current workspace"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/plugins/cutter.py:53
-msgid "Volume threshold (in dB, can be negative) before trigger."
+#: ../lib/advene/gui/main.py:4334
+#, fuzzy
+msgid "ask before saving the current workspace"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/main.py:4336
+msgid "Auto-validation of edited elements"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:101
-#, fuzzy, python-format
-msgid "Detected %(count)d segments until %(time)s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4336
+msgid "Automatically validate modified elements when saving the package."
+msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:119
-#, fuzzy
-msgid "Sound segment"
-msgstr "Dosiero"
+#: ../lib/advene/gui/main.py:4338
+msgid "On package load,"
+msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:120
-#, python-format
-msgid ""
-"Sound segmentation with a threshold of %(threshold)d dB - channel: "
-"%(channel)s"
+#: ../lib/advene/gui/main.py:4339
+msgid "Do you wish to load the workspace saved with the package?"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:138
+#: ../lib/advene/gui/main.py:4340
 #, fuzzy
-msgid "Starting silence detection"
+msgid "never load the saved workspace"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/plugins/montagerenderer.py:43
-msgid "Cannot register montage renderer: Gnonlin plugins are not present."
-msgstr ""
+#: ../lib/advene/gui/main.py:4341
+#, fuzzy
+msgid "always load the saved workspace"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/plugins/mpeg7.py:54
+#: ../lib/advene/gui/main.py:4342
 #, fuzzy
-msgid "MPEG7 importer"
-msgstr "Importi dosieron"
+msgid "ask before loading the saved workspace"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/plugins/transcriber.py:40
+#: ../lib/advene/gui/main.py:4345
 #, fuzzy
-msgid "Transcriber importer"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/plugins/transcriber.py:86
-msgid "Parsing section information"
-msgstr ""
-
-#: ../lib/advene/plugins/transcriber.py:276
-msgid "Parsing topic and speaker tables information"
-msgstr ""
-
-#: ../lib/advene/plugins/featuredetect.py:42
-msgid "Feature detection (face...)"
-msgstr ""
+msgid "Video Player"
+msgstr "Vido"
 
-#: ../lib/advene/plugins/featuredetect.py:57
-msgid "Sensitivity level."
+#: ../lib/advene/gui/main.py:4346
+msgid "Autostart"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:60
+#: ../lib/advene/gui/main.py:4346
 msgid ""
-"Scale. Original image size will be divided by this factor, in order to speed "
-"up detection."
+"Automatically start the player when loading a media file (either directly or "
+"through a package)"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:63
-msgid "Classifier"
-msgstr ""
+#: ../lib/advene/gui/main.py:4347
+#, fuzzy
+msgid "Fulscreen timestamp"
+msgstr "Arbvido"
 
-#: ../lib/advene/plugins/featuredetect.py:77
-#, python-format
-msgid "Feature %s"
+#: ../lib/advene/gui/main.py:4347
+msgid "Display the timestamp over the video when in fullscreen mode"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:79
-#, fuzzy, python-format
-msgid "Detected %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4348
+#, fuzzy
+msgid "Enable captions"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/plugins/featuredetect.py:81
+#: ../lib/advene/gui/main.py:4348
 #, fuzzy
-msgid "Detection started"
+msgid "Enable captions over the video"
+msgstr "Vidi komentajxojn sur templinio"
+
+#: ../lib/advene/gui/main.py:4349
+#, fuzzy
+msgid "Caption font"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/plugins/featuredetect.py:171
-#, python-format
-msgid "Detected %(count)d feature(s) until %(time)s"
+#: ../lib/advene/gui/main.py:4349
+msgid "TrueType font for captions"
 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."
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:41
-msgid "Speech recognition (PocketSphinx)"
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG captions over the video"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:61
-msgid "Filtering noise level [0..1]."
+#: ../lib/advene/gui/main.py:4352
+msgid "Enable snapshots"
 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."
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:69
-msgid "Use default acoustic and language models."
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width in pixels."
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:73
-msgid "Acoustic model (directory)"
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:77
-msgid "Phonetic dictionary (.dic file)"
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity level. -1 for no messages."
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:81
-msgid "Language model (.DMP file)"
+#: ../lib/advene/gui/main.py:4357
+msgid "Devices"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:144
-#: ../lib/advene/plugins/barcode.py:83
-#, fuzzy, python-format
-msgid "%(count)d utterances until %(time)s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4359
+msgid "Standard"
+msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:153
-msgid "Speech"
+#: ../lib/advene/gui/main.py:4361
+msgid "DVD drive"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:155
-msgid "Recognized speech"
+#: ../lib/advene/gui/main.py:4361
+msgid "Drive letter for the DVD"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:191
-msgid "Recognizing speech"
+#: ../lib/advene/gui/main.py:4362
+msgid "GDI"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:36
-msgid "Cannot register barcode extraction: zbar plugin not found."
+#: ../lib/advene/gui/main.py:4363
+msgid "Direct X"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:40
-msgid "Barcode (qr-code) extraction"
+#: ../lib/advene/gui/main.py:4365
+msgid "DVD device"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:95
-msgid "Barcode"
+#: ../lib/advene/gui/main.py:4365
+msgid "Device for the DVD"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:97
-msgid "Extracted barcode information"
+#: ../lib/advene/gui/main.py:4366
+msgid "X11"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:115
+#: ../lib/advene/gui/main.py:4367
 #, fuzzy
-msgid "Extraction barcodes"
-msgstr "Importi dosieron"
+msgid "XVideo"
+msgstr "Vido"
 
-#: ../lib/advene/plugins/nerd_plugin.py:47
-msgid "NERD (Named Entity Recognition and Disambiguation)"
+#: ../lib/advene/gui/main.py:4368
+msgid "GL"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:68
-msgid "NERD API key"
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:82
-msgid "NER service to use"
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output module"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:88
+#: ../lib/advene/gui/main.py:4372
 #, fuzzy
-msgid "Type of annotation to analyze"
+msgid "Recorder options"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/plugins/nerd_plugin.py:93
-msgid "Language to analyze"
+#: ../lib/advene/gui/main.py:4373
+#, fuzzy
+msgid "Audio input"
+msgstr "Vido"
+
+#: ../lib/advene/gui/main.py:4373
+msgid "Device name for audio input (with gstrecorder plugin)"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:98
-msgid "Minimum confidence level (between 0.0 and 1.0)"
+#: ../lib/advene/gui/main.py:4374
+msgid "Record video"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:103
-#, fuzzy
-msgid "Interpolate position of annotations"
-msgstr "Importi transkribon"
+#: ../lib/advene/gui/main.py:4374
+msgid "Record both video and audio"
+msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:108
-msgid "Split by entity type"
+#: ../lib/advene/gui/main.py:4377
+msgid "<i>Experimental</i>"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:113
-#, fuzzy
-msgid "Store results as markup in the annotation text"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4378 ../lib/advene/gui/views/scroller.py:29
+msgid "Scroller"
+msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:118
-msgid "Create relations between the original annotations and the new ones"
+#: ../lib/advene/gui/main.py:4378
+msgid "Embed the caption scroller below the video"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:150
-#, python-format
-msgid "NERD applied to %s"
+#: ../lib/advene/gui/main.py:4379 ../lib/advene/gui/views/caption.py:29
+msgid "Caption"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:208
-#, python-format
-msgid "NERD %s"
+#: ../lib/advene/gui/main.py:4379
+msgid "Embed the caption view below the video"
 msgstr ""
 
-#: ../lib/advene/plugins/ted.py:39
-#, fuzzy
-msgid "TED importer"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/main.py:4381
+msgid "Time-related"
+msgstr ""
 
-#: ../lib/advene/plugins/shotdetect.py:35
+#: ../lib/advene/gui/main.py:4382
 #, fuzzy
-msgid "Shotdetect importer"
-msgstr "Importi dosieron"
+msgid "Time format"
+msgstr "Arbvido"
 
-#: ../lib/advene/plugins/shotdetect.py:79
-msgid "No shots"
+#: ../lib/advene/gui/main.py:4382
+msgid "Format used to display timecodes"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:77
-msgid "Pronounce a text"
+#: ../lib/advene/gui/main.py:4396
+#, fuzzy
+msgid "Default FPS"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/main.py:4397
+msgid ""
+"Default FPS (frame-per-second) value, when entering or displaying timestamps "
+"with frame numbers."
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:78
-msgid "String to pronounce."
+#: ../lib/advene/gui/main.py:4398
+#, fuzzy
+msgid "Time increment"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:4398
+msgid ""
+"Skip duration, when using control-left/right or forward/rewind buttons (in "
+"ms)."
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:131 ../lib/advene/gui/plugins/actions.py:259
-#: ../lib/advene/gui/plugins/actions.py:340
-#: ../lib/advene/gui/plugins/actions.py:358
-msgid "No message..."
+#: ../lib/advene/gui/main.py:4399
+#, fuzzy
+msgid "Second time increment"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:4399
+msgid "Skip duration, when using control-shift-left/right (in ms)."
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:156
-msgid "TTS disabled. Cannot find the application 'festival' in PATH"
+#: ../lib/advene/gui/main.py:4400
+#, fuzzy
+msgid "Third time increment"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:4400
+msgid "Skip duration, when using control-shift-up/down (in ms)."
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:158
-msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
+#: ../lib/advene/gui/main.py:4401
+msgid "Custom Up/Down"
 msgstr ""
 
-#: ../lib/advene/player/gstreamer.py:434
-msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+#: ../lib/advene/gui/main.py:4401
+msgid ""
+"Use third time increment for up/down navigation without having to hold shift."
 msgstr ""
 
-#: ../lib/advene/rules/importer.py:29
-msgid "Event history importer"
+#: ../lib/advene/gui/main.py:4403
+msgid "Scroll increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
-#: ../lib/advene/rules/actions.py:120
-msgid "Message to display"
+#: ../lib/advene/gui/main.py:4403
+msgid ""
+"On most annotations, control+scrollwheel will increment/decrement their "
+"bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:48
-msgid "Start the player"
+#: ../lib/advene/gui/main.py:4404
+msgid "Second scroll increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:49
-msgid "Start position (in ms)"
+#: ../lib/advene/gui/main.py:4404
+msgid ""
+"On most annotations, control+shift+scrollwheel will increment/decrement "
+"their bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:52 ../lib/advene/rules/actions.py:384
-msgid "The movie start"
+#: ../lib/advene/gui/main.py:4406
+msgid "Player sync"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
-#, fuzzy
-msgid "The annotation begin"
-msgstr "Vidi komentajxojn sur templinio"
-
-#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
-#, fuzzy
-msgid "The annotation end"
-msgstr "Vidi komentajxojn sur templinio"
-
-#: ../lib/advene/rules/actions.py:63 ../lib/advene/gui/views/logwindow.py:129
-msgid "Go to the given position"
-msgstr ""
-
-#: ../lib/advene/rules/actions.py:64
-msgid "Goto position (in ms)"
+#: ../lib/advene/gui/main.py:4406
+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/rules/actions.py:73
-msgid "Stop the player"
+#: ../lib/advene/gui/main.py:4407
+msgid "Timeline parameters"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:80
-msgid "Pause the player"
+#: ../lib/advene/gui/main.py:4408 ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:87
-msgid "Resume the player"
+#: ../lib/advene/gui/main.py:4408
+msgid "Font size for annotation widgets"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:94
-msgid "Take a snapshot"
+#: ../lib/advene/gui/main.py:4409
+msgid "Button height"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:101
-msgid "Display a caption"
-msgstr ""
+#: ../lib/advene/gui/main.py:4409
+#, fuzzy
+msgid "Height of annotation widgets"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/actions.py:103
-msgid "Duration of the caption"
+#: ../lib/advene/gui/main.py:4410
+msgid "Interline height"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:110 ../lib/advene/rules/actions.py:172
-#: ../lib/advene/gui/plugins/actions.py:61
-#: ../lib/advene/gui/plugins/actions.py:121
-#: ../lib/advene/gui/plugins/actions.py:403
-#: ../lib/advene/gui/plugins/actions.py:538
-msgid "1 second"
+#: ../lib/advene/gui/main.py:4410
+msgid "Height of interlines"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
-#: ../lib/advene/gui/plugins/actions.py:62
-#: ../lib/advene/gui/plugins/actions.py:122
-#: ../lib/advene/gui/plugins/actions.py:404
-#: ../lib/advene/gui/plugins/actions.py:539
-#: ../lib/advene/gui/edit/rules.py:773
+#: ../lib/advene/gui/main.py:4412
 #, fuzzy
-msgid "The annotation duration"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Text content"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/rules/actions.py:119 ../lib/advene/gui/popup.py:718
-msgid "Caption the annotation"
-msgstr ""
+#: ../lib/advene/gui/main.py:4413
+#, fuzzy
+msgid "Completion mode"
+msgstr "Arbvido"
 
-#: ../lib/advene/rules/actions.py:131
+#: ../lib/advene/gui/main.py:4413
 #, fuzzy
-msgid "Display a graphical shape"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Enable dynamic completion mode"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/rules/actions.py:132
-msgid "Shape (square, circle, triangle)"
+#: ../lib/advene/gui/main.py:4414
+msgid "Predefined terms only"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:133
-#: ../lib/advene/gui/edit/shapewidget.py:342
-#: ../lib/advene/gui/edit/elements.py:891
-#: ../lib/advene/gui/edit/elements.py:971
-#: ../lib/advene/gui/edit/elements.py:1085
-#: ../lib/advene/gui/views/tagbag.py:138
-msgid "Color"
+#: ../lib/advene/gui/main.py:4414
+msgid "If completion is enabled, complete only with predefined terms."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:134
-msgid "x-position (percentage of screen)"
+#: ../lib/advene/gui/main.py:4415
+msgid "Abbreviation mode"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:135
-msgid "y-position (percentage of screen)"
-msgstr ""
+#: ../lib/advene/gui/main.py:4415
+#, fuzzy
+msgid "Enable abbreviation mode"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/rules/actions.py:136
-msgid "Size (arbitrary units)"
-msgstr ""
+#: ../lib/advene/gui/main.py:4416
+#, fuzzy
+msgid "Abbreviations"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/rules/actions.py:137
-msgid "Duration of the display in ms"
+#: ../lib/advene/gui/main.py:4416
+msgid ""
+"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
+"followed by its replacement."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:145
-msgid "A square"
+#: ../lib/advene/gui/main.py:4418
+msgid "Text-To-Speech"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:146
-msgid "A circle"
-msgstr ""
+#: ../lib/advene/gui/main.py:4419
+#, fuzzy
+msgid "TTS language"
+msgstr "Interfacaj preferoj"
 
-#: ../lib/advene/rules/actions.py:147
-msgid "A triangle"
+#: ../lib/advene/gui/main.py:4420
+msgid "What language settings should be used for text-to-speech"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:150
-msgid "White"
+#: ../lib/advene/gui/main.py:4421
+msgid "English"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:151
-msgid "Black"
+#: ../lib/advene/gui/main.py:4422
+msgid "French"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:152
-msgid "Red"
+#: ../lib/advene/gui/main.py:4423
+msgid "Spanish"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:153
-msgid "Green"
+#: ../lib/advene/gui/main.py:4425
+msgid "TTS Encoding"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:154
-msgid "Blue"
+#: ../lib/advene/gui/main.py:4426
+msgid "What encoding should be used to communicate with the TTS engine"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:155
-msgid "Yellow"
-msgstr ""
+#: ../lib/advene/gui/main.py:4427
+#, fuzzy
+msgid "TTS Engine"
+msgstr "Interfacaj preferoj"
 
-#: ../lib/advene/rules/actions.py:158
-msgid "At the top of the screen"
+#: ../lib/advene/gui/main.py:4428
+msgid ""
+"Which TTS engine should be used (modification requires restarting Advene to "
+"take into account)"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
-msgid "In the middle of the screen"
+#: ../lib/advene/gui/main.py:4429
+msgid "Automatic"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:160
-msgid "At the bottom of the screen"
+#: ../lib/advene/gui/main.py:4430
+msgid "eSpeak"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:163
-msgid "At the left of the screen"
+#: ../lib/advene/gui/main.py:4431
+msgid "Custom script with standard input"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:167
-#: ../lib/advene/gui/edit/transcribe.py:1164
-#: ../lib/advene/gui/views/activebookmarks.py:547
-msgid "Small"
+#: ../lib/advene/gui/main.py:4432
+msgid "Custom script with arguments"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:168
-#: ../lib/advene/gui/edit/transcribe.py:1165
-#: ../lib/advene/gui/views/activebookmarks.py:548
-msgid "Normal"
+#: ../lib/advene/gui/main.py:4433
+msgid "SAPI"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:169
-#: ../lib/advene/gui/edit/transcribe.py:1166
-#: ../lib/advene/gui/views/activebookmarks.py:549
-msgid "Large"
+#: ../lib/advene/gui/main.py:4434
+msgid "MacOS X say"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:181
-msgid "Zero the volume during the annotation"
+#: ../lib/advene/gui/main.py:4435
+msgid "Generic (text output)"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:188
-msgid "Zero the volume"
+#: ../lib/advene/gui/main.py:4479
+msgid "You should restart Advene to take some options into account."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:195
-msgid "Restore the volume"
+#: ../lib/advene/gui/main.py:4488
+#, python-format
+msgid "Imagecache saved to %s"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:203
-msgid "Activate a STBV"
+#: ../lib/advene/gui/main.py:4501
+msgid "Restarting player..."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:204
-msgid "STBV id"
-msgstr ""
+#: ../lib/advene/gui/main.py:4561
+#, fuzzy
+msgid "Advene log"
+msgstr "Advene"
 
-#: ../lib/advene/rules/actions.py:213
-msgid "Send a user event"
+#: ../lib/advene/gui/main.py:4604 ../lib/advene/gui/views/timeline.py:1045
+#: ../lib/advene/rules/elements.py:1000
+msgid "Creation of a new annotation type"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:214
-msgid "Identifier"
+#: ../lib/advene/gui/main.py:4612 ../lib/advene/gui/views/timeline.py:1074
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:215
-msgid "Delay in ms before sending the event."
-msgstr ""
+#: ../lib/advene/gui/main.py:4630
+#, fuzzy
+msgid "Select the package to merge"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/actions.py:225
-msgid "Open a URL in the web browser"
+#: ../lib/advene/gui/main.py:4651
+msgid "Saving workspace"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:226 ../lib/advene/gui/plugins/actions.py:103
-#: ../lib/advene/gui/views/logwindow.py:159
-msgid "URL"
+#: ../lib/advene/gui/main.py:4654
+msgid "Enter a view name to save the workspace"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:235
+#: ../lib/advene/gui/main.py:4655
 #, fuzzy
-msgid "Open a static view"
-msgstr "Arbvido"
+msgid "Default workspace"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/rules/actions.py:246
-msgid "Set the audio volume"
+#: ../lib/advene/gui/main.py:4656
+msgid "Open this workspace when opening the package"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:247
-msgid "Volume level (from 0 to 100)"
+#: ../lib/advene/gui/main.py:4679 ../lib/advene/gui/views/__init__.py:289
+#, python-format
+msgid "Error: the identifier %s contains invalid characters."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:256
-msgid "Set the playing rate"
+#: ../lib/advene/gui/main.py:4690
+#, python-format
+msgid "Error: the view %s exists and is not a workspace view."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:257
-msgid "Rate (100: normal rate, 200: twice slower)"
-msgstr ""
+#: ../lib/advene/gui/main.py:4721
+#, fuzzy, python-format
+msgid "Cannot save default workspace: %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/actions.py:266
-msgid "Play a sound resource"
+#: ../lib/advene/gui/main.py:4731
+msgid "Standard workspace has been saved"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:267
-msgid "Clip id"
+#: ../lib/advene/gui/main.py:4738
+msgid "Website export"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
-msgid "Volume (0..100)"
+#: ../lib/advene/gui/main.py:4739
+msgid "Exporting views to a website"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:269 ../lib/advene/rules/actions.py:283
-msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
+#: ../lib/advene/gui/main.py:4742
+msgid "Output directory"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:280
-#, fuzzy
-msgid "Play a sound file"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/main.py:4751
+msgid "Specify the output directory"
+msgstr ""
 
-#: ../lib/advene/rules/actions.py:281
-#, fuzzy
-msgid "Sound filename"
-msgstr "Dosiero"
+#: ../lib/advene/gui/main.py:4760
+msgid "Maximum recursion depth"
+msgstr ""
 
-#: ../lib/advene/rules/actions.py:293
+#: ../lib/advene/gui/main.py:4767
 #, fuzzy
-msgid "Set a state variable"
-msgstr "Arbvido"
+msgid "Video URL"
+msgstr "Vido"
 
-#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
-msgid "State variable name"
+#: ../lib/advene/gui/main.py:4769
+msgid ""
+"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/rules/actions.py:295
+#: ../lib/advene/gui/main.py:4819
 #, fuzzy
-msgid "State value"
-msgstr "Arbvido"
+msgid "Could not export data: "
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/actions.py:305
-msgid "Increment a state variable"
-msgstr ""
+#: ../lib/advene/gui/main.py:4821
+#, fuzzy, python-format
+msgid "Website export to %s completed"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/rules/actions.py:315
-msgid "Clear all state variables"
+#: ../lib/advene/gui/main.py:4860
+msgid "This video player is not able to grab specific screenshots"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:330
-#, python-format
-msgid "Error in the evaluation of the parameter %s:"
-msgstr ""
-
-#: ../lib/advene/rules/actions.py:389 ../lib/advene/gui/plugins/actions.py:247
-#, fuzzy, python-format
-msgid "The %s-related outgoing annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/rules/actions.py:391 ../lib/advene/gui/plugins/actions.py:249
+#: ../lib/advene/gui/main.py:4870
 #, fuzzy, python-format
-msgid "The %s-related incoming annotation"
+msgid "Updating %d snapshots"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/actions.py:551
-#, python-format
-msgid "Cannot find the stbv %s"
+#: ../lib/advene/gui/main.py:4875
+msgid "No snapshot to update"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:615 ../lib/advene/gui/views/viewbook.py:263
-#, python-format
-msgid "Cannot find the view %s"
+#: ../lib/advene/gui/main.py:4884
+msgid "You first must load a movie into Advene"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:647
-msgid "The set_rate method is unavailable."
-msgstr ""
+#: ../lib/advene/gui/main.py:4887
+#, fuzzy, python-format
+msgid "The movie %s does not seem to exist."
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/actions.py:657
-msgid "No 'soundclips' resource folder in the package"
+#: ../lib/advene/gui/main.py:4943
+msgid "Generating screenshots"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:683
-msgid "Full volume"
+#: ../lib/advene/gui/main.py:4948
+msgid ""
+"<b>Screenshot generation</b>\n"
+"\n"
+"Screenshots will be captured approximately every 500ms.\n"
+"\n"
+"If the movie was paused or playing, the capture will begin at the current "
+"position. Else, it will begin at the beginning of the movie.\n"
+"Note that the main interface will not be refreshed as long as this window is "
+"open."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:684
-msgid "Left"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:33
+#, fuzzy
+msgid "Shot validation view"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/rules/actions.py:685
-#: ../lib/advene/gui/edit/transcribe.py:1196
+#: ../lib/advene/gui/plugins/shotvalidation.py:35
 #, fuzzy
-msgid "Center"
-msgstr "Arbvido"
+msgid "Display shot validation interface"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/rules/actions.py:686
-msgid "Right"
+#: ../lib/advene/gui/plugins/shotvalidation.py:112
+#, python-format
+msgid "Merged #%(first)d-#%(second)d into #%(first)d"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:141
-msgid "is equal to"
+#: ../lib/advene/gui/plugins/shotvalidation.py:137
+msgid "Last action undone"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:142
-msgid "is different from"
+#: ../lib/advene/gui/plugins/shotvalidation.py:155
+#, python-format
+msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:143
-msgid "contains"
+#: ../lib/advene/gui/plugins/shotvalidation.py:160
+#, python-format
+msgid "Cannot split annotation #%(current)d: out of bounds."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:144
-msgid "is greater than"
+#: ../lib/advene/gui/plugins/shotvalidation.py:180
+#, python-format
+msgid "Changed cut between #%(first)d and %(second)d"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:145
-msgid "is lower than"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:183
+#, fuzzy
+msgid "Changed begin time for first annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:146
-msgid "matches the regexp"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:189
+#, fuzzy
+msgid "No annotations to adjust"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:147
-msgid "is before"
+#: ../lib/advene/gui/plugins/shotvalidation.py:196
+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/rules/elements.py:148
-msgid "meets"
+#: ../lib/advene/gui/plugins/shotvalidation.py:204
+#, python-format
+msgid "Begin of #%(index)d (title: %(content)s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:149
-msgid "overlaps"
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
+msgid "< Previous cut"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:150
-msgid "during"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:219
+#, fuzzy
+msgid "Display previous cut"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:151
-msgid "starts"
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
+msgid "Next cut >"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:152
-msgid "finishes"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:227
+#, fuzzy
+msgid "Display next cut"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:157
-msgid "is not true"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
+#: ../lib/advene/gui/views/annotationdisplay.py:92
+#: ../lib/advene/gui/views/timeline.py:86
+#, fuzzy
+msgid "Current time"
+msgstr "Arbvido"
 
-#: ../lib/advene/rules/elements.py:158
-msgid "is true"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#, fuzzy
+msgid "Go to annotation containing current player time."
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/rules/elements.py:162
-msgid "Basic conditions"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
+#: ../lib/advene/gui/edit/frameselector.py:197
+#, fuzzy
+msgid "Refresh snapshots"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:163
-msgid "Allen relations"
+#: ../lib/advene/gui/plugins/shotvalidation.py:258
+#: ../lib/advene/gui/edit/frameselector.py:198
+msgid "Refresh missing snapshots"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
-msgid "Unknown type for overlaps comparison"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:263
+#, fuzzy
+msgid "Undo last modification"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
-msgid "Unknown type for during comparison"
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
+msgid "Merge with previous"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
-#, fuzzy, python-format
-msgid "Unknown action %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/rules/elements.py:522
-#, python-format
-msgid "Unknown parameter %s"
+#: ../lib/advene/gui/plugins/shotvalidation.py:270
+msgid "Merge with previous annotation, i.e. remove this bound."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:527
+#: ../lib/advene/gui/plugins/shotvalidation.py:275
 #, fuzzy
-msgid "Unknown actions"
+msgid "Close view."
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/rules/elements.py:972
-msgid "Start of the editing of an element"
-msgstr ""
-
-#: ../lib/advene/rules/elements.py:973
-msgid "Cancel of the editing of an element"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:44
+msgid "Activity trace"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:974
-msgid "Destruction of the edit window of an element"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:74
+#: ../lib/advene/gui/plugins/eventaccumulator.py:75
+#: ../lib/advene/gui/plugins/tracetimeline.py:65
+#: ../lib/advene/gui/plugins/tracetimeline.py:66
+#: ../lib/advene/gui/plugins/tracepreview.py:73
+#: ../lib/advene/gui/plugins/tracepreview.py:74
+msgid "Beginning edition"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:975
-msgid "Validation of the editing of an element"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:76
+#: ../lib/advene/gui/plugins/eventaccumulator.py:77
+#: ../lib/advene/gui/plugins/eventaccumulator.py:78
+#: ../lib/advene/gui/plugins/tracetimeline.py:67
+#: ../lib/advene/gui/plugins/tracetimeline.py:68
+#: ../lib/advene/gui/plugins/tracetimeline.py:69
+#: ../lib/advene/gui/plugins/tracepreview.py:75
+#: ../lib/advene/gui/plugins/tracepreview.py:76
+#: ../lib/advene/gui/plugins/tracepreview.py:77
+#, fuzzy
+msgid "Canceling edition"
+msgstr "Importi transkribon"
 
-#: ../lib/advene/rules/elements.py:976
-msgid "Ending editing of a package"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:79
+#: ../lib/advene/gui/plugins/tracetimeline.py:70
+#: ../lib/advene/gui/plugins/tracepreview.py:78
+#, fuzzy
+msgid "Ending edition"
+msgstr "Importi transkribon"
 
-#: ../lib/advene/rules/elements.py:977
-msgid "Beginning of an annotation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:135
+msgid " Trace : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:978
-msgid "End of an annotation"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:139
+#, fuzzy
+msgid " Filters"
+msgstr "Dosiero"
 
-#: ../lib/advene/rules/elements.py:979
-msgid "Creation of a new annotation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:168
+msgid " Time : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:980
-msgid "Ending editing of an annotation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:178
+msgid " Max. : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:981
-msgid "Suppression of an annotation"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:187
+#, fuzzy
+msgid "Export"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/rules/elements.py:982
-msgid "Activation of an annotation"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:203
+#: ../lib/advene/gui/plugins/tracetimeline.py:665
+#, fuzzy
+msgid "Exporting traces"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/rules/elements.py:983
-msgid "Deactivation of an annotation"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:208
+#: ../lib/advene/gui/plugins/tracetimeline.py:670
+#, fuzzy, python-format
+msgid ""
+"Export done to\n"
+"%s"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/rules/elements.py:984
+#: ../lib/advene/gui/plugins/eventaccumulator.py:254
 #, fuzzy
-msgid "Merging of two annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Defining Filters"
+msgstr "Dosiero"
 
-#: ../lib/advene/rules/elements.py:985
-#, fuzzy
-msgid "Moving an annotation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:560
+#: ../lib/advene/gui/plugins/eventaccumulator.py:615
+#: ../lib/advene/gui/plugins/tracepreview.py:215
+#, fuzzy, python-format
+msgid "of an annotation (%s)"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:986
-msgid "Activation of a relation"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:562
+#: ../lib/advene/gui/plugins/eventaccumulator.py:617
+#: ../lib/advene/gui/plugins/tracepreview.py:217
+#, fuzzy, python-format
+msgid "of a relation (%s)"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:987
-msgid "Deactivation of a relation"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:564
+#: ../lib/advene/gui/plugins/eventaccumulator.py:619
+#: ../lib/advene/gui/plugins/tracepreview.py:219
+#, fuzzy, python-format
+msgid "of an annotation type (%s)"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:988
-msgid "Creation of a new relation"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:566
+#: ../lib/advene/gui/plugins/eventaccumulator.py:621
+#: ../lib/advene/gui/plugins/tracepreview.py:221
+#, fuzzy, python-format
+msgid "of a relation type (%s)"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:989
-msgid "Ending editing of a relation"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:568
+#: ../lib/advene/gui/plugins/eventaccumulator.py:623
+#: ../lib/advene/gui/plugins/tracepreview.py:223
+#, fuzzy, python-format
+msgid "of a schema (%s)"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/rules/elements.py:990
-msgid "Suppression of a relation"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:570
+#: ../lib/advene/gui/plugins/eventaccumulator.py:625
+#: ../lib/advene/gui/plugins/tracepreview.py:225
+#, fuzzy, python-format
+msgid "of a view (%s)"
+msgstr "Arbvido"
 
-#: ../lib/advene/rules/elements.py:991
-msgid "Creation of a new view"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:572
+#: ../lib/advene/gui/plugins/eventaccumulator.py:627
+#: ../lib/advene/gui/plugins/tracepreview.py:227
+#, fuzzy, python-format
+msgid "of a package (%s)"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/rules/elements.py:992
-msgid "Ending editing of a view"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:574
+#: ../lib/advene/gui/plugins/eventaccumulator.py:629
+#: ../lib/advene/gui/plugins/tracepreview.py:229
+#, fuzzy, python-format
+msgid "of an unknown item (%s)"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:993
-msgid "Suppression of a view"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:380
+#, fuzzy, python-format
+msgid "Rendering type %(type)s as %(presentation)s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:994
-msgid "Creation of a new query"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
+msgid "Snapshot only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:995
-msgid "Ending editing of a query"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
+msgid "Overlayed snapshot only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:996
-msgid "Suppression of a query"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
+msgid "Timestamp only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:997
-msgid "Creation of a new schema"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:528
+msgid "Snapshot+timestamp"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:998
-msgid "Ending editing of a schema"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:529
+#, fuzzy
+msgid "Annotation content"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:999
-msgid "Suppression of a schema"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:544
+msgid "as a list"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1000
-#: ../lib/advene/gui/views/timeline.py:1029 ../lib/advene/gui/main.py:4555
-msgid "Creation of a new annotation type"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:545
+msgid "as a grid"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1001
-msgid "Ending editing an annotation type"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:546
+msgid "as a table"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1002
-msgid "Suppression of an annotation type"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:547
+#: ../lib/advene/gui/views/viewbook.py:379
+#, fuzzy
+msgid "as a transcription"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/rules/elements.py:1003
-msgid "Creation of a new relation type"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/views/transcription.py:461
+#, python-format
+msgid "Annotation %s"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1004
-msgid "Ending editing a relation type"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:685
+msgid "Play video"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1005
-msgid "Suppression of a relation type"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
+msgid "Show timestamp only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1006
-msgid "Creation of a new resource"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
+#, fuzzy
+msgid "Show content only"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/rules/elements.py:1007
-msgid "Ending editing of a resource"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:669
+#, fuzzy
+msgid "Show snapshot only"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/rules/elements.py:1008
-msgid "Suppression of a resource"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
+#, fuzzy
+msgid "Show overlayed timestamp"
+msgstr "Arbvido"
 
-#: ../lib/advene/rules/elements.py:1009
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
 #, fuzzy
-msgid "Modification of the tag"
+msgid "Show overlayed content"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#, fuzzy, python-format
+msgid "Annotation type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:1010
-msgid "Activating a link"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:675
+#, fuzzy
+msgid "display as list"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:1011
-msgid "Player start"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:676
+#, fuzzy
+msgid "display as grid"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:1012
-msgid "Player stop"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:677
+#, fuzzy
+msgid "display as table"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:1013
-msgid "Player pause"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:678
+#, fuzzy
+msgid "display as transcription"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/rules/elements.py:1014
-msgid "Player resume"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:687
+#, fuzzy
+msgid "Open link"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/rules/elements.py:1015
-msgid "Going to a given position"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:743
+#, fuzzy, python-format
+msgid "HTML editor: cannot parse content (%s)"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:1016
-msgid "Loading a new package"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#, fuzzy, python-format
+msgid "Heading %d"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/rules/elements.py:1017
-msgid "Activating a package"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
+msgid "Bold"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1018
-msgid "Saving the package"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:786
+msgid "Italic"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1019
-msgid "Start of the dynamic view"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
+msgid "Header"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1020
-#, fuzzy
-msgid "End of the dynamic view"
-msgstr "Arbvido"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+msgid "Copy"
+msgstr ""
 
-#: ../lib/advene/rules/elements.py:1021
-msgid "Start of the application"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:790
+msgid "Cut"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1022
-msgid "End of the application"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
+msgid "Paste"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1023
-msgid "User-defined event"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:793
+#: ../lib/advene/gui/views/timeline.py:139
+msgid "Refresh"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1024
-msgid "Modification of the associated media"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:849
+msgid "WYSIWYG editor"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1025
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:859
 #, fuzzy
-msgid "Highlight a bookmark"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Edit HTML source"
+msgstr "Preferoj"
 
-#: ../lib/advene/rules/elements.py:1026
+#: ../lib/advene/gui/plugins/tracetimeline.py:71
+#: ../lib/advene/gui/plugins/tracepreview.py:79
 #, fuzzy
-msgid "Unhighlight a bookmark"
+msgid "Moving to"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/rules/elements.py:1027
-msgid "Updating duration of the movie"
+#: ../lib/advene/gui/plugins/tracetimeline.py:87
+msgid "Traces"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1028
-msgid "Displaying a popup"
+#: ../lib/advene/gui/plugins/tracetimeline.py:213
+#, python-format
+msgid "%(name)s (%(index)d)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1029
-msgid "Updating a snapshot"
+#: ../lib/advene/gui/plugins/tracetimeline.py:241
+msgid "Search"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1067
-msgid "Player control"
+#: ../lib/advene/gui/plugins/tracetimeline.py:254
+#: ../lib/advene/gui/plugins/tracetimeline.py:1219
+#, python-format
+msgid "%(name)s (%(index)s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1068
-msgid "Audio enrichment"
+#: ../lib/advene/gui/plugins/tracetimeline.py:426
+#: ../lib/advene/gui/views/timeline.py:3457
+#: ../lib/advene/gui/edit/montage.py:446
+msgid "Zoom out"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1069
-#, fuzzy
-msgid "Image enrichment"
-msgstr "Arbvido"
-
-#: ../lib/advene/rules/elements.py:1070
-msgid "External display control"
+#: ../lib/advene/gui/plugins/tracetimeline.py:431
+#: ../lib/advene/gui/views/timeline.py:3462
+#: ../lib/advene/gui/edit/montage.py:451
+msgid "Zoom in"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1071
-msgid "Popup"
+#: ../lib/advene/gui/plugins/tracetimeline.py:436
+msgid "Zoom 100%"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1073
-#, fuzzy
-msgid "State"
-msgstr "Arbvido"
+#: ../lib/advene/gui/plugins/tracetimeline.py:440
+msgid "Toggle links lock"
+msgstr ""
 
-#: ../lib/advene/rules/elements.py:1074
-msgid "GUI actions"
+#: ../lib/advene/gui/plugins/tracetimeline.py:448
+msgid "Toggle link mode"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1075
+#: ../lib/advene/gui/plugins/tracetimeline.py:455
 #, fuzzy
-msgid "Expert"
+msgid "Open a trace file"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/util/initialconfig.py:82
-msgid "Initial Advene configuration"
+#: ../lib/advene/gui/plugins/tracetimeline.py:470
+msgid "Toggle auto refresh"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:83
-msgid ""
-"<span size='large'><b>Welcome in Advene</b>\n"
-"This is the first time that you run Advene. Please answer some basic "
-"configuration questions. You will be able to modify these choices from the "
-"Advene interface, in the Edit/Preferences menu.</span>"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracetimeline.py:481
+#, fuzzy
+msgid "Open an existing trace"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/util/initialconfig.py:84
+#: ../lib/advene/gui/plugins/tracetimeline.py:487
 #, fuzzy
-msgid "Interface language"
-msgstr "Interfacaj preferoj"
+msgid "Save trace"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/util/initialconfig.py:84
-msgid "Language used for the interface"
+#: ../lib/advene/gui/plugins/tracetimeline.py:492
+#, fuzzy
+msgid "Configuration"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/plugins/tracetimeline.py:946
+msgid "Zoom and center on linked items"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:88 ../lib/advene/gui/main.py:4247
+#: ../lib/advene/gui/plugins/tracetimeline.py:955
 #, fuzzy
-msgid "System default"
-msgstr "Defauxlta regularo"
+msgid "Edit item"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/util/initialconfig.py:90
-msgid "Weekly check for Advene updates on the Advene website"
+#: ../lib/advene/gui/plugins/tracetimeline.py:959
+msgid "Recreate item"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:90 ../lib/advene/gui/main.py:4273
-msgid "Weekly check for updates on the Advene website"
-msgstr ""
-
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for data files"
-msgstr ""
-
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for storing data files (Advene packages)"
+#: ../lib/advene/gui/plugins/tracetimeline.py:975
+#: ../lib/advene/gui/plugins/tracetimeline.py:996
+#: ../lib/advene/gui/views/timeline.py:2584 ../lib/advene/gui/popup.py:513
+#: ../lib/advene/gui/edit/transcribe.py:500
+msgid "Go to..."
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:94
-msgid "Directories to search for movies"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracetimeline.py:979
+#, fuzzy
+msgid "Zoom on action"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/util/initialconfig.py:94
-#, python-format
-msgid ""
-"List of directories (separated by %(pathsep)s) to search for movie files."
+#: ../lib/advene/gui/plugins/tracetimeline.py:2023
+#: ../lib/advene/gui/views/timeline.py:3331
+#: ../lib/advene/gui/edit/montage.py:541
+msgid "Inspector"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid "First look for movie file in the same directory as the package"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2028
+msgid "Item Id"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid ""
-"If checked, the movie file will be searched for in the same directory as the "
-"referencing package."
+#: ../lib/advene/gui/plugins/tracetimeline.py:2031
+msgid "Item name or class"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:39
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
-#: ../lib/advene/gui/edit/create.py:106
-msgid "Plain text content"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
+#, fuzzy
+msgid "Type or schema"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/util/__init__.py:40
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
 #, fuzzy
-msgid "HTML content"
+msgid "Operations"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/util/__init__.py:41
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
-#: ../lib/advene/gui/edit/create.py:107
-msgid "Simple-structured content"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracetimeline.py:2081
+#, fuzzy
+msgid "Comment"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/util/__init__.py:42
-msgid "List of numeric values"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2113
+#: ../lib/advene/gui/edit/merge.py:191
+msgid "Action"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:43
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
-#: ../lib/advene/gui/edit/create.py:108
-msgid "SVG graphics content"
+#: ../lib/advene/gui/plugins/logmessages.py:35
+msgid "Log Messages"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:459
-#, python-format
-msgid ""
-"Annotation Type %(title)s:\n"
-"%(count)s"
+#: ../lib/advene/gui/plugins/actions.py:40 ../lib/advene/core/controller.py:277
+#: ../lib/advene/rules/actions.py:36
+msgid "Display a message"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:465
-#, python-format
-msgid ""
-"Relation Type %(title)s:\n"
-"%(count)s"
+#: ../lib/advene/gui/plugins/actions.py:41
+#: ../lib/advene/gui/plugins/actions.py:53
+#: ../lib/advene/gui/plugins/actions.py:71
+#: ../lib/advene/gui/plugins/actions.py:86
+#: ../lib/advene/gui/plugins/actions.py:102
+#: ../lib/advene/gui/plugins/actions.py:203
+#: ../lib/advene/core/controller.py:278
+msgid "String to display."
 msgstr ""
 
-#: ../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
-#: ../lib/advene/gui/views/table.py:557 ../lib/advene/gui/main.py:4176
-msgid "Title"
+#: ../lib/advene/gui/plugins/actions.py:44
+#: ../lib/advene/gui/plugins/actions.py:58
+#: ../lib/advene/gui/plugins/actions.py:110
+#: ../lib/advene/gui/plugins/actions.py:399
+#: ../lib/advene/gui/plugins/actions.py:527 ../lib/advene/gui/edit/rules.py:770
+#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
+#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
+#: ../lib/advene/rules/actions.py:123
+#, fuzzy
+msgid "The annotation content"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/plugins/actions.py:52
+msgid "Display a popup"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/rules.py:1092
-#: ../lib/advene/gui/edit/imports.py:325
-#: ../lib/advene/gui/edit/elements.py:507
-#: ../lib/advene/gui/edit/elements.py:556
-#: ../lib/advene/gui/edit/elements.py:644
-#: ../lib/advene/gui/edit/elements.py:724
-#: ../lib/advene/gui/edit/elements.py:873
-#: ../lib/advene/gui/edit/elements.py:942
-#: ../lib/advene/gui/edit/elements.py:1054
-#: ../lib/advene/gui/edit/elements.py:1115
-#: ../lib/advene/gui/views/table.py:255 ../lib/advene/gui/views/table.py:559
-msgid "Id"
+#: ../lib/advene/gui/plugins/actions.py:54
+#: ../lib/advene/gui/plugins/actions.py:73
+#: ../lib/advene/gui/plugins/actions.py:88
+#: ../lib/advene/gui/plugins/actions.py:104
+#: ../lib/advene/gui/plugins/actions.py:160
+#: ../lib/advene/gui/plugins/actions.py:184
+msgid "Display duration in ms. Ignored if empty."
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:404 ../lib/advene/gui/util/dialog.py:443
-#, fuzzy
-msgid "Name the element"
-msgstr "Arbvido"
+#: ../lib/advene/gui/plugins/actions.py:61
+#: ../lib/advene/gui/plugins/actions.py:121
+#: ../lib/advene/gui/plugins/actions.py:403
+#: ../lib/advene/gui/plugins/actions.py:538 ../lib/advene/rules/actions.py:110
+#: ../lib/advene/rules/actions.py:172
+msgid "1 second"
+msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:407 ../lib/advene/gui/util/dialog.py:444
+#: ../lib/advene/gui/plugins/actions.py:62
+#: ../lib/advene/gui/plugins/actions.py:122
+#: ../lib/advene/gui/plugins/actions.py:404
+#: ../lib/advene/gui/plugins/actions.py:539 ../lib/advene/gui/edit/rules.py:777
+#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
 #, fuzzy
-msgid "Choose a name for the element"
-msgstr "Arbvido"
+msgid "The annotation duration"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/util/dialog.py:482
-msgid "Open a file"
+#: ../lib/advene/gui/plugins/actions.py:70
+msgid "Popup an entry box"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:507 ../lib/advene/gui/util/dialog.py:543
-msgid "N/C"
+#: ../lib/advene/gui/plugins/actions.py:72
+msgid "Object where to store the answer (should have a content)"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:512
-msgid "Alias"
+#: ../lib/advene/gui/plugins/actions.py:84
+msgid "Display a popup to go to another position"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:532
-msgid ""
-"Press to\n"
-"display\n"
-"information"
+#: ../lib/advene/gui/plugins/actions.py:85
+#: ../lib/advene/gui/plugins/actions.py:101
+#: ../lib/advene/gui/plugins/actions.py:155
+#: ../lib/advene/gui/plugins/actions.py:177
+msgid "General description"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:551
-msgid "Wait..."
+#: ../lib/advene/gui/plugins/actions.py:87
+msgid "New position"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:555
-#, python-format
-msgid "Error: %s"
-msgstr ""
+#: ../lib/advene/gui/plugins/actions.py:90
+#: ../lib/advene/gui/plugins/actions.py:191
+#, fuzzy
+msgid "Go to related annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/util/dialog.py:575
-msgid "Any type of file"
+#: ../lib/advene/gui/plugins/actions.py:100
+msgid "Display a popup linking to an URL"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:577
-msgid "Advene files (.xml, .azp, .apl)"
+#: ../lib/advene/gui/plugins/actions.py:103
+#: ../lib/advene/gui/views/logwindow.py:159 ../lib/advene/rules/actions.py:226
+msgid "URL"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:579
-msgid "Advene session (.apl)"
+#: ../lib/advene/gui/plugins/actions.py:106
+#, fuzzy
+msgid "string:Display annotation in web browser"
+msgstr "Vidi komentajxojn sur templinio"
+
+#: ../lib/advene/gui/plugins/actions.py:113
+#: ../lib/advene/gui/views/logwindow.py:160
+#: ../lib/advene/gui/views/logwindow.py:163
+msgid "See the Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:580
+#: ../lib/advene/gui/plugins/actions.py:114
+#: ../lib/advene/gui/views/logwindow.py:164
 #, fuzzy
-msgid "Audio files"
-msgstr "Vido"
+msgid "See the annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/plugins/actions.py:117
+#: ../lib/advene/gui/views/logwindow.py:167
+msgid "The Advene website"
+msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:581
+#: ../lib/advene/gui/plugins/actions.py:118
+#: ../lib/advene/gui/views/logwindow.py:168
 #, fuzzy
-msgid "Video files"
-msgstr "Vido"
+msgid "The annotation URL"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/util/dialog.py:626
-#: ../lib/advene/gui/edit/properties.py:418
+#: ../lib/advene/gui/plugins/actions.py:130
 #, fuzzy
-msgid "Choose a directory"
-msgstr "Elekti ilobretan stilon"
+msgid "Open an interface view"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/util/dialog.py:679
-msgid "Select an element"
+#: ../lib/advene/gui/plugins/actions.py:131
+msgid ""
+"View name (timeline, tree, transcription, browser, webbrowser, transcribe)"
+msgstr ""
+
+#: ../lib/advene/gui/plugins/actions.py:132
+msgid "Destination: popup, south, east"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:32
+#: ../lib/advene/gui/plugins/actions.py:144
+#: ../lib/advene/gui/views/viewbook.py:307
 #, fuzzy
-msgid "Shot validation view"
+msgid "Open a saved view"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:34
+#: ../lib/advene/gui/plugins/actions.py:145
 #, fuzzy
-msgid "Display shot validation interface"
-msgstr "Vidi komentajxojn sur templinio"
+msgid "Identifier of the saved view"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:111
-#, python-format
-msgid "Merged #%(first)d-#%(second)d into #%(first)d"
+#: ../lib/advene/gui/plugins/actions.py:154
+msgid "Display a popup with 2 options"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:136
-msgid "Last action undone"
+#: ../lib/advene/gui/plugins/actions.py:156
+#: ../lib/advene/gui/plugins/actions.py:178
+msgid "First option description"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:154
-#, python-format
-msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
+#: ../lib/advene/gui/plugins/actions.py:157
+#: ../lib/advene/gui/plugins/actions.py:179
+msgid "First position"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:159
-#, python-format
-msgid "Cannot split annotation #%(current)d: out of bounds."
+#: ../lib/advene/gui/plugins/actions.py:158
+#: ../lib/advene/gui/plugins/actions.py:180
+msgid "Second option description"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
-#, python-format
-msgid "Changed cut between #%(first)d and %(second)d"
+#: ../lib/advene/gui/plugins/actions.py:159
+#: ../lib/advene/gui/plugins/actions.py:181
+msgid "Second position"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:182
+#: ../lib/advene/gui/plugins/actions.py:163
+#: ../lib/advene/gui/plugins/actions.py:187
 #, fuzzy
-msgid "Changed begin time for first annotation"
+msgid "Go to the beginning"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:188
-#, fuzzy
-msgid "No annotations to adjust"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/plugins/actions.py:165
+#: ../lib/advene/gui/plugins/actions.py:189
+msgid "Go to the end"
+msgstr ""
 
-#: ../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."
+#: ../lib/advene/gui/plugins/actions.py:176
+msgid "Display a popup with 3 options"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:203
-#, python-format
-msgid "Begin of #%(index)d (title: %(content)s)"
+#: ../lib/advene/gui/plugins/actions.py:182
+msgid "Third option description"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:217
-msgid "< Previous cut"
+#: ../lib/advene/gui/plugins/actions.py:183
+msgid "Third position"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:218
+#: ../lib/advene/gui/plugins/actions.py:202
 #, fuzzy
-msgid "Display previous cut"
+msgid "Display a popup to navigate to related annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:225
-msgid "Next cut >"
+#: ../lib/advene/gui/plugins/actions.py:204
+#: ../lib/advene/gui/plugins/actions.py:559
+msgid "Choose the related annotation you want to visualise."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:226
+#: ../lib/advene/gui/plugins/actions.py:211
 #, fuzzy
-msgid "Display next cut"
+msgid "Create a bookmark"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:251
-#: ../lib/advene/gui/views/timeline.py:81
-#: ../lib/advene/gui/views/annotationdisplay.py:90
+#: ../lib/advene/gui/plugins/actions.py:212
 #, fuzzy
-msgid "Current time"
-msgstr "Arbvido"
+msgid "Bookmark position (in ms)"
+msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:252
+#: ../lib/advene/gui/plugins/actions.py:213
 #, fuzzy
-msgid "Go to annotation containing current player time."
-msgstr "Vidi komentajxojn sur templinio"
+msgid "Bookmark content."
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:256
-#: ../lib/advene/gui/edit/frameselector.py:193
+#: ../lib/advene/gui/plugins/actions.py:214
 #, fuzzy
-msgid "Refresh snapshots"
+msgid "Bookmark"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:257
-#: ../lib/advene/gui/edit/frameselector.py:194
-msgid "Refresh missing snapshots"
+#: ../lib/advene/gui/plugins/actions.py:234 ../lib/advene/plugins/brltty.py:240
+#: ../lib/advene/plugins/tts.py:110
+msgid "Unknown rule"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:261
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:806
-#: ../lib/advene/gui/edit/transcribe.py:1211 ../lib/advene/gui/main.py:350
-msgid "Undo"
+#: ../lib/advene/gui/plugins/actions.py:235 ../lib/advene/plugins/brltty.py:241
+#: ../lib/advene/plugins/tts.py:111
+#, python-format
+msgid ""
+"Rule %(rulename)s: Error in the evaluation of the parameter "
+"%(parametername)s:"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:262
-#, fuzzy
-msgid "Undo last modification"
+#: ../lib/advene/gui/plugins/actions.py:247 ../lib/advene/rules/actions.py:389
+#, fuzzy, python-format
+msgid "The %s-related outgoing annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:268
-msgid "Merge with previous"
-msgstr ""
+#: ../lib/advene/gui/plugins/actions.py:249 ../lib/advene/rules/actions.py:391
+#, fuzzy, python-format
+msgid "The %s-related incoming annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:269
-msgid "Merge with previous annotation, i.e. remove this bound."
+#: ../lib/advene/gui/plugins/actions.py:259
+#: ../lib/advene/gui/plugins/actions.py:340
+#: ../lib/advene/gui/plugins/actions.py:358 ../lib/advene/plugins/tts.py:131
+msgid "No message..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:274
-#, fuzzy
-msgid "Close view."
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:60
-#: ../lib/advene/gui/plugins/tracetimeline.py:61
-#: ../lib/advene/gui/plugins/eventaccumulator.py:73
-#: ../lib/advene/gui/plugins/eventaccumulator.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:72
-#: ../lib/advene/gui/plugins/tracepreview.py:73
-msgid "Beginning edition"
+#: ../lib/advene/gui/plugins/actions.py:276
+#, python-format
+msgid "Error: undefined GUI view %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:62
-#: ../lib/advene/gui/plugins/tracetimeline.py:63
-#: ../lib/advene/gui/plugins/tracetimeline.py:64
-#: ../lib/advene/gui/plugins/eventaccumulator.py:75
-#: ../lib/advene/gui/plugins/eventaccumulator.py:76
-#: ../lib/advene/gui/plugins/eventaccumulator.py:77
-#: ../lib/advene/gui/plugins/tracepreview.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:75
-#: ../lib/advene/gui/plugins/tracepreview.py:76
-#, fuzzy
-msgid "Canceling edition"
-msgstr "Importi transkribon"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:65
-#: ../lib/advene/gui/plugins/eventaccumulator.py:78
-#: ../lib/advene/gui/plugins/tracepreview.py:77
-#, fuzzy
-msgid "Ending edition"
-msgstr "Importi transkribon"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:66
-#: ../lib/advene/gui/plugins/tracepreview.py:78
-#, fuzzy
-msgid "Moving to"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/plugins/actions.py:322
+#, python-format
+msgid "Element %s does not look like a view"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:82
-msgid "Traces"
+#: ../lib/advene/gui/plugins/actions.py:350
+msgid "Information popup"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:208
+#: ../lib/advene/gui/plugins/actions.py:364
 #, python-format
-msgid "%(name)s (%(index)d)"
+msgid "Empty destination for entry popup: %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:236
-msgid "Search"
+#: ../lib/advene/gui/plugins/actions.py:367
+#, python-format
+msgid "Destination does not have a content: %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1224
-#, python-format
-msgid "%(name)s (%(index)s)"
+#: ../lib/advene/gui/plugins/actions.py:394
+msgid "Entry popup"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:421
-#: ../lib/advene/gui/edit/montage.py:439
-#: ../lib/advene/gui/views/timeline.py:3444
-msgid "Zoom out"
+#: ../lib/advene/gui/plugins/actions.py:419
+msgid "Follow a link"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:426
-#: ../lib/advene/gui/edit/montage.py:444
-#: ../lib/advene/gui/views/timeline.py:3449
-msgid "Zoom in"
+#: ../lib/advene/gui/plugins/actions.py:423
+msgid "Click to open the URL"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:431
-msgid "Zoom 100%"
+#: ../lib/advene/gui/plugins/actions.py:441
+msgid "URL popup"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:435
-msgid "Toggle links lock"
+#: ../lib/advene/gui/plugins/actions.py:454
+#: ../lib/advene/gui/plugins/actions.py:491
+msgid "Make a choice"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:443
-msgid "Toggle link mode"
+#: ../lib/advene/gui/plugins/actions.py:458
+msgid "Click to go to another position"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:450
-#, fuzzy
-msgid "Open a trace file"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/plugins/actions.py:477
+#: ../lib/advene/gui/plugins/actions.py:515
+#: ../lib/advene/gui/views/singletonpopup.py:98
+msgid "Navigation popup"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:465
-msgid "Toggle auto refresh"
+#: ../lib/advene/gui/plugins/actions.py:500
+#, python-format
+msgid "Choice %d"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:476
+#: ../lib/advene/gui/plugins/actions.py:521
 #, fuzzy
-msgid "Open an existing trace"
-msgstr "Defauxlta regularo"
+msgid "The beginning of the annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:482
+#: ../lib/advene/gui/plugins/actions.py:522
 #, fuzzy
-msgid "Save trace"
-msgstr "Arbvido"
+msgid "The end of the annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:487
+#: ../lib/advene/gui/plugins/actions.py:523
 #, fuzzy
-msgid "Configuration"
+msgid "The next annotation of the same type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:668
-#: ../lib/advene/gui/plugins/eventaccumulator.py:202
+#: ../lib/advene/gui/plugins/actions.py:524
 #, fuzzy
-msgid "Exporting traces"
-msgstr "Importi dosieron"
+msgid "The previous annotation of the same type"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:673
-#: ../lib/advene/gui/plugins/eventaccumulator.py:207
-#, fuzzy, python-format
+#: ../lib/advene/gui/plugins/actions.py:573
+#, python-format
 msgid ""
-"Export done to\n"
-"%s"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:951
-msgid "Zoom and center on linked items"
+"Through %(title)s%(relation_content)s:\n"
+"%(annotation_content)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:960
+#: ../lib/advene/gui/plugins/actions.py:581
 #, fuzzy
-msgid "Edit item"
-msgstr "Arbvido"
+msgid "Relation navigation"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:964
-msgid "Recreate item"
+#: ../lib/advene/gui/plugins/actions.py:591
+#, fuzzy
+msgid "New bookmark"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/plugins/kinect.py:41
+msgid "Kinect Controller"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:980
-#: ../lib/advene/gui/plugins/tracetimeline.py:1001
-#: ../lib/advene/gui/edit/transcribe.py:502
-#: ../lib/advene/gui/views/timeline.py:2556 ../lib/advene/gui/popup.py:513
-msgid "Go to..."
+#: ../lib/advene/gui/plugins/kinect.py:43
+msgid "Kinect control interface"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:984
-#, fuzzy
-msgid "Zoom on action"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/plugins/contenthandlers.py:123
+msgid "Label"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
-#: ../lib/advene/gui/edit/montage.py:535
-#: ../lib/advene/gui/views/timeline.py:3318
-msgid "Inspector"
+#: ../lib/advene/gui/plugins/contenthandlers.py:173
+#, python-format
+msgid ""
+"Error while parsing SVG content:\n"
+"\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2035
-msgid "Item Id"
+#: ../lib/advene/gui/plugins/contenthandlers.py:248
+msgid " created from "
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2038
-msgid "Item name or class"
+#: ../lib/advene/gui/plugins/contenthandlers.py:314
+msgid "Graphical editor"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2042
+#: ../lib/advene/gui/plugins/contenthandlers.py:325
 #, fuzzy
-msgid "Type or schema"
-msgstr "Arbvido"
+msgid "Edit XML"
+msgstr "Redakti"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2045
-#, fuzzy
-msgid "Operations"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/plugins/contenthandlers.py:377
+#: ../lib/advene/gui/plugins/contenthandlers.py:433
+#: ../lib/advene/gui/edit/rules.py:190
+#, python-format
+msgid ""
+"The following items seem to be\n"
+"invalid TALES expressions:\n"
+"\n"
+"%s"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2087
+#: ../lib/advene/gui/plugins/tracepreview.py:62
 #, fuzzy
-msgid "Comment"
+msgid "Trace preview"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2119
-#: ../lib/advene/gui/edit/merge.py:191
-msgid "Action"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/kinect.py:41
-msgid "Kinect Controller"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracepreview.py:100
+#, fuzzy
+msgid "Full trace"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/plugins/kinect.py:43
-msgid "Kinect control interface"
+#: ../lib/advene/gui/plugins/tracepreview.py:101
+msgid "Open the trace timeline view fareast"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:52
-msgid "Display a popup"
+#: ../lib/advene/gui/plugins/videoplayer.py:39
+msgid "Complementary video player"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:54
-#: ../lib/advene/gui/plugins/actions.py:73
-#: ../lib/advene/gui/plugins/actions.py:88
-#: ../lib/advene/gui/plugins/actions.py:104
-#: ../lib/advene/gui/plugins/actions.py:160
-#: ../lib/advene/gui/plugins/actions.py:184
-msgid "Display duration in ms. Ignored if empty."
-msgstr ""
+#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/views/bookmarks.py:249
+#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/timeline.py:140 ../lib/advene/gui/edit/montage.py:58
+#: ../lib/advene/gui/edit/transcribe.py:86
+#, fuzzy
+msgid "Save view"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/plugins/actions.py:70
-msgid "Popup an entry box"
+#: ../lib/advene/gui/plugins/videoplayer.py:46
+#: ../lib/advene/gui/views/transcription.py:58
+#: ../lib/advene/gui/views/timeline.py:141 ../lib/advene/gui/views/tagbag.py:65
+#: ../lib/advene/gui/views/interactivequery.py:60
+#: ../lib/advene/gui/edit/transcribe.py:87
+msgid "Save default options"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:72
-msgid "Object where to store the answer (should have a content)"
-msgstr ""
+#: ../lib/advene/gui/plugins/videoplayer.py:47
+#, fuzzy
+msgid "Select video file"
+msgstr "Vido"
 
-#: ../lib/advene/gui/plugins/actions.py:84
-msgid "Display a popup to go to another position"
-msgstr ""
+#: ../lib/advene/gui/plugins/videoplayer.py:128
+#, fuzzy
+msgid "Select a video file"
+msgstr "Vido"
 
-#: ../lib/advene/gui/plugins/actions.py:85
-#: ../lib/advene/gui/plugins/actions.py:101
-#: ../lib/advene/gui/plugins/actions.py:155
-#: ../lib/advene/gui/plugins/actions.py:177
-msgid "General description"
+#: ../lib/advene/gui/plugins/videoplayer.py:251
+msgid "Synchronize"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:87
-msgid "New position"
+#: ../lib/advene/gui/plugins/videoplayer.py:269
+msgid "Offset in ms"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:90
-#: ../lib/advene/gui/plugins/actions.py:191
+#: ../lib/advene/gui/plugins/videoplayer.py:277
 #, fuzzy
-msgid "Go to related annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Drag and drop to get player time"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/plugins/actions.py:100
-msgid "Display a popup linking to an URL"
+#: ../lib/advene/gui/views/singletonpopup.py:32
+msgid "SingletonPopup"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:106
+#: ../lib/advene/gui/views/caption.py:31
 #, fuzzy
-msgid "string:Display annotation in web browser"
+msgid "Display a text caption below the video output"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/plugins/actions.py:113
-#: ../lib/advene/gui/views/logwindow.py:160
-#: ../lib/advene/gui/views/logwindow.py:163
-msgid "See the Advene website"
+#: ../lib/advene/gui/views/html.py:88
+#, python-format
+msgid "%s%% loaded"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:114
-#: ../lib/advene/gui/views/logwindow.py:164
-#, fuzzy
-msgid "See the annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/views/html.py:91
+#, fuzzy, python-format
+msgid "Title %s"
+msgstr "Dosiero"
 
-#: ../lib/advene/gui/plugins/actions.py:117
-#: ../lib/advene/gui/views/logwindow.py:167
-msgid "The Advene website"
+#: ../lib/advene/gui/views/html.py:155
+msgid "HTML Viewer"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:118
-#: ../lib/advene/gui/views/logwindow.py:168
+#: ../lib/advene/gui/views/html.py:157
+msgid "Embedded HTML widget"
+msgstr ""
+
+#: ../lib/advene/gui/views/html.py:185
+msgid "No available HTML rendering component"
+msgstr ""
+
+#: ../lib/advene/gui/views/annotationdisplay.py:43
 #, fuzzy
-msgid "The annotation URL"
+msgid "AnnotationDisplay"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/actions.py:130
+#: ../lib/advene/gui/views/annotationdisplay.py:45
 #, fuzzy
-msgid "Open an interface view"
-msgstr "Defauxlta regularo"
+msgid "Display the contents of an annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/actions.py:131
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/util/helper.py:606
+#, fuzzy
+msgid "No annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/annotationdisplay.py:112
+#, python-format
 msgid ""
-"View name (timeline, tree, transcription, browser, webbrowser, transcribe)"
+"Schema %(schema)s (id %(id)s)\n"
+"%(description)s\n"
+"%(stats)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:132
-msgid "Destination: popup, south, east"
+#: ../lib/advene/gui/views/annotationdisplay.py:233
+msgid "Screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:144
-#: ../lib/advene/gui/views/viewbook.py:308
+#: ../lib/advene/gui/views/annotationdisplay.py:255
+#: ../lib/advene/gui/views/relationdisplay.py:104
 #, fuzzy
-msgid "Open a saved view"
+msgid "Contents"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/actions.py:145
+#: ../lib/advene/gui/views/annotationdisplay.py:258
+#: ../lib/advene/gui/views/editaccumulator.py:73
 #, fuzzy
-msgid "Identifier of the saved view"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/plugins/actions.py:154
-msgid "Display a popup with 2 options"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/actions.py:156
-#: ../lib/advene/gui/plugins/actions.py:178
-msgid "First option description"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/actions.py:157
-#: ../lib/advene/gui/plugins/actions.py:179
-msgid "First position"
-msgstr ""
+msgid "Validate"
+msgstr "Vido"
 
-#: ../lib/advene/gui/plugins/actions.py:158
-#: ../lib/advene/gui/plugins/actions.py:180
-msgid "Second option description"
-msgstr ""
+#: ../lib/advene/gui/views/relationdisplay.py:34
+#, fuzzy
+msgid "RelationDisplay"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/actions.py:159
-#: ../lib/advene/gui/plugins/actions.py:181
-msgid "Second position"
-msgstr ""
+#: ../lib/advene/gui/views/relationdisplay.py:36
+#, fuzzy
+msgid "Display the contents of a relation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/actions.py:163
-#: ../lib/advene/gui/plugins/actions.py:187
+#: ../lib/advene/gui/views/relationdisplay.py:79
 #, fuzzy
-msgid "Go to the beginning"
+msgid "No relation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/actions.py:165
-#: ../lib/advene/gui/plugins/actions.py:189
-msgid "Go to the end"
+#: ../lib/advene/gui/views/relationdisplay.py:113
+#: ../lib/advene/gui/edit/elements.py:586
+#: ../lib/advene/gui/edit/elements.py:1069
+msgid "Members"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:176
-msgid "Display a popup with 3 options"
+#: ../lib/advene/gui/views/viewplugin.py:60
+msgid "Generic view plugin"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:182
-msgid "Third option description"
+#: ../lib/advene/gui/views/viewplugin.py:62
+msgid "You should not ever see this tooltip..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:183
-msgid "Third position"
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:202
+#: ../lib/advene/gui/views/checker.py:39
 #, fuzzy
-msgid "Display a popup to navigate to related annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Check various package properties"
+msgstr "Redakti komentarajn attributojn"
 
-#: ../lib/advene/gui/plugins/actions.py:204
-#: ../lib/advene/gui/plugins/actions.py:559
-msgid "Choose the related annotation you want to visualise."
+#: ../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/plugins/actions.py:211
+#: ../lib/advene/gui/views/table.py:60
 #, fuzzy
-msgid "Create a bookmark"
+msgid "Annotation table view"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/actions.py:212
+#: ../lib/advene/gui/views/table.py:62
 #, fuzzy
-msgid "Bookmark position (in ms)"
-msgstr "Elekti ilobretan stilon"
+msgid "Display annotations in a table"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/plugins/actions.py:213
+#: ../lib/advene/gui/views/table.py:73
 #, fuzzy
-msgid "Bookmark content."
+msgid "Export as CSV"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/plugins/actions.py:214
-#, fuzzy
-msgid "Bookmark"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/plugins/actions.py:276
+#: ../lib/advene/gui/views/table.py:90 ../lib/advene/gui/views/table.py:578
+#: ../lib/advene/gui/views/transcription.py:147
 #, python-format
-msgid "Error: undefined GUI view %s"
+msgid "Error in source evaluation %(source)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:286
-#: ../lib/advene/gui/views/viewbook.py:124 ../lib/advene/gui/main.py:1189
-msgid "...in its own window"
-msgstr ""
+#: ../lib/advene/gui/views/table.py:267 ../lib/advene/gui/views/table.py:544
+#, fuzzy
+msgid "Snapshot"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/actions.py:287
-#: ../lib/advene/gui/views/viewbook.py:125
-#: ../lib/advene/gui/views/__init__.py:381 ../lib/advene/gui/main.py:1190
-msgid "...embedded east of the video"
+#: ../lib/advene/gui/views/table.py:280
+#: ../lib/advene/gui/views/timeline.py:1667
+msgid "Cannot update the annotation, its representation is too complex"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:288
-#: ../lib/advene/gui/views/viewbook.py:126
-#: ../lib/advene/gui/views/__init__.py:382 ../lib/advene/gui/main.py:1191
-msgid "...embedded west of the video"
+#: ../lib/advene/gui/views/table.py:305 ../lib/advene/gui/edit/elements.py:604
+#: ../lib/advene/gui/edit/elements.py:681
+#: ../lib/advene/gui/edit/elements.py:741
+#: ../lib/advene/gui/edit/elements.py:1132
+msgid "Content"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:289
-#: ../lib/advene/gui/views/viewbook.py:127
-#: ../lib/advene/gui/views/__init__.py:383 ../lib/advene/gui/main.py:1192
-msgid "...embedded south of the video"
+#: ../lib/advene/gui/views/table.py:306 ../lib/advene/gui/views/table.py:675
+#: ../lib/advene/gui/views/browser.py:363 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/edit/elements.py:512
+#: ../lib/advene/gui/edit/elements.py:561
+#: ../lib/advene/gui/edit/elements.py:663
+msgid "Type"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:290
-#: ../lib/advene/gui/views/viewbook.py:128
-#: ../lib/advene/gui/views/__init__.py:384 ../lib/advene/gui/main.py:1193
-msgid "...embedded at the right of the window"
+#: ../lib/advene/gui/views/table.py:307 ../lib/advene/gui/edit/elements.py:1807
+msgid "Begin"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:322
-#, python-format
-msgid "Element %s does not look like a view"
+#: ../lib/advene/gui/views/table.py:310 ../lib/advene/gui/views/table.py:676
+#: ../lib/advene/gui/util/dialog.py:395 ../lib/advene/gui/edit/rules.py:1096
+#: ../lib/advene/gui/edit/imports.py:325 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/edit/elements.py:560
+#: ../lib/advene/gui/edit/elements.py:648
+#: ../lib/advene/gui/edit/elements.py:728
+#: ../lib/advene/gui/edit/elements.py:877
+#: ../lib/advene/gui/edit/elements.py:946
+#: ../lib/advene/gui/edit/elements.py:1058
+#: ../lib/advene/gui/edit/elements.py:1119
+msgid "Id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:350
-msgid "Information popup"
+#: ../lib/advene/gui/views/table.py:449 ../lib/advene/gui/views/table.py:628
+msgid "Export data to file..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:364
+#: ../lib/advene/gui/views/table.py:458 ../lib/advene/gui/views/table.py:637
 #, python-format
-msgid "Empty destination for entry popup: %s"
+msgid "Error while exporting data to %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:367
-#, python-format
-msgid "Destination does not have a content: %s"
+#: ../lib/advene/gui/views/table.py:469
+msgid "id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:394
-msgid "Entry popup"
+#: ../lib/advene/gui/views/table.py:469
+msgid "type"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:419
-msgid "Follow a link"
+#: ../lib/advene/gui/views/table.py:469
+msgid "begin"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:423
-msgid "Click to open the URL"
+#: ../lib/advene/gui/views/table.py:469
+msgid "end"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:441
-msgid "URL popup"
+#: ../lib/advene/gui/views/table.py:469
+#, fuzzy
+msgid "content"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/views/table.py:473 ../lib/advene/gui/views/table.py:653
+#: ../lib/advene/core/controller.py:2555
+#, python-format
+msgid "Data exported to %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:454
-#: ../lib/advene/gui/plugins/actions.py:491
-msgid "Make a choice"
+#: ../lib/advene/gui/views/table.py:493
+#, python-format
+msgid "Set %(attr)s time to %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:458
-msgid "Click to go to another position"
+#: ../lib/advene/gui/views/table.py:552
+msgid "Generic table view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:477
-#: ../lib/advene/gui/plugins/actions.py:515
-#: ../lib/advene/gui/views/singletonpopup.py:98
-msgid "Navigation popup"
+#: ../lib/advene/gui/views/table.py:554
+msgid "Display Advene elements in a table."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:500
-#, python-format
-msgid "Choice %d"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element title"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:521
-#, fuzzy
-msgid "The beginning of the annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element type"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:522
+#: ../lib/advene/gui/views/table.py:649
 #, fuzzy
-msgid "The end of the annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Element id"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/plugins/actions.py:523
-#, fuzzy
-msgid "The next annotation of the same type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/views/accumulatorpopup.py:49
+msgid "PopupAccumulator"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:524
+#: ../lib/advene/gui/views/bookmarks.py:51
 #, fuzzy
-msgid "The previous annotation of the same type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Bookmarks importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/plugins/actions.py:573
-#, python-format
-msgid ""
-"Through %(title)s%(relation_content)s:\n"
-"%(annotation_content)s"
+#: ../lib/advene/gui/views/bookmarks.py:72
+msgid "Bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:581
-#, fuzzy
-msgid "Relation navigation"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/plugins/actions.py:591
-#, fuzzy
-msgid "New bookmark"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/views/bookmarks.py:74
+msgid "Bookmark timecodes with their corresponding screenshots"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:43
-msgid "Activity trace"
+#: ../lib/advene/gui/views/bookmarks.py:80 ../lib/advene/gui/views/tagbag.py:63
+#: ../lib/advene/gui/views/activebookmarks.py:62
+#: ../lib/advene/gui/views/logwindow.py:50 ../lib/advene/gui/edit/montage.py:59
+msgid "Clear"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:134
-msgid " Trace : "
+#: ../lib/advene/gui/views/bookmarks.py:145
+msgid "Select the annotation type to generate"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:138
+#: ../lib/advene/gui/views/bookmarks.py:150
 #, fuzzy
-msgid " Filters"
-msgstr "Dosiero"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4178
-msgid "Reset"
-msgstr ""
+msgid "Choose a duration"
+msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:167
-msgid " Time : "
+#: ../lib/advene/gui/views/bookmarks.py:151
+msgid "Enter the standard duration (in ms) of created annotations."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:177
-msgid " Max. : "
+#: ../lib/advene/gui/views/bookmarks.py:168
+msgid "Converted from bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:186
-#, fuzzy
-msgid "Export"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:253
-#, fuzzy
-msgid "Defining Filters"
-msgstr "Dosiero"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:559
-#: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../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: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: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: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: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: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: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:228
-#, fuzzy, python-format
-msgid "of an unknown item (%s)"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/plugins/contenthandlers.py:122
-msgid "Label"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/contenthandlers.py:172
+#: ../lib/advene/gui/views/bookmarks.py:172
+#: ../lib/advene/gui/edit/transcribe.py:1139
 #, python-format
 msgid ""
-"Error while parsing SVG content:\n"
-"\n"
-"%s"
+"Conversion completed.\n"
+"%s annotations generated."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:247
-msgid " created from "
+#: ../lib/advene/gui/views/bookmarks.py:226
+msgid "Drop a position here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:315
-msgid "Graphical editor"
+#: ../lib/advene/gui/views/bookmarks.py:247
+#: ../lib/advene/gui/views/activebookmarks.py:522
+msgid "Insert a bookmark for the current video time"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:326
+#: ../lib/advene/gui/views/bookmarks.py:248
 #, fuzzy
-msgid "Edit XML"
-msgstr "Redakti"
-
-#: ../lib/advene/gui/plugins/contenthandlers.py:378
-#: ../lib/advene/gui/plugins/contenthandlers.py:434
-#: ../lib/advene/gui/edit/rules.py:186
-#, python-format
-msgid ""
-"The following items seem to be\n"
-"invalid TALES expressions:\n"
-"\n"
-"%s"
-msgstr ""
+msgid "Convert bookmarks to annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
+#: ../lib/advene/gui/views/viewbook.py:37
 #, fuzzy
-msgid "Video player"
+msgid "ViewBook"
 msgstr "Vido"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:38
-msgid "Complementary video player"
+#: ../lib/advene/gui/views/viewbook.py:58
+#: ../lib/advene/gui/views/viewbook.py:65
+msgid "Cannot remove this widget, it is essential."
+msgstr ""
+
+#: ../lib/advene/gui/views/viewbook.py:135
+msgid "Detach"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:44
-#: ../lib/advene/gui/edit/montage.py:54
-#: ../lib/advene/gui/edit/transcribe.py:85
-#: ../lib/advene/gui/views/transcription.py:56
-#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/views/viewbook.py:139
+#: ../lib/advene/gui/views/editaccumulator.py:79
+msgid "Close"
+msgstr ""
+
+#: ../lib/advene/gui/views/viewbook.py:156
 #, fuzzy
-msgid "Save view"
+msgid "Rename the view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
-#: ../lib/advene/gui/edit/transcribe.py:86
-#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/transcription.py:57
-#: ../lib/advene/gui/views/interactivequery.py:60
-#: ../lib/advene/gui/views/timeline.py:136
-msgid "Save default options"
+#: ../lib/advene/gui/views/viewbook.py:157
+msgid "Please enter the new name of the view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:46
-#, fuzzy
-msgid "Select video file"
-msgstr "Vido"
+#: ../lib/advene/gui/views/viewbook.py:196
+msgid "Detach view in its own window, or drag-and-drop to another zone"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:127
+#: ../lib/advene/gui/views/viewbook.py:210
 #, fuzzy
-msgid "Select a video file"
-msgstr "Vido"
+msgid "Close view"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:250
-msgid "Synchronize"
+#: ../lib/advene/gui/views/viewbook.py:233
+#: ../lib/advene/gui/views/viewbook.py:239
+#: ../lib/advene/gui/edit/elements.py:335
+#, python-format
+msgid "Edit %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:266
-msgid "Offset in ms"
+#: ../lib/advene/gui/views/viewbook.py:262 ../lib/advene/rules/actions.py:615
+#, python-format
+msgid "Cannot find the view %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:274
-#, fuzzy
-msgid "Drag and drop to get player time"
+#: ../lib/advene/gui/views/viewbook.py:285
+#, fuzzy, python-format
+msgid "Open a new %s for..."
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/plugins/tracepreview.py:61
+#: ../lib/advene/gui/views/viewbook.py:297
 #, fuzzy
-msgid "Trace preview"
+msgid "Create a new comment view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/plugins/tracepreview.py:99
+#: ../lib/advene/gui/views/viewbook.py:299
 #, fuzzy
-msgid "Full trace"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/plugins/tracepreview.py:100
-msgid "Open the trace timeline view fareast"
-msgstr ""
+msgid "Open a new view"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:376
+#: ../lib/advene/gui/views/viewbook.py:373
 #, fuzzy, python-format
-msgid "Rendering type %(type)s as %(presentation)s"
+msgid "Use annotation-type %s :"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:521
-msgid "Snapshot only"
+#: ../lib/advene/gui/views/viewbook.py:377
+#: ../lib/advene/gui/views/viewbook.py:403
+msgid "to edit it"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:522
-msgid "Overlayed snapshot only"
+#: ../lib/advene/gui/views/viewbook.py:378
+#: ../lib/advene/gui/views/viewbook.py:404
+#: ../lib/advene/gui/views/viewbook.py:436
+#, fuzzy
+msgid "to create a new static view"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/views/viewbook.py:380
+#, fuzzy
+msgid "in a timeline"
+msgstr "Vidi komentajxojn sur templinio"
+
+#: ../lib/advene/gui/views/viewbook.py:381
+msgid "as a montage"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:523
-msgid "Timestamp only"
+#: ../lib/advene/gui/views/viewbook.py:382
+#: ../lib/advene/gui/views/viewbook.py:435
+msgid "in a table"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:524
-msgid "Snapshot+timestamp"
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
+msgid "in a query"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
+#, python-format
+msgid "Query %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/viewbook.py:384
+#: ../lib/advene/gui/views/viewbook.py:406
 #, fuzzy
-msgid "Annotation content"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "in the TALES browser"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:540
-msgid "as a list"
+#: ../lib/advene/gui/views/viewbook.py:384
+#, python-format
+msgid "Browsing %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:541
-msgid "as a grid"
-msgstr ""
+#: ../lib/advene/gui/views/viewbook.py:400
+#, fuzzy, python-format
+msgid "Use annotation %s :"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:542
-msgid "as a table"
+#: ../lib/advene/gui/views/viewbook.py:406
+#, python-format
+msgid "Browse %s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:543
-#: ../lib/advene/gui/views/viewbook.py:380
+#: ../lib/advene/gui/views/viewbook.py:407
 #, fuzzy
-msgid "as a transcription"
+msgid "to display its contents"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:661
-#: ../lib/advene/gui/views/transcription.py:461
+#: ../lib/advene/gui/views/viewbook.py:407
 #, python-format
-msgid "Annotation %s"
+msgid "%s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:681
-msgid "Play video"
+#: ../lib/advene/gui/views/viewbook.py:408
+msgid "as a bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
-msgid "Show timestamp only"
+#: ../lib/advene/gui/views/viewbook.py:426
+msgid "as the context for the query..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
-#, fuzzy
-msgid "Show content only"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
-#, fuzzy
-msgid "Show snapshot only"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
-#, fuzzy
-msgid "Show overlayed timestamp"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
+#: ../lib/advene/gui/views/viewbook.py:430
 #, fuzzy
-msgid "Show overlayed content"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:670
-#, fuzzy, python-format
-msgid "Annotation type %s"
+msgid "Set of annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
+#: ../lib/advene/gui/views/viewbook.py:431
 #, fuzzy
-msgid "display as list"
+msgid "Use annotations:"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
-#, fuzzy
-msgid "display as grid"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/views/viewbook.py:434
+msgid "to edit them"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:673
+#: ../lib/advene/gui/views/viewbook.py:437
 #, fuzzy
-msgid "display as table"
+msgid "as bookmarks"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/views/transcription.py:49
+msgid "Transcription"
+msgstr ""
+
+#: ../lib/advene/gui/views/transcription.py:51
 #, fuzzy
-msgid "display as transcription"
+msgid "Display annotations as a text transcription"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:683
+#: ../lib/advene/gui/views/transcription.py:164
 #, fuzzy
-msgid "Open link"
-msgstr "Defauxlta regularo"
+msgid "Transcription options"
+msgstr "Importi transkribon"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:739
-#, fuzzy, python-format
-msgid "HTML editor: cannot parse content (%s)"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/views/transcription.py:165
+#, fuzzy
+msgid "Default representation"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
-#, fuzzy, python-format
-msgid "Heading %d"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/views/transcription.py:165
+msgid "Use the default representation for annotations"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:783
-msgid "Bold"
+#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/edit/elements.py:986
+msgid "Representation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:784
-msgid "Italic"
+#: ../lib/advene/gui/views/transcription.py:166
+msgid ""
+"If default representation is unchecked,\n"
+"this TALES expression that will be used to format the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
-msgid "Header"
+#: ../lib/advene/gui/views/transcription.py:167
+msgid "Separator"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
-msgid "Copy"
+#: ../lib/advene/gui/views/transcription.py:168
+msgid "This separator will be inserted between the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:788
-msgid "Cut"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
-msgid "Paste"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
-#: ../lib/advene/gui/edit/schemaeditor.py:64
-#: ../lib/advene/gui/views/timeline.py:134 ../lib/advene/gui/views/tree.py:428
-msgid "Refresh"
+#: ../lib/advene/gui/views/transcription.py:169
+msgid "Whitespace"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:847
-msgid "WYSIWYG editor"
-msgstr ""
+#: ../lib/advene/gui/views/transcription.py:170
+#, fuzzy
+msgid "Newline"
+msgstr "Templinio"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:857
+#: ../lib/advene/gui/views/transcription.py:171
 #, fuzzy
-msgid "Edit HTML source"
-msgstr "Preferoj"
+msgid "Tabulation"
+msgstr "Vido"
 
-#: ../lib/advene/gui/plugins/logmessages.py:35
-msgid "Log Messages"
+#: ../lib/advene/gui/views/transcription.py:172
+msgid "Dash"
 msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:73
-#: ../lib/advene/gui/edit/importer.py:143
-msgid "Stop"
+#: ../lib/advene/gui/views/transcription.py:173
+msgid "User defined"
 msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:82
-#: ../lib/advene/gui/edit/dvdselect.py:112
-msgid "Preview"
+#: ../lib/advene/gui/views/transcription.py:175
+msgid "User-defined separator"
 msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:91
+#: ../lib/advene/gui/views/transcription.py:175
 msgid ""
-"Select the correct\n"
-"title and chapter\n"
-"of the DVD"
+"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
+"a tabulation."
 msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:104
-msgid "Chapter"
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Display timestamps"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:33
-#, fuzzy
-msgid "Create element"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/edit/merge.py:34
-#, fuzzy
-msgid "Create annotation (duplicate id)"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/edit/merge.py:35
-msgid "Create relation (duplicate id)"
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Insert timestsamp values"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:36
-msgid "Update the color"
+#: ../lib/advene/gui/views/transcription.py:177
+msgid "Display annotation bounds"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:37
-#, fuzzy
-msgid "Update the representation"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/edit/merge.py:38
-#, fuzzy
-msgid "Update the description"
-msgstr "Importi transkribon"
-
-#: ../lib/advene/gui/edit/merge.py:39
-msgid "Update the title"
+#: ../lib/advene/gui/views/transcription.py:237
+#, python-format
+msgid ""
+"Cannot convert the following annotations,\n"
+"the representation pattern is too complex.\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:40
-msgid "Update the mimetype"
+#: ../lib/advene/gui/views/transcription.py:248
+msgid ""
+"Cannot validate the update.\n"
+"The representation pattern is too complex."
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:41
-msgid "Update the begin time"
-msgstr ""
+#: ../lib/advene/gui/views/transcription.py:274
+#, fuzzy
+msgid "Save transcription to a text file"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/edit/merge.py:42
-msgid "Update the end time"
+#: ../lib/advene/gui/views/transcription.py:275
+msgid "Apply the modifications"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:43
-msgid "Update the content"
+#: ../lib/advene/gui/views/transcription.py:276
+msgid "Find text"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:44
-msgid "Update the matchFilter"
+#: ../lib/advene/gui/views/transcription.py:277
+msgid "Quickly switch display options"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:45
+#: ../lib/advene/gui/views/transcription.py:278
 #, fuzzy
-msgid "Update the member types"
-msgstr "Arbvido"
+msgid "Refresh the transcription"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/edit/merge.py:46
+#: ../lib/advene/gui/views/transcription.py:279
 #, fuzzy
-msgid "Update tags"
-msgstr "Arbvido"
+msgid "Edit preferences"
+msgstr "Preferoj"
 
-#: ../lib/advene/gui/edit/merge.py:90
-msgid "Difference between original and merged elements"
+#: ../lib/advene/gui/views/transcription.py:697
+#, python-format
+msgid "Cannot write to %(filename)s: %(error)s:"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:136
-#, fuzzy
-msgid "Current element"
-msgstr "Arbvido"
+#: ../lib/advene/gui/views/transcription.py:703
+#: ../lib/advene/gui/edit/transcribe.py:882
+#, python-format
+msgid "Transcription saved to %s"
+msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:141
+#: ../lib/advene/gui/views/browser.py:164
+#: ../lib/advene/gui/views/browser.py:166
 #, fuzzy
-msgid "Updated element"
-msgstr "Arbvido"
+msgid "TALES browser"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/edit/merge.py:147
-msgid "Show diff"
-msgstr ""
+#: ../lib/advene/gui/views/browser.py:171
+#, fuzzy
+msgid "Display result in table"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/merge.py:180
-msgid "Merge?"
+#: ../lib/advene/gui/views/browser.py:194
+msgid "Insert path"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:197
-msgid "Element"
+#: ../lib/advene/gui/views/browser.py:195
+msgid "Insert value"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
-#, python-format
-msgid "Package %s"
+#: ../lib/advene/gui/views/browser.py:250
+msgid "Expression returned None (there was an exception)"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
-msgid "No title"
+#: ../lib/advene/gui/views/browser.py:303
+msgid "Result is not a list"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:267
-msgid "All"
+#: ../lib/advene/gui/views/browser.py:360
+#: ../lib/advene/gui/edit/shapewidget.py:942
+msgid "Path"
 msgstr ""
 
-#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1588
-#, fuzzy
-msgid "Properties"
-msgstr "Komentaraj attributoj"
-
-#: ../lib/advene/gui/edit/properties.py:46
-#: ../lib/advene/gui/edit/transcribe.py:147
-#: ../lib/advene/gui/edit/transcribe.py:1195
-#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3483
-#: ../lib/advene/gui/views/timeline.py:3624 ../lib/advene/gui/main.py:4235
-msgid "Preferences"
+#: ../lib/advene/gui/views/browser.py:367
+#: ../lib/advene/gui/edit/elements.py:2173
+msgid "Value"
 msgstr ""
 
-#: ../lib/advene/gui/edit/properties.py:371
-#, fuzzy
-msgid "Choose a file"
-msgstr "Elekti ilobretan stilon"
+#: ../lib/advene/gui/views/timeline.py:128
+msgid "Display annotations on a timeline"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/edit/importer.py:45
+#: ../lib/advene/gui/views/timeline.py:142
 #, fuzzy
-msgid "Importer"
-msgstr "Importi dosieron"
+msgid "Limit display to current area"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/edit/importer.py:101
-#: ../lib/advene/gui/edit/importer.py:111
+#: ../lib/advene/gui/views/timeline.py:143
+#: ../lib/advene/gui/views/timeline.py:3276
 #, fuzzy
-msgid "Advene package importer"
-msgstr "Redakti komentarajn attributojn"
+msgid "Display whole movie"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/importer.py:115
-#, fuzzy
-msgid "Not likely"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/views/timeline.py:173
+#, fuzzy, python-format
+msgid "Cannot find annotation type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/importer.py:137
-#, python-format
-msgid "Completed conversion: %(statistics)s"
+#: ../lib/advene/gui/views/timeline.py:222
+msgid "No scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Choose the file to import"
+#: ../lib/advene/gui/views/timeline.py:223
+msgid "Continuous scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:272
-#, fuzzy
-msgid "Filter"
-msgstr "Dosiero"
+#: ../lib/advene/gui/views/timeline.py:224
+msgid "Discrete scrolling"
+msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:276
+#: ../lib/advene/gui/views/timeline.py:225
 #, fuzzy
-msgid "Options"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/edit/importer.py:287
-msgid "Start"
-msgstr ""
+msgid "Annotation scrolling"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:57
-msgid "Schema Editor"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:501
+#, fuzzy, python-format
+msgid "%d annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:132
+#: ../lib/advene/gui/views/timeline.py:504
 #, fuzzy
-msgid "Display"
+msgid "Display all types"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:155
-#: ../lib/advene/gui/edit/shapewidget.py:1587 ../lib/advene/gui/popup.py:472
-#: ../lib/advene/gui/popup.py:476
-msgid "Delete"
+#: ../lib/advene/gui/views/timeline.py:506
+#, python-format
+msgid ""
+"There are %d annotations.\n"
+"The current timeline may take a long time to display them, so only the first "
+"two annotation types are displayed. Use the annotation type selector (second "
+"button in the timeline) to select other annotations types to display, or "
+"click on the 'Display all types' button below."
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:762
+#: ../lib/advene/gui/views/timeline.py:979
 #, fuzzy
-msgid "Remove relation type"
+msgid "Split at current player position"
 msgstr "Defauxlta regularo"
 
-#: ../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:831
-#, fuzzy
-msgid "Remove annotation type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/edit/schemaeditor.py:834
-msgid "Create relation type between this one and..."
-msgstr ""
-
-#: ../lib/advene/gui/edit/schemaeditor.py:969
-msgid "New schema"
+#: ../lib/advene/gui/views/timeline.py:983
+msgid "Center and zoom"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:985 ../lib/advene/gui/popup.py:690
-#: ../lib/advene/gui/popup.py:750 ../lib/advene/gui/popup.py:803
-msgid "Select a color"
+#: ../lib/advene/gui/views/timeline.py:1087
+msgid "Create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:988
+#: ../lib/advene/gui/views/timeline.py:1097
 #, fuzzy
-msgid "New annotation type"
+msgid "Create a new relation-type."
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:991
+#: ../lib/advene/gui/views/timeline.py:1123
 #, fuzzy
-msgid "New relation type"
-msgstr "Defauxlta regularo"
+msgid "Merge with this annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:994
-msgid "Hide this schema"
+#: ../lib/advene/gui/views/timeline.py:1132
+msgid "Align both begin times"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1000
-msgid "Export drawing to pdf"
+#: ../lib/advene/gui/views/timeline.py:1133
+msgid "Align both end times"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1042
-#, fuzzy
-msgid "Choose a filename to export the schema as PDF"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/edit/rules.py:84 ../lib/advene/gui/edit/rules.py:86
-#: ../lib/advene/gui/edit/create.py:252
-msgid "Rule"
+#: ../lib/advene/gui/views/timeline.py:1134
+msgid "Align end time to selected begin time"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:95 ../lib/advene/gui/edit/create.py:242
-#, fuzzy
-msgid "Subviews"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/edit/rules.py:122
-msgid "Add a new rule"
+#: ../lib/advene/gui/views/timeline.py:1135
+msgid "Align begin time to selected end time"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:126
-#, fuzzy
-msgid "Subview"
-msgstr "Arbvido"
+#: ../lib/advene/gui/views/timeline.py:1136
+msgid "Align all times"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:129
-msgid "Add a subview list"
+#: ../lib/advene/gui/views/timeline.py:1174
+msgid "Cannot delete the annotation : it has relations."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:135
+#: ../lib/advene/gui/views/timeline.py:1249
 #, fuzzy
-msgid "Remove the current rule"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/edit/rules.py:275
-msgid "Source expression"
-msgstr ""
+msgid "Select the appropriate relation type"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:277
-msgid "Return expression"
-msgstr ""
-
-#: ../lib/advene/gui/edit/rules.py:351
-msgid "For all elements in "
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:1268
+#, fuzzy, python-format
+msgid "Duplicate selection to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:352
-#, fuzzy
-msgid "All annotations of the package"
+#: ../lib/advene/gui/views/timeline.py:1271
+#, fuzzy, python-format
+msgid "Move selection to type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:353
-msgid "All views of the package"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:1280
+#, fuzzy, python-format
+msgid "Duplicate annotation to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:354 ../lib/advene/gui/edit/rules.py:798
-#, fuzzy
-msgid "The context annotations"
+#: ../lib/advene/gui/views/timeline.py:1284
+#, fuzzy, python-format
+msgid "Move annotation to type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:355 ../lib/advene/gui/edit/rules.py:799
-#, fuzzy
-msgid "The annotations of the context type"
+#: ../lib/advene/gui/views/timeline.py:1291
+#, fuzzy, python-format
+msgid "Duplicate to type %(type)s at %(position)s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:370
-msgid "Return "
+#: ../lib/advene/gui/views/timeline.py:1297
+#, python-format
+msgid "Move to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:372 ../lib/advene/gui/edit/rules.py:787
+#: ../lib/advene/gui/views/timeline.py:1307
 #, fuzzy
-msgid "The element"
-msgstr "Arbvido"
+msgid "Duplicate and create a relation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/timeline.py:1318
+#, fuzzy, python-format
+msgid "Duplicate at %s and create a relation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:373 ../lib/advene/gui/edit/rules.py:788
+#: ../lib/advene/gui/views/timeline.py:1349
 #, fuzzy
-msgid "The element's content"
-msgstr "Arbvido"
+msgid "Annotation filter"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:388
-msgid "If the element matches "
+#: ../lib/advene/gui/views/timeline.py:1350
+msgid "Enter the searched string"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:390
-msgid "Return the element if it matches "
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:1458
+#, fuzzy, python-format
+msgid "Duplicate all annotations to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:408 ../lib/advene/gui/edit/rules.py:617
-msgid "All conditions must be met"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:1460
+#, fuzzy, python-format
+msgid "Move all annotations to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:409 ../lib/advene/gui/edit/rules.py:618
-msgid "Any condition can be met"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:1462
+#, 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:1464
+#, fuzzy, python-format
+msgid "Move all annotations matching a string to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:493 ../lib/advene/gui/edit/rules.py:563
+#: ../lib/advene/gui/views/timeline.py:1466
 #, python-format
-msgid "Rule <b>%s</b>"
+msgid "Align all annotation time codes using %s as reference."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:574
-msgid "Rule name"
+#: ../lib/advene/gui/views/timeline.py:1468
+#, python-format
+msgid "Align all annotation contents using %s as reference"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:591
-msgid "Event"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:1960
+#: ../lib/advene/gui/views/timeline.py:1989
+#, fuzzy, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:599
-msgid "If"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:1971
+#, fuzzy
+msgid "Displaying done."
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/edit/rules.py:638
-msgid "Then"
+#: ../lib/advene/gui/views/timeline.py:2463
+#, fuzzy
+msgid "Create a new annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/timeline.py:2464
+#, fuzzy
+msgid "Zoom on region"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/views/timeline.py:2465
+#, fuzzy
+msgid "Restrict display to region"
+msgstr "Vidi komentajxojn sur templinio"
+
+#: ../lib/advene/gui/views/timeline.py:2578
+#: ../lib/advene/gui/edit/transcribe.py:494
+#, python-format
+msgid "Position %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:683
-msgid "When the "
+#: ../lib/advene/gui/views/timeline.py:2588
+#, fuzzy
+msgid "New annotation at player time"
+msgstr "Vidi komentajxojn sur templinio"
+
+#: ../lib/advene/gui/views/timeline.py:2592
+#, fuzzy
+msgid "New annotation at mouse position"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/timeline.py:2596
+msgid "Selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:696
-msgid " occurs,"
+#: ../lib/advene/gui/views/timeline.py:2718
+msgid "Cannot zoom more"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:723 ../lib/advene/gui/edit/rules.py:726
+#: ../lib/advene/gui/views/timeline.py:2933
 #, python-format
-msgid "Condition expression: %s"
+msgid "From schema %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:765
+#: ../lib/advene/gui/views/timeline.py:2996
 #, fuzzy
-msgid "The annotation type"
+msgid "Restrict playing to this annotation-type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:768
-#, fuzzy, python-format
-msgid "The value of the %s attribute"
+#: ../lib/advene/gui/views/timeline.py:3003
+#, fuzzy
+msgid "Goto previous annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:770
+#: ../lib/advene/gui/views/timeline.py:3014
 #, fuzzy
-msgid "The annotation fragment"
+msgid "Goto next annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:771
-#, fuzzy
-msgid "The annotation begin time"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/views/timeline.py:3025
+msgid "+"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:772
+#: ../lib/advene/gui/views/timeline.py:3084
 #, fuzzy
-msgid "The annotation end time"
-msgstr "Vidi komentajxojn sur templinio"
+msgid "Open an annotation display view"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:774
-#, fuzzy
-msgid "The annotation MIME-type"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/views/timeline.py:3091
+msgid "Open a slave montage view (coordinated zoom level)"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:775
-#, fuzzy
-msgid "The annotation's incoming relations"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/views/timeline.py:3126
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:776
+#: ../lib/advene/gui/views/timeline.py:3133
 #, fuzzy
-msgid "The annotation's outgoing relations"
+msgid "No selected annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:779
+#: ../lib/advene/gui/views/timeline.py:3137
 #, fuzzy, python-format
-msgid "The %s-related incoming annotations"
+msgid "%d selected annotation(s)"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:783
-#, fuzzy, python-format
-msgid "The %s-related outgoing annotations"
+#: ../lib/advene/gui/views/timeline.py:3144
+#, fuzzy
+msgid "Unselect all annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:789
+#: ../lib/advene/gui/views/timeline.py:3145
 #, fuzzy
-msgid "The element fragment"
+msgid "Create a static view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/rules.py:790
-#, fuzzy
-msgid "The element begin time"
-msgstr "Vidi komentajxojn sur templinio"
-
-#: ../lib/advene/gui/edit/rules.py:791
-#, fuzzy
-msgid "The element end time"
-msgstr "Arbvido"
+#: ../lib/advene/gui/views/timeline.py:3146
+msgid "Highlight selection in other views"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:792
+#: ../lib/advene/gui/views/timeline.py:3147
+#: ../lib/advene/gui/views/timeline.py:3736
 #, fuzzy
-msgid "The element duration"
-msgstr "Arbvido"
+msgid "Tag selection"
+msgstr "Vido"
 
-#: ../lib/advene/gui/edit/rules.py:793
+#: ../lib/advene/gui/views/timeline.py:3148
 #, fuzzy
-msgid "The element type"
-msgstr "Arbvido"
+msgid "Delete selected annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:794
+#: ../lib/advene/gui/views/timeline.py:3149
 #, fuzzy
-msgid "The element's incoming relations"
+msgid "Display selection in a table"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/edit/rules.py:795
+#: ../lib/advene/gui/views/timeline.py:3150
+msgid "Center and zoom on selection"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3151
 #, fuzzy
-msgid "The element's outgoing relations"
+msgid "Edit selected annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:796
+#: ../lib/advene/gui/views/timeline.py:3152
 #, fuzzy
-msgid "The context"
-msgstr "Defauxlta regularo"
+msgid "Merge annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:797
+#: ../lib/advene/gui/views/timeline.py:3153
 #, fuzzy
-msgid "The context fragment"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/edit/rules.py:809
-#, fuzzy, python-format
-msgid "annotation-type %s"
+msgid "Display statistics"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:812
-#, fuzzy, python-format
-msgid "relation-type %s"
+#: ../lib/advene/gui/views/timeline.py:3269
+#, fuzzy
+msgid "Goto previous page"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:834
-msgid "Select a condition"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3281
+#, fuzzy
+msgid "Goto next page"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:878
-#, python-format
-msgid "Parameter %s"
+#: ../lib/advene/gui/views/timeline.py:3337
+msgid "Inspector locked. Click here or in the timeline background to unlock."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:992
-msgid "Select an action"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3365
+#, fuzzy
+msgid ""
+"Delete the selected annotations or drop an annotation here to delete it."
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/rules.py:1083
-msgid "Activate?"
+#: ../lib/advene/gui/views/timeline.py:3387
+msgid ""
+"Drag an annotation type here to remove it from display.\n"
+"Click to edit all displayed types"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:83
-msgid "Generic shape"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3399
+#, fuzzy
+msgid "Selection actions"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/shapewidget.py:234
-#: ../lib/advene/gui/edit/shapewidget.py:741
-#, python-format
-msgid "Link to %s"
+#: ../lib/advene/gui/views/timeline.py:3414
+msgid "Display relations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:321
-#: ../lib/advene/gui/views/tagbag.py:132
-msgid "Name"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3420
+#, fuzzy
+msgid "Display all relations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/shapewidget.py:326
-#: ../lib/advene/gui/edit/shapewidget.py:1299
-msgid "Link"
+#: ../lib/advene/gui/views/timeline.py:3497
+msgid "Center on current player position."
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:331
-msgid "Link label"
+#: ../lib/advene/gui/views/timeline.py:3513
+msgid "Automatically activate loop when clicking on an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:349
-msgid "Linewidth"
+#: ../lib/advene/gui/views/timeline.py:3537
+msgid "Displayed"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:354
+#: ../lib/advene/gui/views/timeline.py:3545
 #, fuzzy
-msgid "Filled"
-msgstr "Dosiero"
-
-#: ../lib/advene/gui/edit/shapewidget.py:362
-msgid "Opacity"
-msgstr ""
+msgid "Not displayed"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/shapewidget.py:404
-#, python-format
-msgid "Properties of %s"
+#: ../lib/advene/gui/views/timeline.py:3594
+msgid "< All <"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:451
-msgid "Rectangle"
+#: ../lib/advene/gui/views/timeline.py:3598
+msgid "> All >"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:532
-#: ../lib/advene/gui/edit/shapewidget.py:652
-msgid "Text"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3622
+#, fuzzy
+msgid "Displayed annotation types"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/shapewidget.py:663
-msgid "Textsize"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3648
+#, fuzzy
+msgid "Relation type"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/shapewidget.py:677
-msgid "Image"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3648
+#, fuzzy
+msgid "Display relation types"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/shapewidget.py:761
-msgid "Href"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3649
+#, fuzzy
+msgid "Relation content"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/shapewidget.py:771
-msgid "Line"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3649
+#, fuzzy
+msgid "Display relation content"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/edit/shapewidget.py:872
-msgid "Draw an arrow"
+#: ../lib/advene/gui/views/timeline.py:3650 ../lib/advene/gui/popup.py:516
+msgid "Highlight"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:883
-msgid "Arrow size"
+#: ../lib/advene/gui/views/timeline.py:3650
+msgid "Highlight active annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:935
-#: ../lib/advene/gui/views/browser.py:359
-msgid "Path"
+#: ../lib/advene/gui/views/timeline.py:3737
+msgid "Enter the tag for the selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1102
-#, fuzzy
-msgid "Close path"
-msgstr "Komentaraj attributoj"
-
-#: ../lib/advene/gui/edit/shapewidget.py:1181
-msgid "Circle"
+#: ../lib/advene/gui/views/timeline.py:3743
+#: ../lib/advene/gui/views/tagbag.py:165
+msgid "The tag contains invalid characters"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1239
-msgid "Ellipse"
-msgstr ""
+#: ../lib/advene/gui/views/relation.py:71
+#, fuzzy
+msgid "Relations view"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1589
-msgid "SVG"
-msgstr ""
+#: ../lib/advene/gui/views/editionhistory.py:40
+#, fuzzy
+msgid "Edition History"
+msgstr "Preferoj"
 
-#: ../lib/advene/gui/edit/shapewidget.py:2172
-msgid "Load SVG"
+#: ../lib/advene/gui/views/editionhistory.py:42
+msgid "Access last edited/created elements"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:2178
-msgid "Save SVG"
-msgstr ""
+#: ../lib/advene/gui/views/editionhistory.py:102
+#, fuzzy
+msgid "Created"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:74
-#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/views/editionhistory.py:103
 #, fuzzy
-msgid "Refresh snapshot"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Edited"
+msgstr "Redakti"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:102
-#, python-format
-msgid "Decrement value by %.2f s"
+#: ../lib/advene/gui/views/tagbag.py:55
+msgid "Tag Bag"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:104
-#, python-format
-msgid "Increment value by %.2f s"
+#: ../lib/advene/gui/views/tagbag.py:62
+msgid "New tag"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:130
-msgid ""
-"Click to play\n"
-"Control+click to set to current time\n"
-"Scroll to modify value (with control/shift)\n"
-"Right-click to invalidate screenshot"
+#: ../lib/advene/gui/views/tagbag.py:125
+msgid "New tag name"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:145
-msgid ""
-"Enter a timecode.\n"
-"An integer value will be considered as milliseconds.\n"
-"A float value (12.2) will be considered as seconds.\n"
-"HH:MM:SS.sss values are possible."
+#: ../lib/advene/gui/views/tagbag.py:131
+msgid "Enter a new tag name and select its color."
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:159
-msgid "Set to current player position"
+#: ../lib/advene/gui/views/tagbag.py:135
+#: ../lib/advene/gui/edit/shapewidget.py:341
+msgid "Name"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:81
-#, python-format
-msgid "%s creation"
+#: ../lib/advene/gui/views/tagbag.py:141
+#: ../lib/advene/gui/edit/shapewidget.py:362
+#: ../lib/advene/gui/edit/elements.py:895
+#: ../lib/advene/gui/edit/elements.py:975
+#: ../lib/advene/gui/edit/elements.py:1089 ../lib/advene/rules/actions.py:133
+msgid "Color"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:82
-#, python-format
-msgid ""
-"To create a new element of type %s,\n"
-"you must give the following information."
-msgstr ""
+#: ../lib/advene/gui/views/tagbag.py:178
+#, fuzzy
+msgid "Tag bag options"
+msgstr "Vido"
 
-#: ../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:659
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:251
-#: ../lib/advene/gui/views/table.py:558
-msgid "Type"
-msgstr ""
+#: ../lib/advene/gui/views/tagbag.py:179
+#, fuzzy
+msgid "Update with new tags"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/create.py:111
-msgid "Dynamic view"
+#: ../lib/advene/gui/views/tagbag.py:179
+msgid "Automatically display new defined tags"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:112
-msgid "HTML template"
-msgstr ""
+#: ../lib/advene/gui/views/tagbag.py:228
+#, fuzzy, python-format
+msgid "Choose the color for tag %s"
+msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/edit/create.py:113
-msgid "Plain XML"
+#: ../lib/advene/gui/views/tagbag.py:252
+msgid "Set color"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:114
-msgid "SVG template"
+#: ../lib/advene/gui/views/tagbag.py:253
+msgid "Remove"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:115
-msgid "Plain text template"
+#: ../lib/advene/gui/views/tagbag.py:326
+msgid "Drop a tag here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:118
-msgid "Simple query"
-msgstr ""
+#: ../lib/advene/gui/views/tagbag.py:336
+#, fuzzy
+msgid "Save as adhoc view"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/create.py:120
-msgid "Directory"
-msgstr ""
+#: ../lib/advene/gui/views/tagbag.py:337
+#, fuzzy
+msgid "Add a new tag"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/create.py:128
-msgid "No available type."
+#: ../lib/advene/gui/views/tagbag.py:338
+#, fuzzy
+msgid "Display all defined tags"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/__init__.py:194
+msgid "Invalid view id"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:172
+#: ../lib/advene/gui/views/__init__.py:240
 #, python-format
-msgid ""
-"The identifier %s is not valid.\n"
-"It must be composed of non-accentuated alphabetic characters\n"
-"Underscore is allowed."
+msgid "Cannot save default options: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:177
+#: ../lib/advene/gui/views/__init__.py:251
+#, fuzzy, python-format
+msgid "Default options saved for view %s"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/views/__init__.py:283
 #, python-format
-msgid "The identifier %s is already defined."
+msgid "Saving %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:310
-msgid "New resource data"
+#: ../lib/advene/gui/views/__init__.py:286
+msgid "Enter a view name to save this parametered view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
-msgid "Schemas"
+#: ../lib/advene/gui/views/__init__.py:304
+#, python-format
+msgid "Error: the view %s is not an adhoc view."
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
-#: ../lib/advene/gui/views/interactivequery.py:464
-msgid "Annotations"
+#: ../lib/advene/gui/views/__init__.py:329
+msgid "HTML export"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
-#: ../lib/advene/gui/edit/elements.py:517
-msgid "Relations"
-msgstr ""
+#: ../lib/advene/gui/views/__init__.py:330
+#, fuzzy
+msgid "Specify a name for the export view"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
-msgid "Queries"
+#: ../lib/advene/gui/views/__init__.py:349
+#, python-format
+msgid ""
+"View successfully exported as %s.\n"
+"Open it in the web browser ?"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:320
-msgid "Imported?"
+#: ../lib/advene/gui/views/__init__.py:428
+msgid "Actions"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:337
-#: ../lib/advene/gui/edit/elements.py:509
-#: ../lib/advene/gui/edit/elements.py:558
-#: ../lib/advene/gui/edit/elements.py:645
-#: ../lib/advene/gui/edit/elements.py:725
-#: ../lib/advene/gui/edit/elements.py:782
-#: ../lib/advene/gui/edit/elements.py:874
-#: ../lib/advene/gui/edit/elements.py:943
-#: ../lib/advene/gui/edit/elements.py:1055
-#: ../lib/advene/gui/edit/elements.py:1117
-msgid "URI"
+#: ../lib/advene/gui/views/__init__.py:453
+msgid "Click or drag-and-drop to reattach view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:359
-msgid "Choose the package to import, and its alias"
+#: ../lib/advene/gui/views/finder.py:105 ../lib/advene/util/helper.py:402
+msgid "Package"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:47
-msgid "Montage"
+#: ../lib/advene/gui/views/finder.py:106
+msgid "List of views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:49
+#: ../lib/advene/gui/views/finder.py:107
 #, fuzzy
-msgid "Dynamic montage of annotations"
-msgstr "Importi transkribon"
+msgid "Static views"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/montage.py:55
-#: ../lib/advene/gui/views/logwindow.py:50
-#: ../lib/advene/gui/views/tagbag.py:60
-#: ../lib/advene/gui/views/activebookmarks.py:59
-#: ../lib/advene/gui/views/bookmarks.py:77
-msgid "Clear"
+#: ../lib/advene/gui/views/finder.py:108
+msgid "Dynamic views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:56
-#: ../lib/advene/gui/views/transcription.py:472
-#: ../lib/advene/gui/widget.py:1059
-msgid "Play"
-msgstr ""
+#: ../lib/advene/gui/views/finder.py:109
+#, fuzzy
+msgid "Admin views"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/montage.py:57
-msgid "Render"
-msgstr ""
+#: ../lib/advene/gui/views/finder.py:110
+#, fuzzy
+msgid "Adhoc views"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/montage.py:171
-msgid "Remove from montage"
+#: ../lib/advene/gui/views/finder.py:515
+#, python-format
+msgid ""
+"View <b>%(title)s</b>\n"
+"Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:303 ../lib/advene/gui/popup.py:444
-#, fuzzy, python-format
-msgid "Extracting %s"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/views/finder.py:522
+#, fuzzy
+msgid "Open in webbrowser"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/edit/montage.py:304
+#: ../lib/advene/gui/views/finder.py:523
 #, python-format
-msgid ""
-"Exporting montage %(title)s\n"
-"to %%(filename)s"
+msgid "View applied to %s\n"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:396
-msgid "Drop an annotation here to remove it from the list"
+#: ../lib/advene/gui/views/finder.py:528 ../lib/advene/gui/popup.py:496
+msgid "Activate"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:407
-msgid "Play the montage"
+#: ../lib/advene/gui/views/finder.py:531
+msgid "Open in GUI"
+msgstr ""
+
+#: ../lib/advene/gui/views/finder.py:533
+msgid "Unknown type of view??"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:412
+#: ../lib/advene/gui/views/finder.py:558
 #, fuzzy
-msgid "Save the view in the package"
-msgstr "Komentaraj attributoj"
+msgid "Edit view"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/montage.py:460
-msgid "Set zoom level"
+#: ../lib/advene/gui/views/finder.py:567
+#, fuzzy
+msgid "Open view"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/views/finder.py:607 ../lib/advene/gui/views/finder.py:673
+#, python-format
+msgid ""
+"%(type)s <b>%(title)s</b>\n"
+"Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:465
-msgid "Set 100% zoom"
+#: ../lib/advene/gui/views/finder.py:622
+#: ../lib/advene/gui/views/interactivequery.py:400
+msgid "Edit query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:471
-#: ../lib/advene/gui/views/interactivequery.py:439
+#: ../lib/advene/gui/views/finder.py:630
+msgid "Try to apply the query on..."
+msgstr ""
+
+#: ../lib/advene/gui/views/finder.py:650 ../lib/advene/gui/popup.py:829
 #, fuzzy
-msgid "Unhighlight annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "the package"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/edit/montage.py:475 ../lib/advene/gui/edit/montage.py:484
-#: ../lib/advene/gui/views/interactivequery.py:443
-#: ../lib/advene/gui/views/interactivequery.py:480
+#: ../lib/advene/gui/views/finder.py:651 ../lib/advene/gui/popup.py:830
 #, fuzzy
-msgid "Highlight annotations"
+msgid "all annotations of the package"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/montage.py:545
+#: ../lib/advene/gui/views/finder.py:652 ../lib/advene/gui/popup.py:831
 #, fuzzy
-msgid "Total duration:"
+msgid "the first annotation of the package"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/frameselector.py:43
-msgid "Click on a frame to select its time."
-msgstr ""
-
-#: ../lib/advene/gui/edit/frameselector.py:177
+#: ../lib/advene/gui/views/finder.py:697
 #, fuzzy
-msgid "Select the appropriate snapshot"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Edit resource"
+msgstr "Preferoj"
 
-#: ../lib/advene/gui/edit/frameselector.py:230
-#: ../lib/advene/gui/edit/frameselector.py:283
-msgid "Click to see more frames or scroll with the mouse wheel"
+#: ../lib/advene/gui/views/finder.py:732 ../lib/advene/util/helper.py:565
+#, python-format
+msgid ""
+"Package %(title)s:\n"
+"%(schema)s\n"
+"%(annotation)s in %(annotation_type)s\n"
+"%(relation)s in %(relation_type)s\n"
+"%(query)s\n"
+"%(view)s\n"
+"\n"
+"Description:\n"
+"%(description)s\n"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:67
-msgid "Transcription importer"
+#: ../lib/advene/gui/views/finder.py:753
+#, python-format
+msgid "%(type)s %(title)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:78
-msgid "Note taking"
+#: ../lib/advene/gui/views/finder.py:756 ../lib/advene/gui/edit/elements.py:517
+#: ../lib/advene/gui/edit/elements.py:566
+#: ../lib/advene/gui/edit/elements.py:653
+#: ../lib/advene/gui/edit/elements.py:733
+#: ../lib/advene/gui/edit/elements.py:791
+#: ../lib/advene/gui/edit/elements.py:882
+#: ../lib/advene/gui/edit/elements.py:952
+#: ../lib/advene/gui/edit/elements.py:1064
+msgid "Metadata"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:80
-#, fuzzy
-msgid "Take notes on the fly as a timestamped transcription"
-msgstr "Importi annotajxojn de tempmarkita transkribo"
-
-#: ../lib/advene/gui/edit/transcribe.py:87
-#: ../lib/advene/gui/views/activebookmarks.py:60
+#: ../lib/advene/gui/views/finder.py:773
 #, fuzzy
-msgid "Export as static view"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Timestamp"
-msgstr ""
+msgid "Column-based package finder"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Click inserts timestamp marks"
+#: ../lib/advene/gui/views/editaccumulator.py:45
+msgid "EditAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "Insert on single-click"
+#: ../lib/advene/gui/views/activebookmarks.py:55
+#: ../lib/advene/gui/views/activebookmarks.py:57
+msgid "ActiveBookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "A single click will insert the mark (else a double click is needed)"
-msgstr ""
+#: ../lib/advene/gui/views/activebookmarks.py:63
+#: ../lib/advene/gui/edit/transcribe.py:88
+#, fuzzy
+msgid "Export as static view"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play on scroll"
+#: ../lib/advene/gui/views/activebookmarks.py:443
+msgid "Chronological order"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play the new position upon timestamp modification"
+#: ../lib/advene/gui/views/activebookmarks.py:444
+msgid "Completeness and chronological order"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:151
+#: ../lib/advene/gui/views/activebookmarks.py:460
 #, fuzzy
-msgid "Generate empty annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Bookmark duration"
+msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/edit/transcribe.py:151
+#: ../lib/advene/gui/views/activebookmarks.py:461
 #, fuzzy
-msgid "If checked, generate annotations for empty text"
+msgid "Enter the duration (in ms) to convert bookmarks into annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid "Reaction time"
+#: ../lib/advene/gui/views/activebookmarks.py:483
+msgid "User-specified duration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid ""
-"Reaction time (substracted from current player time, except when paused.)"
-msgstr ""
+#: ../lib/advene/gui/views/activebookmarks.py:484
+#, fuzzy
+msgid "2s duration"
+msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Auto-insert"
-msgstr ""
+#: ../lib/advene/gui/views/activebookmarks.py:485
+#, fuzzy
+msgid "Complete coverage"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Automatic timestamp mark insertion"
+#: ../lib/advene/gui/views/activebookmarks.py:503
+msgid "Drop a bookmark here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:154
-msgid "Automatic insertion delay"
-msgstr ""
+#: ../lib/advene/gui/views/activebookmarks.py:530
+#, fuzzy
+msgid "Type of the annotations that will be created"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/transcribe.py:154
-msgid ""
-"If autoinsert is active, timestamp marks will be automatically inserted when "
-"text is entered after no interaction since this delay (in ms).\n"
-"1000 is typically a good value."
+#: ../lib/advene/gui/views/activebookmarks.py:548
+#: ../lib/advene/gui/edit/transcribe.py:1155
+msgid "Smallish"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:155 ../lib/advene/gui/main.py:4368
-msgid "Font size"
+#: ../lib/advene/gui/views/activebookmarks.py:549
+#: ../lib/advene/gui/edit/transcribe.py:1156 ../lib/advene/rules/actions.py:167
+msgid "Small"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:155
-msgid "Font size for text (0 for standard size)"
+#: ../lib/advene/gui/views/activebookmarks.py:550
+#: ../lib/advene/gui/edit/transcribe.py:1157 ../lib/advene/rules/actions.py:168
+msgid "Normal"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:215
-#: ../lib/advene/gui/edit/transcribe.py:219
-#: ../lib/advene/gui/edit/transcribe.py:379
-#: ../lib/advene/gui/edit/transcribe.py:383
-msgid "Invalid timestamp mark"
+#: ../lib/advene/gui/views/activebookmarks.py:551
+#: ../lib/advene/gui/edit/transcribe.py:1158 ../lib/advene/rules/actions.py:169
+msgid "Large"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:496
-#: ../lib/advene/gui/views/timeline.py:2550
-#, python-format
-msgid "Position %s"
+#: ../lib/advene/gui/views/activebookmarks.py:552
+#: ../lib/advene/gui/edit/transcribe.py:1159
+msgid "Larger"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:506 ../lib/advene/gui/popup.py:456
-msgid "Edit"
+#: ../lib/advene/gui/views/activebookmarks.py:553
+#: ../lib/advene/gui/edit/transcribe.py:1160
+msgid "Huge"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:510
-msgid "Ignore the following text (toggle)"
+#: ../lib/advene/gui/views/activebookmarks.py:563
+msgid "Reorder active bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:514
-msgid "Remove mark"
-msgstr ""
+#: ../lib/advene/gui/views/activebookmarks.py:564
+#, fuzzy
+msgid "Complete bookmarks into annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/transcribe.py:518
-msgid "Reaction-time offset"
-msgstr ""
+#: ../lib/advene/gui/views/activebookmarks.py:565
+#, fuzzy
+msgid "Save the current state"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/transcribe.py:522
-msgid "-1 sec"
+#: ../lib/advene/gui/views/activebookmarks.py:566
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Set the size of snaphots"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:525
-msgid "-0.5 sec"
-msgstr ""
+#: ../lib/advene/gui/views/activebookmarks.py:833
+#, fuzzy
+msgid "Remove end timestamp"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/transcribe.py:528
-msgid "-0.1 sec"
+#: ../lib/advene/gui/views/activebookmarks.py:1041
+msgid ""
+"Error: cannot find an appropriate schema to create the Active-bookmark type."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:532
-msgid "+1 sec"
+#: ../lib/advene/gui/views/activebookmarks.py:1046
+msgid "Active bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:535
-msgid "+0.5 sec"
-msgstr ""
+#: ../lib/advene/gui/views/activebookmarks.py:1084
+#, fuzzy
+msgid "Validate the annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/transcribe.py:538
-msgid "+0.1 sec"
-msgstr ""
+#: ../lib/advene/gui/views/activebookmarks.py:1228
+#, fuzzy
+msgid "Duplicate bookmark"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/transcribe.py:629
-msgid "Invalid timestamp"
+#: ../lib/advene/gui/views/activebookmarks.py:1229
+msgid "Remove bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:762
-#, python-format
-msgid "Invalid timestamp mark in conversion: %s"
-msgstr ""
+#: ../lib/advene/gui/views/activebookmarks.py:1238
+#, fuzzy
+msgid "Remove begin timestamp"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/edit/transcribe.py:879
-#, python-format
-msgid "Cannot save the file: %s"
+#: ../lib/advene/gui/views/activebookmarks.py:1245
+msgid "Complete bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:884
-#: ../lib/advene/gui/views/transcription.py:703
-#, python-format
-msgid "Transcription saved to %s"
+#: ../lib/advene/gui/views/activebookmarks.py:1249
+msgid "Change type to"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:890
-#: ../lib/advene/gui/edit/transcribe.py:980
-msgid "This will overwrite the current textual content. Are you sure?"
+#: ../lib/advene/gui/views/logwindow.py:43
+msgid "Links"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:893
-msgid "Select transcription file to load"
+#: ../lib/advene/gui/views/logwindow.py:45
+msgid "URL stack"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:910
+#: ../lib/advene/gui/views/logwindow.py:123
 #, python-format
-msgid "Cannot open %(filename)s: %(error)s"
+msgid "Go to %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:965
-msgid "Cannot import annotations: no existing interface"
+#: ../lib/advene/gui/views/logwindow.py:129 ../lib/advene/rules/actions.py:63
+msgid "Go to the given position"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:967
-#, fuzzy
-msgid "Select the annotation type to import"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/edit/transcribe.py:976
-#, fuzzy, python-format
-msgid "There are no annotations of type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/edit/transcribe.py:1005
-msgid "Cannot convert the data: no associated package"
+#: ../lib/advene/gui/views/logwindow.py:157
+msgid "Push a URL on the stack"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1008
-#, fuzzy
-msgid "Converting transcription"
-msgstr "Vidi komentajxojn sur templinio"
-
-#: ../lib/advene/gui/edit/transcribe.py:1014
-#, fuzzy
-msgid "Choose the annotation-type where to create annotations.\n"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/edit/transcribe.py:1022
+#: ../lib/advene/gui/views/logwindow.py:158
 #, fuzzy
-msgid "Delete existing annotations in this type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Description of the URL"
+msgstr "Importi transkribon"
 
-#: ../lib/advene/gui/edit/transcribe.py:1027
-#: ../lib/advene/gui/views/timeline.py:3009 ../lib/advene/gui/main.py:3222
-msgid "Create a new annotation type"
+#: ../lib/advene/gui/views/interactivequery.py:51
+#: ../lib/advene/gui/views/interactivequery.py:99
+msgid "Interactive query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1045
+#: ../lib/advene/gui/views/interactivequery.py:53
 #, fuzzy
-msgid "Select type"
-msgstr "Defauxlta regularo"
+msgid "Interactive query dialog"
+msgstr "Interfacaj preferoj"
 
-#: ../lib/advene/gui/edit/transcribe.py:1049
-msgid "You want to create a new type. Please specify its schema and title."
-msgstr ""
+#: ../lib/advene/gui/views/interactivequery.py:59
+#: ../lib/advene/gui/views/interactivequery.py:256
+#, fuzzy
+msgid "Save query"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/transcribe.py:1061
-msgid "Containing schema"
+#: ../lib/advene/gui/views/interactivequery.py:122
+#: ../lib/advene/gui/views/interactivequery.py:172
+#, python-format
+msgid ""
+"Invalid query.\n"
+"The following fields have an invalid value:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1074
-msgid "Export options"
+#: ../lib/advene/gui/views/interactivequery.py:136
+#: ../lib/advene/gui/views/interactivequery.py:296
+msgid "Saving the query..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1079
-#, fuzzy
-msgid "Generate annotations for empty contents"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/edit/transcribe.py:1104
-#, python-format
-msgid "The %s identifier already exists. Choose another one."
+#: ../lib/advene/gui/views/interactivequery.py:137
+#: ../lib/advene/gui/views/interactivequery.py:297
+msgid "Give a title and identifier for saving the query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1143
-msgid "Notes converted"
+#: ../lib/advene/gui/views/interactivequery.py:180
+msgid "Expert search"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1147
-#: ../lib/advene/gui/views/bookmarks.py:169
+#: ../lib/advene/gui/views/interactivequery.py:186
 #, python-format
 msgid ""
-"Conversion completed.\n"
-"%s annotations generated."
+"TALES error in interactive expression:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1163
-#: ../lib/advene/gui/views/activebookmarks.py:546
-msgid "Smallish"
-msgstr ""
+#: ../lib/advene/gui/views/interactivequery.py:247
+#, fuzzy
+msgid "Interactive result"
+msgstr "Interfacaj preferoj"
 
-#: ../lib/advene/gui/edit/transcribe.py:1167
-#: ../lib/advene/gui/views/activebookmarks.py:550
-msgid "Larger"
+#: ../lib/advene/gui/views/interactivequery.py:249
+#, fuzzy
+msgid "Interactive result display"
+msgstr "Interfacaj preferoj"
+
+#: ../lib/advene/gui/views/interactivequery.py:274
+msgid "Result of interactive query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1168
-#: ../lib/advene/gui/views/activebookmarks.py:551
-msgid "Huge"
+#: ../lib/advene/gui/views/interactivequery.py:278
+msgid "Result of a query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1190
-msgid "Open"
+#: ../lib/advene/gui/views/interactivequery.py:333
+#, fuzzy, python-format
+msgid "Comment on annotations containing %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/interactivequery.py:352
+msgid "Choose the annotation type where annotations will be created."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1191
-msgid "Save"
+#: ../lib/advene/gui/views/interactivequery.py:356
+#, python-format
+msgid "Copied result of the '%s' query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1192
-msgid "Save As"
+#: ../lib/advene/gui/views/interactivequery.py:368
+#, fuzzy, python-format
+msgid "Search/replace content in %d elements"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/views/interactivequery.py:396
+msgid "Edit query again"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1193
-#, fuzzy
-msgid "Import"
-msgstr "Importi dosieron"
+#: ../lib/advene/gui/views/interactivequery.py:410
+msgid "Search again"
+msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1193
+#: ../lib/advene/gui/views/interactivequery.py:416
 #, fuzzy
-msgid "Import from annotations"
+msgid "Empty result"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
-msgid "Convert"
+#: ../lib/advene/gui/views/interactivequery.py:425
+#, fuzzy, python-format
+msgid "Result is a list of %d annotations."
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/interactivequery.py:427
+#, python-format
+msgid "Result is a list of  %(number)d elements with %(elements)s."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
+#: ../lib/advene/gui/views/interactivequery.py:439
+#: ../lib/advene/gui/edit/montage.py:478
 #, fuzzy
-msgid "Convert to annotations"
+msgid "Unhighlight annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/transcribe.py:1196
-#, fuzzy
-msgid "Center on the current mark"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/edit/transcribe.py:1197
+#: ../lib/advene/gui/views/interactivequery.py:443
+#: ../lib/advene/gui/views/interactivequery.py:480
+#: ../lib/advene/gui/edit/montage.py:482 ../lib/advene/gui/edit/montage.py:491
 #, fuzzy
-msgid "Find"
-msgstr "Dosiero"
+msgid "Highlight annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/transcribe.py:1197
-msgid "Search a string"
+#: ../lib/advene/gui/views/interactivequery.py:464
+#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
+msgid "Annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-msgid "Scale"
-msgstr ""
+#: ../lib/advene/gui/views/interactivequery.py:470
+#, fuzzy
+msgid "Other elements"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-#: ../lib/advene/gui/views/activebookmarks.py:564
-msgid "Set the size of snaphots"
-msgstr ""
+#: ../lib/advene/gui/views/interactivequery.py:474
+#, fuzzy
+msgid "Display annotations in timeline"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/edit/transcribe.py:1221
-msgid "Automatically scroll to the mark position when playing"
-msgstr ""
+#: ../lib/advene/gui/views/interactivequery.py:475
+#, fuzzy
+msgid "Display annotations as transcription"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/edit/transcribe.py:1223
-msgid "Autoscroll"
+#: ../lib/advene/gui/views/interactivequery.py:481
+#: ../lib/advene/gui/views/interactivequery.py:503
+msgid "Export table"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1230
-msgid "Autoinsert"
-msgstr ""
+#: ../lib/advene/gui/views/interactivequery.py:482
+#, fuzzy
+msgid "Create annotations from the result"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/transcribe.py:1232
-msgid "Automatically insert marks"
+#: ../lib/advene/gui/views/interactivequery.py:483
+msgid "Define a montage with the result"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:74
-#, python-format
-msgid "No edit popup available for element %s"
-msgstr ""
+#: ../lib/advene/gui/views/interactivequery.py:484
+#, fuzzy
+msgid "Create a comment view with the result"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/elements.py:95
-msgid "Edit Window"
-msgstr ""
+#: ../lib/advene/gui/views/interactivequery.py:485
+#, fuzzy
+msgid "Search and replace strings in the annotations content"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/elements.py:134
-msgid "Apply changes and close the edit window"
-msgstr ""
+#: ../lib/advene/gui/views/interactivequery.py:510
+#, fuzzy
+msgid "Edit elements"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/elements.py:139
-msgid "Apply changes"
+#: ../lib/advene/gui/views/interactivequery.py:516
+msgid "Open in python evaluator"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:273
-msgid "Content has been modified. Close anyway and lose data?"
+#: ../lib/advene/gui/views/interactivequery.py:519
+#, python-format
+msgid ""
+"Result:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:331
-#: ../lib/advene/gui/views/viewbook.py:234
-#: ../lib/advene/gui/views/viewbook.py:240
-#, python-format
-msgid "Edit %s"
+#: ../lib/advene/gui/views/interactivequery.py:561
+msgid "Results of _interactive query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:333
-#, python-format
-msgid "View %s (read-only)"
+#: ../lib/advene/gui/popup.py:138
+#, fuzzy
+msgid "Choose the file to insert"
+msgstr "Elekti ilobretan stilon"
+
+#: ../lib/advene/gui/popup.py:146
+msgid "Select a valid identifier"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:369
+#: ../lib/advene/gui/popup.py:147
 #, python-format
-msgid "Display %s"
+msgid ""
+"The filename %s contains invalid characters\n"
+"that have been replaced.\n"
+"You can modify this identifier if necessary:"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:453
+#: ../lib/advene/gui/popup.py:158
 #, fuzzy
-msgid "Apply changes and edit previous annotation of same type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Choose the soundclip to insert"
+msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/edit/elements.py:457
+#: ../lib/advene/gui/popup.py:162
 #, fuzzy
-msgid "Apply changes and edit next annotation of same type"
+msgid "Choose the directory to insert"
+msgstr "Elekti ilobretan stilon"
+
+#: ../lib/advene/gui/popup.py:177
+msgid "Named-Entity extraction using NERD"
+msgstr ""
+
+#: ../lib/advene/gui/popup.py:181
+msgid ""
+"Give the offset to use\n"
+"on specified element.\n"
+"It is in ms and can be\n"
+"either positive or negative."
+msgstr ""
+
+#: ../lib/advene/gui/popup.py:225
+#, fuzzy, python-format
+msgid "Replace content in %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/elements.py:463
-#, fuzzy
-msgid "Unhighlight annotation"
+#: ../lib/advene/gui/popup.py:228
+#, fuzzy, python-format
+msgid "Replace content in annotations of type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/elements.py:467
+#: ../lib/advene/gui/popup.py:231
 #, fuzzy
-msgid "Highlight annotation"
+msgid "Replace content in all annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/elements.py:498
-msgid "Fragment"
+#: ../lib/advene/gui/popup.py:324
+#, python-format
+msgid "Copy id %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:510
-#: ../lib/advene/gui/edit/elements.py:559
-#: ../lib/advene/gui/edit/elements.py:646
-#: ../lib/advene/gui/edit/elements.py:726
-#: ../lib/advene/gui/edit/elements.py:783
-#: ../lib/advene/gui/edit/elements.py:875
-#: ../lib/advene/gui/edit/elements.py:944
-#: ../lib/advene/gui/edit/elements.py:1056
-#: ../lib/advene/gui/edit/elements.py:1118 ../lib/advene/gui/main.py:4174
-msgid "Author"
+#: ../lib/advene/gui/popup.py:358
+#, python-format
+msgid ""
+"<b>Statistics about %s</b>\n"
+"\n"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:511
-#: ../lib/advene/gui/edit/elements.py:560
-#: ../lib/advene/gui/edit/elements.py:647
-#: ../lib/advene/gui/edit/elements.py:727
-#: ../lib/advene/gui/edit/elements.py:784
-#: ../lib/advene/gui/edit/elements.py:876
-#: ../lib/advene/gui/edit/elements.py:945
-#: ../lib/advene/gui/edit/elements.py:1057
-#: ../lib/advene/gui/edit/elements.py:1119 ../lib/advene/gui/main.py:4175
-msgid "Date"
-msgstr ""
+#: ../lib/advene/gui/popup.py:364
+#, fuzzy, python-format
+msgid "Renumbering annotations of type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/elements.py:513
-#: ../lib/advene/gui/edit/elements.py:562
-#: ../lib/advene/gui/edit/elements.py:649
-#: ../lib/advene/gui/edit/elements.py:729
-#: ../lib/advene/gui/edit/elements.py:787
-#: ../lib/advene/gui/edit/elements.py:878
-#: ../lib/advene/gui/edit/elements.py:948
-#: ../lib/advene/gui/edit/elements.py:1060
-msgid "Metadata"
+#: ../lib/advene/gui/popup.py:371
+msgid ""
+"<b>Renumber all annotations according to their order.</b>\n"
+"\n"
+"<i>Note that this action cannot be undone.</i>\n"
+"Replace the first numeric value of the annotation content with the new "
+"annotation number.\n"
+"If no numeric value is found and the annotation is structured, it will "
+"insert the number.\n"
+"If no numeric value is found and the annotation is of type text/plain, it "
+"will overwrite the annotation content.\n"
+"The offset parameter allows you to renumber from a given annotation."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:582
-#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/views/relationdisplay.py:113
-msgid "Members"
+#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
+msgid "Offset"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:600
-#: ../lib/advene/gui/edit/elements.py:677
-#: ../lib/advene/gui/edit/elements.py:737
-#: ../lib/advene/gui/edit/elements.py:1128
-#: ../lib/advene/gui/views/table.py:250
-msgid "Content"
+#: ../lib/advene/gui/popup.py:399
+#, fuzzy, python-format
+msgid "Renumbering %d annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/popup.py:408
+#, fuzzy, python-format
+msgid "Annotation #%d"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/popup.py:444 ../lib/advene/gui/edit/montage.py:309
+#, fuzzy, python-format
+msgid "Extracting %s"
+msgstr "Importi dosieron"
+
+#: ../lib/advene/gui/popup.py:445
+#, python-format
+msgid ""
+"Exporting annotation %(title)s\n"
+"from %(begin)s to %(end)s\n"
+"to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:617
-msgid "Apply changes and visualise in web browser"
+#: ../lib/advene/gui/popup.py:456 ../lib/advene/gui/edit/transcribe.py:504
+msgid "Edit"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:622
-msgid "Apply changes and activate the view"
+#: ../lib/advene/gui/popup.py:458
+msgid "Browse"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:630
-#: ../lib/advene/gui/edit/elements.py:711
-#: ../lib/advene/gui/edit/elements.py:768
-#: ../lib/advene/gui/edit/elements.py:859
-#: ../lib/advene/gui/edit/elements.py:928
-#: ../lib/advene/gui/edit/elements.py:1030
+#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
 #, fuzzy
-msgid "Title (name)"
-msgstr "Dosiero"
+msgid "Open in web browser"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/edit/elements.py:634
+#: ../lib/advene/gui/popup.py:472 ../lib/advene/gui/popup.py:476
+#: ../lib/advene/gui/edit/shapewidget.py:1598
+msgid "Delete"
+msgstr ""
+
+#: ../lib/advene/gui/popup.py:479
 #, fuzzy
-msgid "Name of the view"
+msgid "Search/replace content"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/elements.py:658
-msgid "Class"
+#: ../lib/advene/gui/popup.py:497
+msgid "Desactivate"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:661
-msgid "Match Filter"
+#: ../lib/advene/gui/popup.py:514
+msgid "Loop"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:699 ../lib/advene/gui/popup.py:821
-#, python-format
-msgid "Exception in query: %s"
+#: ../lib/advene/gui/popup.py:515
+msgid "Duplicate"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:704
-#, fuzzy
-msgid "Validate and run query on package"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/edit/elements.py:715
+#: ../lib/advene/gui/popup.py:519
 #, fuzzy
-msgid "Name of the query"
-msgstr "Arbvido"
+msgid "Save snapshot..."
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/elements.py:772
+#: ../lib/advene/gui/popup.py:521
 #, fuzzy
-msgid "Name of the package"
-msgstr "Komentaraj attributoj"
+msgid "Extract video fragment"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/elements.py:790
-#: ../lib/advene/gui/edit/elements.py:881
-#: ../lib/advene/gui/edit/elements.py:960
-#: ../lib/advene/gui/edit/elements.py:1074
-msgid "Description"
+#: ../lib/advene/gui/popup.py:551
+msgid "Incoming"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:794
-#: ../lib/advene/gui/edit/elements.py:885
-#: ../lib/advene/gui/edit/elements.py:964
-#: ../lib/advene/gui/edit/elements.py:1078
-msgid "Textual description of the package"
+#: ../lib/advene/gui/popup.py:567
+msgid "Outgoing"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:799
-msgid "Default dynamic view"
+#: ../lib/advene/gui/popup.py:582
+#, fuzzy
+msgid "Related annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/popup.py:589
+msgid "Incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:803
-msgid "Dynamic view to activate on package load"
+#: ../lib/advene/gui/popup.py:596
+msgid "Outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:808
-msgid "Default static view"
+#: ../lib/advene/gui/popup.py:612
+#, python-format
+msgid "Begin: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:812
-msgid "Static view to open on package load"
+#: ../lib/advene/gui/popup.py:614
+#, python-format
+msgid "End: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:817
-#, fuzzy
-msgid "Default adhoc view"
+#: ../lib/advene/gui/popup.py:615
+#, fuzzy, python-format
+msgid "Duration: %s"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/elements.py:821
-msgid "Adhoc view to open on package load"
+#: ../lib/advene/gui/popup.py:622
+msgid "Members:"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:826
-msgid "Cached duration"
+#: ../lib/advene/gui/popup.py:635
+#, fuzzy
+msgid "Edit package properties..."
+msgstr "Redakti komentarajn attributojn"
+
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
+#, fuzzy, python-format
+msgid "%d annotations(s) - statistics"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
+#, fuzzy
+msgid "Create a new static view..."
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:865
+#, fuzzy
+msgid "Create a new dynamic view..."
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
+msgid "Create a new annotation..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:830
-msgid "Cached duration in ms"
+#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
+msgid "Create a new schema..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:835
-msgid "Mediafile"
+#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
+msgid "Create a new query..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:839
-msgid "Location of associated media file"
+#: ../lib/advene/gui/popup.py:651
+msgid "Create a new folder..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:863
-#, fuzzy
-msgid "Name of the schema"
-msgstr "Arbvido"
+#: ../lib/advene/gui/popup.py:652
+msgid "Create a new resource file..."
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:895
-#: ../lib/advene/gui/edit/elements.py:975
-msgid "TALES expression returning a color for the element"
+#: ../lib/advene/gui/popup.py:653
+msgid "Insert a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:902
-#: ../lib/advene/gui/edit/elements.py:993
-msgid "Item color"
+#: ../lib/advene/gui/popup.py:654
+msgid "Insert a new resource directory..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:906
-#: ../lib/advene/gui/edit/elements.py:997
-msgid ""
-"TALES expression returning a color for the items contained by the element"
+#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
+msgid "Insert a soundclip..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:932
-#: ../lib/advene/gui/edit/elements.py:1034
-#, fuzzy
-msgid "Name of the type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/popup.py:676
+msgid "Play sound"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:950
-#: ../lib/advene/gui/edit/elements.py:1039
-#: ../lib/advene/gui/edit/elements.py:1308
-msgid "MIME Type"
+#: ../lib/advene/gui/popup.py:686
+msgid "Create a new annotation type..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:954
-#: ../lib/advene/gui/edit/elements.py:1043
-msgid "MIMEType of the content"
+#: ../lib/advene/gui/popup.py:688
+msgid "Create a new relation type..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:982
-#: ../lib/advene/gui/views/transcription.py:165
-msgid "Representation"
+#: ../lib/advene/gui/popup.py:690 ../lib/advene/gui/popup.py:750
+#: ../lib/advene/gui/popup.py:803
+msgid "Select a color"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:986
-msgid ""
-"TALES expression used to get a compact representation of the annotations"
+#: ../lib/advene/gui/popup.py:699
+#, python-format
+msgid "A caption dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:987
+#: ../lib/advene/gui/popup.py:708
 #, fuzzy, python-format
-msgid "Display %s key"
+msgid "Caption %s annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/elements.py:1003
+#: ../lib/advene/gui/popup.py:718 ../lib/advene/rules/actions.py:119
+msgid "Caption the annotation"
+msgstr ""
+
+#: ../lib/advene/gui/popup.py:740
 #, fuzzy
-msgid "Completions"
+msgid "Create a comment view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/edit/elements.py:1007
-msgid "Space-separated list of words used for content completion"
+#: ../lib/advene/gui/popup.py:741
+#, fuzzy
+msgid "Generate a caption dynamic view..."
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/popup.py:742
+msgid "Display as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1013
+#: ../lib/advene/gui/popup.py:743
 #, fuzzy
-msgid "Advanced"
-msgstr "Advene"
+msgid "Display annotations in table"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/edit/elements.py:1063
+#: ../lib/advene/gui/popup.py:744
 #, fuzzy
-msgid "Any annotation type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Export to another format..."
+msgstr "Importi datumo de alia ???"
 
-#: ../lib/advene/gui/edit/elements.py:1089
-msgid "TALES expression specifying a color"
+#: ../lib/advene/gui/popup.py:746
+msgid "Extract Named Entities..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1116
-msgid "MIMEType"
-msgstr ""
+#: ../lib/advene/gui/popup.py:752
+#, fuzzy
+msgid "Delete all annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/edit/elements.py:1341
-#, python-format
-msgid "Error: cannot find a content handler for %s"
-msgstr ""
+#: ../lib/advene/gui/popup.py:753
+#, fuzzy
+msgid "Renumber annotations..."
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/popup.py:754
+#, fuzzy
+msgid "Shot validation view..."
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/elements.py:1457
-#: ../lib/advene/gui/edit/elements.py:1682
+#: ../lib/advene/gui/popup.py:766
 #, python-format
-msgid ""
-"Cannot read the data:\n"
-"%s"
+msgid "A follow dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1481
-#: ../lib/advene/gui/edit/elements.py:1707
-msgid "Save content to..."
+#: ../lib/advene/gui/popup.py:775
+#, fuzzy, python-format
+msgid "Follow %s relation-type"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/popup.py:784
+#, fuzzy
+msgid "Follow the relation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/popup.py:804
+msgid "Delete all relations..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1492
-#: ../lib/advene/gui/edit/elements.py:1720
+#: ../lib/advene/gui/popup.py:805
+#, fuzzy
+msgid "Create montage from related annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/popup.py:806
+#, fuzzy
+msgid "Create dynamic view following relations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/popup.py:821 ../lib/advene/gui/edit/elements.py:703
 #, python-format
-msgid ""
-"Cannot save the data:\n"
-"%s"
+msgid "Exception in query: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1511
-#: ../lib/advene/gui/edit/elements.py:1734
-msgid "Open a file (C-o)"
+#: ../lib/advene/gui/popup.py:824
+msgid "Apply query on..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1516
-#: ../lib/advene/gui/edit/elements.py:1739
-msgid "Save to a file (C-s)"
+#: ../lib/advene/gui/popup.py:849
+msgid "Activate view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1521
-#: ../lib/advene/gui/edit/elements.py:1744
-msgid "Reload the file (C-r)"
-msgstr ""
+#: ../lib/advene/gui/popup.py:851
+#, fuzzy
+msgid "Open adhoc view"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/edit/elements.py:1527
-msgid "Insert a value from the browser (C-i)"
+#: ../lib/advene/gui/util/initialconfig.py:82
+msgid "Initial Advene configuration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1773
-msgid "Begin time is greater than end time"
+#: ../lib/advene/gui/util/initialconfig.py:83
+msgid ""
+"<span size='large'><b>Welcome in Advene</b>\n"
+"This is the first time that you run Advene. Please answer some basic "
+"configuration questions. You will be able to modify these choices from the "
+"Advene interface, in the Edit/Preferences menu.</span>"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1803
-#: ../lib/advene/gui/views/table.py:252
-msgid "Begin"
+#: ../lib/advene/gui/util/initialconfig.py:84
+#, fuzzy
+msgid "Interface language"
+msgstr "Interfacaj preferoj"
+
+#: ../lib/advene/gui/util/initialconfig.py:84
+msgid "Language used for the interface"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1812
-#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/main.py:628
-msgid "End"
+#: ../lib/advene/gui/util/initialconfig.py:90
+msgid "Weekly check for Advene updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2044
-msgid "Expecting an integer."
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for data files"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2076
-#, python-format
-msgid ""
-"The %(attribute)s attribute could not be updated:\n"
-"\n"
-"%(error)s\n"
-"\n"
-"Resetting to the original value."
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for storing data files (Advene packages)"
+msgstr ""
+
+#: ../lib/advene/gui/util/initialconfig.py:94
+msgid "Directories to search for movies"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2103
+#: ../lib/advene/gui/util/initialconfig.py:94
 #, python-format
 msgid ""
-"The following attributes cannot be updated:\n"
-"\n"
-"%s"
+"List of directories (separated by %(pathsep)s) to search for movie files."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2143
-#, python-format
+#: ../lib/advene/gui/util/initialconfig.py:95
+msgid "First look for movie file in the same directory as the package"
+msgstr ""
+
+#: ../lib/advene/gui/util/initialconfig.py:95
 msgid ""
-"The following attributes could not be updated:\n"
-"\n"
-"%s"
+"If checked, the movie file will be searched for in the same directory as the "
+"referencing package."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2160
-msgid "Attribute"
+#: ../lib/advene/gui/util/__init__.py:44 ../lib/advene/gui/edit/create.py:106
+msgid "Plain text content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2168
-#: ../lib/advene/gui/views/browser.py:366
-msgid "Value"
+#: ../lib/advene/gui/util/__init__.py:45
+#, fuzzy
+msgid "HTML content"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/util/__init__.py:46 ../lib/advene/gui/edit/create.py:107
+msgid "Simple-structured content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2259
-msgid "Insert an element"
+#: ../lib/advene/gui/util/__init__.py:47
+msgid "List of numeric values"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2260
-msgid "Choose the element to insert."
+#: ../lib/advene/gui/util/__init__.py:48 ../lib/advene/gui/edit/create.py:108
+msgid "SVG graphics content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2330
-#: ../lib/advene/gui/edit/elements.py:2373
+#: ../lib/advene/gui/util/__init__.py:389
 #, python-format
-msgid "Some tags contain invalid characters: %s"
+msgid ""
+"Annotation Type %(title)s:\n"
+"%(count)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2353
-msgid "Tags:"
+#: ../lib/advene/gui/util/__init__.py:395
+#, python-format
+msgid ""
+"Relation Type %(title)s:\n"
+"%(count)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:163
-#: ../lib/advene/gui/views/browser.py:165
+#: ../lib/advene/gui/util/dialog.py:414 ../lib/advene/gui/util/dialog.py:453
 #, fuzzy
-msgid "TALES browser"
-msgstr "Komentaraj attributoj"
+msgid "Name the element"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/browser.py:170
+#: ../lib/advene/gui/util/dialog.py:417 ../lib/advene/gui/util/dialog.py:454
 #, fuzzy
-msgid "Display result in table"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/browser.py:193
-msgid "Insert path"
-msgstr ""
+msgid "Choose a name for the element"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/browser.py:194
-msgid "Insert value"
+#: ../lib/advene/gui/util/dialog.py:492
+msgid "Open a file"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:249
-msgid "Expression returned None (there was an exception)"
+#: ../lib/advene/gui/util/dialog.py:517 ../lib/advene/gui/util/dialog.py:553
+msgid "N/C"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:302
-msgid "Result is not a list"
+#: ../lib/advene/gui/util/dialog.py:522
+msgid "Alias"
 msgstr ""
 
-#: ../lib/advene/gui/views/accumulatorpopup.py:49
-msgid "PopupAccumulator"
+#: ../lib/advene/gui/util/dialog.py:542
+msgid ""
+"Press to\n"
+"display\n"
+"information"
 msgstr ""
 
-#: ../lib/advene/gui/views/editionhistory.py:40
-#, fuzzy
-msgid "Edition History"
-msgstr "Preferoj"
-
-#: ../lib/advene/gui/views/editionhistory.py:42
-msgid "Access last edited/created elements"
+#: ../lib/advene/gui/util/dialog.py:561
+msgid "Wait..."
 msgstr ""
 
-#: ../lib/advene/gui/views/editionhistory.py:102
-#, fuzzy
-msgid "Created"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/views/editionhistory.py:103
-#, fuzzy
-msgid "Edited"
-msgstr "Redakti"
-
-#: ../lib/advene/gui/views/logwindow.py:43
-msgid "Links"
+#: ../lib/advene/gui/util/dialog.py:565
+#, python-format
+msgid "Error: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:45
-msgid "URL stack"
+#: ../lib/advene/gui/util/dialog.py:585
+msgid "Any type of file"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:123
-#, python-format
-msgid "Go to %s"
+#: ../lib/advene/gui/util/dialog.py:587
+msgid "Advene files (.xml, .azp, .apl)"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:157
-msgid "Push a URL on the stack"
+#: ../lib/advene/gui/util/dialog.py:589
+msgid "Advene session (.apl)"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:158
+#: ../lib/advene/gui/util/dialog.py:590
 #, fuzzy
-msgid "Description of the URL"
-msgstr "Importi transkribon"
-
-#: ../lib/advene/gui/views/checker.py:37
-msgid "Checker"
-msgstr ""
+msgid "Audio files"
+msgstr "Vido"
 
-#: ../lib/advene/gui/views/checker.py:39
+#: ../lib/advene/gui/util/dialog.py:591
 #, fuzzy
-msgid "Check various package properties"
-msgstr "Redakti komentarajn attributojn"
+msgid "Video files"
+msgstr "Vido"
 
-#: ../lib/advene/gui/views/checker.py:90
+#: ../lib/advene/gui/util/dialog.py:636
+#: ../lib/advene/gui/edit/properties.py:423
 #, 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/tagbag.py:52
-msgid "Tag Bag"
-msgstr ""
-
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
-msgid "Bag of tags"
-msgstr ""
+msgid "Choose a directory"
+msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/views/tagbag.py:59
-msgid "New tag"
+#: ../lib/advene/gui/util/dialog.py:689
+msgid "Select an element"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:122
-msgid "New tag name"
+#: ../lib/advene/gui/edit/rules.py:88 ../lib/advene/gui/edit/rules.py:90
+#: ../lib/advene/gui/edit/create.py:252
+msgid "Rule"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:128
-msgid "Enter a new tag name and select its color."
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:99 ../lib/advene/gui/edit/create.py:242
+#, fuzzy
+msgid "Subviews"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3720
-msgid "The tag contains invalid characters"
+#: ../lib/advene/gui/edit/rules.py:126
+msgid "Add a new rule"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:175
-#, fuzzy
-msgid "Tag bag options"
-msgstr "Vido"
-
-#: ../lib/advene/gui/views/tagbag.py:176
+#: ../lib/advene/gui/edit/rules.py:130
 #, fuzzy
-msgid "Update with new tags"
+msgid "Subview"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/tagbag.py:176
-msgid "Automatically display new defined tags"
+#: ../lib/advene/gui/edit/rules.py:133
+msgid "Add a subview list"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:225
-#, fuzzy, python-format
-msgid "Choose the color for tag %s"
-msgstr "Elekti ilobretan stilon"
+#: ../lib/advene/gui/edit/rules.py:139
+#, fuzzy
+msgid "Remove the current rule"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/tagbag.py:249
-msgid "Set color"
+#: ../lib/advene/gui/edit/rules.py:279
+msgid "Source expression"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:250
-msgid "Remove"
+#: ../lib/advene/gui/edit/rules.py:281
+msgid "Return expression"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:324
-msgid "Drop a tag here to remove it from the list"
+#: ../lib/advene/gui/edit/rules.py:355
+msgid "For all elements in "
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:333
+#: ../lib/advene/gui/edit/rules.py:356
 #, fuzzy
-msgid "Save as adhoc view"
-msgstr "Defauxlta regularo"
+msgid "All annotations of the package"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/tagbag.py:334
-#, fuzzy
-msgid "Add a new tag"
-msgstr "Arbvido"
+#: ../lib/advene/gui/edit/rules.py:357
+msgid "All views of the package"
+msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:335
+#: ../lib/advene/gui/edit/rules.py:358 ../lib/advene/gui/edit/rules.py:802
 #, fuzzy
-msgid "Display all defined tags"
+msgid "The context annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/transcription.py:48
-msgid "Transcription"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/edit/rules.py:359 ../lib/advene/gui/edit/rules.py:803
 #, fuzzy
-msgid "Display annotations as a text transcription"
-msgstr "Vidi komentajxojn sur templinio"
+msgid "The annotations of the context type"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/transcription.py:146
-#, python-format
-msgid "Error in source evaluation %(source)s: %(error)s"
+#: ../lib/advene/gui/edit/rules.py:362 ../lib/advene/core/controller.py:584
+#, fuzzy, python-format
+msgid "Annotations of type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/edit/rules.py:374
+msgid "Return "
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/edit/rules.py:376 ../lib/advene/gui/edit/rules.py:791
 #, fuzzy
-msgid "Transcription options"
-msgstr "Importi transkribon"
+msgid "The element"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/edit/rules.py:377 ../lib/advene/gui/edit/rules.py:792
 #, fuzzy
-msgid "Default representation"
-msgstr "Defauxlta regularo"
+msgid "The element's content"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/transcription.py:164
-msgid "Use the default representation for annotations"
+#: ../lib/advene/gui/edit/rules.py:392
+msgid "If the element matches "
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:165
-msgid ""
-"If default representation is unchecked,\n"
-"this TALES expression that will be used to format the annotations."
+#: ../lib/advene/gui/edit/rules.py:394
+msgid "Return the element if it matches "
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:166
-msgid "Separator"
+#: ../lib/advene/gui/edit/rules.py:412 ../lib/advene/gui/edit/rules.py:621
+msgid "All conditions must be met"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:167
-msgid "This separator will be inserted between the annotations."
+#: ../lib/advene/gui/edit/rules.py:413 ../lib/advene/gui/edit/rules.py:622
+msgid "Any condition can be met"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:168
-msgid "Whitespace"
+#: ../lib/advene/gui/edit/rules.py:497 ../lib/advene/gui/edit/rules.py:567
+#, python-format
+msgid "Rule <b>%s</b>"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:169
-#, fuzzy
-msgid "Newline"
-msgstr "Templinio"
-
-#: ../lib/advene/gui/views/transcription.py:170
-#, fuzzy
-msgid "Tabulation"
-msgstr "Vido"
-
-#: ../lib/advene/gui/views/transcription.py:171
-msgid "Dash"
+#: ../lib/advene/gui/edit/rules.py:578
+msgid "Rule name"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:172
-msgid "User defined"
+#: ../lib/advene/gui/edit/rules.py:595
+msgid "Event"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid "User-defined separator"
+#: ../lib/advene/gui/edit/rules.py:603
+msgid "If"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid ""
-"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
-"a tabulation."
+#: ../lib/advene/gui/edit/rules.py:642
+msgid "Then"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Display timestamps"
+#: ../lib/advene/gui/edit/rules.py:687
+msgid "When the "
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Insert timestsamp values"
+#: ../lib/advene/gui/edit/rules.py:700
+msgid " occurs,"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:176
-msgid "Display annotation bounds"
+#: ../lib/advene/gui/edit/rules.py:727 ../lib/advene/gui/edit/rules.py:730
+#, python-format
+msgid "Condition expression: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:236
-#, python-format
-msgid ""
-"Cannot convert the following annotations,\n"
-"the representation pattern is too complex.\n"
-"%s"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:247
-msgid ""
-"Cannot validate the update.\n"
-"The representation pattern is too complex."
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:273
+#: ../lib/advene/gui/edit/rules.py:769
 #, fuzzy
-msgid "Save transcription to a text file"
-msgstr "Vidi komentajxojn sur templinio"
+msgid "The annotation type"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/transcription.py:274
-msgid "Apply the modifications"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:772
+#, fuzzy, python-format
+msgid "The value of the %s attribute"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/transcription.py:275
-msgid "Find text"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:774
+#, fuzzy
+msgid "The annotation fragment"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/transcription.py:276
-msgid "Quickly switch display options"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:775
+#, fuzzy
+msgid "The annotation begin time"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/transcription.py:277
+#: ../lib/advene/gui/edit/rules.py:776
 #, fuzzy
-msgid "Refresh the transcription"
+msgid "The annotation end time"
 msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/transcription.py:278
+#: ../lib/advene/gui/edit/rules.py:778
 #, fuzzy
-msgid "Edit preferences"
-msgstr "Preferoj"
+msgid "The annotation MIME-type"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/transcription.py:697
-#, python-format
-msgid "Cannot write to %(filename)s: %(error)s:"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:779
+#, fuzzy
+msgid "The annotation's incoming relations"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/activebookmarks.py:52
-#: ../lib/advene/gui/views/activebookmarks.py:54
-msgid "ActiveBookmarks"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:780
+#, fuzzy
+msgid "The annotation's outgoing relations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/activebookmarks.py:441
-msgid "Chronological order"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:783
+#, fuzzy, python-format
+msgid "The %s-related incoming annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/activebookmarks.py:442
-msgid "Completeness and chronological order"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:787
+#, fuzzy, python-format
+msgid "The %s-related outgoing annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/activebookmarks.py:458
+#: ../lib/advene/gui/edit/rules.py:793
 #, fuzzy
-msgid "Bookmark duration"
-msgstr "Elekti ilobretan stilon"
+msgid "The element fragment"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/activebookmarks.py:459
+#: ../lib/advene/gui/edit/rules.py:794
 #, fuzzy
-msgid "Enter the duration (in ms) to convert bookmarks into annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/activebookmarks.py:481
-msgid "User-specified duration"
-msgstr ""
+msgid "The element begin time"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/activebookmarks.py:482
+#: ../lib/advene/gui/edit/rules.py:795
 #, fuzzy
-msgid "2s duration"
-msgstr "Elekti ilobretan stilon"
+msgid "The element end time"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/activebookmarks.py:483
+#: ../lib/advene/gui/edit/rules.py:796
 #, fuzzy
-msgid "Complete coverage"
+msgid "The element duration"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/activebookmarks.py:501
-msgid "Drop a bookmark here to remove it from the list"
-msgstr ""
-
-#: ../lib/advene/gui/views/activebookmarks.py:520
-#: ../lib/advene/gui/views/bookmarks.py:243
-msgid "Insert a bookmark for the current video time"
-msgstr ""
-
-#: ../lib/advene/gui/views/activebookmarks.py:528
+#: ../lib/advene/gui/edit/rules.py:797
 #, fuzzy
-msgid "Type of the annotations that will be created"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "The element type"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/activebookmarks.py:561
-msgid "Reorder active bookmarks"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:798
+#, fuzzy
+msgid "The element's incoming relations"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/activebookmarks.py:562
+#: ../lib/advene/gui/edit/rules.py:799
 #, fuzzy
-msgid "Complete bookmarks into annotations"
+msgid "The element's outgoing relations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/activebookmarks.py:563
+#: ../lib/advene/gui/edit/rules.py:800
 #, fuzzy
-msgid "Save the current state"
+msgid "The context"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/activebookmarks.py:863
+#: ../lib/advene/gui/edit/rules.py:801
 #, fuzzy
-msgid "Remove end timestamp"
+msgid "The context fragment"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1071
-msgid ""
-"Error: cannot find an appropriate schema to create the Active-bookmark type."
-msgstr ""
-
-#: ../lib/advene/gui/views/activebookmarks.py:1076
-msgid "Active bookmark"
-msgstr ""
-
-#: ../lib/advene/gui/views/activebookmarks.py:1114
-#, fuzzy
-msgid "Validate the annotation"
+#: ../lib/advene/gui/edit/rules.py:813
+#, fuzzy, python-format
+msgid "annotation-type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1260
-#, fuzzy
-msgid "Duplicate bookmark"
+#: ../lib/advene/gui/edit/rules.py:816
+#, fuzzy, python-format
+msgid "relation-type %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1261
-msgid "Remove bookmark"
+#: ../lib/advene/gui/edit/rules.py:838
+msgid "Select a condition"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1270
-#, fuzzy
-msgid "Remove begin timestamp"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/edit/rules.py:882
+#, python-format
+msgid "Parameter %s"
+msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1277
-msgid "Complete bookmark"
+#: ../lib/advene/gui/edit/rules.py:996
+msgid "Select an action"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1281
-msgid "Change type to"
+#: ../lib/advene/gui/edit/rules.py:1087
+msgid "Activate?"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:48
+#: ../lib/advene/gui/edit/properties.py:37
+#: ../lib/advene/gui/edit/shapewidget.py:1599
 #, fuzzy
-msgid "Bookmarks importer"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/gui/views/bookmarks.py:69
-msgid "Bookmarks"
-msgstr ""
+msgid "Properties"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/views/bookmarks.py:71
-msgid "Bookmark timecodes with their corresponding screenshots"
-msgstr ""
+#: ../lib/advene/gui/edit/properties.py:376
+#, fuzzy
+msgid "Choose a file"
+msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/views/bookmarks.py:142
-msgid "Select the annotation type to generate"
+#: ../lib/advene/gui/edit/frameselector.py:44
+msgid "Click on a frame to select its time."
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:147
+#: ../lib/advene/gui/edit/frameselector.py:181
 #, fuzzy
-msgid "Choose a duration"
-msgstr "Elekti ilobretan stilon"
+msgid "Select the appropriate snapshot"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/bookmarks.py:148
-msgid "Enter the standard duration (in ms) of created annotations."
+#: ../lib/advene/gui/edit/frameselector.py:234
+#: ../lib/advene/gui/edit/frameselector.py:287
+msgid "Click to see more frames or scroll with the mouse wheel"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:165
-msgid "Converted from bookmarks"
+#: ../lib/advene/gui/edit/create.py:81
+#, python-format
+msgid "%s creation"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:223
-msgid "Drop a position here to remove it from the list"
+#: ../lib/advene/gui/edit/create.py:82
+#, python-format
+msgid ""
+"To create a new element of type %s,\n"
+"you must give the following information."
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:244
-#, fuzzy
-msgid "Convert bookmarks to annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3609
-#, fuzzy
-msgid "Comment here"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/views/viewplugin.py:60
-msgid "Generic view plugin"
+#: ../lib/advene/gui/edit/create.py:111
+msgid "Dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewplugin.py:62
-msgid "You should not ever see this tooltip..."
+#: ../lib/advene/gui/edit/create.py:112
+msgid "HTML template"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:51
-#: ../lib/advene/gui/views/interactivequery.py:99
-msgid "Interactive query"
+#: ../lib/advene/gui/edit/create.py:113
+msgid "Plain XML"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:53
-#, fuzzy
-msgid "Interactive query dialog"
-msgstr "Interfacaj preferoj"
+#: ../lib/advene/gui/edit/create.py:114
+msgid "SVG template"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:59
-#: ../lib/advene/gui/views/interactivequery.py:256
-#, fuzzy
-msgid "Save query"
-msgstr "Arbvido"
+#: ../lib/advene/gui/edit/create.py:115
+msgid "Plain text template"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:122
-#: ../lib/advene/gui/views/interactivequery.py:172
-#, python-format
-msgid ""
-"Invalid query.\n"
-"The following fields have an invalid value:\n"
-"%s"
+#: ../lib/advene/gui/edit/create.py:118
+msgid "Simple query"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:136
-#: ../lib/advene/gui/views/interactivequery.py:296
-msgid "Saving the query..."
+#: ../lib/advene/gui/edit/create.py:120
+msgid "Directory"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:137
-#: ../lib/advene/gui/views/interactivequery.py:297
-msgid "Give a title and identifier for saving the query"
+#: ../lib/advene/gui/edit/create.py:122 ../lib/advene/util/helper.py:411
+msgid "Resource File"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:180
-msgid "Expert search"
+#: ../lib/advene/gui/edit/create.py:128
+msgid "No available type."
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:186
+#: ../lib/advene/gui/edit/create.py:172
 #, python-format
 msgid ""
-"TALES error in interactive expression:\n"
-"%s"
+"The identifier %s is not valid.\n"
+"It must be composed of non-accentuated alphabetic characters\n"
+"Underscore is allowed."
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:247
-#, fuzzy
-msgid "Interactive result"
-msgstr "Interfacaj preferoj"
-
-#: ../lib/advene/gui/views/interactivequery.py:249
-#, fuzzy
-msgid "Interactive result display"
-msgstr "Interfacaj preferoj"
-
-#: ../lib/advene/gui/views/interactivequery.py:274
-msgid "Result of interactive query"
+#: ../lib/advene/gui/edit/create.py:177
+#, python-format
+msgid "The identifier %s is already defined."
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:278
-msgid "Result of a query"
+#: ../lib/advene/gui/edit/create.py:310
+msgid "New resource data"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3188
-#, python-format
-msgid "'%s'"
+#: ../lib/advene/gui/edit/imports.py:129 ../lib/advene/gui/edit/imports.py:130
+#: ../lib/advene/core/controller.py:585
+msgid "Views"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:333
-#, fuzzy, python-format
-msgid "Comment on annotations containing %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
+msgid "Schemas"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:352
-msgid "Choose the annotation type where annotations will be created."
+#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
+#: ../lib/advene/gui/edit/elements.py:521
+msgid "Relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:356
+#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
+msgid "Queries"
+msgstr ""
+
+#: ../lib/advene/gui/edit/imports.py:320
+msgid "Imported?"
+msgstr ""
+
+#: ../lib/advene/gui/edit/imports.py:337 ../lib/advene/gui/edit/elements.py:513
+#: ../lib/advene/gui/edit/elements.py:562
+#: ../lib/advene/gui/edit/elements.py:649
+#: ../lib/advene/gui/edit/elements.py:729
+#: ../lib/advene/gui/edit/elements.py:786
+#: ../lib/advene/gui/edit/elements.py:878
+#: ../lib/advene/gui/edit/elements.py:947
+#: ../lib/advene/gui/edit/elements.py:1059
+#: ../lib/advene/gui/edit/elements.py:1121
+msgid "URI"
+msgstr ""
+
+#: ../lib/advene/gui/edit/imports.py:359
+msgid "Choose the package to import, and its alias"
+msgstr ""
+
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
 #, python-format
-msgid "Copied result of the '%s' query"
+msgid "Package %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:368
-#, fuzzy, python-format
-msgid "Search/replace content in %d elements"
-msgstr "Arbvido"
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
+msgid "No title"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3185
-msgid "Empty quicksearch string"
+#: ../lib/advene/gui/edit/shapewidget.py:89
+msgid "Generic shape"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:396
-msgid "Edit query again"
+#: ../lib/advene/gui/edit/shapewidget.py:254
+#: ../lib/advene/gui/edit/shapewidget.py:753
+#, python-format
+msgid "Link to %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:400
-#: ../lib/advene/gui/views/finder.py:436
-msgid "Edit query"
+#: ../lib/advene/gui/edit/shapewidget.py:346
+#: ../lib/advene/gui/edit/shapewidget.py:1301
+msgid "Link"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:537
-msgid "String to search"
+#: ../lib/advene/gui/edit/shapewidget.py:351
+msgid "Link label"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:410
-msgid "Search again"
+#: ../lib/advene/gui/edit/shapewidget.py:369
+msgid "Linewidth"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:416
+#: ../lib/advene/gui/edit/shapewidget.py:374
 #, fuzzy
-msgid "Empty result"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Filled"
+msgstr "Dosiero"
 
-#: ../lib/advene/gui/views/interactivequery.py:425
-#, fuzzy, python-format
-msgid "Result is a list of %d annotations."
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/shapewidget.py:382
+msgid "Opacity"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:427
+#: ../lib/advene/gui/edit/shapewidget.py:424
 #, python-format
-msgid "Result is a list of  %(number)d elements with %(elements)s."
+msgid "Properties of %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:470
-#, fuzzy
-msgid "Other elements"
-msgstr "Arbvido"
+#: ../lib/advene/gui/edit/shapewidget.py:471
+msgid "Rectangle"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:474
-#, fuzzy
-msgid "Display annotations in timeline"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/edit/shapewidget.py:551
+#: ../lib/advene/gui/edit/shapewidget.py:664
+msgid "Text"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:475
-#, fuzzy
-msgid "Display annotations as transcription"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/edit/shapewidget.py:675
+msgid "Textsize"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:481
-#: ../lib/advene/gui/views/interactivequery.py:503
-msgid "Export table"
+#: ../lib/advene/gui/edit/shapewidget.py:689
+msgid "Image"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:482
-#, fuzzy
-msgid "Create annotations from the result"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/shapewidget.py:773
+msgid "Href"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:483
-msgid "Define a montage with the result"
+#: ../lib/advene/gui/edit/shapewidget.py:783
+msgid "Line"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:484
-#, fuzzy
-msgid "Create a comment view with the result"
-msgstr "Arbvido"
+#: ../lib/advene/gui/edit/shapewidget.py:879
+msgid "Draw an arrow"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:485
-#, fuzzy
-msgid "Search and replace strings in the annotations content"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/shapewidget.py:890
+msgid "Arrow size"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:510
+#: ../lib/advene/gui/edit/shapewidget.py:1105
 #, fuzzy
-msgid "Edit elements"
-msgstr "Arbvido"
+msgid "Close path"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/views/interactivequery.py:516
-msgid "Open in python evaluator"
+#: ../lib/advene/gui/edit/shapewidget.py:1184
+msgid "Circle"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:519
-#, python-format
-msgid ""
-"Result:\n"
-"%s"
+#: ../lib/advene/gui/edit/shapewidget.py:1239
+msgid "Ellipse"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:561
-msgid "Results of _interactive query"
+#: ../lib/advene/gui/edit/shapewidget.py:1600
+msgid "SVG"
 msgstr ""
 
-#: ../lib/advene/gui/views/relationdisplay.py:34
-#, fuzzy
-msgid "RelationDisplay"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/shapewidget.py:2158
+msgid "Load SVG"
+msgstr ""
 
-#: ../lib/advene/gui/views/relationdisplay.py:36
+#: ../lib/advene/gui/edit/shapewidget.py:2164
+msgid "Save SVG"
+msgstr ""
+
+#: ../lib/advene/gui/edit/importer.py:46
 #, fuzzy
-msgid "Display the contents of a relation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/views/relationdisplay.py:79
+#: ../lib/advene/gui/edit/importer.py:102
+#: ../lib/advene/gui/edit/importer.py:112
 #, fuzzy
-msgid "No relation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Advene package importer"
+msgstr "Redakti komentarajn attributojn"
 
-#: ../lib/advene/gui/views/relationdisplay.py:104
-#: ../lib/advene/gui/views/annotationdisplay.py:253
+#: ../lib/advene/gui/edit/importer.py:116
 #, fuzzy
-msgid "Contents"
+msgid "Not likely"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/html.py:62
-msgid "Cannot go back: first item in history"
-msgstr ""
-
-#: ../lib/advene/gui/views/html.py:220
+#: ../lib/advene/gui/edit/importer.py:138
 #, python-format
-msgid "%s%% loaded"
+msgid "Completed conversion: %(statistics)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:223
-#, fuzzy, python-format
-msgid "Title %s"
-msgstr "Dosiero"
-
-#: ../lib/advene/gui/views/html.py:287
-msgid "HTML Viewer"
+#: ../lib/advene/gui/edit/importer.py:144
+#: ../lib/advene/gui/edit/dvdselect.py:73
+msgid "Stop"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:289
-msgid "Embedded HTML widget"
+#: ../lib/advene/gui/edit/importer.py:254
+msgid "Choose the file to import"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:319
-msgid "No available HTML rendering component"
-msgstr ""
+#: ../lib/advene/gui/edit/importer.py:273
+#, fuzzy
+msgid "Filter"
+msgstr "Dosiero"
 
-#: ../lib/advene/gui/views/viewbook.py:36
+#: ../lib/advene/gui/edit/importer.py:277
 #, fuzzy
-msgid "ViewBook"
-msgstr "Vido"
+msgid "Options"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/viewbook.py:57
-#: ../lib/advene/gui/views/viewbook.py:64
-msgid "Cannot remove this widget, it is essential."
+#: ../lib/advene/gui/edit/importer.py:287
+msgid "Start"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:135
-msgid "Detach"
+#: ../lib/advene/gui/edit/dvdselect.py:82
+#: ../lib/advene/gui/edit/dvdselect.py:112
+msgid "Preview"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:139
-#: ../lib/advene/gui/views/editaccumulator.py:76
-msgid "Close"
+#: ../lib/advene/gui/edit/dvdselect.py:91
+msgid ""
+"Select the correct\n"
+"title and chapter\n"
+"of the DVD"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:157
+#: ../lib/advene/gui/edit/dvdselect.py:104
+msgid "Chapter"
+msgstr ""
+
+#: ../lib/advene/gui/edit/merge.py:33
 #, fuzzy
-msgid "Rename the view"
+msgid "Create element"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/viewbook.py:158
-msgid "Please enter the new name of the view"
+#: ../lib/advene/gui/edit/merge.py:34
+#, fuzzy
+msgid "Create annotation (duplicate id)"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/edit/merge.py:35
+msgid "Create relation (duplicate id)"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:197
-msgid "Detach view in its own window, or drag-and-drop to another zone"
+#: ../lib/advene/gui/edit/merge.py:36
+msgid "Update the color"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:211
+#: ../lib/advene/gui/edit/merge.py:37
 #, fuzzy
-msgid "Close view"
+msgid "Update the representation"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/viewbook.py:286
+#: ../lib/advene/gui/edit/merge.py:38
 #, fuzzy
-msgid "Open a new transcription for..."
-msgstr "Vidi komentajxojn sur templinio"
+msgid "Update the description"
+msgstr "Importi transkribon"
 
-#: ../lib/advene/gui/views/viewbook.py:298
-#, fuzzy
-msgid "Create a new comment view"
-msgstr "Arbvido"
+#: ../lib/advene/gui/edit/merge.py:39
+msgid "Update the title"
+msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:300
-#, fuzzy
-msgid "Open a new view"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/edit/merge.py:40
+msgid "Update the mimetype"
+msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:375
-#, fuzzy, python-format
-msgid "Use annotation-type %s :"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/merge.py:41
+msgid "Update the begin time"
+msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:378
-#: ../lib/advene/gui/views/viewbook.py:404
-msgid "to edit it"
+#: ../lib/advene/gui/edit/merge.py:42
+msgid "Update the end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:379
-#: ../lib/advene/gui/views/viewbook.py:405
-#: ../lib/advene/gui/views/viewbook.py:437
+#: ../lib/advene/gui/edit/merge.py:43
+msgid "Update the content"
+msgstr ""
+
+#: ../lib/advene/gui/edit/merge.py:44
+msgid "Update the matchFilter"
+msgstr ""
+
+#: ../lib/advene/gui/edit/merge.py:45
 #, fuzzy
-msgid "to create a new static view"
+msgid "Update the member types"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/viewbook.py:381
+#: ../lib/advene/gui/edit/merge.py:46
 #, fuzzy
-msgid "in a timeline"
-msgstr "Vidi komentajxojn sur templinio"
-
-#: ../lib/advene/gui/views/viewbook.py:382
-msgid "as a montage"
-msgstr ""
-
-#: ../lib/advene/gui/views/viewbook.py:383
-#: ../lib/advene/gui/views/viewbook.py:436
-msgid "in a table"
-msgstr ""
+msgid "Update tags"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
-msgid "in a query"
+#: ../lib/advene/gui/edit/merge.py:90
+msgid "Difference between original and merged elements"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
-#, python-format
-msgid "Query %s"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:136
+#, fuzzy
+msgid "Current element"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/viewbook.py:385
-#: ../lib/advene/gui/views/viewbook.py:407
+#: ../lib/advene/gui/edit/merge.py:141
 #, fuzzy
-msgid "in the TALES browser"
-msgstr "Komentaraj attributoj"
+msgid "Updated element"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/viewbook.py:385
-#, python-format
-msgid "Browsing %s"
+#: ../lib/advene/gui/edit/merge.py:147
+msgid "Show diff"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:401
-#, fuzzy, python-format
-msgid "Use annotation %s :"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/merge.py:180
+msgid "Merge?"
+msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:407
-#, python-format
-msgid "Browse %s"
+#: ../lib/advene/gui/edit/merge.py:197
+msgid "Element"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:408
-#, fuzzy
-msgid "to display its contents"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/edit/merge.py:215
+#, fuzzy, python-format
+msgid "Merge elements from %s into %s"
+msgstr "Redakti importitaj elementojn de aliaj komentaroj"
 
-#: ../lib/advene/gui/views/viewbook.py:408
-#, python-format
-msgid "%s"
+#: ../lib/advene/gui/edit/merge.py:267
+msgid "All"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:409
-msgid "as a bookmark"
+#: ../lib/advene/gui/edit/merge.py:272 ../lib/advene/core/controller.py:1152
+msgid "None"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:427
-msgid "as the context for the query..."
+#: ../lib/advene/gui/edit/montage.py:51
+msgid "Montage"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:431
-#, fuzzy
-msgid "Set of annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/viewbook.py:432
+#: ../lib/advene/gui/edit/montage.py:53
 #, fuzzy
-msgid "Use annotations:"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Dynamic montage of annotations"
+msgstr "Importi transkribon"
 
-#: ../lib/advene/gui/views/viewbook.py:435
-msgid "to edit them"
+#: ../lib/advene/gui/edit/montage.py:61
+msgid "Render"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:438
-#, fuzzy
-msgid "as bookmarks"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/singletonpopup.py:32
-msgid "SingletonPopup"
+#: ../lib/advene/gui/edit/montage.py:176
+msgid "Remove from montage"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
-msgid "Timeline"
+#: ../lib/advene/gui/edit/montage.py:310
+#, python-format
+msgid ""
+"Exporting montage %(title)s\n"
+"to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:123
-msgid "Display annotations on a timeline"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/edit/montage.py:402
+msgid "Drop an annotation here to remove it from the list"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:137
-#, fuzzy
-msgid "Limit display to current area"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/edit/montage.py:414
+msgid "Play the montage"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:138
-#: ../lib/advene/gui/views/timeline.py:3265
+#: ../lib/advene/gui/edit/montage.py:419
 #, fuzzy
-msgid "Display whole movie"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../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:218
-msgid "No scrolling"
-msgstr ""
+msgid "Save the view in the package"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/views/timeline.py:219
-msgid "Continuous scrolling"
+#: ../lib/advene/gui/edit/montage.py:467
+msgid "Set zoom level"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:220
-msgid "Discrete scrolling"
+#: ../lib/advene/gui/edit/montage.py:472
+msgid "Set 100% zoom"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:221
-#, fuzzy
-msgid "Annotation scrolling"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../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:486
+#: ../lib/advene/gui/edit/montage.py:551
 #, fuzzy
-msgid "Display all types"
+msgid "Total duration:"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:488
+#: ../lib/advene/gui/edit/timeadjustment.py:97
 #, python-format
-msgid ""
-"There are %d annotations.\n"
-"The current timeline may take a long time to display them, so only the first "
-"two annotation types are displayed. Use the annotation type selector (second "
-"button in the timeline) to select other annotations types to display, or "
-"click on the 'Display all types' button below."
+msgid "Decrement value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:963
-#, fuzzy
-msgid "Split at current player position"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/views/timeline.py:967
-msgid "Center and zoom"
+#: ../lib/advene/gui/edit/timeadjustment.py:99
+#, python-format
+msgid "Increment value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1058
-#: ../lib/advene/gui/views/tree.py:808 ../lib/advene/gui/main.py:4563
+#: ../lib/advene/gui/edit/timeadjustment.py:125
 msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
+"Click to play\n"
+"Control+click to set to current time\n"
+"Scroll to modify value (with control/shift)\n"
+"Right-click to invalidate screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1071
-#: ../lib/advene/gui/views/tree.py:821
-msgid "Create a relation"
+#: ../lib/advene/gui/edit/timeadjustment.py:140
+msgid ""
+"Enter a timecode.\n"
+"An integer value will be considered as milliseconds.\n"
+"A float value (12.2) will be considered as seconds.\n"
+"HH:MM:SS.sss values are possible."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1081
-#: ../lib/advene/gui/views/tree.py:831
-#, fuzzy
-msgid "Create a new relation-type."
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/timeadjustment.py:154
+msgid "Set to current player position"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1107
-#, fuzzy
-msgid "Merge with this annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:78
+#, python-format
+msgid "No edit popup available for element %s"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1116
-msgid "Align both begin times"
+#: ../lib/advene/gui/edit/elements.py:99
+msgid "Edit Window"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1117
-msgid "Align both end times"
+#: ../lib/advene/gui/edit/elements.py:138
+msgid "Apply changes and close the edit window"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1118
-msgid "Align end time to selected begin time"
+#: ../lib/advene/gui/edit/elements.py:143
+msgid "Apply changes"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1119
-msgid "Align begin time to selected end time"
+#: ../lib/advene/gui/edit/elements.py:277
+msgid "Content has been modified. Close anyway and lose data?"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1120
-msgid "Align all times"
+#: ../lib/advene/gui/edit/elements.py:337
+#, python-format
+msgid "View %s (read-only)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1158
-#: ../lib/advene/gui/views/tree.py:700
-msgid "Cannot delete the annotation : it has relations."
+#: ../lib/advene/gui/edit/elements.py:373
+#, python-format
+msgid "Display %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1233
+#: ../lib/advene/gui/edit/elements.py:457
 #, fuzzy
-msgid "Select the appropriate relation type"
+msgid "Apply changes and edit previous annotation of same type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1252
-#: ../lib/advene/gui/views/tree.py:757
-#, fuzzy, python-format
-msgid "Duplicate selection to type %s"
+#: ../lib/advene/gui/edit/elements.py:461
+#, fuzzy
+msgid "Apply changes and edit next annotation of same type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1255
-#: ../lib/advene/gui/views/tree.py:760
-#, fuzzy, python-format
-msgid "Move selection to type %s"
+#: ../lib/advene/gui/edit/elements.py:467
+#, fuzzy
+msgid "Unhighlight annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1264
-#: ../lib/advene/gui/views/tree.py:769
-#, fuzzy, python-format
-msgid "Duplicate annotation to type %s"
+#: ../lib/advene/gui/edit/elements.py:471
+#, fuzzy
+msgid "Highlight annotation"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1268
-#: ../lib/advene/gui/views/tree.py:773
-#, fuzzy, python-format
-msgid "Move annotation to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:502
+msgid "Fragment"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1275
-#, fuzzy, python-format
-msgid "Duplicate to type %(type)s at %(position)s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:525 ../lib/advene/core/controller.py:585
+msgid "Tags"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1281
-#, python-format
-msgid "Move to type %(type)s at %(position)s"
+#: ../lib/advene/gui/edit/elements.py:621
+msgid "Apply changes and visualise in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1291
-#: ../lib/advene/gui/views/tree.py:784
-#, fuzzy
-msgid "Duplicate and create a relation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:626
+msgid "Apply changes and activate the view"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1302
-#, fuzzy, python-format
-msgid "Duplicate at %s and create a relation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:634
+#: ../lib/advene/gui/edit/elements.py:715
+#: ../lib/advene/gui/edit/elements.py:772
+#: ../lib/advene/gui/edit/elements.py:863
+#: ../lib/advene/gui/edit/elements.py:932
+#: ../lib/advene/gui/edit/elements.py:1034
+#, fuzzy
+msgid "Title (name)"
+msgstr "Dosiero"
 
-#: ../lib/advene/gui/views/timeline.py:1333
+#: ../lib/advene/gui/edit/elements.py:638
 #, fuzzy
-msgid "Annotation filter"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Name of the view"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/timeline.py:1334
-msgid "Enter the searched string"
+#: ../lib/advene/gui/edit/elements.py:662
+msgid "Class"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1442
-#, fuzzy, python-format
-msgid "Duplicate all annotations to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:665
+msgid "Match Filter"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1444
-#, fuzzy, python-format
-msgid "Move all annotations to type %s"
+#: ../lib/advene/gui/edit/elements.py:708
+#, fuzzy
+msgid "Validate and run query on package"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:1446
-#, fuzzy, python-format
-msgid "Duplicate all annotations matching a string to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:719
+#, fuzzy
+msgid "Name of the query"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/timeline.py:1448
-#, fuzzy, python-format
-msgid "Move all annotations matching a string to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:776
+#, fuzzy
+msgid "Name of the package"
+msgstr "Komentaraj attributoj"
 
-#: ../lib/advene/gui/views/timeline.py:1450
-#, python-format
-msgid "Align all annotation time codes using %s as reference."
+#: ../lib/advene/gui/edit/elements.py:794
+#: ../lib/advene/gui/edit/elements.py:885
+#: ../lib/advene/gui/edit/elements.py:964
+#: ../lib/advene/gui/edit/elements.py:1078
+msgid "Description"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1452
-#, python-format
-msgid "Align all annotation contents using %s as reference"
+#: ../lib/advene/gui/edit/elements.py:798
+#: ../lib/advene/gui/edit/elements.py:889
+#: ../lib/advene/gui/edit/elements.py:968
+#: ../lib/advene/gui/edit/elements.py:1082
+msgid "Textual description of the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1642
-#: ../lib/advene/gui/views/table.py:240
-msgid "Cannot update the annotation, its representation is too complex"
+#: ../lib/advene/gui/edit/elements.py:803
+msgid "Default dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1936
-#: ../lib/advene/gui/views/timeline.py:1965
-#, fuzzy, python-format
-msgid "Displaying %(count)d / %(total)d annotations..."
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:807
+msgid "Dynamic view to activate on package load"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1947
-#, fuzzy
-msgid "Displaying done."
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/edit/elements.py:812
+msgid "Default static view"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2439
-#, fuzzy
-msgid "Create a new annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:816
+msgid "Static view to open on package load"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2440
+#: ../lib/advene/gui/edit/elements.py:821
 #, fuzzy
-msgid "Zoom on region"
+msgid "Default adhoc view"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/timeline.py:2441
-#, fuzzy
-msgid "Restrict display to region"
-msgstr "Vidi komentajxojn sur templinio"
-
-#: ../lib/advene/gui/views/timeline.py:2560
-#, fuzzy
-msgid "New annotation at player time"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/edit/elements.py:825
+msgid "Adhoc view to open on package load"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2564
-#, fuzzy
-msgid "New annotation at mouse position"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:830
+msgid "Cached duration"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2568
-msgid "Selection"
+#: ../lib/advene/gui/edit/elements.py:834
+msgid "Cached duration in ms"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2694
-msgid "Cannot zoom more"
+#: ../lib/advene/gui/edit/elements.py:839
+msgid "Mediafile"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2915
-#, python-format
-msgid "From schema %s"
+#: ../lib/advene/gui/edit/elements.py:843
+msgid "Location of associated media file"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2977
+#: ../lib/advene/gui/edit/elements.py:867
 #, fuzzy
-msgid "Restrict playing to this annotation-type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Name of the schema"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/timeline.py:2984
-#, fuzzy
-msgid "Goto previous annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:899
+#: ../lib/advene/gui/edit/elements.py:979
+msgid "TALES expression returning a color for the element"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2995
-#, fuzzy
-msgid "Goto next annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:906
+#: ../lib/advene/gui/edit/elements.py:997
+msgid "Item color"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3006
-msgid "+"
+#: ../lib/advene/gui/edit/elements.py:910
+#: ../lib/advene/gui/edit/elements.py:1001
+msgid ""
+"TALES expression returning a color for the items contained by the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3064
+#: ../lib/advene/gui/edit/elements.py:936
+#: ../lib/advene/gui/edit/elements.py:1038
 #, fuzzy
-msgid "Open an annotation display view"
+msgid "Name of the type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3071
-msgid "Open a slave montage view (coordinated zoom level)"
+#: ../lib/advene/gui/edit/elements.py:954
+#: ../lib/advene/gui/edit/elements.py:1043
+#: ../lib/advene/gui/edit/elements.py:1312
+msgid "MIME Type"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3106
-msgid ""
-"<b>Statistics about current selection</b>\n"
-"\n"
+#: ../lib/advene/gui/edit/elements.py:958
+#: ../lib/advene/gui/edit/elements.py:1047
+msgid "MIMEType of the content"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3113
-#, fuzzy
-msgid "No selected annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:990
+msgid ""
+"TALES expression used to get a compact representation of the annotations"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3117
+#: ../lib/advene/gui/edit/elements.py:991
 #, fuzzy, python-format
-msgid "%d selected annotation(s)"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:3124
-#, fuzzy
-msgid "Unselect all annotations"
+msgid "Display %s key"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3125
+#: ../lib/advene/gui/edit/elements.py:1007
 #, fuzzy
-msgid "Create a static view"
+msgid "Completions"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/views/timeline.py:3126
-msgid "Highlight selection in other views"
+#: ../lib/advene/gui/edit/elements.py:1011
+msgid "Space-separated list of words used for content completion"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3127
-#: ../lib/advene/gui/views/timeline.py:3713
+#: ../lib/advene/gui/edit/elements.py:1017
 #, fuzzy
-msgid "Tag selection"
-msgstr "Vido"
+msgid "Advanced"
+msgstr "Advene"
 
-#: ../lib/advene/gui/views/timeline.py:3128
+#: ../lib/advene/gui/edit/elements.py:1067
 #, fuzzy
-msgid "Delete selected annotations"
+msgid "Any annotation type"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/timeline.py:3129
-#, fuzzy
-msgid "Display selection in a table"
-msgstr "Vidi komentajxojn sur templinio"
-
-#: ../lib/advene/gui/views/timeline.py:3130
-msgid "Center and zoom on selection"
+#: ../lib/advene/gui/edit/elements.py:1093
+msgid "TALES expression specifying a color"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3131
-#, fuzzy
-msgid "Edit selected annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:3132
-#, fuzzy
-msgid "Merge annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:3133
-#, fuzzy
-msgid "Display statistics"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:3258
-#, fuzzy
-msgid "Goto previous page"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:3270
-#, fuzzy
-msgid "Goto next page"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:3324
-msgid "Inspector locked. Click here or in the timeline background to unlock."
+#: ../lib/advene/gui/edit/elements.py:1120
+msgid "MIMEType"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3352
-#, fuzzy
-msgid ""
-"Delete the selected annotations or drop an annotation here to delete it."
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:1345
+#, python-format
+msgid "Error: cannot find a content handler for %s"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3374
+#: ../lib/advene/gui/edit/elements.py:1461
+#: ../lib/advene/gui/edit/elements.py:1686
+#, python-format
 msgid ""
-"Drag an annotation type here to remove it from display.\n"
-"Click to edit all displayed types"
+"Cannot read the data:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3386
-#, fuzzy
-msgid "Selection actions"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/views/timeline.py:3401
-msgid "Display relations"
+#: ../lib/advene/gui/edit/elements.py:1485
+#: ../lib/advene/gui/edit/elements.py:1711
+msgid "Save content to..."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3407
-#, fuzzy
-msgid "Display all relations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:3484
-msgid "Center on current player position."
+#: ../lib/advene/gui/edit/elements.py:1496
+#: ../lib/advene/gui/edit/elements.py:1724
+#, python-format
+msgid ""
+"Cannot save the data:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3500
-msgid "Automatically activate loop when clicking on an annotation"
+#: ../lib/advene/gui/edit/elements.py:1515
+#: ../lib/advene/gui/edit/elements.py:1738
+msgid "Open a file (C-o)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3524
-msgid "Displayed"
+#: ../lib/advene/gui/edit/elements.py:1520
+#: ../lib/advene/gui/edit/elements.py:1743
+msgid "Save to a file (C-s)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3532
-#, fuzzy
-msgid "Not displayed"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/edit/elements.py:1525
+#: ../lib/advene/gui/edit/elements.py:1748
+msgid "Reload the file (C-r)"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3580
-msgid "< All <"
+#: ../lib/advene/gui/edit/elements.py:1531
+msgid "Insert a value from the browser (C-i)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3584
-msgid "> All >"
+#: ../lib/advene/gui/edit/elements.py:1777
+msgid "Begin time is greater than end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3600
-#, fuzzy
-msgid "Displayed annotation types"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:2049
+msgid "Expecting an integer."
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3625
-#, fuzzy
-msgid "Relation type"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/edit/elements.py:2081
+#, python-format
+msgid ""
+"The %(attribute)s attribute could not be updated:\n"
+"\n"
+"%(error)s\n"
+"\n"
+"Resetting to the original value."
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3625
-#, fuzzy
-msgid "Display relation types"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/elements.py:2108
+#, python-format
+msgid ""
+"The following attributes cannot be updated:\n"
+"\n"
+"%s"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3626
-#, fuzzy
-msgid "Relation content"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/edit/elements.py:2148
+#, python-format
+msgid ""
+"The following attributes could not be updated:\n"
+"\n"
+"%s"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3626
-#, fuzzy
-msgid "Display relation content"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/gui/edit/elements.py:2165
+msgid "Attribute"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3627 ../lib/advene/gui/popup.py:516
-msgid "Highlight"
+#: ../lib/advene/gui/edit/elements.py:2264
+msgid "Insert an element"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3627
-msgid "Highlight active annotations"
+#: ../lib/advene/gui/edit/elements.py:2265
+msgid "Choose the element to insert."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3714
-msgid "Enter the tag for the selection"
+#: ../lib/advene/gui/edit/elements.py:2335
+#: ../lib/advene/gui/edit/elements.py:2378
+#, python-format
+msgid "Some tags contain invalid characters: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:248
-msgid "No children in on_iter_children()!"
+#: ../lib/advene/gui/edit/elements.py:2358
+msgid "Tags:"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:263
-msgid "No children in on_iter_nth_child()"
+#: ../lib/advene/gui/edit/transcribe.py:68
+msgid "Transcription importer"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:317
-msgid "List of views"
+#: ../lib/advene/gui/edit/transcribe.py:79
+msgid "Note taking"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:318
+#: ../lib/advene/gui/edit/transcribe.py:81
 #, fuzzy
-msgid "Static views"
-msgstr "Arbvido"
+msgid "Take notes on the fly as a timestamped transcription"
+msgstr "Importi annotajxojn de tempmarkita transkribo"
 
-#: ../lib/advene/gui/views/tree.py:319
-msgid "Dynamic views"
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:320
-#, fuzzy
-msgid "Admin views"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Click inserts timestamp marks"
+msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:321
-#, fuzzy
-msgid "Adhoc views"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "Insert on single-click"
+msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
-#, fuzzy
-msgid "Tree view"
-msgstr "Arbvido"
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "A single click will insert the mark (else a double click is needed)"
+msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:453
-msgid "Package View"
+#: ../lib/advene/gui/edit/transcribe.py:150
+msgid "Play on scroll"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:42
-msgid "EditAccumulator"
+#: ../lib/advene/gui/edit/transcribe.py:150
+msgid "Play the new position upon timestamp modification"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-#: ../lib/advene/gui/views/annotationdisplay.py:256
+#: ../lib/advene/gui/edit/transcribe.py:151
 #, fuzzy
-msgid "Validate"
-msgstr "Vido"
+msgid "Generate empty annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/relation.py:68
+#: ../lib/advene/gui/edit/transcribe.py:151
 #, fuzzy
-msgid "Relations view"
-msgstr "Defauxlta regularo"
+msgid "If checked, generate annotations for empty text"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4339
-msgid "Caption"
-msgstr ""
-
-#: ../lib/advene/gui/views/caption.py:32
-#, fuzzy
-msgid "Display a text caption below the video output"
-msgstr "Vidi komentajxojn sur templinio"
-
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4338
-msgid "Scroller"
+#: ../lib/advene/gui/edit/transcribe.py:152
+msgid "Reaction time"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:329
-#, python-format
+#: ../lib/advene/gui/edit/transcribe.py:152
 msgid ""
-"View <b>%(title)s</b>\n"
-"Id: %(id)s"
-msgstr ""
-
-#: ../lib/advene/gui/views/finder.py:336
-#, fuzzy
-msgid "Open in webbrowser"
-msgstr "Komentaraj attributoj"
-
-#: ../lib/advene/gui/views/finder.py:337
-#, python-format
-msgid "View applied to %s\n"
+"Reaction time (substracted from current player time, except when paused.)"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:342 ../lib/advene/gui/popup.py:496
-msgid "Activate"
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Auto-insert"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:345
-msgid "Open in GUI"
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Automatic timestamp mark insertion"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:347
-msgid "Unknown type of view??"
+#: ../lib/advene/gui/edit/transcribe.py:154
+msgid "Automatic insertion delay"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:372
-#, fuzzy
-msgid "Edit view"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/views/finder.py:381
-#, fuzzy
-msgid "Open view"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/views/finder.py:421 ../lib/advene/gui/views/finder.py:487
-#, python-format
+#: ../lib/advene/gui/edit/transcribe.py:154
 msgid ""
-"%(type)s <b>%(title)s</b>\n"
-"Id: %(id)s"
+"If autoinsert is active, timestamp marks will be automatically inserted when "
+"text is entered after no interaction since this delay (in ms).\n"
+"1000 is typically a good value."
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:444
-msgid "Try to apply the query on..."
+#: ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size for text (0 for standard size)"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:464 ../lib/advene/gui/popup.py:829
-#, fuzzy
-msgid "the package"
-msgstr "Komentaraj attributoj"
-
-#: ../lib/advene/gui/views/finder.py:465 ../lib/advene/gui/popup.py:830
-#, fuzzy
-msgid "all annotations of the package"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/transcribe.py:215
+#: ../lib/advene/gui/edit/transcribe.py:219
+#: ../lib/advene/gui/edit/transcribe.py:377
+#: ../lib/advene/gui/edit/transcribe.py:381
+msgid "Invalid timestamp mark"
+msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:466 ../lib/advene/gui/popup.py:831
-#, fuzzy
-msgid "the first annotation of the package"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/transcribe.py:508
+msgid "Ignore the following text (toggle)"
+msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:509
-#, fuzzy
-msgid "Edit resource"
-msgstr "Preferoj"
+#: ../lib/advene/gui/edit/transcribe.py:512
+msgid "Remove mark"
+msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
-#, fuzzy
-msgid "Package finder"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/gui/edit/transcribe.py:516
+msgid "Reaction-time offset"
+msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:525
-#, fuzzy
-msgid "Column-based package finder"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/gui/edit/transcribe.py:520
+msgid "-1 sec"
+msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:41
-#, fuzzy
-msgid "AnnotationDisplay"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/transcribe.py:523
+msgid "-0.5 sec"
+msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:43
-#, fuzzy
-msgid "Display the contents of an annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/transcribe.py:526
+msgid "-0.1 sec"
+msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:84
-#, fuzzy
-msgid "No annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/transcribe.py:530
+msgid "+1 sec"
+msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:110
-#, python-format
-msgid ""
-"Schema %(schema)s (id %(id)s)\n"
-"%(description)s\n"
-"%(stats)s"
+#: ../lib/advene/gui/edit/transcribe.py:533
+msgid "+0.5 sec"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:231
-msgid "Screenshot"
+#: ../lib/advene/gui/edit/transcribe.py:536
+msgid "+0.1 sec"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:193
-msgid "Invalid view id"
+#: ../lib/advene/gui/edit/transcribe.py:627
+msgid "Invalid timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:239
+#: ../lib/advene/gui/edit/transcribe.py:760
 #, python-format
-msgid "Cannot save default options: %s"
+msgid "Invalid timestamp mark in conversion: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:250
-#, fuzzy, python-format
-msgid "Default options saved for view %s"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/views/__init__.py:282
+#: ../lib/advene/gui/edit/transcribe.py:877
 #, python-format
-msgid "Saving %s"
+msgid "Cannot save the file: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:285
-msgid "Enter a view name to save this parametered view"
+#: ../lib/advene/gui/edit/transcribe.py:888
+#: ../lib/advene/gui/edit/transcribe.py:972
+msgid "This will overwrite the current textual content. Are you sure?"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4630
-#, python-format
-msgid "Error: the identifier %s contains invalid characters."
+#: ../lib/advene/gui/edit/transcribe.py:891
+msgid "Select transcription file to load"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:303
+#: ../lib/advene/gui/edit/transcribe.py:908
 #, python-format
-msgid "Error: the view %s is not an adhoc view."
+msgid "Cannot open %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:328
-msgid "HTML export"
+#: ../lib/advene/gui/edit/transcribe.py:957
+msgid "Cannot import annotations: no existing interface"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:329
+#: ../lib/advene/gui/edit/transcribe.py:959
 #, fuzzy
-msgid "Specify a name for the export view"
-msgstr "Arbvido"
+msgid "Select the annotation type to import"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/__init__.py:348
-#, python-format
-msgid ""
-"View successfully exported as %s.\n"
-"Open it in the web browser ?"
-msgstr ""
+#: ../lib/advene/gui/edit/transcribe.py:968
+#, fuzzy, python-format
+msgid "There are no annotations of type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/__init__.py:427
-msgid "Actions"
+#: ../lib/advene/gui/edit/transcribe.py:997
+msgid "Cannot convert the data: no associated package"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:452
-msgid "Click or drag-and-drop to reattach view"
-msgstr ""
+#: ../lib/advene/gui/edit/transcribe.py:1000
+#, fuzzy
+msgid "Converting transcription"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/views/table.py:55
+#: ../lib/advene/gui/edit/transcribe.py:1006
 #, fuzzy
-msgid "Annotation table view"
+msgid "Choose the annotation-type where to create annotations.\n"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/table.py:57
+#: ../lib/advene/gui/edit/transcribe.py:1014
 #, fuzzy
-msgid "Display annotations in a table"
-msgstr "Vidi komentajxojn sur templinio"
+msgid "Delete existing annotations in this type"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/table.py:227 ../lib/advene/gui/views/table.py:452
+#: ../lib/advene/gui/edit/transcribe.py:1037
 #, fuzzy
-msgid "Snapshot"
+msgid "Select type"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/views/table.py:254 ../lib/advene/gui/main.py:4178
-msgid "Duration"
-msgstr ""
-
-#: ../lib/advene/gui/views/table.py:382 ../lib/advene/gui/views/table.py:511
-msgid "Export data to file..."
-msgstr ""
-
-#: ../lib/advene/gui/views/table.py:391 ../lib/advene/gui/views/table.py:520
-#, python-format
-msgid "Error while exporting data to %(filename)s: %(error)s"
+#: ../lib/advene/gui/edit/transcribe.py:1041
+msgid "You want to create a new type. Please specify its schema and title."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "id"
+#: ../lib/advene/gui/edit/transcribe.py:1053
+msgid "Containing schema"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "type"
+#: ../lib/advene/gui/edit/transcribe.py:1066
+msgid "Export options"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "begin"
-msgstr ""
+#: ../lib/advene/gui/edit/transcribe.py:1071
+#, fuzzy
+msgid "Generate annotations for empty contents"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "end"
+#: ../lib/advene/gui/edit/transcribe.py:1096
+#, python-format
+msgid "The %s identifier already exists. Choose another one."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-#, fuzzy
-msgid "content"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/views/table.py:460
-msgid "Generic table view"
+#: ../lib/advene/gui/edit/transcribe.py:1135
+msgid "Notes converted"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:462
-msgid "Display Advene elements in a table."
+#: ../lib/advene/gui/edit/transcribe.py:1182
+msgid "Open"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element title"
+#: ../lib/advene/gui/edit/transcribe.py:1183
+msgid "Save"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element type"
+#: ../lib/advene/gui/edit/transcribe.py:1184
+msgid "Save As"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:532
+#: ../lib/advene/gui/edit/transcribe.py:1185
 #, fuzzy
-msgid "Element id"
-msgstr "Arbvido"
+msgid "Import"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/widget.py:327
-#, fuzzy, python-format
-msgid "Set of %s annotations"
+#: ../lib/advene/gui/edit/transcribe.py:1185
+#, fuzzy
+msgid "Import from annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/widget.py:1067
-#, fuzzy
-msgid "Save as..."
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/gui/edit/transcribe.py:1186
+msgid "Convert"
+msgstr ""
 
-#: ../lib/advene/gui/widget.py:1072
+#: ../lib/advene/gui/edit/transcribe.py:1186
 #, fuzzy
-msgid "Use current player position"
-msgstr "Defauxlta regularo"
+msgid "Convert to annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/widget.py:1078
+#: ../lib/advene/gui/edit/transcribe.py:1188 ../lib/advene/rules/actions.py:685
 #, fuzzy
-msgid "Adjust timestamp"
+msgid "Center"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/edit/transcribe.py:1188
 #, fuzzy
-msgid "_Select player"
+msgid "Center on the current mark"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
-msgid "_View"
-msgstr "Vido"
-
-#: ../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
+#: ../lib/advene/gui/edit/transcribe.py:1189
 #, fuzzy
-msgid "Open recent"
-msgstr "Defauxlta regularo"
+msgid "Find"
+msgstr "Dosiero"
 
-#: ../lib/advene/gui/main.py:239
-msgid "Input from the keyboard (function keys)"
+#: ../lib/advene/gui/edit/transcribe.py:1189
+msgid "Search a string"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:243
-msgid "_File"
-msgstr "Dosiero"
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Scale"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:244
-#, fuzzy
-msgid "_New package"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/gui/edit/transcribe.py:1213
+msgid "Automatically scroll to the mark position when playing"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:244
-#, fuzzy
-msgid "Create a new package"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/gui/edit/transcribe.py:1215
+msgid "Autoscroll"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:245
-#, fuzzy
-msgid "_Open package"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/gui/edit/transcribe.py:1222
+msgid "Autoinsert"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:245
-#, fuzzy
-msgid "Open a package"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/gui/edit/transcribe.py:1224
+msgid "Automatically insert marks"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:246
-#, fuzzy
-msgid "Show recently opened packages"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/core/webcherry.py:51
+msgid "The webserver requires version 3.0 of CherryPy at least."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:247
-#, fuzzy
-msgid "_Save package"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/core/webcherry.py:167
+#, python-format
+msgid ""
+"\n"
+"            <p>\n"
+"            <a href=\"/admin\">Server administration</a> |\n"
+"            <a href=\"/media\">Media control</a> |\n"
+"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
+"            </p>\n"
+"            Location: %(locationbar)s\n"
+"            <hr>\n"
+"            "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:247
-#, fuzzy
-msgid "Save the package"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/core/webcherry.py:227
+msgid "Unspecified Error"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:248
-#, fuzzy
-msgid "Save package as..."
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/core/webcherry.py:228
+#, python-format
+msgid ""
+"\n"
+"        <h1>Error</h1>\n"
+"        <p>An error occurred:</p>\n"
+"        %s\n"
+"        "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:248
-#, fuzzy
-msgid "Save the package as..."
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/core/webcherry.py:261
+msgid "<h1>No available mediaplayer</h1>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:249
-#, fuzzy
-msgid "Close package"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/core/webcherry.py:265
+#, python-format
+msgid ""
+"\n"
+"            <h1>Current STBV: %(currentstbv)s</h1>\n"
+"\n"
+"            <h1>Player status</h1>\n"
+"            <table border=\"1\">\n"
+"            <tr>\n"
+"            <td>Current position</td><td>%(position)s</td>\n"
+"            <td>Duration</td><td>%(duration)s</td>\n"
+"            <td>Player status</td><td>%(status)s</td>\n"
+"            </tr>\n"
+"            </table>\n"
+"            "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:249
-#, fuzzy
-msgid "Close the package"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/core/webcherry.py:284
+msgid "<h1>No playlist</h1>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:251
-msgid "Save session"
+#: ../lib/advene/core/webcherry.py:286
+#, python-format
+msgid ""
+"<h1>Current playlist</h1>\n"
+"                <ul>%s</ul>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:251
-#, fuzzy
-msgid "Save the current session (list of opened packages)"
+#: ../lib/advene/core/webcherry.py:288
+msgid ""
+"\n"
+"                <form action=\"/media/play\" method=\"GET\">\n"
+"                Starting pos: <input type=\"text\" name=\"position\" value="
+"\"0\">\n"
+"                <input type=\"submit\" value=\"Play\">\n"
+"                </form>\n"
+"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
+"\">Pause</a><br>\n"
+"                "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:295
+msgid ""
+"<hr />\n"
+"            <form action=\"/media/load\" method=\"GET\">\n"
+"            Add a new file (<em>dvd</em> to play a DVD):\n"
+"            <input type=\"text\" name=\"filename\">\n"
+"            <input type=\"submit\" value=\"Add\">\n"
+"            </form>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:301
+msgid ""
+"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:310
+#, python-format
+msgid "Unknown STBV identifier: %s"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:385
+msgid "Media information"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:398
+msgid "File added"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:399
+#, python-format
+msgid "<p><strong>%s has been added to the playlist</strong></p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
+msgid "Access to packages snapshots"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
+msgid "Unknown package alias"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:426
+#, python-format
+msgid "Available snapshots for %s"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:432
+#, python-format
+msgid ""
+"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
+"a></p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:439
+msgid "Done"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:441
+msgid "Pending"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:487
+#, fuzzy, python-format
+msgid "Unknown annotation id: %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
+#, python-format
+msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:675
+msgid "<p>No GUI is available."
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:677
+#, fuzzy, python-format
+msgid "<p>Opened adhoc views: %s</p>"
 msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:252
-msgid "Save workspace"
+#: ../lib/advene/core/webcherry.py:678
+msgid "<p>Available adhoc views:</p><ul>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
-msgid "...as package view"
+#: ../lib/advene/core/webcherry.py:699
+#, python-format
+msgid "<p>Current stbv: %s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:254
-msgid "...as standard workspace"
+#: ../lib/advene/core/webcherry.py:700
+#, python-format
+msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:702
+msgid "Activate and play"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:708
+msgid "Application information"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:778
+msgid "Missing element id parameter"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:782
+#, python-format
+msgid "No existing element with id %s"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:791
+#, python-format
+msgid "<p>The GUI view %s does not exist.</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:798
+msgid "Invalid request"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:803
+msgid "Invalid configuration variable name"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:815
+msgid "Invalid value"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:819
+#, python-format
+msgid "Unsupported method %s"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:845
+#, python-format
+msgid ""
+"\n"
+"        <h1>Authorized hosts</h1>\n"
+"        <table border=\"1\">\n"
+"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
+"        %s\n"
+"        </table>\n"
+"        <form method=\"GET\">\n"
+"        Add a new hostname to the list :<br>\n"
+"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
+"\"Add\">\n"
+"        </form>\n"
+"        "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:859
+msgid "Access control"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:864
+msgid "Access control - add a hostname"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
+#, python-format
+msgid "<strong>Error: %s is an invalid hostname.</strong>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:875
+#, python-format
+msgid "<p>Added %s to authorized hosts list.</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:881
+msgid "Access control - delete a hostname"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:889
+msgid "<strong>Cannot remove the localhost access.</strong>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:894
+#, python-format
+msgid "<p>Removed %s from authorized hosts list.</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:896
+#, python-format
+msgid "<p>%s is not in authorized hosts list.</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:945
+msgid "Server Administration"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:953
+#, python-format
+msgid ""
+"\n"
+"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
+"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
+"        <p><a href=\"/action\">List available actions</a></p>\n"
+"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
+"        <p><a href=\"/media\">Media control</a></p>\n"
+"        <p><a href=\"/application\">Display GUI status</a></p>\n"
+"        <p><a href=\"/admin/list\">List available files</a></p>\n"
+"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
+"p>\n"
+"        <p>Display mode : %(displaymode)s</p>\n"
+"        <hr>\n"
+"        <p>Load a package :\n"
+"        <form action=\"/admin/load\" method=\"GET\">\n"
+"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
+"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
+"        <input type=\"submit\" value=\"Load\" />\n"
+"        </form>\n"
+"        </body></html>\n"
+"        "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:983
+msgid "Available files"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1009
+msgid "You should specify an alias"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1014
+msgid "You should specify an uri"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1020
+#, python-format
+msgid "Package %s loaded"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
+#, python-format
+msgid ""
+"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
+"the <a href=\"/packages\">package list</a>."
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1024
+#, python-format
+msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1035
+#, python-format
+msgid "Package %s deleted"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:254
-msgid "Use the current layout as standard workspace in the future"
+#: ../lib/advene/core/webcherry.py:1036
+msgid "<p>Go to the <a href=\"/packages\">package list</a>."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:256
-msgid "Associate a video _File"
+#: ../lib/advene/core/webcherry.py:1039
+#, python-format
+msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:256
-msgid "Associate a video file"
+#: ../lib/advene/core/webcherry.py:1056
+#, python-format
+msgid "Package %s saved"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:257
-msgid "Associate a _DVD"
+#: ../lib/advene/core/webcherry.py:1060
+#, python-format
+msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:257
-msgid "Associate a chapter from a DVD"
+#: ../lib/advene/core/webcherry.py:1070
+msgid "Server reset"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:258
-msgid "Associate a _Video stream"
+#: ../lib/advene/core/webcherry.py:1076
+msgid "Available TALES methods"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:258
-msgid "Enter a video stream address"
+#: ../lib/advene/core/webcherry.py:1117
+msgid "Loaded package(s)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:260
-msgid "_Import File"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/gui/main.py:260
-msgid "Import data from an external source"
-msgstr "Importi datumo de alia ???"
-
-#: ../lib/advene/gui/main.py:261
-#, fuzzy
-msgid "_Process video"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/gui/main.py:261
-#, fuzzy
-msgid "Import data from video processing algorithms"
-msgstr "Importi datumo de alia ???"
-
-#: ../lib/advene/gui/main.py:263
-msgid "Merge package"
+#: ../lib/advene/core/webcherry.py:1119
+msgid ""
+"\n"
+"        <h1>Loaded package(s)</h1>\n"
+"        <table border=\"1\" width=\"50%\">\n"
+"        <tr>\n"
+"        <th>Alias</th>\n"
+"        <th>Action</th>\n"
+"        <th>URI</th>\n"
+"        <th>Annotations</th>\n"
+"        </tr>\n"
+"        "
 msgstr ""
 
-#: ../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:264
-msgid "Import _DVD chapters"
-msgstr "Importi DVD cxapitrojn"
-
-#: ../lib/advene/gui/main.py:264
-msgid "Create annotations based on DVD chapters"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:266
-#, fuzzy
-msgid "_Export..."
-msgstr "Importi dosieron"
-
-#: ../lib/advene/gui/main.py:266
-#, fuzzy
-msgid "Export data to another format"
-msgstr "Importi datumo de alia ???"
-
-#: ../lib/advene/gui/main.py:267
-msgid "_Website export..."
+#: ../lib/advene/core/webcherry.py:1131
+#, python-format
+msgid ""
+"<tr>\n"
+"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
+"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
+"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
+"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
+"            <td>%(uri)s</td>\n"
+"            <td>%(size)d</td>\n"
+"            </tr>\n"
+"            "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:267
-#, fuzzy
-msgid "Export views to a website"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:269
-#, fuzzy
-msgid "_Quit"
-msgstr "Redakti"
-
-#: ../lib/advene/gui/main.py:271
-msgid "_Edit"
-msgstr "Redakti"
+#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
+#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
+#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
+#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
+#: ../lib/advene/core/webcherry.py:2039
+msgid "Error"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:272
-msgid "_Undo"
+#: ../lib/advene/core/webcherry.py:1205
+#, python-format
+msgid "The TALES expression %s is not valid."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:273
-#, fuzzy
-msgid "_Find"
-msgstr "Dosiero"
+#: ../lib/advene/core/webcherry.py:1256
+msgid "Content mode not available on non-content data"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:274
-msgid "_Delete"
+#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
+#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
+#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
+#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
+#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
+#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
+msgid "<h1>Error</h1>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:275
-#, fuzzy
-msgid "Create"
-msgstr "Arbvido"
+#: ../lib/advene/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
+#, python-format
+msgid ""
+"<p>There was an error in the template code.</p>\n"
+"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"                <p>Error message: <em>%(message)s</em></p>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:284
-msgid "P_ackage properties"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/core/webcherry.py:1290
+#, python-format
+msgid ""
+"<p>An invalid character is in the Context:</p>\n"
+"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
+"pre>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:284
-msgid "Edit package properties"
-msgstr "Redakti komentarajn attributojn"
+#: ../lib/advene/core/webcherry.py:1298
+#, python-format
+msgid ""
+"<p>There was an error in the TALES expression.</p>\n"
+"                <pre>%s</pre>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:285
-msgid "P_references"
-msgstr "Preferoj"
+#: ../lib/advene/core/webcherry.py:1318
+#, python-format
+msgid ""
+"<p>There was an error.</p>\n"
+"                <pre>%s</pre>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:285
-msgid "Interface preferences"
-msgstr "Interfacaj preferoj"
+#: ../lib/advene/core/webcherry.py:1342
+#, python-format
+msgid ""
+"\n"
+"            <hr>\n"
+"            <p>\n"
+"            Location: %(location)s<br>\n"
+"            <form name=\"navigation\" method=\"GET\">\n"
+"            <a href=\"%(levelup)s\">Up one level</a> |\n"
+"            Next level :\n"
+"            <select name=\"path\" onchange=\"submit()\">\n"
+"            "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:289
-msgid "_Start Web Browser"
+#: ../lib/advene/core/webcherry.py:1360
+msgid ""
+"\n"
+"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
+"            <option selected></option>\n"
+"            "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:289
-msgid "Start the web browser"
+#: ../lib/advene/core/webcherry.py:1378
+#, python-format
+msgid ""
+"<hr>\n"
+"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
+"package %(uri)s returns %(value)s</p>\n"
+"            "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:291
-msgid "Simplify interface"
+#: ../lib/advene/core/webcherry.py:1414
+#, python-format
+msgid "<p>Package <strong>%s</strong> not loaded</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:291
-#, fuzzy
-msgid "Simplify the application interface (toggle)"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/core/webcherry.py:1456
+#, python-format
+msgid ""
+"<p>There was an error in the template code.</p>\n"
+"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"            <p>Error message: <em>%(message)s</em></p>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:292
-msgid "Evaluator"
+#: ../lib/advene/core/webcherry.py:1464
+#, python-format
+msgid ""
+"<p>There was an error in the expression.</p>\n"
+"            <pre>%s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:292
-msgid "Open python evaluator window"
+#: ../lib/advene/core/webcherry.py:1472
+#, python-format
+msgid ""
+"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
+"            %(type)s\n"
+"            %(value)s\n"
+"            %(traceback)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4022
-msgid "Webserver log"
+#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
+msgid "<p>Cannot set the value : invalid path</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:296
-msgid "_Player"
+#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
+#, python-format
+msgid ""
+"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
+"%(folder)s could not be created.</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:297
-msgid "Go to _Time"
+#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
+msgid "Resource successfuly created/updated"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:297
-msgid "Goto a specified time code"
+#: ../lib/advene/core/webcherry.py:1611
+msgid "Value successfuly updated"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save _ImageCache"
+#: ../lib/advene/core/webcherry.py:1613
+#, python-format
+msgid ""
+"Unable to update the attribute %(attribute)s for element %(element)s: "
+"%(error)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save the contents of the ImageCache to disk"
+#: ../lib/advene/core/webcherry.py:1724
+msgid "<p>Invalid request</p>."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:299
-msgid "Reset ImageCache"
+#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
+msgid "Value updated"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:299
-msgid "Reset the ImageCache"
+#: ../lib/advene/core/webcherry.py:1789
+#, python-format
+msgid ""
+"\n"
+"                <h1>Value updated</h1>\n"
+"                The value of %(path)s has been updated to\n"
+"                <pre>\n"
+"                %(value)s\n"
+"                </pre>\n"
+"                "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:300
-msgid "_Restart player"
+#: ../lib/advene/core/webcherry.py:1806
+#, python-format
+msgid ""
+"\n"
+"                    <h1>Value updated</h1>\n"
+"                    The value of %(path)s has been updated to\n"
+"                    <pre>\n"
+"                    %(value)s\n"
+"                    </pre>\n"
+"                    "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:300
-msgid "Restart the player"
+#: ../lib/advene/core/webcherry.py:1817
+#, python-format
+msgid ""
+"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:302
-#, fuzzy
-msgid "Update annotation screenshots"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:302
-#, fuzzy
-msgid "Update screenshots for annotation bounds"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:303
-msgid "Detect shots"
+#: ../lib/advene/core/webcherry.py:1860
+msgid "Cannot create an element in something else than a package."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:303
-msgid "Automatically detect shots"
+#: ../lib/advene/core/webcherry.py:1877
+#, python-format
+msgid "The identifier %s already exists."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:304
-#, fuzzy
-msgid "Select the player plugin"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/core/webcherry.py:1889
+#, python-format
+msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:307
-msgid "No package"
+#: ../lib/advene/core/webcherry.py:1895
+msgid "View created"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:309
-msgid "_Help"
+#: ../lib/advene/core/webcherry.py:1896
+#, python-format
+msgid ""
+"\n"
+"                 <h1>View <em>%(id)s</em> created</h1>\n"
+"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
+"created.</p>\n"
+"                 "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:310
-msgid "Help"
+#: ../lib/advene/core/webcherry.py:1912
+#, python-format
+msgid "Missing %s parameter"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:311
-msgid "Get support"
+#: ../lib/advene/core/webcherry.py:1915
+#, python-format
+msgid "Relation type %s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:312
-msgid "Check for updates"
+#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
+#, fuzzy, python-format
+msgid "Annotation %s does not exist"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/core/webcherry.py:1928
+#, python-format
+msgid ""
+"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
+"p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:313
-msgid "Display shortcuts"
+#: ../lib/advene/core/webcherry.py:1940
+#, python-format
+msgid ""
+"<p>Error while creating relation between %(member1)s and %(member2)s :</"
+"p><pre>%(error)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:314
+#: ../lib/advene/core/webcherry.py:1943
 #, fuzzy
-msgid "Display logfile"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Relation created"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:314
-#, fuzzy
-msgid "Display log file"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/core/webcherry.py:1944
+#, fuzzy, python-format
+msgid "<h1>Relation <em>%s</em> created</h1>"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:315
-msgid "Open logfile folder"
+#: ../lib/advene/core/webcherry.py:1954
+#, python-format
+msgid "Annotation type %s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:315
+#: ../lib/advene/core/webcherry.py:1971
+#, python-format
 msgid ""
-"Display logfile folder. It can help when sending the advene.log file by e-"
-"mail."
+"<p>Error while creating annotation of type %(type)s :<pre>\n"
+"                    %(errortype)s\n"
+"                    %(value)s\n"
+"                    %(traceback)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:316
-msgid "_About"
+#: ../lib/advene/core/webcherry.py:1983
+#, fuzzy, python-format
+msgid "Annotation %s created"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/core/webcherry.py:1985
+#, python-format
+msgid "Error: Cannot create an object of type %s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3750
+#: ../lib/advene/core/webcherry.py:1988
 #, python-format
 msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
+"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
+"code></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:344
-msgid "Open a package file"
+#: ../lib/advene/core/webcherry.py:2001
+msgid "Available actions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:345
-msgid "Save the current package"
+#: ../lib/advene/core/webcherry.py:2010
+#, python-format
+msgid "<li>%(name)s: %(value)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:346
-msgid "Save the package with a new name"
+#: ../lib/advene/core/webcherry.py:2033
+#, python-format
+msgid "<p>Unknown action</p><pre>Action: %s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:347
-msgid "Select movie file..."
+#: ../lib/advene/core/webcherry.py:2040
+msgid "Missing parameter(s) :<ul>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:348
-msgid "Select DVD"
+#: ../lib/advene/core/webcherry.py:2076
+msgid "Advene web resources"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:352
-#, fuzzy
-msgid "Create a text annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:353
-#, fuzzy
-msgid "Create a graphical annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:359
-msgid "List recently opened packages"
+#: ../lib/advene/core/webcherry.py:2082
+msgid "Advene webserver"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:389
-#, fuzzy
-msgid "Snapshotter activity"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/core/webcherry.py:2083
 #, python-format
-msgid "%d queued requests"
+msgid ""
+"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
+"webserver run by %(userid)s on %(serveraddress)s.</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:392
-msgid "Cancel all requests"
+#: ../lib/advene/core/webcherry.py:2090
+msgid ""
+" <p>No package is loaded. You can access the <a href=\"/admin\">server "
+"administration page</a>.<p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:397
-#, fuzzy
-msgid "No snapshotter"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:419
-msgid "No snapshotting activity"
+#: ../lib/advene/core/webcherry.py:2100
+#, python-format
+msgid ""
+"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
+"view</a>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:423
-#, fuzzy
-msgid "Snapshotting"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:440
-#, fuzzy
-msgid "Display application log messages"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/core/webcherry.py:2102
+#, python-format
+msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:482
-msgid "Quicksearch lists"
+#: ../lib/advene/core/webcherry.py:2104
+msgid "the <a href=\"/packages\">loaded packages' data</a>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:488
-msgid "Please specify the lists of elements to be searched."
+#: ../lib/advene/core/webcherry.py:2105
+#, python-format
+msgid ""
+" <p>You can either access %s or the <a href=\"/admin\">server administration "
+"page</a>.<p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:507
+#: ../lib/advene/core/webcherry.py:2107
 #, python-format
 msgid ""
-"Searching on %s.\n"
-"Left click to launch the search, right-click to set the quicksearch options"
+"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
+"fr/advene/\">Advene</a> v. %s.</em></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:508
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
 #, python-format
-msgid "String to search in %s"
+msgid "Cannot start HTTP server: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
-msgid "Tracing : "
+#: ../lib/advene/core/controller.py:375
+msgid "Exception (traceback in console):"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:521
-msgid "off"
+#: ../lib/advene/core/controller.py:408
+msgid "No available GUI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:525
-msgid "on"
+#: ../lib/advene/core/controller.py:427
+msgid "No available event handler"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:545
-msgid "Launch search"
+#: ../lib/advene/core/controller.py:435
+msgid "No available gui"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:550
-msgid "Ignore case"
+#: ../lib/advene/core/controller.py:451
+#, python-format
+msgid "Warning: redefining an existing feature %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:555
+#: ../lib/advene/core/controller.py:583
 #, fuzzy
-msgid "Searched elements"
-msgstr "Arbvido"
+msgid "All annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:625
-msgid "Playing"
+#: ../lib/advene/core/controller.py:585
+msgid "Ids"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:626
-msgid "Pause"
+#: ../lib/advene/core/controller.py:773
+#, python-format
+msgid ""
+"Cannot start the webserver\n"
+"The following processes seem to use the %(port)s port: %(processes)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:627
-msgid "Init"
+#: ../lib/advene/core/controller.py:822 ../lib/advene/core/controller.py:833
+#, python-format
+msgid "Loaded %(uri)s as %(alias)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:629
-msgid "Undefined"
+#: ../lib/advene/core/controller.py:824 ../lib/advene/core/controller.py:836
+#, python-format
+msgid "Cannot load package from file %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:901
-msgid "Enter the new time value"
+#: ../lib/advene/core/controller.py:875
+msgid "Deactivating web server"
 msgstr ""
 
-#: ../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:938
-#, fuzzy
-msgid "Find word"
-msgstr "Dosiero"
+#: ../lib/advene/core/controller.py:992
+#, python-format
+msgid "Cannot get audio volume: %s"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:945
-msgid "Replace by"
+#: ../lib/advene/core/controller.py:1042
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:973
+#: ../lib/advene/core/controller.py:1246
 #, python-format
-msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
+msgid "Found matching video file in moviepath: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:982
-msgid "The video extracting feature is not available."
+#: ../lib/advene/core/controller.py:1287 ../lib/advene/core/controller.py:1289
+msgid "Analysis of "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:985
-#, fuzzy
-msgid "Video export"
-msgstr "Vido"
+#: ../lib/advene/core/controller.py:1489
+msgid "Cannot split the annotation: the given position is outside."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:987
+#: ../lib/advene/core/controller.py:1654
 #, python-format
-msgid "Exporting video montage/fragment to %%(filename)s"
+msgid "Cannot find the template package %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:989
-#, fuzzy
-msgid "Please choose a destination filename"
-msgstr "Elekti ilobretan stilon"
+#: ../lib/advene/core/controller.py:1697
+#, python-format
+msgid "Cannot read the imported package %(uri)s: %(error)s"
+msgstr ""
+
+#: ../lib/advene/core/controller.py:1932
+msgid "Package URI has changed. Reloading package with new URI."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/core/controller.py:1950
 msgid ""
-"No media association is defined in the package. Please use the 'File/"
-"Associate a video file' menu item to associate a media file."
+"Cannot load package: the following annotations do not have Millisecond "
+"fragments:"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1069
+#: ../lib/advene/core/controller.py:1977
 #, 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."
+msgid "Cannot handle master attribute, the package %s is not imported."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1071
+#: ../lib/advene/core/controller.py:1979
 #, python-format
-msgid ""
-"You are now working with the following video:\n"
-"%s"
+msgid "Checking master package %s for not yet imported elements."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1188
+#: ../lib/advene/core/controller.py:2019
 #, fuzzy
-msgid "Open this view..."
+msgid "Standard summary"
 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
+#: ../lib/advene/core/controller.py:2024
 #, fuzzy
-msgid "Transcription of annotations"
-msgstr "Importi transkribon"
+msgid "Default view"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:1227
-msgid "Note-taking editor"
+#: ../lib/advene/core/controller.py:2066
+#, python-format
+msgid ""
+"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1228
-msgid "Active bookmarks"
+#: ../lib/advene/core/controller.py:2156
+#, python-format
+msgid "Got exception %s when stopping player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1229
-msgid "Schema editor"
+#: ../lib/advene/core/controller.py:2242
+#, python-format
+msgid "Raised exception in update_status: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1233
-msgid "TALES explorer"
+#: ../lib/advene/core/controller.py:2269
+msgid "Unable to start the player."
 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/core/controller.py:2478
+#, fuzzy, python-format
+msgid "Comment on set of %d annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:1239
-#, fuzzy
-msgid "Create or open a comment view"
+#: ../lib/advene/core/controller.py:2480
+#, fuzzy, python-format
+msgid "Comment on %s"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:1242
+#: ../lib/advene/core/controller.py:2484
+#, python-format
 msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
+"<h1>Comment on %(title)s</h1>\n"
+"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
+"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
+"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
+"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
+"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
+"\"%(imgurl)s\" ></img></a></span>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1243
-#, fuzzy
-msgid "Display edition history"
+#: ../lib/advene/core/controller.py:2494
+#, fuzzy, python-format
+msgid "List of %s annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:1244
-msgid "Visualise the activity trace preview"
+#: ../lib/advene/core/controller.py:2529
+#, python-format
+msgid "Cannot export to %(filename)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1245
-msgid "Visualise the activity trace as a timeline"
+#: ../lib/advene/core/controller.py:2544 ../lib/advene/core/controller.py:2553
+#, python-format
+msgid "Error when exporting: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1274
-msgid "The webserver could not be started. Static views cannot be accessed."
+#: ../lib/advene/plugins/featuredetect.py:42
+msgid "Feature detection (face...)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1352
-#, python-format
+#: ../lib/advene/plugins/featuredetect.py:57
+msgid "Sensitivity level."
+msgstr ""
+
+#: ../lib/advene/plugins/featuredetect.py:60
 msgid ""
-"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
-"released</b> on %(date)s, but you are running version %(current)s.\n"
-"You can download the latest version from the Advene website: http://liris."
-"cnrs.fr/advene/</span>"
+"Scale. Original image size will be divided by this factor, in order to speed "
+"up detection."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1357
-#, fuzzy
-msgid "Go to the website"
+#: ../lib/advene/plugins/featuredetect.py:63
+msgid "Classifier"
+msgstr ""
+
+#: ../lib/advene/plugins/featuredetect.py:77
+#, python-format
+msgid "Feature %s"
+msgstr ""
+
+#: ../lib/advene/plugins/featuredetect.py:79
+#, fuzzy, python-format
+msgid "Detected %s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:1363
+#: ../lib/advene/plugins/featuredetect.py:81
 #, fuzzy
-msgid "Advene release"
-msgstr "Advene"
+msgid "Detection started"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/plugins/featuredetect.py:171
 #, python-format
-msgid "You are using a up-to-date version of Advene (%(current)s)."
+msgid "Detected %(count)d feature(s) until %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1369
-msgid "Advene is up-to-date"
-msgstr ""
+#: ../lib/advene/plugins/ted.py:39
+#, fuzzy
+msgid "TED importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:1383
+#: ../lib/advene/plugins/cutter.py:39
 #, fuzzy
-msgid "Choose a color"
-msgstr "Elekti ilobretan stilon"
+msgid "Audio segmentation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:1415
+#: ../lib/advene/plugins/cutter.py:53
+msgid "Volume threshold (in dB, can be negative) before trigger."
+msgstr ""
+
+#: ../lib/advene/plugins/cutter.py:56
+#: ../lib/advene/plugins/soundenveloppe.py:62
 #, fuzzy
-msgid "Select an annotation to loop on it"
+msgid "Channel selection."
+msgstr "Vido"
+
+#: ../lib/advene/plugins/cutter.py:101
+#, fuzzy, python-format
+msgid "Detected %(count)d segments until %(time)s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:1417
+#: ../lib/advene/plugins/cutter.py:119
+#, fuzzy
+msgid "Sound segment"
+msgstr "Dosiero"
+
+#: ../lib/advene/plugins/cutter.py:120
 #, python-format
-msgid "Looping on %s"
+msgid ""
+"Sound segmentation with a threshold of %(threshold)d dB - channel: "
+"%(channel)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1476 ../lib/advene/gui/main.py:2367
+#: ../lib/advene/plugins/cutter.py:138
 #, fuzzy
-msgid "No active dynamic view"
-msgstr "Arbvido"
+msgid "Starting silence detection"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:1487
+#: ../lib/advene/plugins/ttl.py:41
 #, fuzzy
-msgid "Create a new dynamic view."
-msgstr "Arbvido"
+msgid "TurTLe (RDF) importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:1506
+#: ../lib/advene/plugins/shotdetect.py:35
 #, fuzzy
-msgid "Edit the current dynamic view."
-msgstr "Arbvido"
+msgid "Shotdetect importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:1518
-#, fuzzy
-msgid "No dynamic view"
-msgstr "Arbvido"
+#: ../lib/advene/plugins/shotdetect.py:79
+msgid "No shots"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:1550
-msgid "Playing rate"
+#: ../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/gui/main.py:1698
-msgid "History"
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1705
-msgid "Popups"
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1709
+#: ../lib/advene/plugins/pocketsphinx.py:65
 msgid ""
-"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"notebooks to embed various views."
+"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/gui/main.py:1709
-msgid "Information"
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2004
-msgid "Cannot create annotation. There is no schema to put it in."
+#: ../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/gui/main.py:2013
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:86
+#: ../lib/advene/plugins/barcode.py:58
 #, fuzzy
-msgid "Default annotation type"
+msgid "Generating annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:2025
-#, fuzzy
-msgid "Annotation created"
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#: ../lib/advene/plugins/barcode.py:83
+#, fuzzy, python-format
+msgid "%(count)d utterances until %(time)s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:2057
-msgid "Play/Pause [Control-Tab / Control-Space]"
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2058
-#, python-format
-msgid "Rewind (%.02f s) [Control-Left]"
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2059
-#, python-format
-msgid "Forward (%.02f s) [Control-Right]"
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2060
-msgid "Previous frame [Control-Down]"
+#: ../lib/advene/plugins/brltty.py:62
+msgid "Input from the braille table."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2061
-msgid "Next frame [Control-Up]"
+#: ../lib/advene/plugins/brltty.py:66
+msgid "BrlTTY not installed. There will be no braille support."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2062
-msgid "Fullscreen"
+#: ../lib/advene/plugins/brltty.py:78
+msgid "Could not initialize BrlTTY. No braille support."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2214
-#, python-format
-msgid "Screenshot saved to %s"
+#: ../lib/advene/plugins/brltty.py:84
+#, fuzzy
+msgid "Display a message in Braille"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/plugins/brltty.py:85
+msgid "Message to display."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2216
+#: ../lib/advene/plugins/brltty.py:256
 #, python-format
-msgid ""
-"Screenshot saved in\n"
-" %s"
+msgid "BrlTTY connection error: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2218
-#, fuzzy, python-format
-msgid ""
-"Could not save screenshot:\n"
-" %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:2226
-msgid "Save screenshot to..."
+#: ../lib/advene/plugins/brltty.py:273
+msgid "Braille display: "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2244
-msgid "Could not take snapshot with enough precision"
+#: ../lib/advene/plugins/brltty.py:279
+msgid "No message"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2282
+#: ../lib/advene/plugins/transcript.py:32
 #, fuzzy
-msgid "Export package data"
-msgstr "Komentaraj attributoj"
-
-#: ../lib/advene/gui/main.py:2284
-#, fuzzy, python-format
-msgid "Export annotation type %s"
+msgid "Youtube XML importer"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:2286
-#, fuzzy, python-format
-msgid "Export element %s"
-msgstr "Arbvido"
+#: ../lib/advene/plugins/transcript.py:69
+#, fuzzy
+msgid "Importing transcript"
+msgstr "Vidi komentajxojn sur templinio"
 
-#: ../lib/advene/gui/main.py:2312
+#: ../lib/advene/plugins/aeidon_import.py:48
 #, fuzzy
-msgid "Export format"
+msgid "Aeidon (subtitles) importer"
 msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:2349
+#: ../lib/advene/plugins/anvil.py:35
 #, fuzzy
-msgid " (modified)"
-msgstr "Komentaraj attributoj"
-
-#: ../lib/advene/gui/main.py:2352
-#, python-format
-msgid "Activate %s"
-msgstr ""
+msgid "Anvil importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:2523
-msgid "Saved workspace"
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2575
-msgid "Restoring workspace..."
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2581
-#, python-format
-msgid "Do you wish to restore the %s workspace ?"
-msgstr ""
+#: ../lib/advene/plugins/fcp.py:75
+#, fuzzy
+msgid "Importing subtitles"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:2586
+#: ../lib/advene/plugins/fcp.py:90
 #, fuzzy
-msgid "Clear the current workspace"
-msgstr "Defauxlta regularo"
+msgid "Importing clips"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:2607
-#, python-format
-msgid "View %s is not an adhoc view"
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2618
+#: ../lib/advene/plugins/tracebuilder.py:219
 #, python-format
-msgid "Cannot identify the adhoc view %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2632
-msgid "Choose the annotation type to display as transcription."
+msgid "Cannot export to %(fname)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2667
+#: ../lib/advene/plugins/tracebuilder.py:1129
+#: ../lib/advene/plugins/tracebuilder.py:1168
 #, python-format
-msgid ""
-"Error: unable to find an edit popup for %(element)s:\n"
-"%(error)s"
+msgid "Cannot export to %(host)s:%(port)s %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2675
+#: ../lib/advene/plugins/tracebuilder.py:1143
 #, fuzzy, python-format
-msgid "Editing %s"
-msgstr "Importi dosieron"
+msgid "Cannot send data to %(host)s:%(port)s %(error)s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:2687
+#: ../lib/advene/plugins/tracebuilder.py:1191
 #, fuzzy, python-format
-msgid "Comment view (%s)"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/main.py:2754
-#, python-format
-msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
-msgstr ""
+msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:2765
+#: ../lib/advene/plugins/tracebuilder.py:1197
 #, python-format
-msgid "Activating package %s"
+msgid "%(nb)s events sent to %(host)s:%(port)s during session."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2793
-#, python-format
-msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
-msgstr ""
+#: ../lib/advene/plugins/goodshotdetector.py:45
+#, fuzzy
+msgid "Shot detection (Delakis version)"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:2826
-msgid "Do you want to restore the saved workspace ?"
+#: ../lib/advene/plugins/goodshotdetector.py:60
+msgid "Cache histogram alongside video files."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2833
-msgid "Advene"
-msgstr "Advene"
-
-#: ../lib/advene/gui/main.py:3038
-#, python-format
-msgid "Got exception %s. Trying to continue."
+#: ../lib/advene/plugins/goodshotdetector.py:63
+msgid ""
+"Parameter profile: safe will detect less cuts, aggressive will detect more "
+"cuts (but more false ones too). default is a compromise."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3062 ../lib/advene/gui/main.py:3083
-#: ../lib/advene/gui/main.py:4033
-#, fuzzy
-msgid "Unknown"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:3153
+#: ../lib/advene/plugins/goodshotdetector.py:77
 #, python-format
-msgid ""
-"The package(s) %s are modified.\n"
-"Save them now?"
+msgid "Shot (%s profile)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3203
-msgid "Choose an annotation type."
+#: ../lib/advene/plugins/goodshotdetector.py:78
+#: ../lib/advene/plugins/shotdetectapp.py:87
+msgid "Detected shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3247
-msgid "No annotation type is defined."
+#: ../lib/advene/plugins/goodshotdetector.py:83
+msgid "Loading histogram"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3256
+#: ../lib/advene/plugins/goodshotdetector.py:146
 #, fuzzy
-msgid "Creating a new type."
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Computing hdiff"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:3260
+#: ../lib/advene/plugins/goodshotdetector.py:153
 #, fuzzy
-msgid "Title of the new type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Detecting cuts"
+msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/main.py:3261
-msgid ""
-"Id of the new type. It is generated from the title, but you may change it if "
-"necessary."
+#: ../lib/advene/plugins/goodshotdetector.py:180
+msgid "Detecting dissolves"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3265
+#: ../lib/advene/plugins/goodshotdetector.py:265
 #, fuzzy
-msgid "Specify the content-type for the annotation type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "Extracting histogram"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:3267
+#: ../lib/advene/plugins/webannotation_import.py:45
 #, fuzzy
-msgid "Content type"
-msgstr "Defauxlta regularo"
+msgid "WebAnnotation importer"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3274 ../lib/advene/gui/main.py:3383
-msgid "Create a new schema"
+#: ../lib/advene/plugins/webannotation_import.py:63
+#: ../lib/advene/plugins/owl_import.py:58 ../lib/advene/util/importer.py:363
+#, python-format
+msgid "Converted from %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3287
-msgid "Choose an existing schema for the new type, or create a new one"
+#: ../lib/advene/plugins/montagerenderer.py:43
+msgid "Cannot register montage renderer: Gnonlin plugins are not present."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3290 ../lib/advene/gui/main.py:3398
-msgid "Specify the schema title"
+#: ../lib/advene/plugins/transcriber.py:40
+#, fuzzy
+msgid "Transcriber importer"
+msgstr "Importi dosieron"
+
+#: ../lib/advene/plugins/transcriber.py:86
+msgid "Parsing section information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3294
-msgid "Title of the new schema"
+#: ../lib/advene/plugins/transcriber.py:254 ../lib/advene/util/importer.py:1520
+msgid "Creating package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3295
-msgid ""
-"Id of the new schema. It is generated from the title, but you may change it "
-"if necessary."
+#: ../lib/advene/plugins/transcriber.py:260 ../lib/advene/util/importer.py:1527
+#, fuzzy
+msgid "Creating annotation types"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/plugins/transcriber.py:265 ../lib/advene/util/importer.py:1533
+msgid "Parsing header information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3318
-msgid ""
-"You specified a annotation-type identifier that already exists. Aborting."
+#: ../lib/advene/plugins/transcriber.py:276
+msgid "Parsing topic and speaker tables information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3336
-msgid "You specified a existing schema identifier. Using the existing schema."
+#: ../lib/advene/plugins/tts.py:77
+msgid "Pronounce a text"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3338
-msgid ""
-"You specified an existing identifier that does not reference a schema. "
-"Aborting."
+#: ../lib/advene/plugins/tts.py:78
+msgid "String to pronounce."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3365
-msgid "Choose a schema."
+#: ../lib/advene/plugins/tts.py:156
+msgid "TTS disabled. Cannot find the application 'festival' in PATH"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3425
-msgid "You specified an existing identifier. Aborting."
+#: ../lib/advene/plugins/tts.py:158
+msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3445
-#, fuzzy, python-format
-msgid "Package %s modified"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/plugins/soundenveloppe.py:40
+#: ../lib/advene/plugins/soundenveloppe.py:139
+#: ../lib/advene/plugins/soundenveloppe.py:141
+#, fuzzy
+msgid "Sound enveloppe"
+msgstr "Dosiero"
 
-#: ../lib/advene/gui/main.py:3446
-#, python-format
-msgid ""
-"The package %s has been modified but not saved.\n"
-"Save it now?"
+#: ../lib/advene/plugins/soundenveloppe.py:56
+msgid "Interval (in ms) at which to take samples."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3456
-#, python-format
-msgid "%s snapshots"
+#: ../lib/advene/plugins/soundenveloppe.py:59
+msgid "Maximum number of samples per annotation."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3457
+#: ../lib/advene/plugins/soundenveloppe.py:111
 #, python-format
-msgid "Do you want to save the snapshots for media %s?"
+msgid "At %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3464 ../lib/advene/gui/main.py:3473
-#: ../lib/advene/gui/main.py:4449
-#, python-format
-msgid "Cannot save imagecache for %(media)s: %(e)s"
-msgstr ""
+#: ../lib/advene/plugins/soundenveloppe.py:158
+#, fuzzy
+msgid "Extracting sound enveloppe"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:3487
-msgid "first frame"
+#: ../lib/advene/plugins/barcode.py:36
+msgid "Cannot register barcode extraction: zbar plugin not found."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3488
-msgid "last frame"
+#: ../lib/advene/plugins/barcode.py:40
+msgid "Barcode (qr-code) extraction"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3496
-#, fuzzy, python-format
-msgid "Click on %(bound)s of %(annotation)s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:3499
-#, fuzzy, python-format
-msgid "Update %(bound)s of %(annotation)s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/plugins/barcode.py:95
+msgid "Barcode"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:3518
-msgid "Click on the frame corresponding to the timestamp value"
+#: ../lib/advene/plugins/barcode.py:97
+msgid "Extracted barcode information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3520
+#: ../lib/advene/plugins/barcode.py:115
 #, fuzzy
-msgid "Set new timestamp value"
-msgstr "Arbvido"
+msgid "Extraction barcodes"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:3527
+#: ../lib/advene/plugins/dcp.py:65
 #, fuzzy
-msgid ""
-"<b>Annotation statistics</b>\n"
-"\n"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "DCP importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:3599
-#, fuzzy
-msgid "Text annotation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/plugins/dcp.py:120
+#, python-format
+msgid "Converting #%(num)d / %(count)d"
+msgstr ""
+
+#: ../lib/advene/plugins/nerd_plugin.py:47
+msgid "NERD (Named Entity Recognition and Disambiguation)"
+msgstr ""
+
+#: ../lib/advene/plugins/nerd_plugin.py:68
+msgid "NERD API key"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:3607 ../lib/advene/gui/main.py:3632
-#, fuzzy
-msgid "Cannot find an appropriate annotation type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/plugins/nerd_plugin.py:82
+msgid "NER service to use"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:3625
+#: ../lib/advene/plugins/nerd_plugin.py:88
 #, fuzzy
-msgid "Graphical annotation"
+msgid "Type of annotation to analyze"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3677
-msgid ""
-"An unsaved template package exists\n"
-"Save it first."
+#: ../lib/advene/plugins/nerd_plugin.py:93
+msgid "Language to analyze"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3686
-msgid "Package modified"
+#: ../lib/advene/plugins/nerd_plugin.py:98
+msgid "Minimum confidence level (between 0.0 and 1.0)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3687
-msgid ""
-"The package that you want to close has been modified but not saved.\n"
-"Save it now?"
-msgstr ""
+#: ../lib/advene/plugins/nerd_plugin.py:103
+#, fuzzy
+msgid "Interpolate position of annotations"
+msgstr "Importi transkribon"
 
-#: ../lib/advene/gui/main.py:3718
-msgid "Load a package"
+#: ../lib/advene/plugins/nerd_plugin.py:108
+msgid "Split by entity type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3727
-msgid ""
-"A video file was selected. Pretend that the user selected 'Select a video "
-"file'..."
+#: ../lib/advene/plugins/nerd_plugin.py:113
+#, fuzzy
+msgid "Store results as markup in the annotation text"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/plugins/nerd_plugin.py:118
+msgid "Create relations between the original annotations and the new ones"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3732
+#: ../lib/advene/plugins/nerd_plugin.py:150
 #, 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?"
+msgid "NERD applied to %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3741
-msgid ""
-"You are trying to load a session file, but there are unsaved packages. "
-"Proceed anyway?"
+#: ../lib/advene/plugins/nerd_plugin.py:208
+#, python-format
+msgid "NERD %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3769 ../lib/advene/gui/main.py:3825
+#: ../lib/advene/plugins/annotationgraph.py:40
 #, fuzzy
-msgid "Do you want to save the current workspace ?"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:3784 ../lib/advene/gui/main.py:3840
-#, fuzzy, python-format
-msgid "Could not save the package: %s"
+msgid "AnnotationGraph importer"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3797
-#, python-format
-msgid "Save the package %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:3810
-msgid "Invalid file extension"
-msgstr ""
+#: ../lib/advene/plugins/shotdetectapp.py:48
+#, fuzzy
+msgid "ShotdetectApp importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:3811
-#, python-format
+#: ../lib/advene/plugins/shotdetectapp.py:59
 msgid ""
-"Your package contains resources,\n"
-"the filename (%s) should have a .azp extension.\n"
-"Should I put the correct extension?"
+"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
+"too many shots are detected, try to increase its value."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3815
-msgid "OK, the resources will be lost."
-msgstr ""
+#: ../lib/advene/plugins/shotdetectapp.py:146
+#, fuzzy, python-format
+msgid "Detected shot #%(num)d at %(pos)s "
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3817
-msgid "Aborting package saving"
-msgstr ""
+#: ../lib/advene/plugins/mpeg7.py:54
+#, fuzzy
+msgid "MPEG7 importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:3851
-msgid "Save the session in..."
-msgstr ""
+#: ../lib/advene/plugins/cinelab.py:76
+#, fuzzy
+msgid "Cinelab importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:3862
+#: ../lib/advene/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
 #, python-format
-msgid "Session saved in %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:3871
-msgid "Do you confirm the creation of annotations matching the DVD chapters?"
+msgid "File %s is not an Advene2 zip package."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3877
-msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
-msgstr ""
+#: ../lib/advene/plugins/cinelab.py:176
+#, fuzzy
+msgid "Converting annotation types"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3885
-msgid "The associated media is not a DVD."
-msgstr ""
+#: ../lib/advene/plugins/cinelab.py:217
+#, fuzzy
+msgid "Converting views"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3896
-#, fuzzy, python-format
-msgid "Processing %s video"
-msgstr "Importi dosieron"
+#: ../lib/advene/plugins/cinelab.py:249
+#, fuzzy
+msgid "Importing annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:3899
+#: ../lib/advene/plugins/owl_import.py:40
 #, fuzzy
-msgid "No associated video file"
-msgstr "Vido"
+msgid "OWL (schema) importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/main.py:3926
-msgid "Standard RuleSet"
+#: ../lib/advene/player/gstreamer.py:421
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4042
-#, python-format
-msgid ""
-"Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
+#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
+#: ../lib/advene/rules/actions.py:120
+msgid "Message to display"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4054
-msgid ""
-"GNU General Public License v. 2\n"
-"See http://www.gnu.org/copyleft/gpl.html for more details"
+#: ../lib/advene/rules/actions.py:48
+msgid "Start the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4056
-msgid "Visit the Advene web site for examples and documentation."
+#: ../lib/advene/rules/actions.py:49
+msgid "Start position (in ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4089 ../lib/advene/gui/main.py:4177
-msgid "Select a movie file"
+#: ../lib/advene/rules/actions.py:52 ../lib/advene/rules/actions.py:384
+msgid "The movie start"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4101
-msgid "Title/Chapter selection"
+#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
+#, fuzzy
+msgid "The annotation begin"
+msgstr "Vidi komentajxojn sur templinio"
+
+#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
+#, fuzzy
+msgid "The annotation end"
+msgstr "Vidi komentajxojn sur templinio"
+
+#: ../lib/advene/rules/actions.py:64
+msgid "Goto position (in ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
-msgid "Select a video stream"
+#: ../lib/advene/rules/actions.py:73
+msgid "Stop the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4144
-msgid "Enter the address of a video stream"
+#: ../lib/advene/rules/actions.py:80
+msgid "Pause the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4148
-#, python-format
-msgid "Successfully extracted the video stream address (%s) from the url.\n"
+#: ../lib/advene/rules/actions.py:87
+msgid "Resume the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4173
-msgid "Package properties"
+#: ../lib/advene/rules/actions.py:94
+msgid "Take a snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4174
-msgid "Author name"
+#: ../lib/advene/rules/actions.py:101
+msgid "Display a caption"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4175
-#, fuzzy
-msgid "Package creation date"
-msgstr "Komentaraj attributoj"
+#: ../lib/advene/rules/actions.py:103
+msgid "Duration of the caption"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4176
+#: ../lib/advene/rules/actions.py:131
 #, fuzzy
-msgid "Package title"
-msgstr "Komentaraj attributoj"
+msgid "Display a graphical shape"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4177
-msgid "Associated media"
+#: ../lib/advene/rules/actions.py:132
+msgid "Shape (square, circle, triangle)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4178
-msgid "Media duration in ms"
+#: ../lib/advene/rules/actions.py:134
+msgid "x-position (percentage of screen)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4237
-msgid "Paths"
+#: ../lib/advene/rules/actions.py:135
+msgid "y-position (percentage of screen)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4239
-msgid "Data"
+#: ../lib/advene/rules/actions.py:136
+msgid "Size (arbitrary units)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4239
-msgid "Standard directory for data files"
+#: ../lib/advene/rules/actions.py:137
+msgid "Duration of the display in ms"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4240
-msgid "Movie path"
+#: ../lib/advene/rules/actions.py:145
+msgid "A square"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4240
-#, python-format
-msgid ""
-"List of directories (separated by %s) to search for movie files (_ means "
-"package directory)"
+#: ../lib/advene/rules/actions.py:146
+msgid "A circle"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Imagecache"
+#: ../lib/advene/rules/actions.py:147
+msgid "A triangle"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Directory for storing the snapshot cache"
+#: ../lib/advene/rules/actions.py:150
+msgid "White"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Player"
+#: ../lib/advene/rules/actions.py:151
+msgid "Black"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Directory of the video player"
+#: ../lib/advene/rules/actions.py:152
+msgid "Red"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4243
-#, fuzzy
-msgid "Shotdetect"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/gui/main.py:4243
-#, fuzzy
-msgid "Shotdetect application"
-msgstr "Importi dosieron"
+#: ../lib/advene/rules/actions.py:153
+msgid "Green"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4245
-msgid "GUI"
+#: ../lib/advene/rules/actions.py:154
+msgid "Blue"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4246
-msgid "Interface language (after restart)"
+#: ../lib/advene/rules/actions.py:155
+msgid "Yellow"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4246
-msgid ""
-"Language used for the interface (necessitates to restart the application)"
+#: ../lib/advene/rules/actions.py:158
+msgid "At the top of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4252
-msgid "Record activity trace"
+#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
+msgid "In the middle of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Expert mode"
+#: ../lib/advene/rules/actions.py:160
+msgid "At the bottom of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Offer advanced possibilities"
+#: ../lib/advene/rules/actions.py:163
+msgid "At the left of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Prefer WYSIWYG"
+#: ../lib/advene/rules/actions.py:181
+msgid "Zero the volume during the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Use WYSIWYG editors when possible (HTML, SVG)"
+#: ../lib/advene/rules/actions.py:188
+msgid "Zero the volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
-msgid "Player control in edit popups"
+#: ../lib/advene/rules/actions.py:195
+msgid "Restore the volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
-msgid ""
-"Enable generic player controls in edit windows. This may be undesirable "
-"since it overloads some standard text-edition behaviours (esp. control-left/"
-"right)."
+#: ../lib/advene/rules/actions.py:203
+msgid "Activate a STBV"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4257
-msgid "Open popups"
+#: ../lib/advene/rules/actions.py:204
+msgid "STBV id"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4258
-msgid "Where should we open adhoc views?"
+#: ../lib/advene/rules/actions.py:213
+msgid "Send a user event"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
-msgid "as a popup window"
+#: ../lib/advene/rules/actions.py:214
+msgid "Identifier"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
-msgid "embedded east of the video"
+#: ../lib/advene/rules/actions.py:215
+msgid "Delay in ms before sending the event."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4261
-msgid "embedded west of the video"
+#: ../lib/advene/rules/actions.py:225
+msgid "Open a URL in the web browser"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
-msgid "embedded south of the video"
-msgstr ""
+#: ../lib/advene/rules/actions.py:235
+#, fuzzy
+msgid "Open a static view"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:4263
-msgid "embedded at the right of the window"
+#: ../lib/advene/rules/actions.py:246
+msgid "Set the audio volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History size"
+#: ../lib/advene/rules/actions.py:247
+msgid "Volume level (from 0 to 100)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History filelist size limit"
+#: ../lib/advene/rules/actions.py:256
+msgid "Set the playing rate"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember window size"
+#: ../lib/advene/rules/actions.py:257
+msgid "Rate (100: normal rate, 200: twice slower)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember the size of opened windows"
+#: ../lib/advene/rules/actions.py:266
+msgid "Play a sound resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Bookmark snapshot width"
+#: ../lib/advene/rules/actions.py:267
+msgid "Clip id"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Width of the snapshots representing bookmarks"
+#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
+msgid "Volume (0..100)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Bookmark snapshot precision"
+#: ../lib/advene/rules/actions.py:269 ../lib/advene/rules/actions.py:283
+msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Precision (in ms) of the displayed bookmark snapshots."
-msgstr ""
+#: ../lib/advene/rules/actions.py:280
+#, fuzzy
+msgid "Play a sound file"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4272
-msgid "General"
-msgstr ""
+#: ../lib/advene/rules/actions.py:281
+#, fuzzy
+msgid "Sound filename"
+msgstr "Dosiero"
 
-#: ../lib/advene/gui/main.py:4273
-msgid "Weekly update check"
-msgstr ""
+#: ../lib/advene/rules/actions.py:293
+#, fuzzy
+msgid "Set a state variable"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:4274
-msgid "On exit,"
+#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
+msgid "State variable name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4275
-msgid "How to handle screenshots on exit"
-msgstr ""
+#: ../lib/advene/rules/actions.py:295
+#, fuzzy
+msgid "State value"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:4276
-msgid "never save screenshots"
+#: ../lib/advene/rules/actions.py:305
+msgid "Increment a state variable"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4277
-msgid "always save screenshots"
+#: ../lib/advene/rules/actions.py:315
+msgid "Clear all state variables"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4278
-msgid "ask before saving screenshots"
+#: ../lib/advene/rules/actions.py:330
+#, python-format
+msgid "Error in the evaluation of the parameter %s:"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4280
-msgid "Auto-save"
+#: ../lib/advene/rules/actions.py:551
+#, python-format
+msgid "Cannot find the stbv %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4281
-msgid "Data auto-save functionality"
+#: ../lib/advene/rules/actions.py:647
+msgid "The set_rate method is unavailable."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4282
-msgid "is desactivated"
+#: ../lib/advene/rules/actions.py:657
+msgid "No 'soundclips' resource folder in the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4283
-msgid "is done automatically"
+#: ../lib/advene/rules/actions.py:683
+msgid "Full volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4284
-msgid "is done after confirmation"
+#: ../lib/advene/rules/actions.py:684
+msgid "Left"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Auto-save interval (in s)"
+#: ../lib/advene/rules/actions.py:686
+msgid "Right"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Interval (in seconds) between package auto-saves"
+#: ../lib/advene/rules/importer.py:29
+msgid "Event history importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4288
-#, fuzzy
-msgid "Workspace"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:4290
-msgid "On package saving,"
+#: ../lib/advene/rules/elements.py:141
+msgid "is equal to"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4291
-msgid "Do you wish to save the default workspace with the package?"
+#: ../lib/advene/rules/elements.py:142
+msgid "is different from"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4292
-#, fuzzy
-msgid "never save the current workspace"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:4293
-#, fuzzy
-msgid "always save the current workspace"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:4294
-#, fuzzy
-msgid "ask before saving the current workspace"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:4296
-msgid "Auto-validation of edited elements"
+#: ../lib/advene/rules/elements.py:143
+msgid "contains"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4296
-msgid "Automatically validate modified elements when saving the package."
+#: ../lib/advene/rules/elements.py:144
+msgid "is greater than"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4298
-msgid "On package load,"
+#: ../lib/advene/rules/elements.py:145
+msgid "is lower than"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4299
-msgid "Do you wish to load the workspace saved with the package?"
+#: ../lib/advene/rules/elements.py:146
+msgid "matches the regexp"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4300
-#, fuzzy
-msgid "never load the saved workspace"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:4301
-#, fuzzy
-msgid "always load the saved workspace"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:4302
-#, fuzzy
-msgid "ask before loading the saved workspace"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:4305
-#, fuzzy
-msgid "Video Player"
-msgstr "Vido"
-
-#: ../lib/advene/gui/main.py:4306
-msgid "Autostart"
+#: ../lib/advene/rules/elements.py:147
+msgid "is before"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4306
-msgid ""
-"Automatically start the player when loading a media file (either directly or "
-"through a package)"
+#: ../lib/advene/rules/elements.py:148
+msgid "meets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4307
-#, fuzzy
-msgid "Fulscreen timestamp"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/main.py:4307
-msgid "Display the timestamp over the video when in fullscreen mode"
+#: ../lib/advene/rules/elements.py:149
+msgid "overlaps"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4308
-#, fuzzy
-msgid "Enable captions"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:4308
-#, fuzzy
-msgid "Enable captions over the video"
-msgstr "Vidi komentajxojn sur templinio"
+#: ../lib/advene/rules/elements.py:150
+msgid "during"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4309
-#, fuzzy
-msgid "Caption font"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/rules/elements.py:151
+msgid "starts"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4309
-msgid "TrueType font for captions"
+#: ../lib/advene/rules/elements.py:152
+msgid "finishes"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG"
+#: ../lib/advene/rules/elements.py:157
+msgid "is not true"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG captions over the video"
+#: ../lib/advene/rules/elements.py:158
+msgid "is true"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4312
-msgid "Enable snapshots"
+#: ../lib/advene/rules/elements.py:162
+msgid "Basic conditions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width"
+#: ../lib/advene/rules/elements.py:163
+msgid "Allen relations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width in pixels."
+#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
+msgid "Unknown type for overlaps comparison"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity"
+#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
+msgid "Unknown type for during comparison"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity level. -1 for no messages."
+#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
+#, fuzzy, python-format
+msgid "Unknown action %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/rules/elements.py:522
+#, python-format
+msgid "Unknown parameter %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4317
-msgid "Devices"
+#: ../lib/advene/rules/elements.py:527
+#, fuzzy
+msgid "Unknown actions"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/rules/elements.py:972
+msgid "Start of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4319
-msgid "Standard"
+#: ../lib/advene/rules/elements.py:973
+msgid "Cancel of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4321
-msgid "DVD drive"
+#: ../lib/advene/rules/elements.py:974
+msgid "Destruction of the edit window of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4321
-msgid "Drive letter for the DVD"
+#: ../lib/advene/rules/elements.py:975
+msgid "Validation of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4322
-msgid "GDI"
+#: ../lib/advene/rules/elements.py:976
+msgid "Ending editing of a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4323
-msgid "Direct X"
+#: ../lib/advene/rules/elements.py:977
+msgid "Beginning of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4325
-msgid "DVD device"
+#: ../lib/advene/rules/elements.py:978
+msgid "End of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4325
-msgid "Device for the DVD"
+#: ../lib/advene/rules/elements.py:979
+msgid "Creation of a new annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4326
-msgid "X11"
+#: ../lib/advene/rules/elements.py:980
+msgid "Ending editing of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4327
-#, fuzzy
-msgid "XVideo"
-msgstr "Vido"
-
-#: ../lib/advene/gui/main.py:4328
-msgid "GL"
+#: ../lib/advene/rules/elements.py:981
+msgid "Suppression of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output"
+#: ../lib/advene/rules/elements.py:982
+msgid "Activation of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output module"
+#: ../lib/advene/rules/elements.py:983
+msgid "Deactivation of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4332
+#: ../lib/advene/rules/elements.py:984
 #, fuzzy
-msgid "Recorder options"
+msgid "Merging of two annotations"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4333
+#: ../lib/advene/rules/elements.py:985
 #, fuzzy
-msgid "Audio input"
-msgstr "Vido"
+msgid "Moving an annotation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4333
-msgid "Device name for audio input (with gstrecorder plugin)"
+#: ../lib/advene/rules/elements.py:986
+msgid "Activation of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record video"
+#: ../lib/advene/rules/elements.py:987
+msgid "Deactivation of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record both video and audio"
+#: ../lib/advene/rules/elements.py:988
+msgid "Creation of a new relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4337
-msgid "<i>Experimental</i>"
+#: ../lib/advene/rules/elements.py:989
+msgid "Ending editing of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4338
-msgid "Embed the caption scroller below the video"
+#: ../lib/advene/rules/elements.py:990
+msgid "Suppression of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4339
-msgid "Embed the caption view below the video"
+#: ../lib/advene/rules/elements.py:991
+msgid "Creation of a new view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4341
-msgid "Time-related"
+#: ../lib/advene/rules/elements.py:992
+msgid "Ending editing of a view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4342
-#, fuzzy
-msgid "Time format"
-msgstr "Arbvido"
+#: ../lib/advene/rules/elements.py:993
+msgid "Suppression of a view"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4342
-msgid "Format used to display timecodes"
+#: ../lib/advene/rules/elements.py:994
+msgid "Creation of a new query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4356
-#, fuzzy
-msgid "Default FPS"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/rules/elements.py:995
+msgid "Ending editing of a query"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4357
-msgid ""
-"Default FPS (frame-per-second) value, when entering or displaying timestamps "
-"with frame numbers."
+#: ../lib/advene/rules/elements.py:996
+msgid "Suppression of a query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4358
-#, fuzzy
-msgid "Time increment"
-msgstr "Arbvido"
+#: ../lib/advene/rules/elements.py:997
+msgid "Creation of a new schema"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4358
-msgid ""
-"Skip duration, when using control-left/right or forward/rewind buttons (in "
-"ms)."
+#: ../lib/advene/rules/elements.py:998
+msgid "Ending editing of a schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4359
-#, fuzzy
-msgid "Second time increment"
-msgstr "Arbvido"
+#: ../lib/advene/rules/elements.py:999
+msgid "Suppression of a schema"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4359
-msgid "Skip duration, when using control-shift-left/right (in ms)."
+#: ../lib/advene/rules/elements.py:1001
+msgid "Ending editing an annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4360
-#, fuzzy
-msgid "Third time increment"
-msgstr "Arbvido"
+#: ../lib/advene/rules/elements.py:1002
+msgid "Suppression of an annotation type"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4360
-msgid "Skip duration, when using control-shift-up/down (in ms)."
+#: ../lib/advene/rules/elements.py:1003
+msgid "Creation of a new relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4361
-msgid "Custom Up/Down"
+#: ../lib/advene/rules/elements.py:1004
+msgid "Ending editing a relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4361
-msgid ""
-"Use third time increment for up/down navigation without having to hold shift."
+#: ../lib/advene/rules/elements.py:1005
+msgid "Suppression of a relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4363
-msgid "Scroll increment"
+#: ../lib/advene/rules/elements.py:1006
+msgid "Creation of a new resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4363
-msgid ""
-"On most annotations, control+scrollwheel will increment/decrement their "
-"bounds by this value (in ms)."
+#: ../lib/advene/rules/elements.py:1007
+msgid "Ending editing of a resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4364
-msgid "Second scroll increment"
+#: ../lib/advene/rules/elements.py:1008
+msgid "Suppression of a resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4364
-msgid ""
-"On most annotations, control+shift+scrollwheel will increment/decrement "
-"their bounds by this value (in ms)."
+#: ../lib/advene/rules/elements.py:1009
+#, fuzzy
+msgid "Modification of the tag"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/rules/elements.py:1010
+msgid "Activating a link"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4366
-msgid "Player sync"
+#: ../lib/advene/rules/elements.py:1011
+msgid "Player start"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4366
-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."
+#: ../lib/advene/rules/elements.py:1012
+msgid "Player stop"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4367
-msgid "Timeline parameters"
+#: ../lib/advene/rules/elements.py:1013
+msgid "Player pause"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4368
-msgid "Font size for annotation widgets"
+#: ../lib/advene/rules/elements.py:1014
+msgid "Player resume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4369
-msgid "Button height"
+#: ../lib/advene/rules/elements.py:1015
+msgid "Going to a given position"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4369
-#, fuzzy
-msgid "Height of annotation widgets"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/rules/elements.py:1016
+msgid "Loading a new package"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Interline height"
+#: ../lib/advene/rules/elements.py:1017
+msgid "Activating a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Height of interlines"
+#: ../lib/advene/rules/elements.py:1018
+msgid "Saving the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4372
-#, fuzzy
-msgid "Text content"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/rules/elements.py:1019
+msgid "Start of the dynamic view"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4373
+#: ../lib/advene/rules/elements.py:1020
 #, fuzzy
-msgid "Completion mode"
+msgid "End of the dynamic view"
 msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:4373
-#, fuzzy
-msgid "Enable dynamic completion mode"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:4374
-msgid "Abbreviation mode"
+#: ../lib/advene/rules/elements.py:1021
+msgid "Start of the application"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4374
-#, fuzzy
-msgid "Enable abbreviation mode"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:4375
-#, fuzzy
-msgid "Abbreviations"
-msgstr "Defauxlta regularo"
+#: ../lib/advene/rules/elements.py:1022
+msgid "End of the application"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4375
-msgid ""
-"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
-"followed by its replacement."
+#: ../lib/advene/rules/elements.py:1023
+msgid "User-defined event"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4377
-msgid "Text-To-Speech"
+#: ../lib/advene/rules/elements.py:1024
+msgid "Modification of the associated media"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4378
+#: ../lib/advene/rules/elements.py:1025
 #, fuzzy
-msgid "TTS language"
-msgstr "Interfacaj preferoj"
+msgid "Highlight a bookmark"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4379
-msgid "What language settings should be used for text-to-speech"
-msgstr ""
+#: ../lib/advene/rules/elements.py:1026
+#, fuzzy
+msgid "Unhighlight a bookmark"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:4380
-msgid "English"
+#: ../lib/advene/rules/elements.py:1027
+msgid "Updating duration of the movie"
 msgstr ""
-
-#: ../lib/advene/gui/main.py:4381
-msgid "French"
+
+#: ../lib/advene/rules/elements.py:1028
+msgid "Displaying a popup"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4382
-msgid "Spanish"
+#: ../lib/advene/rules/elements.py:1029
+msgid "Updating a snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4384
-msgid "TTS Encoding"
+#: ../lib/advene/rules/elements.py:1067
+msgid "Player control"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4385
-msgid "What encoding should be used to communicate with the TTS engine"
+#: ../lib/advene/rules/elements.py:1068
+msgid "Audio enrichment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4386
+#: ../lib/advene/rules/elements.py:1069
 #, fuzzy
-msgid "TTS Engine"
-msgstr "Interfacaj preferoj"
+msgid "Image enrichment"
+msgstr "Arbvido"
 
-#: ../lib/advene/gui/main.py:4387
-msgid ""
-"Which TTS engine should be used (modification requires restarting Advene to "
-"take into account)"
+#: ../lib/advene/rules/elements.py:1070
+msgid "External display control"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4388
-msgid "Automatic"
+#: ../lib/advene/rules/elements.py:1071
+msgid "Popup"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4389
-msgid "eSpeak"
+#: ../lib/advene/rules/elements.py:1073
+#, fuzzy
+msgid "State"
+msgstr "Arbvido"
+
+#: ../lib/advene/rules/elements.py:1074
+msgid "GUI actions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4390
-msgid "Custom script with standard input"
+#: ../lib/advene/rules/elements.py:1075
+#, fuzzy
+msgid "Expert"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/util/helper.py:403
+msgid "Annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4391
-msgid "Custom script with arguments"
+#: ../lib/advene/util/helper.py:404
+msgid "Relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4392
-msgid "SAPI"
+#: ../lib/advene/util/helper.py:410
+msgid "Resource Folder"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4393
-msgid "MacOS X say"
+#: ../lib/advene/util/helper.py:446
+msgid "---- Elements ----"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4394
-msgid "Generic (text output)"
+#: ../lib/advene/util/helper.py:452
+msgid "---- Attributes ----"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4438
-msgid "You should restart Advene to take some options into account."
+#: ../lib/advene/util/helper.py:455
+msgid "---- Methods ----"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4447
+#: ../lib/advene/util/helper.py:531
 #, python-format
-msgid "Imagecache saved to %s"
+msgid "Cannot read %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4460
-msgid "Restarting player..."
+#: ../lib/advene/util/helper.py:555
+#, python-format
+msgid ""
+"Error:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4512
-#, fuzzy
-msgid "Advene log"
-msgstr "Advene"
-
-#: ../lib/advene/gui/main.py:4581
-#, fuzzy
-msgid "Select the package to merge"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:4602
-msgid "Saving workspace"
+#: ../lib/advene/util/helper.py:637
+msgid "schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4605
-msgid "Enter a view name to save the workspace"
+#: ../lib/advene/util/helper.py:637
+msgid "schemas"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4606
-#, fuzzy
-msgid "Default workspace"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:4607
-msgid "Open this workspace when opening the package"
+#: ../lib/advene/util/helper.py:638
+msgid "annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4641
-#, python-format
-msgid "Error: the view %s exists and is not a workspace view."
+#: ../lib/advene/util/helper.py:638
+msgid "annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4672
-#, fuzzy, python-format
-msgid "Cannot save default workspace: %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:4682
-msgid "Standard workspace has been saved"
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4689
-msgid "Website export"
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4690
-msgid "Exporting views to a website"
+#: ../lib/advene/util/helper.py:641
+msgid "relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4693
-msgid "Output directory"
+#: ../lib/advene/util/helper.py:641
+msgid "relations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4702
-msgid "Specify the output directory"
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4711
-msgid "Maximum recursion depth"
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation types"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4718
-#, fuzzy
-msgid "Video URL"
-msgstr "Vido"
-
-#: ../lib/advene/gui/main.py:4720
-msgid ""
-"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."
+#: ../lib/advene/util/helper.py:644
+msgid "query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4770
-#, fuzzy
-msgid "Could not export data: "
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:4772
-#, fuzzy, python-format
-msgid "Website export to %s completed"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/gui/main.py:4811
-msgid "This video player is not able to grab specific screenshots"
+#: ../lib/advene/util/helper.py:644
+msgid "queries"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4821
-#, fuzzy, python-format
-msgid "Updating %d snapshots"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:4826
-msgid "No snapshot to update"
+#: ../lib/advene/util/helper.py:645
+msgid "view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4835 ../lib/advene/gui/main.py:4947
-msgid "You first must load a movie into Advene"
+#: ../lib/advene/util/helper.py:645
+msgid "views"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4838 ../lib/advene/gui/main.py:4950
-#, fuzzy, python-format
-msgid "The movie %s does not seem to exist."
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:4895
-msgid "Generating screenshots"
+#: ../lib/advene/util/helper.py:646
+msgid "package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4900
-msgid ""
-"<b>Screenshot generation</b>\n"
-"\n"
-"Screenshots will be captured approximately every 500ms.\n"
-"\n"
-"If the movie was paused or playing, the capture will begin at the current "
-"position. Else, it will begin at the beginning of the movie.\n"
-"Note that the main interface will not be refreshed as long as this window is "
-"open."
+#: ../lib/advene/util/helper.py:646
+msgid "packages"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4941
-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."
+#: ../lib/advene/util/helper.py:658
+#, python-format
+msgid "No %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4981
-msgid ""
-"Cannot import shotdetect output. Did you install the shotdetect software?"
+#: ../lib/advene/util/helper.py:660
+#, python-format
+msgid "1 %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4998
-msgid "Incomplete shots"
+#: ../lib/advene/util/helper.py:662
+#, python-format
+msgid "%(count)d %(plural)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5001
+#: ../lib/advene/util/website_export.py:61
 #, python-format
-msgid "Detected %s shots"
+msgid "%s exists but is not a directory. Cancelling website export"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5103
+#: ../lib/advene/util/website_export.py:67
 #, fuzzy, python-format
-msgid "Could not run shotdetect: %s"
+msgid "%s does not exist"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/main.py:5107
-#, python-format
-msgid "Detecting shots from %s"
+#: ../lib/advene/util/website_export.py:422
+msgid "Starting export"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5160
-#, fuzzy
-msgid "Shot detection"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/gui/main.py:5166
-msgid ""
-"<b>Shot detection</b>\n"
-"\n"
-"Advene will try to detect shots from the currently loaded movie. The "
-"threshold parameter is used to specify the sensitivity of the algorithm, and "
-"should typically be between 50 and 80. If too many shots are detected, try "
-"to augment its value."
+#: ../lib/advene/util/website_export.py:451
+#, python-format
+msgid "Depth %d"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5182
-msgid "Sensitivity"
+#: ../lib/advene/util/website_export.py:455
+#, python-format
+msgid "Depth %(depth)d: processing %(url)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:138
-#, fuzzy
-msgid "Choose the file to insert"
-msgstr "Elekti ilobretan stilon"
-
-#: ../lib/advene/gui/popup.py:146
-msgid "Select a valid identifier"
+#: ../lib/advene/util/website_export.py:477
+msgid "Finalizing"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:147
+#: ../lib/advene/util/website_export.py:511
 #, python-format
 msgid ""
-"The filename %s contains invalid characters\n"
-"that have been replaced.\n"
-"You can modify this identifier if necessary:"
+"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
+"strong></p>"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:158
-#, fuzzy
-msgid "Choose the soundclip to insert"
-msgstr "Elekti ilobretan stilon"
-
-#: ../lib/advene/gui/popup.py:162
+#: ../lib/advene/util/website_export.py:554
 #, fuzzy
-msgid "Choose the directory to insert"
-msgstr "Elekti ilobretan stilon"
-
-#: ../lib/advene/gui/popup.py:177
-msgid "Named-Entity extraction using NERD"
-msgstr ""
+msgid "Export complete"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/popup.py:181
-msgid ""
-"Give the offset to use\n"
-"on specified element.\n"
-"It is in ms and can be\n"
-"either positive or negative."
+#: ../lib/advene/util/importer.py:138
+msgid "Generic importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:225
-#, fuzzy, python-format
-msgid "Replace content in %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/popup.py:228
-#, fuzzy, python-format
-msgid "Replace content in annotations of type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/popup.py:231
-#, fuzzy
-msgid "Replace content in all annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/popup.py:324
-#, python-format
-msgid "Copy id %s"
+#: ../lib/advene/util/importer.py:165
+msgid "Usage: %prog [options] source-file destination-file"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:358
-#, python-format
-msgid ""
-"<b>Statistics about %s</b>\n"
-"\n"
+#: ../lib/advene/util/importer.py:169
+msgid "Specify the offset in ms"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:364
-#, fuzzy, python-format
-msgid "Renumbering annotations of type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/popup.py:371
+#: ../lib/advene/util/importer.py:229
 msgid ""
-"<b>Renumber all annotations according to their order.</b>\n"
-"\n"
-"<i>Note that this action cannot be undone.</i>\n"
-"Replace the first numeric value of the annotation content with the new "
-"annotation number.\n"
-"If no numeric value is found and the annotation is structured, it will "
-"insert the number.\n"
-"If no numeric value is found and the annotation is of type text/plain, it "
-"will overwrite the annotation content.\n"
-"The offset parameter allows you to renumber from a given annotation."
+"Import filter error. The asynchronous API should be used, please report a "
+"bug."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
-msgid "Offset"
+#: ../lib/advene/util/importer.py:231
+msgid ""
+"Import filter error. No conversion method is defined,  please report a bug."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:399
+#: ../lib/advene/util/importer.py:488
+#, fuzzy
+msgid "ExternalApp importer"
+msgstr "Importi dosieron"
+
+#: ../lib/advene/util/importer.py:502
+#, 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:504
 #, fuzzy, python-format
-msgid "Renumbering %d annotations"
+msgid "The file %s does not seem to exist."
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:408
+#: ../lib/advene/util/importer.py:526
 #, fuzzy, python-format
-msgid "Annotation #%d"
+msgid "Could not run %(appname)s: %(msg)s"
 msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:445
-#, python-format
-msgid ""
-"Exporting annotation %(title)s\n"
-"from %(begin)s to %(end)s\n"
-"to %%(filename)s"
-msgstr ""
+#: ../lib/advene/util/importer.py:528
+#, fuzzy, python-format
+msgid "Processing %s"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/popup.py:458
-msgid "Browse"
+#: ../lib/advene/util/importer.py:532
+msgid "Cleaning up..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
-#, fuzzy
-msgid "Open in web browser"
-msgstr "Komentaraj attributoj"
-
-#: ../lib/advene/gui/popup.py:479
-#, fuzzy
-msgid "Search/replace content"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/popup.py:497
-msgid "Desactivate"
+#: ../lib/advene/util/importer.py:652
+msgid "Text importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:514
-msgid "Loop"
+#: ../lib/advene/util/importer.py:665 ../lib/advene/util/importer.py:1195
+msgid "Specify the encoding of the input file (latin1, utf8...)"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:515
-msgid "Duplicate"
+#: ../lib/advene/util/importer.py:668
+msgid "Should the timestamps be encoded relative to the first timestamp?"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:519
-#, fuzzy
-msgid "Save snapshot..."
-msgstr "Defauxlta regularo"
+#: ../lib/advene/util/importer.py:671
+msgid "Unit to consider for integers"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:521
-#, fuzzy
-msgid "Extract video fragment"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/util/importer.py:674
+msgid ""
+"What timestamps are present in a line (only begin, both begin and end, or "
+"automatic recognition)"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:551
-msgid "Incoming"
+#: ../lib/advene/util/importer.py:817
+msgid "lsdvd importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:567
-msgid "Outgoing"
+#: ../lib/advene/util/importer.py:844
+msgid "Processing data"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:582
+#: ../lib/advene/util/importer.py:862 ../lib/advene/util/importer.py:922
 #, fuzzy
-msgid "Related annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "DVD Chapter"
+msgstr "Importi DVD cxapitrojn"
 
-#: ../lib/advene/gui/popup.py:589
-msgid "Incoming relations"
+#: ../lib/advene/util/importer.py:866
+msgid "Launching lsdvd..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:596
-msgid "Outgoing relations"
+#: ../lib/advene/util/importer.py:878
+msgid "chaplin importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:612
-#, python-format
-msgid "Begin: %s"
+#: ../lib/advene/util/importer.py:936
+msgid "Xi importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:614
-#, python-format
-msgid "End: %s"
+#: ../lib/advene/util/importer.py:1005
+msgid "ELAN importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:615
-#, fuzzy, python-format
-msgid "Duration: %s"
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/popup.py:622
-msgid "Members:"
+#: ../lib/advene/util/importer.py:1058
+#, python-format
+msgid "Converting tier %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:635
-#, fuzzy
-msgid "Edit package properties..."
-msgstr "Redakti komentarajn attributojn"
-
-#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
-#, fuzzy, python-format
-msgid "%d annotations(s) - statistics"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
-#, fuzzy
-msgid "Create a new static view..."
-msgstr "Arbvido"
+#: ../lib/advene/util/importer.py:1159
+msgid "Processing time slots"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:865
+#: ../lib/advene/util/importer.py:1174
 #, fuzzy
-msgid "Create a new dynamic view..."
-msgstr "Arbvido"
+msgid "Fixing forward references"
+msgstr "Interfacaj preferoj"
 
-#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
-msgid "Create a new annotation..."
+#: ../lib/advene/util/importer.py:1176
+msgid "Creating relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
-msgid "Create a new schema..."
+#: ../lib/advene/util/importer.py:1188
+msgid "Subtitle (SRT) importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
-msgid "Create a new query..."
+#: ../lib/advene/util/importer.py:1257
+#, python-format
+msgid "Subtitles from %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:651
-msgid "Create a new folder..."
+#: ../lib/advene/util/importer.py:1270
+msgid "PRAAT importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:652
-msgid "Create a new resource file..."
+#: ../lib/advene/util/importer.py:1360
+msgid "CMML importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:653
-msgid "Insert a new resource file..."
+#: ../lib/advene/util/importer.py:1423
+msgid "Parsing clip information"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:654
-msgid "Insert a new resource directory..."
+#: ../lib/advene/util/importer.py:1523
+msgid "Creating CMML schema"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
-msgid "Insert a soundclip..."
+#: ../lib/advene/util/importer.py:1547
+msgid "Parsing stream information"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:676
-msgid "Play sound"
-msgstr ""
+#: ../lib/advene/util/importer.py:1581
+#, fuzzy
+msgid "IRI importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/popup.py:686
-msgid "Create a new annotation type..."
+#: ../lib/advene/util/importer.py:1590
+msgid "Generate one type per view"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:688
-msgid "Create a new relation type..."
+#: ../lib/advene/util/importer.py:1610
+#, python-format
+msgid "Parsing ensemble %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:699
+#: ../lib/advene/util/importer.py:1621
 #, python-format
-msgid "A caption dynamic view for %s already seems to exist."
+msgid "Parsing decoupage %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:708
-#, fuzzy, python-format
-msgid "Caption %s annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/util/importer.py:1657
+msgid "Parsing views"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:740
-#, fuzzy
-msgid "Create a comment view"
-msgstr "Arbvido"
+#: ../lib/advene/util/importer.py:1705 ../lib/advene/util/importer.py:1794
+msgid "Initializing package"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/util/importer.py:1743
 #, fuzzy
-msgid "Generate a caption dynamic view..."
-msgstr "Arbvido"
+msgid "IRIData importer"
+msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/popup.py:742
-msgid "Display as transcription"
+#: ../lib/advene/util/importer.py:1757
+msgid "Parsing sound values"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/util/importer.py:1769
 #, fuzzy
-msgid "Display annotations in table"
-msgstr "Vidi komentajxojn sur templinio"
+msgid "Creating annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:744
 #, fuzzy
-msgid "Export to another format..."
-msgstr "Importi datumo de alia ???"
+#~ msgid "Tree view"
+#~ msgstr "Arbvido"
 
-#: ../lib/advene/gui/popup.py:746
-msgid "Extract Named Entities..."
-msgstr ""
+#, fuzzy
+#~ msgid "Could not run shotdetect: %s"
+#~ msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:752
 #, fuzzy
-msgid "Delete all annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#~ msgid "Shot detection"
+#~ msgstr "Importi dosieron"
 
-#: ../lib/advene/gui/popup.py:753
 #, fuzzy
-msgid "Renumber annotations..."
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#~ msgid "Min duration"
+#~ msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/popup.py:754
 #, fuzzy
-msgid "Shot validation view..."
-msgstr "Defauxlta regularo"
+#~ msgid "Max duration"
+#~ msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/popup.py:766
-#, python-format
-msgid "A follow dynamic view for %s already seems to exist."
-msgstr ""
+#, fuzzy
+#~ msgid "Mean duration"
+#~ msgstr "Elekti ilobretan stilon"
 
-#: ../lib/advene/gui/popup.py:775
-#, fuzzy, python-format
-msgid "Follow %s relation-type"
-msgstr "Defauxlta regularo"
+#, fuzzy
+#~ msgid "Total duration"
+#~ msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:784
 #, fuzzy
-msgid "Follow the relation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#~ msgid "Display"
+#~ msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:804
-msgid "Delete all relations..."
-msgstr ""
+#, fuzzy
+#~ msgid "Remove relation type"
+#~ msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/popup.py:805
 #, fuzzy
-msgid "Create montage from related annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#~ msgid "Create HTML view"
+#~ msgstr "Arbvido"
 
-#: ../lib/advene/gui/popup.py:806
 #, fuzzy
-msgid "Create dynamic view following relations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+#~ msgid "Remove annotation type"
+#~ msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:824
-msgid "Apply query on..."
-msgstr ""
+#, fuzzy
+#~ msgid "New annotation type"
+#~ msgstr "Krei komentajxojn de DVD cxapitroj"
 
-#: ../lib/advene/gui/popup.py:849
-msgid "Activate view"
-msgstr ""
+#, fuzzy
+#~ msgid "New relation type"
+#~ msgstr "Defauxlta regularo"
 
-#: ../lib/advene/gui/popup.py:851
 #, fuzzy
-msgid "Open adhoc view"
-msgstr "Defauxlta regularo"
+#~ msgid "Choose a filename to export the schema as PDF"
+#~ msgstr "Arbvido"
 
 #, fuzzy
 #~ msgid "Adjust annotation bounds..."
@@ -9547,10 +9480,6 @@ msgstr "Defauxlta regularo"
 #~ msgstr "Importi transkribon"
 
 #, fuzzy
-#~ msgid "Export trace"
-#~ msgstr "Importi dosieron"
-
-#, fuzzy
 #~ msgid "No valid importer"
 #~ msgstr "Importi dosieron"
 
diff --git a/po/es.po b/po/es.po
index 8455359..1e9da66 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: 2014-07-09 17:25+0200\n"
+"POT-Creation-Date: 2017-05-09 11:32+0200\n"
 "PO-Revision-Date: 2014-04-18 21:12-0700\n"
 "Last-Translator: Emmanuel Ayala Mexicano <emmanuelayalamexicano at gmail.com>\n"
 "Language-Team: advene at liris.cnrs.fr\n"
@@ -17,17 +17,6 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.6.4\n"
 
-#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
-#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
-#, python-format
-msgid "File %s is not an Advene zip package."
-msgstr "El archivo %s no es un paquete zip de Advene."
-
-#: ../lib/advene/model/zippackage.py:243
-#, python-format
-msgid "Directory %s is not an extracted Advene zip package."
-msgstr "El directorio %s no es una extracción de un paquete zip de Advene."
-
 #: ../lib/advene/model/bundle.py:296
 #, python-format
 msgid "%s not in bundle"
@@ -42,3300 +31,3118 @@ msgstr "Lista de elementos no tipificados"
 msgid "List of %s elements"
 msgstr "Lista de %s elementos"
 
-#: ../lib/advene/core/controller.py:263 ../lib/advene/rules/actions.py:36
-#: ../lib/advene/gui/plugins/actions.py:40
-msgid "Display a message"
-msgstr "Muestra un mensaje"
+#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
+#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
+#, python-format
+msgid "File %s is not an Advene zip package."
+msgstr "El archivo %s no es un paquete zip de Advene."
 
-#: ../lib/advene/core/controller.py:264
-#: ../lib/advene/gui/plugins/actions.py:41
-#: ../lib/advene/gui/plugins/actions.py:53
-#: ../lib/advene/gui/plugins/actions.py:71
-#: ../lib/advene/gui/plugins/actions.py:86
-#: ../lib/advene/gui/plugins/actions.py:102
-#: ../lib/advene/gui/plugins/actions.py:203
-msgid "String to display."
-msgstr "Cadena a mostrar"
+#: ../lib/advene/model/zippackage.py:243
+#, python-format
+msgid "Directory %s is not an extracted Advene zip package."
+msgstr "El directorio %s no es una extracción de un paquete zip de Advene."
 
-#: ../lib/advene/core/controller.py:362
-msgid "Exception (traceback in console):"
-msgstr "Excepción (registro en consola):"
+#: ../lib/advene/gui/widget.py:293
+#, python-format
+msgid "Set of %s annotations"
+msgstr "Conjunto de %s anotaciones"
 
-#: ../lib/advene/core/controller.py:393
-msgid "No available GUI"
-msgstr "No hay interfaz gráfica de usuario disponible"
+#: ../lib/advene/gui/widget.py:1017
+#: ../lib/advene/gui/views/transcription.py:472
+#: ../lib/advene/gui/edit/montage.py:60
+msgid "Play"
+msgstr "Reproducir"
 
-#: ../lib/advene/core/controller.py:412
-msgid "No available event handler"
-msgstr "No hay un control de evento disponible"
+#: ../lib/advene/gui/widget.py:1021 ../lib/advene/gui/edit/timeadjustment.py:77
+msgid "Refresh snapshot"
+msgstr "Refrescar captura"
 
-#: ../lib/advene/core/controller.py:420
-msgid "No available gui"
-msgstr "No hay una intefaz gráfica de usuario disponible"
+#: ../lib/advene/gui/widget.py:1025
+msgid "Save as..."
+msgstr "Guardar como..."
 
-#: ../lib/advene/core/controller.py:436
-#, python-format
-msgid "Warning: redefining an existing feature %s"
-msgstr "Advertencia: Definiendo de nuevo una característica existente %s"
+#: ../lib/advene/gui/widget.py:1030
+msgid "Use current player position"
+msgstr "Utiliza la posición actual del reproductor"
 
-#: ../lib/advene/core/controller.py:568
-msgid "All annotations"
-msgstr "Todas las anotaciones"
+#: ../lib/advene/gui/widget.py:1036
+msgid "Adjust timestamp"
+msgstr "Ajustar la marca de tiempo"
 
-#: ../lib/advene/core/controller.py:569 ../lib/advene/gui/edit/rules.py:358
-#, python-format
-msgid "Annotations of type %s"
-msgstr "Anotaciones de tipo %s"
+#: ../lib/advene/gui/main.py:189 ../lib/advene/gui/main.py:298
+msgid "_Select player"
+msgstr "_Selecciona reproductor"
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/imports.py:129
-#: ../lib/advene/gui/edit/imports.py:130
-msgid "Views"
-msgstr "Vistas"
+#: ../lib/advene/gui/main.py:191 ../lib/advene/gui/main.py:283
+msgid "_View"
+msgstr "_Vista"
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/elements.py:521
-msgid "Tags"
-msgstr "Etiquetas"
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:300
+msgid "Packages"
+msgstr "Paquetes"
 
-#: ../lib/advene/core/controller.py:570
-msgid "Ids"
-msgstr "Ids"
+#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:242
+msgid "Open recent"
+msgstr "Abrir recientes"
 
-#: ../lib/advene/core/controller.py:747
-#, python-format
-msgid ""
-"Cannot start the webserver\n"
-"The following processes seem to use the %(port)s port: %(processes)s"
-msgstr ""
-"No se puede iniciar el servidor web \n"
-"Los siguientes procesos parecen utilizar el %(port)s puerto: %(processes)s"
+#: ../lib/advene/gui/main.py:236
+msgid "Input from the keyboard (function keys)"
+msgstr "Ingresar del teclado (teclas de función)"
 
-#: ../lib/advene/core/controller.py:797 ../lib/advene/core/controller.py:808
-#, python-format
-msgid "Loaded %(uri)s as %(alias)s"
-msgstr "Cargados %(uri)s como %(alias)s"
+#: ../lib/advene/gui/main.py:239
+msgid "_File"
+msgstr "_Archivo"
 
-#: ../lib/advene/core/controller.py:799 ../lib/advene/core/controller.py:811
-#, python-format
-msgid "Cannot load package from file %(uri)s: %(error)s"
-msgstr "No se puede cargar el paquete del archivo %(uri)s: %(error)s"
+#: ../lib/advene/gui/main.py:240
+msgid "_New package"
+msgstr "_Nuevo paquete"
 
-#: ../lib/advene/core/controller.py:850
-msgid "Deactivating web server"
-msgstr "Desactivando el servidor web"
+#: ../lib/advene/gui/main.py:240
+msgid "Create a new package"
+msgstr "Crea un nuevo paquete"
 
-#: ../lib/advene/core/controller.py:970
-#, python-format
-msgid "Cannot get audio volume: %s"
-msgstr "No se puede obtener el volumen del audio: %s"
+#: ../lib/advene/gui/main.py:241
+msgid "_Open package"
+msgstr "_Abrir paquete"
 
-#: ../lib/advene/core/controller.py:1020
-#, python-format
-msgid "Cannot open Advene URL %s: the webserver is not running."
-msgstr ""
-"No se puede abrir el URL %s de Advene: el servidor web no está corriendo. "
+#: ../lib/advene/gui/main.py:241
+msgid "Open a package"
+msgstr "Abrir un paquete"
 
-#: ../lib/advene/core/controller.py:1128 ../lib/advene/gui/edit/merge.py:272
-msgid "None"
-msgstr "Ninguno"
+#: ../lib/advene/gui/main.py:242
+msgid "Show recently opened packages"
+msgstr "Mostrar paquetes recientemente abiertos"
 
-#: ../lib/advene/core/controller.py:1222
-#, python-format
-msgid "Found matching video file in moviepath: %s"
-msgstr "Encontre video concordante en la ruta: %s"
+#: ../lib/advene/gui/main.py:243
+msgid "_Save package"
+msgstr "_Guardar paquete"
 
-#: ../lib/advene/core/controller.py:1263 ../lib/advene/core/controller.py:1265
-msgid "Analysis of "
-msgstr "Análisis de"
+#: ../lib/advene/gui/main.py:243
+msgid "Save the package"
+msgstr "Guardar el paquete"
 
-#: ../lib/advene/core/controller.py:1465
-msgid "Cannot split the annotation: the given position is outside."
-msgstr ""
-"No se puede dividir la anotación: la posición especificada se encuentra "
-"fuera. "
+#: ../lib/advene/gui/main.py:244
+msgid "Save package as..."
+msgstr "Guardar paquete como..."
 
-#: ../lib/advene/core/controller.py:1630
-#, python-format
-msgid "Cannot find the template package %(filename)s: %(error)s"
-msgstr "No se encuentra el paquete de plantilla %(filename)s: %(error)s"
+#: ../lib/advene/gui/main.py:244
+msgid "Save the package as..."
+msgstr "Guardar el paquete como..."
 
-#: ../lib/advene/core/controller.py:1672
-#, python-format
-msgid "Cannot read the imported package %(uri)s: %(error)s"
-msgstr "No se puede leer el paquete importado %(uri)s: %(error)s"
+#: ../lib/advene/gui/main.py:245
+msgid "Close package"
+msgstr "Cerrar paquete"
 
-#: ../lib/advene/core/controller.py:1907
-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/gui/main.py:245
+msgid "Close the package"
+msgstr "Cerrar el paquete"
 
-#: ../lib/advene/core/controller.py:1925
-msgid ""
-"Cannot load package: the following annotations do not have Millisecond "
-"fragments:"
-msgstr ""
-"No puedo cargar el paquete: las anotaciones siguientes no tienen fragmentos "
-"de milisegundos:"
+#: ../lib/advene/gui/main.py:247
+msgid "Save session"
+msgstr "Guardar sesión"
 
-#: ../lib/advene/core/controller.py:1952
-#, python-format
-msgid "Cannot handle master attribute, the package %s is not imported."
-msgstr ""
-"No se puede manejar el atributo maestro, el paquete %s no está importado. "
+#: ../lib/advene/gui/main.py:247
+msgid "Save the current session (list of opened packages)"
+msgstr "Guardar la sesión actual (lista de paquetes abiertos)"
 
-#: ../lib/advene/core/controller.py:1954
-#, python-format
-msgid "Checking master package %s for not yet imported elements."
-msgstr ""
-"Revisando el paquete maestro %s para los elementos que todavía no son "
-"importados. "
+#: ../lib/advene/gui/main.py:248
+msgid "Save workspace"
+msgstr "Guardar espacio de trabajo"
 
-#: ../lib/advene/core/controller.py:1994
-msgid "Standard summary"
-msgstr "Resumen estándar."
+#: ../lib/advene/gui/main.py:249
+msgid "...as package view"
+msgstr "...como paquete de vista"
 
-#: ../lib/advene/core/controller.py:1999
-msgid "Default view"
-msgstr "Vista por omision"
+#: ../lib/advene/gui/main.py:250
+msgid "...as standard workspace"
+msgstr "...como espacio de trabajo estándar"
 
-#: ../lib/advene/core/controller.py:2041
-#, python-format
-msgid ""
-"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
+#: ../lib/advene/gui/main.py:250
+msgid "Use the current layout as standard workspace in the future"
 msgstr ""
-"Ciclo infinito en STBV %(name)s: la vista %(imp)s es invocada muchas veces. "
+"Usa el despliegue actual como espacio de trabajo predeterminado en el futuro"
 
-#: ../lib/advene/core/controller.py:2131
-#, python-format
-msgid "Got exception %s when stopping player."
-msgstr "Hubo excepcion %s cuando se detuvo el reproductor."
+#: ../lib/advene/gui/main.py:252
+msgid "Associate a video _File"
+msgstr "Asociar un archivo de video _F"
 
-#: ../lib/advene/core/controller.py:2214
-#, python-format
-msgid "Raised exception in update_status: %s"
-msgstr "Excepcion levantada en update_status: %s"
+#: ../lib/advene/gui/main.py:252
+msgid "Associate a video file"
+msgstr "Asociar un archivo de video"
 
-#: ../lib/advene/core/controller.py:2241
-msgid "Unable to start the player."
-msgstr "Incapaz de inicializar el reproductor."
+#: ../lib/advene/gui/main.py:253
+msgid "Associate a _DVD"
+msgstr "Asociar un _DVD"
 
-#: ../lib/advene/core/controller.py:2448
-#, python-format
-msgid "Comment on set of %d annotations"
-msgstr "Comentarios sobre el conjunto de %d anotaciones"
+#: ../lib/advene/gui/main.py:253
+msgid "Associate a chapter from a DVD"
+msgstr "Asociar un capítulo de un DVD"
 
-#: ../lib/advene/core/controller.py:2450
-#, python-format
-msgid "Comment on %s"
-msgstr "Comentar en %s"
+#: ../lib/advene/gui/main.py:254
+msgid "Associate a _Video stream"
+msgstr "Asociar una corriente de _Video"
 
-#: ../lib/advene/core/controller.py:2454
-#, python-format
-msgid ""
-"<h1>Comment on %(title)s</h1>\n"
-"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
-"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
-"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
-"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
-"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
-"\"%(imgurl)s\" ></img></a></span>"
-msgstr ""
-"<h1>Comentar en %(title)s</h1>\n"
-"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
-"presentation=\"link:snapshot\"><a title=\"Clic para reproducir el video en "
-"Advene\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
-"\"%(href)s\"><img title=\"Clic aquí para reproducir\" width=\"160\" height="
-"\"100\" tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
-"\"%(imgurl)s\" ></img></a></span>"
+#: ../lib/advene/gui/main.py:254
+msgid "Enter a video stream address"
+msgstr "Ingresar una dirección de flujo de video"
 
-#: ../lib/advene/core/controller.py:2464
-#, python-format
-msgid "List of %s annotations"
-msgstr "Lista de %s anotaciones"
+#: ../lib/advene/gui/main.py:256
+msgid "_Import File"
+msgstr "_Importar Archivo"
 
-#: ../lib/advene/core/controller.py:2499
-#, python-format
-msgid "Cannot export to %(filename)s: %(e)s"
-msgstr "No se puede exportar a %(filename)s: %(e)s"
+#: ../lib/advene/gui/main.py:256
+msgid "Import data from an external source"
+msgstr "Importar datos de una fuente externa"
 
-#: ../lib/advene/core/controller.py:2514 ../lib/advene/core/controller.py:2523
-#, python-format
-msgid "Error when exporting: %s"
-msgstr "Error mientras se exportaba: %s"
+#: ../lib/advene/gui/main.py:257
+msgid "_Process video"
+msgstr "_Procesar video"
 
-#: ../lib/advene/core/controller.py:2525 ../lib/advene/gui/views/table.py:406
-#: ../lib/advene/gui/views/table.py:536
-#, python-format
-msgid "Data exported to %s"
-msgstr "Datos exportados a %s"
+#: ../lib/advene/gui/main.py:257
+msgid "Import data from video processing algorithms"
+msgstr "Importar datos de algoritmos de procesamiento de vídeo"
 
-#: ../lib/advene/core/webcherry.py:51
-msgid "The webserver requires version 3.0 of CherryPy at least."
-msgstr "El servidor web require como mínimo la versión 3.0 de CherryPy."
+#: ../lib/advene/gui/main.py:259
+msgid "Merge package"
+msgstr "Unir paquete"
 
-#: ../lib/advene/core/webcherry.py:167
-#, python-format
-msgid ""
-"\n"
-"            <p>\n"
-"            <a href=\"/admin\">Server administration</a> |\n"
-"            <a href=\"/media\">Media control</a> |\n"
-"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
-"            </p>\n"
-"            Location: %(locationbar)s\n"
-"            <hr>\n"
-"            "
-msgstr ""
-"\n"
-"            <p>\n"
-"            <a href=\"/admin\">Administracion de servidor</a> |\n"
-"            <a href=\"/media\">Control media</a> |\n"
-"            <a href=\"%(path)s?mode=raw\">Vista inicial</a>\n"
-"            </p>\n"
-"            Locacion: %(locationbar)s\n"
-"            <hr>\n"
-"            "
+#: ../lib/advene/gui/main.py:259
+msgid "Merge elements from another package"
+msgstr "Editar elementos importados de otros paquetes"
 
-#: ../lib/advene/core/webcherry.py:227
-msgid "Unspecified Error"
-msgstr "Error no especificado"
+#: ../lib/advene/gui/main.py:260
+msgid "Import _DVD chapters"
+msgstr "Importar capitulos del DVD"
 
-#: ../lib/advene/core/webcherry.py:228
-#, python-format
-msgid ""
-"\n"
-"        <h1>Error</h1>\n"
-"        <p>An error occurred:</p>\n"
-"        %s\n"
-"        "
-msgstr ""
-"\n"
-"        <h1>Error</h1>\n"
-"        <p>Un error ocurrió:</p>\n"
-"        %s\n"
-"        "
+#: ../lib/advene/gui/main.py:260
+msgid "Create annotations based on DVD chapters"
+msgstr "Crear anotaciones basadas en los capitulos del DVD"
 
-#: ../lib/advene/core/webcherry.py:261
-msgid "<h1>No available mediaplayer</h1>"
-msgstr "<h1>No hay reproductor media disponible</h1>"
+#: ../lib/advene/gui/main.py:262
+msgid "_Export..."
+msgstr "_Exportar..."
 
-#: ../lib/advene/core/webcherry.py:265
-#, python-format
-msgid ""
-"\n"
-"            <h1>Current STBV: %(currentstbv)s</h1>\n"
-"\n"
-"            <h1>Player status</h1>\n"
-"            <table border=\"1\">\n"
-"            <tr>\n"
-"            <td>Current position</td><td>%(position)s</td>\n"
-"            <td>Duration</td><td>%(duration)s</td>\n"
-"            <td>Player status</td><td>%(status)s</td>\n"
-"            </tr>\n"
-"            </table>\n"
-"            "
-msgstr ""
-"\n"
-"            <h1>STBV Actual: %(currentstbv)s</h1>\n"
-"\n"
-"            <h1>Estado del reproductor</h1>\n"
-"            <table border=\"1\">\n"
-"            <tr>\n"
-"            <td>Posición actual</td><td>%(position)s</td>\n"
-"            <td>Tamaño de entrada</td><td>%(duration)s</td>\n"
-"            <td>Estado del reproductor</td><td>%(status)s</td>\n"
-"            </tr>\n"
-"            </table>\n"
-"            "
+#: ../lib/advene/gui/main.py:262
+msgid "Export data to another format"
+msgstr "Importar datos de una fuente externa"
 
-#: ../lib/advene/core/webcherry.py:284
-msgid "<h1>No playlist</h1>"
-msgstr "<h1>No hay lista de reproduccion</h1>"
+#: ../lib/advene/gui/main.py:263
+msgid "_Website export..."
+msgstr "_Exportar sitio web..."
 
-#: ../lib/advene/core/webcherry.py:286
-#, python-format
-msgid ""
-"<h1>Current playlist</h1>\n"
-"                <ul>%s</ul>"
-msgstr ""
-"<h1>Lista de reproduccion actual</h1>\n"
-"                <ul>%s</ul>"
+#: ../lib/advene/gui/main.py:263
+msgid "Export views to a website"
+msgstr "Exportar vistas a un sitio web"
 
-#: ../lib/advene/core/webcherry.py:288
-msgid ""
-"\n"
-"                <form action=\"/media/play\" method=\"GET\">\n"
-"                Starting pos: <input type=\"text\" name=\"position\" value="
-"\"0\">\n"
-"                <input type=\"submit\" value=\"Play\">\n"
-"                </form>\n"
-"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
-"\">Pause</a><br>\n"
-"                "
-msgstr ""
-"\n"
-"                <form action=\"/media/play\" method=\"GET\">\n"
-"                Posicion inicial: <input type=\"text\" name=\"position\" "
-"value=\"0\">\n"
-"                <input type=\"submit\" value=\"Play\">\n"
-"                </form>\n"
-"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
-"\">Pausa</a><br>\n"
-"                "
+#: ../lib/advene/gui/main.py:265
+msgid "_Quit"
+msgstr "Salir _Q"
 
-#: ../lib/advene/core/webcherry.py:295
-msgid ""
-"<hr />\n"
-"            <form action=\"/media/load\" method=\"GET\">\n"
-"            Add a new file (<em>dvd</em> to play a DVD):\n"
-"            <input type=\"text\" name=\"filename\">\n"
-"            <input type=\"submit\" value=\"Add\">\n"
-"            </form>"
-msgstr ""
-"<hr />\n"
-"            <form action=\"/media/load\" method=\"GET\">\n"
-"            Anadir un nuevo archivo(<em>dvd</em> to play a DVD):\n"
-"            <input type=\"text\" name=\"filename\">\n"
-"            <input type=\"submit\" value=\"Add\">\n"
-"            </form>"
+#: ../lib/advene/gui/main.py:267
+msgid "_Edit"
+msgstr "_Editar"
 
-#: ../lib/advene/core/webcherry.py:301
-msgid ""
-"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
-msgstr ""
-"<h3><a href=\"/media/snapshot\">Accesar a los paquetes de fotos actuales </"
-"h3>"
+#: ../lib/advene/gui/main.py:268
+msgid "_Undo"
+msgstr "_Deshacer"
 
-#: ../lib/advene/core/webcherry.py:310
-#, python-format
-msgid "Unknown STBV identifier: %s"
-msgstr "Identificador STBV desconocido: %s"
+#: ../lib/advene/gui/main.py:269
+msgid "_Find"
+msgstr "Encontrar _F"
 
-#: ../lib/advene/core/webcherry.py:385
-msgid "Media information"
-msgstr "Informacion Media"
+#: ../lib/advene/gui/main.py:270
+msgid "_Delete"
+msgstr "Eliminar _D"
 
-#: ../lib/advene/core/webcherry.py:398
-msgid "File added"
-msgstr "Archivo anadido"
+#: ../lib/advene/gui/main.py:271
+msgid "Create"
+msgstr "Crear"
 
-#: ../lib/advene/core/webcherry.py:399
-#, python-format
-msgid "<p><strong>%s has been added to the playlist</strong></p>"
-msgstr "<p><strong>%s ha sido anadida a la lista de reproduccion</strong></p>"
+#: ../lib/advene/gui/main.py:272 ../lib/advene/gui/main.py:3309
+#: ../lib/advene/util/helper.py:405
+msgid "Schema"
+msgstr "Esquema"
 
-#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
-msgid "Access to packages snapshots"
-msgstr "Accesar a paquetes de fotografias"
+#: ../lib/advene/gui/main.py:273 ../lib/advene/gui/edit/rules.py:1091
+#: ../lib/advene/rules/actions.py:236 ../lib/advene/util/helper.py:408
+msgid "View"
+msgstr "Vista"
 
-#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
-msgid "Unknown package alias"
-msgstr "Alias de paquete desconocido"
+#: ../lib/advene/gui/main.py:274 ../lib/advene/gui/popup.py:459
+#: ../lib/advene/util/helper.py:409
+msgid "Query"
+msgstr "Busqueda"
 
-#: ../lib/advene/core/webcherry.py:426
-#, python-format
-msgid "Available snapshots for %s"
-msgstr "Fotos disponibles para %s"
+#: ../lib/advene/gui/main.py:275 ../lib/advene/util/helper.py:406
+msgid "Annotation Type"
+msgstr "Tipo de anotacion"
 
-#: ../lib/advene/core/webcherry.py:432
-#, python-format
-msgid ""
-"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
-"a></p>"
-msgstr ""
-"<p><a href=\"/media/snapshot/%s?mode=inline\">Mostrar con imagenes en linea</"
-"a></p>"
+#: ../lib/advene/gui/main.py:276 ../lib/advene/util/helper.py:407
+msgid "Relation Type"
+msgstr "Tipo de relacion"
 
-#: ../lib/advene/core/webcherry.py:439
-msgid "Done"
-msgstr "Hecho"
+#: ../lib/advene/gui/main.py:280
+msgid "P_ackage properties"
+msgstr "P_ropiedades del paquete"
 
-#: ../lib/advene/core/webcherry.py:441
-msgid "Pending"
-msgstr "Pendiente"
+#: ../lib/advene/gui/main.py:280
+msgid "Edit package properties"
+msgstr "Editar las propiedades del paquete"
 
-#: ../lib/advene/core/webcherry.py:487
-#, python-format
-msgid "Unknown annotation id: %s"
-msgstr "Id de anotación desconocido: %s"
+#: ../lib/advene/gui/main.py:281
+msgid "P_references"
+msgstr "P_referencias"
 
-#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
-#, python-format
-msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
-msgstr "No se puede activar stbvid %(stbvid)s: %(error)s"
+#: ../lib/advene/gui/main.py:281
+msgid "Interface preferences"
+msgstr "Preferencias de interfaz"
 
-#: ../lib/advene/core/webcherry.py:675
-msgid "<p>No GUI is available."
-msgstr "<p>No hay GUI disponible."
+#: ../lib/advene/gui/main.py:285
+msgid "_Start Web Browser"
+msgstr "_Inicia el explorador Web"
 
-#: ../lib/advene/core/webcherry.py:677
-#, python-format
-msgid "<p>Opened adhoc views: %s</p>"
-msgstr "<p>Vistas adhoc actuales: %s</p>"
+#: ../lib/advene/gui/main.py:285
+msgid "Start the web browser"
+msgstr "_Inicia el explorador Web"
 
-#: ../lib/advene/core/webcherry.py:678
-msgid "<p>Available adhoc views:</p><ul>"
-msgstr "<p>Vistas adhoc disponibles:</p><ul>"
+#: ../lib/advene/gui/main.py:287
+msgid "Simplify interface"
+msgstr "Simplificar interfaz"
 
-#: ../lib/advene/core/webcherry.py:699
-#, python-format
-msgid "<p>Current stbv: %s</p>"
-msgstr "<p>STBV actual: %s</p>"
+#: ../lib/advene/gui/main.py:287
+msgid "Simplify the application interface (toggle)"
+msgstr "Simplificar la interfaz de la aplicación (conmutar)"
 
-#: ../lib/advene/core/webcherry.py:700
-#, python-format
-msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
-msgstr "<p>Puedes activar el siguiente STBV:</p><ul>%s</ul>"
-
-#: ../lib/advene/core/webcherry.py:702
-msgid "Activate and play"
-msgstr "Activa y reproduce"
+#: ../lib/advene/gui/main.py:288
+msgid "Evaluator"
+msgstr "Evaluador"
 
-#: ../lib/advene/core/webcherry.py:708
-msgid "Application information"
-msgstr "Informacion de aplicacion"
+#: ../lib/advene/gui/main.py:288
+msgid "Open python evaluator window"
+msgstr "Abre la ventana del evaluador de Python"
 
-#: ../lib/advene/core/webcherry.py:778
-msgid "Missing element id parameter"
-msgstr "Hace falta el elemento parámetro id"
+#: ../lib/advene/gui/main.py:289 ../lib/advene/gui/main.py:4061
+msgid "Webserver log"
+msgstr "Bitácora del servidor web"
 
-#: ../lib/advene/core/webcherry.py:782
-#, python-format
-msgid "No existing element with id %s"
-msgstr "No existe el elemento con el id %s"
+#: ../lib/advene/gui/main.py:292
+msgid "_Player"
+msgstr "_Reproductor"
 
-#: ../lib/advene/core/webcherry.py:791
-#, python-format
-msgid "<p>The GUI view %s does not exist.</p>"
-msgstr "<p>La vista GUI %s no existe.</p>"
+#: ../lib/advene/gui/main.py:293
+msgid "Go to _Time"
+msgstr "Ir al _Tiempo"
 
-#: ../lib/advene/core/webcherry.py:798
-msgid "Invalid request"
-msgstr "Petición no válida"
+#: ../lib/advene/gui/main.py:293
+msgid "Goto a specified time code"
+msgstr "Ir a un código de tiempo especificado"
 
-#: ../lib/advene/core/webcherry.py:803
-msgid "Invalid configuration variable name"
-msgstr "Nombre de variable de configuración no válido"
+#: ../lib/advene/gui/main.py:294
+msgid "Save _ImageCache"
+msgstr "Guarda _ImagenCache"
 
-#: ../lib/advene/core/webcherry.py:815
-msgid "Invalid value"
-msgstr "Valor no válido"
+#: ../lib/advene/gui/main.py:294
+msgid "Save the contents of the ImageCache to disk"
+msgstr "Guarda los contenidos de la ImagenCache a disco"
 
-#: ../lib/advene/core/webcherry.py:819
-#, python-format
-msgid "Unsupported method %s"
-msgstr "Método no soportado %s"
+#: ../lib/advene/gui/main.py:295
+msgid "Reset ImageCache"
+msgstr "Restablecer ImageCache"
 
-#: ../lib/advene/core/webcherry.py:845
-#, python-format
-msgid ""
-"\n"
-"        <h1>Authorized hosts</h1>\n"
-"        <table border=\"1\">\n"
-"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
-"        %s\n"
-"        </table>\n"
-"        <form method=\"GET\">\n"
-"        Add a new hostname to the list :<br>\n"
-"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
-"\"Add\">\n"
-"        </form>\n"
-"        "
-msgstr ""
-"\n"
-"        <h1>Hosts autorizados</h1>\n"
-"        <table border=\"1\">\n"
-"        <tr><th>Host</th><th>Dir. IP </th><th>Acción</th></tr>\n"
-"        %s\n"
-"        </table>\n"
-"        <form method=\"GET\">\n"
-"        Añade un nuevo nombre de host a la lista :<br>\n"
-"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
-"\"Add\">\n"
-"        </form>\n"
-"        "
+#: ../lib/advene/gui/main.py:295
+msgid "Reset the ImageCache"
+msgstr "Restablecer la ImageCache"
 
-#: ../lib/advene/core/webcherry.py:859
-msgid "Access control"
-msgstr "Control de acceso"
+#: ../lib/advene/gui/main.py:296
+msgid "_Restart player"
+msgstr "_Reinicia reproductor"
 
-#: ../lib/advene/core/webcherry.py:864
-msgid "Access control - add a hostname"
-msgstr "Control de acceso - Agrega un nombre de equipo"
+#: ../lib/advene/gui/main.py:296
+msgid "Restart the player"
+msgstr "Reiniciar el reproductor"
 
-#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
-#, python-format
-msgid "<strong>Error: %s is an invalid hostname.</strong>"
-msgstr "<strong>Error: %s es un hostname no valido.</strong>"
+#: ../lib/advene/gui/main.py:297
+msgid "Update annotation screenshots"
+msgstr "Actualizar las capturas de anotaciones"
 
-#: ../lib/advene/core/webcherry.py:875
-#, python-format
-msgid "<p>Added %s to authorized hosts list.</p>"
-msgstr "<p>Añadido %s a la lista de hosts autorizados.</p>"
+#: ../lib/advene/gui/main.py:297
+msgid "Update screenshots for annotation bounds"
+msgstr "Actualizar las capturas de los límites de anotación"
 
-#: ../lib/advene/core/webcherry.py:881
-msgid "Access control - delete a hostname"
-msgstr "Control de acceso - Elimina un nombre de equipo"
+#: ../lib/advene/gui/main.py:298
+msgid "Select the player plugin"
+msgstr "Selecciona el plugin del reproductor"
 
-#: ../lib/advene/core/webcherry.py:889
-msgid "<strong>Cannot remove the localhost access.</strong>"
-msgstr ""
-"<strong>No se puede remover el acceso al equipo local - localhost</strong>"
+#: ../lib/advene/gui/main.py:301
+msgid "No package"
+msgstr "No paquete"
 
-#: ../lib/advene/core/webcherry.py:894
-#, python-format
-msgid "<p>Removed %s from authorized hosts list.</p>"
-msgstr "<p>Removido %s de la lista de hosts autorizados.</p>"
+#: ../lib/advene/gui/main.py:303
+msgid "_Help"
+msgstr "_Ayuda"
 
-#: ../lib/advene/core/webcherry.py:896
-#, python-format
-msgid "<p>%s is not in authorized hosts list.</p>"
-msgstr "<p>%s no se encuentra en la lista de equipos autorizados.</p>"
+#: ../lib/advene/gui/main.py:304
+msgid "Help"
+msgstr "Ayuda"
 
-#: ../lib/advene/core/webcherry.py:945
-msgid "Server Administration"
-msgstr "Administracion del Servidor"
+#: ../lib/advene/gui/main.py:305
+msgid "Get support"
+msgstr "Obtener soporte"
 
-#: ../lib/advene/core/webcherry.py:953
-#, python-format
-msgid ""
-"\n"
-"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
-"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
-"        <p><a href=\"/action\">List available actions</a></p>\n"
-"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
-"        <p><a href=\"/media\">Media control</a></p>\n"
-"        <p><a href=\"/application\">Display GUI status</a></p>\n"
-"        <p><a href=\"/admin/list\">List available files</a></p>\n"
-"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
-"p>\n"
-"        <p>Display mode : %(displaymode)s</p>\n"
-"        <hr>\n"
-"        <p>Load a package :\n"
-"        <form action=\"/admin/load\" method=\"GET\">\n"
-"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
-"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
-"        <input type=\"submit\" value=\"Load\" />\n"
-"        </form>\n"
-"        </body></html>\n"
-"        "
-msgstr ""
-"\n"
-"        <p><a href=\"/admin/access\">Actualizar la lista de acceso</a></p>\n"
-"        <p><a href=\"/admin/methods\">Lista de los métodos TALES "
-"disponibles</a></p>\n"
-"        <p><a href=\"/action\">Lista de acciones disponibles</a></p>\n"
-"        <p><a href=\"/admin/reset\">Restablecer el servidor</a></p>\n"
-"        <p><a href=\"/media\">Control de Medios</a></p>\n"
-"        <p><a href=\"/application\">Mostrar el estado de la interfaz gráfica "
-"de usuario</a></p>\n"
-"        <p><a href=\"/admin/list\">Lista los archivos disponibles</a></p>\n"
-"        <p><a href=\"/packages\">Lista los paquetes cargados</a> "
-"(%(packagelist)s)</p>\n"
-"        <p>Modo de visualización : %(displaymode)s</p>\n"
-"        <hr>\n"
-"        <p>Cargar un paquete :\n"
-"        <form action=\"/admin/load\" method=\"GET\">\n"
-"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
-"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
-"        <input type=\"submit\" value=\"Cargar\" />\n"
-"        </form>\n"
-"        </body></html>\n"
-"        "
+#: ../lib/advene/gui/main.py:306
+msgid "Check for updates"
+msgstr "Revisar actualizaciones"
 
-#: ../lib/advene/core/webcherry.py:983
-msgid "Available files"
-msgstr "Archivos disponibles"
+#: ../lib/advene/gui/main.py:307
+msgid "Display shortcuts"
+msgstr "Mostrar tomas"
 
-#: ../lib/advene/core/webcherry.py:1009
-msgid "You should specify an alias"
-msgstr "Debes de especificar un alias"
+#: ../lib/advene/gui/main.py:308
+msgid "Display logfile"
+msgstr "Mostrar bitácora (logfile)"
 
-#: ../lib/advene/core/webcherry.py:1014
-msgid "You should specify an uri"
-msgstr "Debes de especificar una uri"
+#: ../lib/advene/gui/main.py:308
+msgid "Display log file"
+msgstr "Mostrar bitácora (log file)"
 
-#: ../lib/advene/core/webcherry.py:1020
-#, python-format
-msgid "Package %s loaded"
-msgstr "Paquete %s cargado"
+#: ../lib/advene/gui/main.py:309
+msgid "Open logfile folder"
+msgstr "Abrir archivo de bitácoras (logfile)"
 
-#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
-#, python-format
+#: ../lib/advene/gui/main.py:309
 msgid ""
-"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
-"the <a href=\"/packages\">package list</a>."
+"Display logfile folder. It can help when sending the advene.log file by e-"
+"mail."
 msgstr ""
-"<p>Ir al <a href=\"/packages/%(alias)s\">%(alias)s</a> paquete o a la <a "
-"href=\"/packages\">lista de paquetes</a>."
+"Mostrar el folder de las bitácoras. Puede ser de ayuda cuando se mande el "
+"archivo advene.log por e-mail."
 
-#: ../lib/advene/core/webcherry.py:1024
-#, python-format
-msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
-msgstr "<p>No se puede cargar el paquete %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:310
+msgid "_About"
+msgstr "_Acerca"
 
-#: ../lib/advene/core/webcherry.py:1035
+#: ../lib/advene/gui/main.py:332 ../lib/advene/gui/main.py:3789
 #, python-format
-msgid "Package %s deleted"
-msgstr "Paquete %s borrado"
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+"No se puede cargar el paquete %(filename)s:\n"
+"%(error)s"
 
-#: ../lib/advene/core/webcherry.py:1036
-msgid "<p>Go to the <a href=\"/packages\">package list</a>."
-msgstr "<p>Ir a la<a href=\"/packages\">lista de paquetes</a>."
+#: ../lib/advene/gui/main.py:340
+msgid "Open a package file"
+msgstr "Abre un archivo de paquete"
 
-#: ../lib/advene/core/webcherry.py:1039
-#, python-format
-msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
-msgstr "<p>No se puede borrar el paquete %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:341
+msgid "Save the current package"
+msgstr "Guarda el paquete actual"
 
-#: ../lib/advene/core/webcherry.py:1056
-#, python-format
-msgid "Package %s saved"
-msgstr "Paquete %s guardado"
+#: ../lib/advene/gui/main.py:342
+msgid "Save the package with a new name"
+msgstr "Guarda el paquete actual con un nuevo nombre"
 
-#: ../lib/advene/core/webcherry.py:1060
-#, python-format
-msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
-msgstr "<p>No se puede guardar el paquete %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:343
+msgid "Select movie file..."
+msgstr "Seleccionar archivo de pelicula"
 
-#: ../lib/advene/core/webcherry.py:1070
-msgid "Server reset"
-msgstr "Reajuste del servidor (Reset)"
+#: ../lib/advene/gui/main.py:344
+msgid "Select DVD"
+msgstr "Selecciona DVD"
 
-#: ../lib/advene/core/webcherry.py:1076
-msgid "Available TALES methods"
-msgstr "Métodos TALES disponibles"
+#: ../lib/advene/gui/main.py:346
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:808
+#: ../lib/advene/gui/edit/transcribe.py:1203
+msgid "Undo"
+msgstr "Deshacer"
 
-#: ../lib/advene/core/webcherry.py:1117
-msgid "Loaded package(s)"
-msgstr "Paquete(s) cargados"
+#: ../lib/advene/gui/main.py:348
+msgid "Create a text annotation"
+msgstr "Crear una anotación de texto"
 
-#: ../lib/advene/core/webcherry.py:1119
-msgid ""
-"\n"
-"        <h1>Loaded package(s)</h1>\n"
-"        <table border=\"1\" width=\"50%\">\n"
-"        <tr>\n"
-"        <th>Alias</th>\n"
-"        <th>Action</th>\n"
-"        <th>URI</th>\n"
-"        <th>Annotations</th>\n"
-"        </tr>\n"
-"        "
-msgstr ""
-"\n"
-"        <h1>Paquete(s) cargado(s)</h1>\n"
-"        <table border=\"1\" width=\"50%\">\n"
-"        <tr>\n"
-"        <th>Alias</th>\n"
-"        <th>Acción</th>\n"
-"        <th>URI</th>\n"
-"        <th>Anotaciones</th>\n"
-"        </tr>\n"
-"        "
+#: ../lib/advene/gui/main.py:349
+msgid "Create a graphical annotation"
+msgstr "Crear una anotación gráfica"
 
-#: ../lib/advene/core/webcherry.py:1131
+#: ../lib/advene/gui/main.py:355
+msgid "List recently opened packages"
+msgstr "Listar los paquetes abiertos recientemente"
+
+#: ../lib/advene/gui/main.py:385
+msgid "Snapshotter activity"
+msgstr "Actividad de Snapshotter"
+
+#: ../lib/advene/gui/main.py:387
+#, python-format
+msgid "%d queued requests"
+msgstr "%d peticiones en fila"
+
+#: ../lib/advene/gui/main.py:388
+msgid "Cancel all requests"
+msgstr "Cancelar todas las peticiones"
+
+#: ../lib/advene/gui/main.py:393
+msgid "No snapshotter"
+msgstr "No hay snapshotter"
+
+#: ../lib/advene/gui/main.py:415
+msgid "No snapshotting activity"
+msgstr "No hay actividad snapshotter"
+
+#: ../lib/advene/gui/main.py:419
+msgid "Snapshotting"
+msgstr "Snapshotteando"
+
+#: ../lib/advene/gui/main.py:436
+msgid "Display application log messages"
+msgstr "Mostrar los archivos de bitácora de la aplicación"
+
+#: ../lib/advene/gui/main.py:477
+msgid "Quicksearch lists"
+msgstr "Buscar rápidamente en listas"
+
+#: ../lib/advene/gui/main.py:483
+msgid "Please specify the lists of elements to be searched."
+msgstr "Por favor especifica las listas de elementos donde se va a buscar."
+
+#: ../lib/advene/gui/main.py:502
 #, python-format
 msgid ""
-"<tr>\n"
-"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
-"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
-"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
-"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
-"            <td>%(uri)s</td>\n"
-"            <td>%(size)d</td>\n"
-"            </tr>\n"
-"            "
+"Searching on %s.\n"
+"Left click to launch the search, right-click to set the quicksearch options"
 msgstr ""
-"<tr>\n"
-"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
-"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
-"%(uri)s\">Volver a cargar</a>|<a href=\"/admin/delete?alias=%(alias)s"
-"\">Tirar</a>|<a href=\"/admin/save?alias=%(alias)s\">Guardar</a></td>\n"
-"            <td>%(uri)s</td>\n"
-"            <td>%(size)d</td>\n"
-"            </tr>\n"
-"            "
+"Buscando en %s.\n"
+"Clic-izquierdo para lanzar la búsqueda, clic-derecho para establecer las "
+"opciones de búsqueda rápida"
 
-#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
-#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
-#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
-#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
-#: ../lib/advene/core/webcherry.py:2039
-msgid "Error"
-msgstr "Error"
+#: ../lib/advene/gui/main.py:503
+#, python-format
+msgid "String to search in %s"
+msgstr "Cadena a buscar en %s"
 
-#: ../lib/advene/core/webcherry.py:1205
+#: ../lib/advene/gui/main.py:516 ../lib/advene/gui/main.py:520
+msgid "Tracing : "
+msgstr "Rastreando :"
+
+#: ../lib/advene/gui/main.py:516
+msgid "off"
+msgstr "apagado"
+
+#: ../lib/advene/gui/main.py:520
+msgid "on"
+msgstr "en"
+
+#: ../lib/advene/gui/main.py:532
+#: ../lib/advene/gui/views/interactivequery.py:409
+msgid "String to search"
+msgstr "Texto a buscar"
+
+#: ../lib/advene/gui/main.py:540
+msgid "Launch search"
+msgstr "Lanzar búsqueda"
+
+#: ../lib/advene/gui/main.py:545
+msgid "Ignore case"
+msgstr "Ignorar mayúsculas / minúsculas"
+
+#: ../lib/advene/gui/main.py:550
+msgid "Searched elements"
+msgstr "Elementos buscados"
+
+#: ../lib/advene/gui/main.py:634
+msgid "Playing"
+msgstr "Reproduciendo"
+
+#: ../lib/advene/gui/main.py:635
+msgid "Pause"
+msgstr "Pausar"
+
+#: ../lib/advene/gui/main.py:636
+msgid "Init"
+msgstr "Inicio"
+
+#: ../lib/advene/gui/main.py:637 ../lib/advene/gui/views/table.py:308
+#: ../lib/advene/gui/edit/elements.py:1816
+msgid "End"
+msgstr "Final"
+
+#: ../lib/advene/gui/main.py:638
+msgid "Undefined"
+msgstr "Sin definir"
+
+#: ../lib/advene/gui/main.py:660
+#, fuzzy, python-format
+msgid "Exception in update_annotation: %s."
+msgstr "Excepcion levantada en update_status: %s"
+
+#: ../lib/advene/gui/main.py:691
+#, fuzzy, python-format
+msgid "Exception in update_relation: %s."
+msgstr "Excepción en la consulta: %s"
+
+#: ../lib/advene/gui/main.py:716
+#, fuzzy, python-format
+msgid "Exception in update_view: %s."
+msgstr "Excepción en la consulta: %s"
+
+#: ../lib/advene/gui/main.py:747
+#, fuzzy, python-format
+msgid "Exception in update_query: %s."
+msgstr "Excepción en la consulta: %s"
+
+#: ../lib/advene/gui/main.py:770
+#, fuzzy, python-format
+msgid "Exception in update_resource: %s."
+msgstr "Excepción en la consulta: %s"
+
+#: ../lib/advene/gui/main.py:793
+#, fuzzy, python-format
+msgid "Exception in update_schema: %s."
+msgstr "Excepcion levantada en update_status: %s"
+
+#: ../lib/advene/gui/main.py:816
+#, fuzzy, python-format
+msgid "Exception in update_annotationtype: %s."
+msgstr "Exportar tipos de anotaciones %s"
+
+#: ../lib/advene/gui/main.py:844
+#, fuzzy, python-format
+msgid "Exception in update_relationtype: %s."
+msgstr "Excepción en la consulta: %s"
+
+#: ../lib/advene/gui/main.py:950
+msgid "Enter the new time value"
+msgstr "Ingresa un nuevo valor de tiempo"
+
+#: ../lib/advene/gui/main.py:974
 #, python-format
-msgid "The TALES expression %s is not valid."
-msgstr "La expresion TALES %s no es válida."
+msgid "Replace content in %d elements"
+msgstr "Reemplazar contenido en %d elementos"
 
-#: ../lib/advene/core/webcherry.py:1256
-msgid "Content mode not available on non-content data"
-msgstr "El modo de contenido no esta disponible en data sin contenido "
+#: ../lib/advene/gui/main.py:987
+msgid "Find word"
+msgstr "Encontrar palabra"
 
-#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
-#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
-#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
-#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
-#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
-#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
-msgid "<h1>Error</h1>"
-msgstr "<h1>Error</h1>"
+#: ../lib/advene/gui/main.py:994
+msgid "Replace by"
+msgstr "Reemplazar por"
 
-#: ../lib/advene/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
+#: ../lib/advene/gui/main.py:1022
 #, python-format
-msgid ""
-"<p>There was an error in the template code.</p>\n"
-"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"                <p>Error message: <em>%(message)s</em></p>"
+msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
 msgstr ""
-"<p>Hubo un error en el código de la plantilla.</p>\n"
-"                <p>Nombre de la etiqueta: <strong>%(tagname)s</strong></p>\n"
-"                <p>Mensaje de error: <em>%(message)s</em></p>"
+"%(search)s ha sido reemplazado por %(replace)s en %(count)d elemento(s)."
 
-#: ../lib/advene/core/webcherry.py:1290
+#: ../lib/advene/gui/main.py:1031
+msgid "The video extracting feature is not available."
+msgstr "La característica de extracción de video no está disponible"
+
+#: ../lib/advene/gui/main.py:1034
+msgid "Video export"
+msgstr "Exportar video"
+
+#: ../lib/advene/gui/main.py:1036
 #, python-format
+msgid "Exporting video montage/fragment to %%(filename)s"
+msgstr "Exportando el montaje de video  / fragmento a %%(filename)s"
+
+#: ../lib/advene/gui/main.py:1038
+msgid "Please choose a destination filename"
+msgstr "Por favor elige un nombre de archivo para el destino"
+
+#: ../lib/advene/gui/main.py:1116
 msgid ""
-"<p>An invalid character is in the Context:</p>\n"
-"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
-"pre>"
+"No media association is defined in the package. Please use the 'File/"
+"Associate a video file' menu item to associate a media file."
 msgstr ""
-"<p>Un carácter no válido está en el Contexto:</p>\n"
-"                <p>Mensaje de error: <em>%(error)s</em></p><pre>%(message)s</"
-"pre>"
+"No se encontró una asociación medios definida en el paquete. Utiliza el "
+"elemento de menú 'Archivo / asociar un archivo de vídeo' para asociar un "
+"archivo multimedia."
 
-#: ../lib/advene/core/webcherry.py:1298
+#: ../lib/advene/gui/main.py:1118
 #, python-format
 msgid ""
-"<p>There was an error in the TALES expression.</p>\n"
-"                <pre>%s</pre>"
+"The associated media %s could not be found. Please use the 'File/Associate a "
+"video file' menu item to associate a media file."
 msgstr ""
-"<p>Hubo un error en la expresion de TALES.</p>\n"
-"                <pre>%s</pre>"
+"Los medios asociados %s no se pudieron encontrar. Utiliza el elemento de "
+"menú 'Archivo / asociar un archivo de vídeo' para asociar un archivo "
+"multimedia."
 
-#: ../lib/advene/core/webcherry.py:1318
+#: ../lib/advene/gui/main.py:1120
 #, python-format
 msgid ""
-"<p>There was an error.</p>\n"
-"                <pre>%s</pre>"
+"You are now working with the following video:\n"
+"%s"
 msgstr ""
-"<p>Hubo un error.</p>\n"
-"                <pre>%s</pre>"
+"Ahora estás trabajando con el siguiente video:\n"
+"%s"
 
-#: ../lib/advene/core/webcherry.py:1342
-#, python-format
-msgid ""
-"\n"
-"            <hr>\n"
-"            <p>\n"
-"            Location: %(location)s<br>\n"
-"            <form name=\"navigation\" method=\"GET\">\n"
-"            <a href=\"%(levelup)s\">Up one level</a> |\n"
-"            Next level :\n"
-"            <select name=\"path\" onchange=\"submit()\">\n"
-"            "
-msgstr ""
-"\n"
-"            <hr>\n"
-"            <p>\n"
-"            Ubicación: %(location)s<br>\n"
-"            <form name=\"navigation\" method=\"GET\">\n"
-"            <a href=\"%(levelup)s\">Un nivel arriba</a> |\n"
-"            Siguiente nivel :\n"
-"            <select name=\"path\" onchange=\"submit()\">\n"
-"            "
+#: ../lib/advene/gui/main.py:1237
+msgid "Open this view..."
+msgstr "Abrir esta vista..."
 
-#: ../lib/advene/core/webcherry.py:1360
-msgid ""
-"\n"
-"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
-"            <option selected></option>\n"
-"            "
-msgstr ""
-"\n"
-"            </select> Vista: <select name=\"view\" onchange=\"submit()\">\n"
-"            <option selected></option>\n"
-"            "
+#: ../lib/advene/gui/main.py:1238 ../lib/advene/gui/plugins/actions.py:286
+#: ../lib/advene/gui/views/viewbook.py:124
+msgid "...in its own window"
+msgstr "...está en su ventana"
 
-#: ../lib/advene/core/webcherry.py:1378
-#, python-format
-msgid ""
-"<hr>\n"
-"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
-"package %(uri)s returns %(value)s</p>\n"
-"            "
-msgstr ""
-"<hr>\n"
-"            <p>Evaluando expresión \"<strong>%(expression)s</strong>\" en el "
-"paquete %(uri)s regresa %(value)s</p>\n"
-"            "
+#: ../lib/advene/gui/main.py:1239 ../lib/advene/gui/plugins/actions.py:287
+#: ../lib/advene/gui/views/viewbook.py:125
+#: ../lib/advene/gui/views/__init__.py:382
+msgid "...embedded east of the video"
+msgstr "...embebido en el este del video"
 
-#: ../lib/advene/core/webcherry.py:1414
-#, python-format
-msgid "<p>Package <strong>%s</strong> not loaded</p>"
-msgstr "<p>Paquete <strong>%s</strong> no cargado</p>"
+#: ../lib/advene/gui/main.py:1240 ../lib/advene/gui/plugins/actions.py:288
+#: ../lib/advene/gui/views/viewbook.py:126
+#: ../lib/advene/gui/views/__init__.py:383
+msgid "...embedded west of the video"
+msgstr "...embebido en el oeste del video"
 
-#: ../lib/advene/core/webcherry.py:1456
-#, python-format
-msgid ""
-"<p>There was an error in the template code.</p>\n"
-"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"            <p>Error message: <em>%(message)s</em></p>"
-msgstr ""
-"<p>Hubo un error en el código de la plantilla.</p>\n"
-"            <p>Nombre de la etiqueta: <strong>%(tagname)s</strong></p>\n"
-"            <p>Mensaje de error: <em>%(message)s</em></p>"
+#: ../lib/advene/gui/main.py:1241 ../lib/advene/gui/plugins/actions.py:289
+#: ../lib/advene/gui/views/viewbook.py:127
+#: ../lib/advene/gui/views/__init__.py:384
+msgid "...embedded south of the video"
+msgstr "...embebido al sur del video"
 
-#: ../lib/advene/core/webcherry.py:1464
-#, python-format
-msgid ""
-"<p>There was an error in the expression.</p>\n"
-"            <pre>%s</pre>"
-msgstr ""
-"<p>Hubo un error en la expresion.</p>\n"
-"            <pre>%s</pre>"
+#: ../lib/advene/gui/main.py:1242 ../lib/advene/gui/plugins/actions.py:290
+#: ../lib/advene/gui/views/viewbook.py:128
+#: ../lib/advene/gui/views/__init__.py:385
+msgid "...embedded at the right of the window"
+msgstr "...embebido a la derecha de la ventana"
 
-#: ../lib/advene/core/webcherry.py:1472
-#, python-format
-msgid ""
-"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
-"            %(type)s\n"
-"            %(value)s\n"
-"            %(traceback)s</pre>"
-msgstr ""
-"<p>No se puede resolver la expresión TALES %(expr)s en el paquete "
-"%(package)s<p><pre>\n"
-"            %(type)s\n"
-"            %(value)s\n"
-"            %(traceback)s</pre>"
+#: ../lib/advene/gui/main.py:1254
+msgid "_All available views"
+msgstr "Todas las vistas disponibles _A"
 
-#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
-msgid "<p>Cannot set the value : invalid path</p>"
-msgstr "<p>No puedo asignar el valor : ruta no valida</p>"
+#: ../lib/advene/gui/main.py:1270 ../lib/advene/gui/views/timeline.py:126
+msgid "Timeline"
+msgstr "Linea de tiempo"
 
-#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
-#, python-format
-msgid ""
-"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
-"%(folder)s could not be created.</p>"
-msgstr ""
-"<h1>Error</h1><p>Cuando se crea un recurso %(path)s, la carpeta del recurso "
-"%(folder)s no pudo ser creada.</p>"
+#: ../lib/advene/gui/main.py:1271 ../lib/advene/gui/views/finder.py:771
+msgid "Package finder"
+msgstr "Buscador de paquetes"
 
-#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
-msgid "Resource successfuly created/updated"
-msgstr "Recurso se creó/actualizó satisfactoriamente"
+#: ../lib/advene/gui/main.py:1272
+msgid "Transcription of annotations"
+msgstr "Transcripción de las anotaciones"
 
-#: ../lib/advene/core/webcherry.py:1611
-msgid "Value successfuly updated"
-msgstr "Valor actualizado satisfactoriamente"
+#: ../lib/advene/gui/main.py:1273
+#, fuzzy
+msgid "Annotation table"
+msgstr "Vista de tabla de las anotaciones"
 
-#: ../lib/advene/core/webcherry.py:1613
-#, python-format
-msgid ""
-"Unable to update the attribute %(attribute)s for element %(element)s: "
-"%(error)s."
-msgstr ""
-"Incapaz de actualizar el atributo %(attribute)s para el elemento "
-"%(element)s: %(error)s."
+#: ../lib/advene/gui/main.py:1276
+msgid "Note-taking editor"
+msgstr "Editor para tomar notas"
 
-#: ../lib/advene/core/webcherry.py:1724
-msgid "<p>Invalid request</p>."
-msgstr "<p>Peticion no valida</p>."
+#: ../lib/advene/gui/main.py:1277
+msgid "Active bookmarks"
+msgstr "Separadores activos"
 
-#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
-msgid "Value updated"
-msgstr "Valor actualizado"
+#: ../lib/advene/gui/main.py:1280 ../lib/advene/gui/views/tagbag.py:57
+msgid "Bag of tags"
+msgstr "Bolsa de etiquetas"
 
-#: ../lib/advene/core/webcherry.py:1789
-#, python-format
+#: ../lib/advene/gui/main.py:1281
+msgid "TALES explorer"
+msgstr "Explorador TALES"
+
+#: ../lib/advene/gui/main.py:1282
+msgid "Dynamic montage"
+msgstr "Montaje dinámico"
+
+#: ../lib/advene/gui/main.py:1283 ../lib/advene/gui/plugins/videoplayer.py:37
+msgid "Video player"
+msgstr "Reproductor de video"
+
+#: ../lib/advene/gui/main.py:1286
+msgid "Open a comment view in the web browser"
+msgstr "Abrir una vista de comentario en un navegador web"
+
+#: ../lib/advene/gui/main.py:1287
+msgid "Create or open a comment view"
+msgstr "Crear o abrir una vista de comentario"
+
+#: ../lib/advene/gui/main.py:1290
 msgid ""
-"\n"
-"                <h1>Value updated</h1>\n"
-"                The value of %(path)s has been updated to\n"
-"                <pre>\n"
-"                %(value)s\n"
-"                </pre>\n"
-"                "
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
 msgstr ""
-"\n"
-"                <h1>Valor actualizado</h1>\n"
-"                El valor de f %(path)s ha sido actualizado a\n"
-"                <pre>\n"
-"                %(value)s\n"
-"                </pre>\n"
-"                "
+"Editar ventana de marcador de posición (anotación y relaciones ventanas de "
+"edición se pondrán aquí)"
 
-#: ../lib/advene/core/webcherry.py:1806
-#, python-format
-msgid ""
-"\n"
-"                    <h1>Value updated</h1>\n"
-"                    The value of %(path)s has been updated to\n"
-"                    <pre>\n"
-"                    %(value)s\n"
-"                    </pre>\n"
-"                    "
+#: ../lib/advene/gui/main.py:1291
+msgid "Display edition history"
+msgstr "Muestra el historial de edición"
+
+#: ../lib/advene/gui/main.py:1320
+msgid "The webserver could not be started. Static views cannot be accessed."
 msgstr ""
-"\n"
-"                    <h1>Valor actualizado</h1>\n"
-"                    El valor de %(path)s ha sido actualizado a\n"
-"                    <pre>\n"
-"                    %(value)s\n"
-"                    </pre>\n"
-"                    "
+"El servidor web no pudo ser iniciarse. No se pueden acceder las vistas "
+"estáticas."
 
-#: ../lib/advene/core/webcherry.py:1817
-#, python-format
+#: ../lib/advene/gui/main.py:1398
+#, fuzzy, python-format
 msgid ""
-"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
+"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
+"released</b> on %(date)s, but you are running version %(current)s.\n"
+"You can download the latest version from the Advene website: http://advene."
+"org/</span>"
 msgstr ""
-"Petición mal formada: no se puede actualizar el valor de %(attribute)s en "
-"%(tales)s."
+"<span background=\"#ff8888\" size=\"large\"><b>La versión %(version)s de "
+"Advene ha sido liberada</b> en %(date)s, pero estás utilizando la versión "
+"%(current)s.\n"
+"Puedes descargar la última versión del sitio web de Advene: http://liris."
+"cnrs.fr/advene/</span>"
 
-#: ../lib/advene/core/webcherry.py:1860
-msgid "Cannot create an element in something else than a package."
-msgstr "No se puede crear un elemento en algo distinto a un paquete."
+#: ../lib/advene/gui/main.py:1403
+msgid "Go to the website"
+msgstr "Ir al sitio web"
 
-#: ../lib/advene/core/webcherry.py:1877
-#, python-format
-msgid "The identifier %s already exists."
-msgstr "El identificador %s ya existe."
+#: ../lib/advene/gui/main.py:1409
+msgid "Advene release"
+msgstr "Liberación de Advene"
 
-#: ../lib/advene/core/webcherry.py:1889
+#: ../lib/advene/gui/main.py:1415
 #, python-format
-msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
-msgstr "<p>Error mientras se creaba la vista %(id)s</p><pre>%(error)s</pre>"
+msgid "You are using a up-to-date version of Advene (%(current)s)."
+msgstr ""
+"Estás utilizando una versión actualizada de advene Advene (%(current)s)."
 
-#: ../lib/advene/core/webcherry.py:1895
-msgid "View created"
-msgstr "Vista creada"
+#: ../lib/advene/gui/main.py:1415
+msgid "Advene is up-to-date"
+msgstr "Advene está actualizado"
 
-#: ../lib/advene/core/webcherry.py:1896
-#, python-format
-msgid ""
-"\n"
-"                 <h1>View <em>%(id)s</em> created</h1>\n"
-"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
-"created.</p>\n"
-"                 "
-msgstr ""
-"\n"
-"                 <h1>Vista <em>%(id)s</em> creada</h1>\n"
-"                 <p>La vista <a href=\"%(url)s\">%(id)s</a> se creó "
-"satisfactoriamente.</p>\n"
-"                 "
+#: ../lib/advene/gui/main.py:1429
+msgid "Choose a color"
+msgstr "Elige un color"
 
-#: ../lib/advene/core/webcherry.py:1912
+#: ../lib/advene/gui/main.py:1461
+msgid "Select an annotation to loop on it"
+msgstr "Selecciona una anotación para hacer un ciclo en ella."
+
+#: ../lib/advene/gui/main.py:1463
 #, python-format
-msgid "Missing %s parameter"
-msgstr "Parámetro %s faltante"
+msgid "Looping on %s"
+msgstr "Ciclo en %s"
 
-#: ../lib/advene/core/webcherry.py:1915
-#, python-format
-msgid "Relation type %s does not exist"
-msgstr "La relación del tipo %s no existe"
+#: ../lib/advene/gui/main.py:1521 ../lib/advene/gui/main.py:2409
+msgid "No active dynamic view"
+msgstr "No hay una vista dinámica activa"
 
-#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
-#, python-format
-msgid "Annotation %s does not exist"
-msgstr "La anotación del tipo %s no existe"
+#: ../lib/advene/gui/main.py:1532
+msgid "Create a new dynamic view."
+msgstr "Crear una nueva vista dinámica"
 
-#: ../lib/advene/core/webcherry.py:1928
-#, python-format
-msgid ""
-"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
-"p>"
-msgstr ""
-"<p>No se puede crear una relación entre %(member1)s y %(member2)s: tipo no "
-"válido</p>"
+#: ../lib/advene/gui/main.py:1551
+msgid "Edit the current dynamic view."
+msgstr "Editar la vista dinámica actual."
 
-#: ../lib/advene/core/webcherry.py:1940
-#, python-format
-msgid ""
-"<p>Error while creating relation between %(member1)s and %(member2)s :</"
-"p><pre>%(error)s</pre>"
-msgstr ""
-"<p>Error mientras se creaba una relación entre %(member1)s y %(member2)s :</"
-"p><pre>%(error)s</pre>"
+#: ../lib/advene/gui/main.py:1563
+msgid "No dynamic view"
+msgstr "No vista dinamica"
 
-#: ../lib/advene/core/webcherry.py:1943
-msgid "Relation created"
-msgstr "Relación creada"
+#: ../lib/advene/gui/main.py:1594
+msgid "Playing rate"
+msgstr "Tasa de reproducción"
 
-#: ../lib/advene/core/webcherry.py:1944
-#, python-format
-msgid "<h1>Relation <em>%s</em> created</h1>"
-msgstr "<h1>La relación <em>%s</em> fue creada</h1>"
+#: ../lib/advene/gui/main.py:1742
+msgid "History"
+msgstr "Historia"
 
-#: ../lib/advene/core/webcherry.py:1954
-#, python-format
-msgid "Annotation type %s does not exist"
-msgstr "La anotación del tipo %s no existe"
+#: ../lib/advene/gui/main.py:1749
+msgid "Popups"
+msgstr "Popups"
 
-#: ../lib/advene/core/webcherry.py:1971
-#, python-format
+#: ../lib/advene/gui/main.py:1753
 msgid ""
-"<p>Error while creating annotation of type %(type)s :<pre>\n"
-"                    %(errortype)s\n"
-"                    %(value)s\n"
-"                    %(traceback)s</pre>"
+"You can drag and drop view icons (timeline, treeview, transcription...) in "
+"notebooks to embed various views."
 msgstr ""
-"<p>Error mientras se creaba una anotación del tipo %(type)s :<pre>\n"
-"                    %(errortype)s\n"
-"                    %(value)s\n"
-"                    %(traceback)s</pre>"
+"Puedes arrastrar y soltar iconos de vistas (línea de tiempo, vista de árbol, "
+"transcripción...) en los cuadernos de notas para embeber varias vistas."
 
-#: ../lib/advene/core/webcherry.py:1983
-#, python-format
-msgid "Annotation %s created"
-msgstr "Anotación %s creada"
+#: ../lib/advene/gui/main.py:1753
+msgid "Information"
+msgstr "Información"
 
-#: ../lib/advene/core/webcherry.py:1985
-#, python-format
-msgid "Error: Cannot create an object of type %s."
-msgstr "Error: No se puede crear un objeto del tipo %s."
+#: ../lib/advene/gui/main.py:2046
+msgid "Cannot create annotation. There is no schema to put it in."
+msgstr "No se puede crear la anotación. No hay esquema para ponerla dentro."
 
-#: ../lib/advene/core/webcherry.py:1988
-#, python-format
-msgid ""
-"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
-"code></p>"
-msgstr ""
-"Error: No se puede realizar la acción <em>%(action)s</em> en <code>"
-"%(object)s</code></p>"
+#: ../lib/advene/gui/main.py:2055
+msgid "Default annotation type"
+msgstr "Tipo de anotación predeterminado"
 
-#: ../lib/advene/core/webcherry.py:2001
-msgid "Available actions"
-msgstr "Acciones disponibles"
+#: ../lib/advene/gui/main.py:2067
+msgid "Annotation created"
+msgstr "Anotación creada"
 
-#: ../lib/advene/core/webcherry.py:2010
+#: ../lib/advene/gui/main.py:2099
+msgid "Play/Pause [Control-Tab / Control-Space]"
+msgstr "Reproducir / Pausar [Control-Tab / Control-Espacio]"
+
+#: ../lib/advene/gui/main.py:2100
 #, python-format
-msgid "<li>%(name)s: %(value)s"
-msgstr "<li>%(name)s: %(value)s"
+msgid "Rewind (%.02f s) [Control-Left]"
+msgstr "Regresar (%.02f s) [Control-Left]"
 
-#: ../lib/advene/core/webcherry.py:2033
+#: ../lib/advene/gui/main.py:2101
 #, python-format
-msgid "<p>Unknown action</p><pre>Action: %s</pre>"
-msgstr "<p>Acción desconocida</p><pre>Acción: %s</pre>"
+msgid "Forward (%.02f s) [Control-Right]"
+msgstr "Adelantar (%.02f s) [Control-Right]"
 
-#: ../lib/advene/core/webcherry.py:2040
-msgid "Missing parameter(s) :<ul>"
-msgstr "Parámetro(s) faltante(s):<ul>"
+#: ../lib/advene/gui/main.py:2102
+msgid "Previous frame [Control-Down]"
+msgstr "Cuadro anterior [Control-Down]"
 
-#: ../lib/advene/core/webcherry.py:2076
-msgid "Advene web resources"
-msgstr "Recursos web de Advene"
+#: ../lib/advene/gui/main.py:2103
+msgid "Next frame [Control-Up]"
+msgstr "Cuadro siguiente [Control-Up]"
 
-#: ../lib/advene/core/webcherry.py:2082
-msgid "Advene webserver"
-msgstr "Servidor web de advene"
+#: ../lib/advene/gui/main.py:2104
+msgid "Fullscreen"
+msgstr "Pantalla completa"
 
-#: ../lib/advene/core/webcherry.py:2083
+#: ../lib/advene/gui/main.py:2256
 #, python-format
-msgid ""
-"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
-"webserver run by %(userid)s on %(serveraddress)s.</p>"
-msgstr ""
-"<p>Bienvenido al servidor web <a href=\"http://liris.cnrs.fr/advene/"
-"\">Advene</a> ejecutado por %(userid)s en %(serveraddress)s.</p>"
+msgid "Screenshot saved to %s"
+msgstr "Captura guardada en %s"
 
-#: ../lib/advene/core/webcherry.py:2090
+#: ../lib/advene/gui/main.py:2258
+#, python-format
 msgid ""
-" <p>No package is loaded. You can access the <a href=\"/admin\">server "
-"administration page</a>.<p>"
+"Screenshot saved in\n"
+" %s"
 msgstr ""
-" <p>No hay paquete cargado. Puedes accesar a la<a href=\"/admin\">pagina de "
-"administrador del servidor</a>.<p>"
+"Captura de pantalla guardada en\n"
+" %s"
 
-#: ../lib/advene/core/webcherry.py:2100
+#: ../lib/advene/gui/main.py:2260
 #, python-format
 msgid ""
-"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
-"view</a>"
+"Could not save screenshot:\n"
+" %s"
 msgstr ""
-"el <a href=\"/packages/%(alias)s/view/%(view)s\"> cargó la vista "
-"predeterminada del paquete</a>"
+"No se pudo guardar la captura:\n"
+"%s"
 
-#: ../lib/advene/core/webcherry.py:2102
-#, python-format
-msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
-msgstr "la <a href=\"/packages/%s\">informacion de los paquetes cargados</a>"
+#: ../lib/advene/gui/main.py:2268
+msgid "Save screenshot to..."
+msgstr "Guardar captura en..."
 
-#: ../lib/advene/core/webcherry.py:2104
-msgid "the <a href=\"/packages\">loaded packages' data</a>"
-msgstr "la <a href=\"/packages\">informacion de los paquetes cargados</a>"
+#: ../lib/advene/gui/main.py:2286
+msgid "Could not take snapshot with enough precision"
+msgstr "No se pudo realizar una captura de pantalla con demasiada precisión"
 
-#: ../lib/advene/core/webcherry.py:2105
-#, python-format
-msgid ""
-" <p>You can either access %s or the <a href=\"/admin\">server administration "
-"page</a>.<p>"
-msgstr ""
-" <p>Puedes accesar %s a a la <a href=\"/admin\">pagina del servidor de "
-"administracion</a>.<p>"
+#: ../lib/advene/gui/main.py:2324
+msgid "Export package data"
+msgstr "Exportar los datos del paquete"
 
-#: ../lib/advene/core/webcherry.py:2107
+#: ../lib/advene/gui/main.py:2326
 #, python-format
-msgid ""
-"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
-"fr/advene/\">Advene</a> v. %s.</em></p>"
-msgstr ""
-"<hr><p align=\"right\"><em>Documento generado por <a href=\"http://liris."
-"cnrs.fr/advene/\">Advene</a> v. %s.</em></p>"
+msgid "Export annotation type %s"
+msgstr "Exportar tipos de anotaciones %s"
 
-#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
+#: ../lib/advene/gui/main.py:2328
 #, python-format
-msgid "Cannot start HTTP server: %s"
-msgstr "No se puede iniciar el servidor HTTP: %s"
+msgid "Export element %s"
+msgstr "Exportar elemento %s"
 
-#: ../lib/advene/util/website_export.py:61
+#: ../lib/advene/gui/main.py:2354
+msgid "Export format"
+msgstr "Exportar formato"
+
+#: ../lib/advene/gui/main.py:2391
+msgid " (modified)"
+msgstr "(modificado)"
+
+#: ../lib/advene/gui/main.py:2394
 #, python-format
-msgid "%s exists but is not a directory. Cancelling website export"
-msgstr ""
-"%s existe pero no es un directorio. Cancelando la exportación a sitio web"
+msgid "Activate %s"
+msgstr "Activar %s"
 
-#: ../lib/advene/util/website_export.py:67
+#: ../lib/advene/gui/main.py:2564
+msgid "Saved workspace"
+msgstr "Espacio de trabajo guardado"
+
+#: ../lib/advene/gui/main.py:2616
+msgid "Restoring workspace..."
+msgstr "Restableciendo espacio de trabajo..."
+
+#: ../lib/advene/gui/main.py:2622
 #, python-format
-msgid "%s does not exist"
-msgstr "%s no existe"
+msgid "Do you wish to restore the %s workspace ?"
+msgstr "¿Quieres restablecer el espacio de de trabajo %s?"
 
-#: ../lib/advene/util/website_export.py:422
-msgid "Starting export"
-msgstr "Inicializando exportación"
+#: ../lib/advene/gui/main.py:2627
+msgid "Clear the current workspace"
+msgstr "Limpiar el espacio de trabajo actual"
 
-#: ../lib/advene/util/website_export.py:451
+#: ../lib/advene/gui/main.py:2648
 #, python-format
-msgid "Depth %d"
-msgstr "Profundidad %d"
+msgid "View %s is not an adhoc view"
+msgstr "La vista %s no es una vista adhoc"
 
-#: ../lib/advene/util/website_export.py:455
+#: ../lib/advene/gui/main.py:2659
 #, python-format
-msgid "Depth %(depth)d: processing %(url)s"
-msgstr "Profundidad %(depth)d: procesando %(url)s"
+msgid "Cannot identify the adhoc view %s"
+msgstr "No se puede identificar una vista adhoc %s"
 
-#: ../lib/advene/util/website_export.py:477
-msgid "Finalizing"
-msgstr "Finalizando"
+#: ../lib/advene/gui/main.py:2673
+msgid "Choose the annotation type to display as transcription."
+msgstr "Elige el tipo de anotacion para mostrarlo como transcripcion."
 
-#: ../lib/advene/util/website_export.py:511
+#: ../lib/advene/gui/main.py:2708
+#, fuzzy, python-format
+msgid "Error: unable to find an edit popup for %(element)s"
+msgstr "Error: incapaz de encontrar un edit popup para %s"
+
+#: ../lib/advene/gui/main.py:2715
 #, python-format
-msgid ""
-"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
-"strong></p>"
-msgstr ""
-"<p><strong>Deberías comenzar en<a href=\"%(href)s\">%(title)s</a>.</strong></"
-"p>"
+msgid "Editing %s"
+msgstr "Editando %s"
 
-#: ../lib/advene/util/website_export.py:554
-msgid "Export complete"
-msgstr "Exportación completa"
+#: ../lib/advene/gui/main.py:2727
+#, python-format
+msgid "Comment view (%s)"
+msgstr "Comentar vista (%s)"
 
-#: ../lib/advene/util/importer.py:134
-msgid "Generic importer"
-msgstr "Importador generico"
+#: ../lib/advene/gui/main.py:2794
+#, python-format
+msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
+msgstr "Paquete %(uri)s guardado: %(annotations)s y %(relations)s."
 
-#: ../lib/advene/util/importer.py:161
-msgid "Usage: %prog [options] source-file destination-file"
-msgstr "Uso: %prog [options] archivo-origen archivo-destino"
+#: ../lib/advene/gui/main.py:2805
+#, python-format
+msgid "Activating package %s"
+msgstr "Activando paquete %s"
 
-#: ../lib/advene/util/importer.py:165
-msgid "Specify the offset in ms"
-msgstr "Especificar la compensacion en ms"
+#: ../lib/advene/gui/main.py:2833
+#, python-format
+msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
+msgstr "Paquete %(uri)s cargado: %(annotations)s y %(relations)s."
 
-#: ../lib/advene/util/importer.py:210
-msgid ""
-"Import filter error. The asynchronous API should be used, please report a "
-"bug."
-msgstr ""
-"Error para importar filtro. El API asíncrono debería de ser utilizado, por "
-"favor reporta un bug."
+#: ../lib/advene/gui/main.py:2865
+msgid "Do you want to restore the saved workspace ?"
+msgstr "¿Quieres restablecer el espacio de trabajo guardado?"
 
-#: ../lib/advene/util/importer.py:212
-msgid ""
-"Import filter error. No conversion method is defined,  please report a bug."
-msgstr ""
-"Error para importar filtro. No está definido un método de conversión, por "
-"favor reporta un bug."
+#: ../lib/advene/gui/main.py:2872
+msgid "Advene"
+msgstr "Advene"
 
-#: ../lib/advene/util/importer.py:344
+#: ../lib/advene/gui/main.py:3077
 #, python-format
-msgid "Converted from %s"
-msgstr "Convertido de %s"
+msgid "Got exception %s. Trying to continue."
+msgstr "Hubo excepción %s. Tratando de continuar. "
 
-#: ../lib/advene/util/importer.py:469
-msgid "ExternalApp importer"
-msgstr "Importador de ExternalApp"
+#: ../lib/advene/gui/main.py:3101 ../lib/advene/gui/main.py:3122
+#: ../lib/advene/gui/main.py:4072
+msgid "Unknown"
+msgstr "Desconocido"
 
-#: ../lib/advene/util/importer.py:483
+#: ../lib/advene/gui/main.py:3192
 #, 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."
+"The package(s) %s are modified.\n"
+"Save them now?"
 msgstr ""
-"La aplicación <b>%s</b> parece no estar instalada. Por favor revisa que esté "
-"presente y que su ruta (path) esté especificada de manera correcta en las "
-"preferencias."
-
-#: ../lib/advene/util/importer.py:485
-#, python-format
-msgid "The file %s does not seem to exist."
-msgstr "El archivo %s parece no existir."
+"Los paquete(s) %s están modificados.\n"
+"¿Guardar ahora?"
 
-#: ../lib/advene/util/importer.py:507
-#, python-format
-msgid "Could not run %(appname)s: %(msg)s"
-msgstr "No se puede correr %(appname)s: %(msg)s"
+#: ../lib/advene/gui/main.py:3224
+#: ../lib/advene/gui/views/interactivequery.py:375
+msgid "Empty quicksearch string"
+msgstr "Limpiar cadena de texto de la búsqueda rápida"
 
-#: ../lib/advene/util/importer.py:509
+#: ../lib/advene/gui/main.py:3227
+#: ../lib/advene/gui/views/interactivequery.py:280
 #, python-format
-msgid "Processing %s"
-msgstr "Procesando  %s"
+msgid "'%s'"
+msgstr "'%s'"
 
-#: ../lib/advene/util/importer.py:513
-msgid "Cleaning up..."
-msgstr "Limpiando..."
+#: ../lib/advene/gui/main.py:3242
+msgid "Choose an annotation type."
+msgstr "Elige un tipo de anotacion."
 
-#: ../lib/advene/util/importer.py:633
-msgid "Text importer"
-msgstr "Importador de texto"
+#: ../lib/advene/gui/main.py:3261 ../lib/advene/gui/views/timeline.py:3028
+#: ../lib/advene/gui/edit/transcribe.py:1019
+msgid "Create a new annotation type"
+msgstr "Crea un nuevo tipo de anotacion"
 
-#: ../lib/advene/util/importer.py:646 ../lib/advene/util/importer.py:1176
-msgid "Specify the encoding of the input file (latin1, utf8...)"
-msgstr "Especifica la codificación del archivo de entrada (latin1, utf8...)"
+#: ../lib/advene/gui/main.py:3286
+msgid "No annotation type is defined."
+msgstr "No hay tipo de anotacion definido."
 
-#: ../lib/advene/util/importer.py:649
-msgid "Should the timestamps be encoded relative to the first timestamp?"
-msgstr ""
+#: ../lib/advene/gui/main.py:3295
+msgid "Creating a new type."
+msgstr "Creando un nuevo tipo."
 
-#: ../lib/advene/util/importer.py:652
-msgid "Unit to consider for integers"
-msgstr ""
+#: ../lib/advene/gui/main.py:3299
+msgid "Title of the new type"
+msgstr "Título del nuevo tipo"
 
-#: ../lib/advene/util/importer.py:655
+#: ../lib/advene/gui/main.py:3300
 msgid ""
-"What timestamps are present in a line (only begin, both begin and end, or "
-"automatic recognition)"
+"Id of the new type. It is generated from the title, but you may change it if "
+"necessary."
 msgstr ""
+"Id del nuevo tipo. Es generada del título,  pero la puedes cambiar si es "
+"necesario."
 
-#: ../lib/advene/util/importer.py:798
-msgid "lsdvd importer"
-msgstr "Importador lsdvd"
+#: ../lib/advene/gui/main.py:3304
+msgid "Specify the content-type for the annotation type"
+msgstr "Especificar el tipo de contenido para el tipo de anotación"
 
-#: ../lib/advene/util/importer.py:825
-msgid "Processing data"
-msgstr "Procesando datos"
+#: ../lib/advene/gui/main.py:3306
+msgid "Content type"
+msgstr "Tipo de contenido"
 
-#: ../lib/advene/util/importer.py:843 ../lib/advene/util/importer.py:903
-msgid "DVD Chapter"
-msgstr "Capitulo de DVD"
+#: ../lib/advene/gui/main.py:3313 ../lib/advene/gui/main.py:3422
+msgid "Create a new schema"
+msgstr "Crea un nuevo esquema."
 
-#: ../lib/advene/util/importer.py:847
-msgid "Launching lsdvd..."
-msgstr "Lanzando lsdvd..."
+#: ../lib/advene/gui/main.py:3326
+msgid "Choose an existing schema for the new type, or create a new one"
+msgstr "Elige un esquema existente para el nuevo tipo, o crea uno nuevo"
 
-#: ../lib/advene/util/importer.py:859
-msgid "chaplin importer"
-msgstr "Importador chaplin"
+#: ../lib/advene/gui/main.py:3329 ../lib/advene/gui/main.py:3437
+msgid "Specify the schema title"
+msgstr "Especifica el título del esquema"
 
-#: ../lib/advene/util/importer.py:917
-msgid "Xi importer"
-msgstr "Importador Xi"
+#: ../lib/advene/gui/main.py:3333
+msgid "Title of the new schema"
+msgstr "Título del nuevo esquema"
 
-#: ../lib/advene/util/importer.py:986
-msgid "ELAN importer"
-msgstr "Importador ELAN"
+#: ../lib/advene/gui/main.py:3334
+msgid ""
+"Id of the new schema. It is generated from the title, but you may change it "
+"if necessary."
+msgstr ""
+"Id del nuevo esquema. Es generado del título, pero lo puedes cambiar si es "
+"necesario."
 
-#: ../lib/advene/util/importer.py:1039
-#, python-format
-msgid "Converting tier %s"
-msgstr "Convirtiendo nivel %s"
+#: ../lib/advene/gui/main.py:3357
+msgid ""
+"You specified a annotation-type identifier that already exists. Aborting."
+msgstr ""
+"Especificaste un identificador para el tipo de anotación que ya existe. "
+"Abortando"
 
-#: ../lib/advene/util/importer.py:1140
-msgid "Processing time slots"
-msgstr "Procesando casillas de tiempo"
+#: ../lib/advene/gui/main.py:3375
+msgid "You specified a existing schema identifier. Using the existing schema."
+msgstr ""
+"Especificaste un identificador de esquema existente. Utilizando el esquema "
+"existente."
 
-#: ../lib/advene/util/importer.py:1155
-msgid "Fixing forward references"
-msgstr "Corrigiendo referencias siguientes"
+#: ../lib/advene/gui/main.py:3377
+msgid ""
+"You specified an existing identifier that does not reference a schema. "
+"Aborting."
+msgstr ""
+"Especificaste un identificador que no hace referencia a un esquema. "
+"Abortando."
 
-#: ../lib/advene/util/importer.py:1157
-msgid "Creating relations"
-msgstr "Creando relaciones"
+#: ../lib/advene/gui/main.py:3404
+msgid "Choose a schema."
+msgstr "Elige un esquema."
 
-#: ../lib/advene/util/importer.py:1169
-msgid "Subtitle (SRT) importer"
-msgstr "Importador de subtítulos (SRT)"
+#: ../lib/advene/gui/main.py:3464
+msgid "You specified an existing identifier. Aborting."
+msgstr "Especificaste un identificador existente. Abortando. "
 
-#: ../lib/advene/util/importer.py:1238
+#: ../lib/advene/gui/main.py:3484
 #, python-format
-msgid "Subtitles from %s"
-msgstr "Subtítulos de %s"
-
-#: ../lib/advene/util/importer.py:1251
-msgid "PRAAT importer"
-msgstr "Importador PRAAT"
-
-#: ../lib/advene/util/importer.py:1341
-msgid "CMML importer"
-msgstr "Importar CMML"
-
-#: ../lib/advene/util/importer.py:1404
-msgid "Parsing clip information"
-msgstr "Analizando información de clip"
-
-#: ../lib/advene/util/importer.py:1501
-#: ../lib/advene/plugins/transcriber.py:254
-msgid "Creating package"
-msgstr "Creando paquete"
+msgid "Package %s modified"
+msgstr "Paquete %s modificado"
 
-#: ../lib/advene/util/importer.py:1504
-msgid "Creating CMML schema"
-msgstr "Creando esquema CMML"
+#: ../lib/advene/gui/main.py:3485
+#, python-format
+msgid ""
+"The package %s has been modified but not saved.\n"
+"Save it now?"
+msgstr ""
+"El paquete %s ha sido modificado pero no guardado.\n"
+"¿Guardarlo ahora?"
 
-#: ../lib/advene/util/importer.py:1508
-#: ../lib/advene/plugins/transcriber.py:260
-msgid "Creating annotation types"
-msgstr "Creando tipos de anotaciones"
+#: ../lib/advene/gui/main.py:3495
+#, python-format
+msgid "%s snapshots"
+msgstr "%s capturas de pantalla"
 
-#: ../lib/advene/util/importer.py:1514
-#: ../lib/advene/plugins/transcriber.py:265
-msgid "Parsing header information"
-msgstr "Analizando información del encabezado"
+#: ../lib/advene/gui/main.py:3496
+#, python-format
+msgid "Do you want to save the snapshots for media %s?"
+msgstr "¿Quieres guardar las capturas de pantalla para los medios %s?"
 
-#: ../lib/advene/util/importer.py:1528
-msgid "Parsing stream information"
-msgstr "Analizando flujo de información"
+#: ../lib/advene/gui/main.py:3503 ../lib/advene/gui/main.py:3512
+#: ../lib/advene/gui/main.py:4490
+#, python-format
+msgid "Cannot save imagecache for %(media)s: %(e)s"
+msgstr "No se puede guardar imagecache para %(media)s: %(e)s"
 
-#: ../lib/advene/util/importer.py:1562
-msgid "IRI importer"
-msgstr "Importar IRI"
+#: ../lib/advene/gui/main.py:3526
+msgid "first frame"
+msgstr "Primer cuadro"
 
-#: ../lib/advene/util/importer.py:1571
-msgid "Generate one type per view"
-msgstr "Genera un tipo por vista"
+#: ../lib/advene/gui/main.py:3527
+msgid "last frame"
+msgstr "último cuadro"
 
-#: ../lib/advene/util/importer.py:1591
+#: ../lib/advene/gui/main.py:3535
 #, python-format
-msgid "Parsing ensemble %s"
-msgstr "Analizando ensamble %s"
+msgid "Click on %(bound)s of %(annotation)s"
+msgstr "Clic en %(bound)s de %(annotation)s "
 
-#: ../lib/advene/util/importer.py:1602
+#: ../lib/advene/gui/main.py:3538
 #, python-format
-msgid "Parsing decoupage %s"
-msgstr "Analizando desacoplaje %s"
+msgid "Update %(bound)s of %(annotation)s"
+msgstr "Actualizar %(bound)s de %(annotation)s"
 
-#: ../lib/advene/util/importer.py:1638
-msgid "Parsing views"
-msgstr "Analizando vistas"
+#: ../lib/advene/gui/main.py:3557
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr "Clic en el cuadro correspondiente al valor de la marca de tiempo"
 
-#: ../lib/advene/util/importer.py:1686 ../lib/advene/util/importer.py:1775
-msgid "Initializing package"
-msgstr "Inicializando paquete"
+#: ../lib/advene/gui/main.py:3559
+msgid "Set new timestamp value"
+msgstr "Establece un nuevo valor para la estampa de tiempo"
 
-#: ../lib/advene/util/importer.py:1724
-msgid "IRIData importer"
-msgstr "Importador IRIData"
+#: ../lib/advene/gui/main.py:3566
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr ""
+"<b>Estadísticas de anotación</b>\n"
+"\n"
 
-#: ../lib/advene/util/importer.py:1738
-msgid "Parsing sound values"
-msgstr "Analizando valores de sonido"
+#: ../lib/advene/gui/main.py:3638
+msgid "Text annotation"
+msgstr "Anotación de texto"
 
-#: ../lib/advene/util/importer.py:1750
-msgid "Creating annotations"
-msgstr "Creando anotaciones"
+#: ../lib/advene/gui/main.py:3646 ../lib/advene/gui/main.py:3671
+msgid "Cannot find an appropriate annotation type"
+msgstr "No se puede encontrar un tipo de anotación apropiado"
 
-#: ../lib/advene/util/helper.py:402
-msgid "Package"
-msgstr "Paquete"
+#: ../lib/advene/gui/main.py:3648 ../lib/advene/gui/views/bookmarks.py:296
+msgid "Comment here"
+msgstr "Comenta aquí"
 
-#: ../lib/advene/util/helper.py:403
-msgid "Annotation"
-msgstr "Anotacion"
+#: ../lib/advene/gui/main.py:3664
+msgid "Graphical annotation"
+msgstr "Anotación gráfica"
 
-#: ../lib/advene/util/helper.py:404
-msgid "Relation"
-msgstr "Relacion"
+#: ../lib/advene/gui/main.py:3716
+msgid ""
+"An unsaved template package exists\n"
+"Save it first."
+msgstr ""
+"Una plantilla de paquete sin guardar existe\n"
+"Guardala primero. "
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/edit/schemaeditor.py:111
-#: ../lib/advene/gui/main.py:276 ../lib/advene/gui/main.py:3270
-msgid "Schema"
-msgstr "Esquema"
+#: ../lib/advene/gui/main.py:3725
+msgid "Package modified"
+msgstr "Paquete modificado. "
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:279
-msgid "Annotation Type"
-msgstr "Tipo de anotacion"
+#: ../lib/advene/gui/main.py:3726
+msgid ""
+"The package that you want to close has been modified but not saved.\n"
+"Save it now?"
+msgstr ""
+"El paquete que quieres cerrar ha sido modificado pero no guardado.\n"
+"¿Guardarlo ahora?"
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/main.py:280
-msgid "Relation Type"
-msgstr "Tipo de relacion"
-
-#: ../lib/advene/util/helper.py:408 ../lib/advene/rules/actions.py:236
-#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/gui/main.py:277
-msgid "View"
-msgstr "Vista"
-
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/main.py:278
-#: ../lib/advene/gui/popup.py:459
-msgid "Query"
-msgstr "Busqueda"
+#: ../lib/advene/gui/main.py:3757
+msgid "Load a package"
+msgstr "Cargar un paquete."
 
-#: ../lib/advene/util/helper.py:410
-msgid "Resource Folder"
-msgstr "Folder de recursos"
+#: ../lib/advene/gui/main.py:3766
+msgid ""
+"A video file was selected. Pretend that the user selected 'Select a video "
+"file'..."
+msgstr ""
+"Un archivo de video fue seleccionado. Pretende que el usuario seleccionó "
+"'Selecciona un archivo de video...'"
 
-#: ../lib/advene/util/helper.py:411 ../lib/advene/gui/edit/create.py:122
-msgid "Resource File"
-msgstr "Archivos de recursos"
+#: ../lib/advene/gui/main.py:3771
+#, 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 ""
+"El archivo %s no parece un paquete válido de Advene. Debería de tener una "
+"extensión .azp o .xml. ¿Intentar abrirlo de todas maneras?"
 
-#: ../lib/advene/util/helper.py:446
-msgid "---- Elements ----"
-msgstr "---- Elementos ----"
+#: ../lib/advene/gui/main.py:3780
+msgid ""
+"You are trying to load a session file, but there are unsaved packages. "
+"Proceed anyway?"
+msgstr ""
+"Estas intentando cargar un archivo de sesión, pero hay paquetes sin guardar. "
+"¿Proceder de cualquier manera?"
 
-#: ../lib/advene/util/helper.py:452
-msgid "---- Attributes ----"
-msgstr "---- Atributos ----"
+#: ../lib/advene/gui/main.py:3808 ../lib/advene/gui/main.py:3864
+msgid "Do you want to save the current workspace ?"
+msgstr "¿Quieres guardar el espacio de trabajo actual?"
 
-#: ../lib/advene/util/helper.py:455
-msgid "---- Methods ----"
-msgstr "---- Metodos ----"
+#: ../lib/advene/gui/main.py:3823 ../lib/advene/gui/main.py:3879
+#, python-format
+msgid "Could not save the package: %s"
+msgstr "No se puede guardar el paquete: %s"
 
-#: ../lib/advene/util/helper.py:531
+#: ../lib/advene/gui/main.py:3836
 #, python-format
-msgid "Cannot read %(filename)s: %(error)s"
-msgstr "No se puede leer %(filename)s: %(error)s"
+msgid "Save the package %s"
+msgstr "Guardar el paquete %s"
 
-#: ../lib/advene/util/helper.py:555
+#: ../lib/advene/gui/main.py:3849
+msgid "Invalid file extension"
+msgstr "Extensión de archivo no válida"
+
+#: ../lib/advene/gui/main.py:3850
 #, python-format
 msgid ""
-"Error:\n"
-"%s"
+"Your package contains resources,\n"
+"the filename (%s) should have a .azp extension.\n"
+"Should I put the correct extension?"
 msgstr ""
-"Error:\n"
-"%s"
+"Tu paquete contiene recursos,\n"
+"el nombre de archivo (%s) debe de tener una extensión .azp\n"
+"¿Debo incluir la extensión correcta?"
+
+#: ../lib/advene/gui/main.py:3854
+msgid "OK, the resources will be lost."
+msgstr "Ok, los recursos se perderán."
+
+#: ../lib/advene/gui/main.py:3856
+msgid "Aborting package saving"
+msgstr "Abortando el guardar paquete"
 
-#: ../lib/advene/util/helper.py:565
+#: ../lib/advene/gui/main.py:3890
+msgid "Save the session in..."
+msgstr "Guardando la sesión en..."
+
+#: ../lib/advene/gui/main.py:3901
 #, python-format
-msgid ""
-"Package %(title)s:\n"
-"%(schema)s\n"
-"%(annotation)s in %(annotation_type)s\n"
-"%(relation)s in %(relation_type)s\n"
-"%(query)s\n"
-"%(view)s\n"
-"\n"
-"Description:\n"
-"%(description)s\n"
-msgstr ""
-"Paquete %(title)s:\n"
-"%(schema)s\n"
-"%(annotation)s in %(annotation_type)s\n"
-"%(relation)s in %(relation_type)s\n"
-"%(query)s\n"
-"%(view)s\n"
-"\n"
-"Descripción:\n"
-"%(description)s\n"
+msgid "Session saved in %s"
+msgstr "Sesión guardada en %s"
 
-#: ../lib/advene/util/helper.py:592
-#, fuzzy
-msgid "Min duration"
-msgstr "2s duración"
+#: ../lib/advene/gui/main.py:3910
+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/util/helper.py:593
-#, fuzzy
-msgid "Max duration"
-msgstr "2s duración"
+#: ../lib/advene/gui/main.py:3916
+msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
+msgstr ""
+"No se pueden importar los capítulos del DVD. ¿Instalaste el programa lsdvd?"
 
-#: ../lib/advene/util/helper.py:594
-#, fuzzy
-msgid "Mean duration"
-msgstr "2s duración"
+#: ../lib/advene/gui/main.py:3924
+msgid "The associated media is not a DVD."
+msgstr "El medio asociado no es un DVD. "
 
-#: ../lib/advene/util/helper.py:595
-#, fuzzy
-msgid "Total duration"
-msgstr "Duración total"
+#: ../lib/advene/gui/main.py:3935
+#, python-format
+msgid "Processing %s video"
+msgstr "Procesando %s video"
 
-#: ../lib/advene/util/helper.py:601
-msgid "schema"
-msgstr "esquema"
+#: ../lib/advene/gui/main.py:3938
+msgid "No associated video file"
+msgstr "No hay un archivo de video asociado"
 
-#: ../lib/advene/util/helper.py:601
-msgid "schemas"
-msgstr "esquemas"
+#: ../lib/advene/gui/main.py:3965
+msgid "Standard RuleSet"
+msgstr "Conjunto de reglas estándar"
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotation"
-msgstr "anotacion"
+#: ../lib/advene/gui/main.py:4081
+#, python-format
+msgid ""
+"Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
+msgstr ""
+"Reproductor no activo - duración en cache : %(duration)s (%(durationms)d ms) "
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotations"
-msgstr "anotaciones"
+#: ../lib/advene/gui/main.py:4096
+msgid "Visit the Advene web site for examples and documentation."
+msgstr "Visita el sitio web de Advene para ejemplos y documentación."
 
-#: ../lib/advene/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation type"
-msgstr "tipo de anotacion"
+#: ../lib/advene/gui/main.py:4129 ../lib/advene/gui/main.py:4217
+msgid "Select a movie file"
+msgstr "Selecciona un archivo de pelicula"
 
-#: ../lib/advene/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation types"
-msgstr "tipos de anotaciones"
+#: ../lib/advene/gui/main.py:4141
+msgid "Title/Chapter selection"
+msgstr "Selección de Titulo/Capitulo"
 
-#: ../lib/advene/util/helper.py:605
-msgid "relation"
-msgstr "relacion"
+#: ../lib/advene/gui/main.py:4183
+msgid "Select a video stream"
+msgstr "Selecciona una corriente de video"
 
-#: ../lib/advene/util/helper.py:605
-msgid "relations"
-msgstr "relaciones"
+#: ../lib/advene/gui/main.py:4184
+msgid "Enter the address of a video stream"
+msgstr "Ingresa la dirección de una corriente de video"
 
-#: ../lib/advene/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation type"
-msgstr "tipos de relacion"
+#: ../lib/advene/gui/main.py:4188
+#, python-format
+msgid "Successfully extracted the video stream address (%s) from the url.\n"
+msgstr ""
+"Se extrajo la dirección de flujo de video satisfactoriamente (% s) a partir "
+"de la url.\n"
 
-#: ../lib/advene/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation types"
-msgstr "tipos de relaciones"
+#: ../lib/advene/gui/main.py:4213
+msgid "Package properties"
+msgstr "Propiedades de paquete"
 
-#: ../lib/advene/util/helper.py:608
-msgid "query"
-msgstr "busqueda"
+#: ../lib/advene/gui/main.py:4214 ../lib/advene/gui/edit/elements.py:514
+#: ../lib/advene/gui/edit/elements.py:563
+#: ../lib/advene/gui/edit/elements.py:650
+#: ../lib/advene/gui/edit/elements.py:730
+#: ../lib/advene/gui/edit/elements.py:787
+#: ../lib/advene/gui/edit/elements.py:879
+#: ../lib/advene/gui/edit/elements.py:948
+#: ../lib/advene/gui/edit/elements.py:1060
+#: ../lib/advene/gui/edit/elements.py:1122
+msgid "Author"
+msgstr "Autor"
 
-#: ../lib/advene/util/helper.py:608
-msgid "queries"
-msgstr "busquedas"
+#: ../lib/advene/gui/main.py:4214
+msgid "Author name"
+msgstr "Nombre de autor"
 
-#: ../lib/advene/util/helper.py:609
-msgid "view"
-msgstr "vista"
+#: ../lib/advene/gui/main.py:4215 ../lib/advene/gui/edit/elements.py:515
+#: ../lib/advene/gui/edit/elements.py:564
+#: ../lib/advene/gui/edit/elements.py:651
+#: ../lib/advene/gui/edit/elements.py:731
+#: ../lib/advene/gui/edit/elements.py:788
+#: ../lib/advene/gui/edit/elements.py:880
+#: ../lib/advene/gui/edit/elements.py:949
+#: ../lib/advene/gui/edit/elements.py:1061
+#: ../lib/advene/gui/edit/elements.py:1123
+msgid "Date"
+msgstr "Fecha"
 
-#: ../lib/advene/util/helper.py:609
-msgid "views"
-msgstr "vistas"
+#: ../lib/advene/gui/main.py:4215
+msgid "Package creation date"
+msgstr "Fecha de creación del paquete"
 
-#: ../lib/advene/util/helper.py:610
-msgid "package"
-msgstr "paquete"
+#: ../lib/advene/gui/main.py:4216 ../lib/advene/gui/views/table.py:674
+#: ../lib/advene/gui/util/dialog.py:386 ../lib/advene/gui/edit/imports.py:331
+#: ../lib/advene/gui/edit/dvdselect.py:95
+#: ../lib/advene/gui/edit/transcribe.py:1047
+msgid "Title"
+msgstr "Titulo"
 
-#: ../lib/advene/util/helper.py:610
-msgid "packages"
-msgstr "paquetes"
+#: ../lib/advene/gui/main.py:4216
+msgid "Package title"
+msgstr "Título del paquete"
 
-#: ../lib/advene/util/helper.py:622
-#, python-format
-msgid "No %s"
-msgstr "No %s"
+#: ../lib/advene/gui/main.py:4217
+msgid "Associated media"
+msgstr "Media asociada"
 
-#: ../lib/advene/util/helper.py:624
-#, python-format
-msgid "1 %s"
-msgstr "1 %s"
+#: ../lib/advene/gui/main.py:4218 ../lib/advene/gui/views/table.py:309
+msgid "Duration"
+msgstr "Duración"
 
-#: ../lib/advene/util/helper.py:626
-#, python-format
-msgid "%(count)d %(plural)s"
-msgstr "%(count)d %(plural)s"
+#: ../lib/advene/gui/main.py:4218
+msgid "Media duration in ms"
+msgstr "Duración del medio en ms"
 
-#: ../lib/advene/plugins/cinelab.py:76
-msgid "Cinelab importer"
-msgstr "Importador Cinelab"
+#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/plugins/eventaccumulator.py:143
+msgid "Reset"
+msgstr "Reestablecer"
 
-#: ../lib/advene/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
-#, python-format
-msgid "File %s is not an Advene2 zip package."
-msgstr "El archivo %s no es un paquete Advene2 zip"
+#: ../lib/advene/gui/main.py:4275 ../lib/advene/gui/views/timeline.py:3496
+#: ../lib/advene/gui/views/timeline.py:3647
+#: ../lib/advene/gui/views/tagbag.py:64 ../lib/advene/gui/edit/properties.py:51
+#: ../lib/advene/gui/edit/transcribe.py:147
+#: ../lib/advene/gui/edit/transcribe.py:1187
+msgid "Preferences"
+msgstr "Preferencias"
 
-#: ../lib/advene/plugins/cinelab.py:176
-msgid "Converting annotation types"
-msgstr "Convirtiendo tipos de anotación"
+#: ../lib/advene/gui/main.py:4277
+msgid "Paths"
+msgstr "Rutas"
 
-#: ../lib/advene/plugins/cinelab.py:217
-msgid "Converting views"
-msgstr "Convirtiendo vistas"
+#: ../lib/advene/gui/main.py:4279
+msgid "Data"
+msgstr "Data"
 
-#: ../lib/advene/plugins/cinelab.py:249
-#: ../lib/advene/plugins/youtubeannotations.py:72
-msgid "Importing annotations"
-msgstr "Importando anotaciones"
+#: ../lib/advene/gui/main.py:4279
+msgid "Standard directory for data files"
+msgstr "Directorio estándar para archivos de datos"
 
-#: ../lib/advene/plugins/shotdetectapp.py:41
-msgid "ShotdetectApp importer"
-msgstr "Importador de ShotdetectApp"
+#: ../lib/advene/gui/main.py:4280
+msgid "Movie path"
+msgstr "Ruta de video"
 
-#: ../lib/advene/plugins/shotdetectapp.py:52
+#: ../lib/advene/gui/main.py:4280
+#, python-format
 msgid ""
-"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
-"too many shots are detected, try to increase its value."
+"List of directories (separated by %s) to search for movie files (_ means "
+"package directory)"
 msgstr ""
-"Sensibilidad del algoritmo. Generalmente debe de ser entre 50 y 80. Si se "
-"detectan muchas capturas, intenta incrementar su valor."
+"Lista de directorios (separados por %s) para buscar archivos de video (_ "
+"significa directorio de paquetes)"
 
-#: ../lib/advene/plugins/shotdetectapp.py:80
-#: ../lib/advene/plugins/goodshotdetector.py:78
-msgid "Detected shots"
-msgstr "Capturas detectadas"
+#: ../lib/advene/gui/main.py:4281
+msgid "Imagecache"
+msgstr "Caché de imagen"
 
-#: ../lib/advene/plugins/shotdetectapp.py:140 ../lib/advene/gui/main.py:5130
-#, python-format
-msgid "Detected shot #%(num)d at %(pos)s "
-msgstr "Se detectó toma #%(num)d en %(pos)s "
+#: ../lib/advene/gui/main.py:4281
+msgid "Directory for storing the snapshot cache"
+msgstr "Directorio para almacenar la caché de la captura"
 
-#: ../lib/advene/plugins/youtubeannotations.py:33
-#, fuzzy
-msgid "Youtube XML annotations importer"
-msgstr "Importador AnnotationGraph"
+#: ../lib/advene/gui/main.py:4282
+msgid "Player"
+msgstr "Reproductor"
 
-#: ../lib/advene/plugins/brltty.py:62
-msgid "Input from the braille table."
-msgstr "Entrada de tabla de braille"
+#: ../lib/advene/gui/main.py:4282
+msgid "Directory of the video player"
+msgstr "Directorio del reproductor de video"
 
-#: ../lib/advene/plugins/brltty.py:66
-msgid "BrlTTY not installed. There will be no braille support."
-msgstr "BrlTTY no está instalado. No habrá soporte para braille."
+#: ../lib/advene/gui/main.py:4283
+msgid "Shotdetect"
+msgstr "Shotdetect"
 
-#: ../lib/advene/plugins/brltty.py:78
-msgid "Could not initialize BrlTTY. No braille support."
-msgstr "No se pudo inicializar BrlTTY. No hay soporte para braille. "
+#: ../lib/advene/gui/main.py:4283
+msgid "Shotdetect application"
+msgstr "Aplicación shotdetect"
 
-#: ../lib/advene/plugins/brltty.py:84
-msgid "Display a message in Braille"
-msgstr "Muestra un mensaje en Braille"
+#: ../lib/advene/gui/main.py:4285
+msgid "GUI"
+msgstr "GUI"
 
-#: ../lib/advene/plugins/brltty.py:85
-msgid "Message to display."
-msgstr "Mensaje a mostrar"
+#: ../lib/advene/gui/main.py:4286
+msgid "Interface language (after restart)"
+msgstr "Idioma de la interfaz (después de reiniciar)"
 
-#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
-#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
-#: ../lib/advene/rules/actions.py:123 ../lib/advene/gui/plugins/actions.py:44
-#: ../lib/advene/gui/plugins/actions.py:58
-#: ../lib/advene/gui/plugins/actions.py:110
-#: ../lib/advene/gui/plugins/actions.py:399
-#: ../lib/advene/gui/plugins/actions.py:527
-#: ../lib/advene/gui/edit/rules.py:766
-msgid "The annotation content"
-msgstr "El contenido de la anotación "
+#: ../lib/advene/gui/main.py:4286
+msgid ""
+"Language used for the interface (necessitates to restart the application)"
+msgstr "Idioma utilizado por la interfaz (necesita reiniciar la aplicación)"
 
-#: ../lib/advene/plugins/brltty.py:240 ../lib/advene/plugins/tts.py:110
-#: ../lib/advene/gui/plugins/actions.py:234
-msgid "Unknown rule"
-msgstr "Regla desconocida"
+#: ../lib/advene/gui/main.py:4287 ../lib/advene/gui/util/initialconfig.py:88
+msgid "System default"
+msgstr "Predeterminado del sistema"
 
-#: ../lib/advene/plugins/brltty.py:241 ../lib/advene/plugins/tts.py:111
-#: ../lib/advene/gui/plugins/actions.py:235
-#, python-format
-msgid ""
-"Rule %(rulename)s: Error in the evaluation of the parameter "
-"%(parametername)s:"
-msgstr ""
-"Regla %(rulename)s: Error en la evaluación del parámetro %(parametername)s:"
+#: ../lib/advene/gui/main.py:4292
+msgid "Record activity trace"
+msgstr "Registrar la actividad de rastreo"
 
-#: ../lib/advene/plugins/brltty.py:256
-#, python-format
-msgid "BrlTTY connection error: %s"
-msgstr "Error de conexión BrlTTY: %s"
+#: ../lib/advene/gui/main.py:4293
+msgid "Expert mode"
+msgstr "Modo experto"
 
-#: ../lib/advene/plugins/brltty.py:273
-msgid "Braille display: "
-msgstr "Visualización braille: "
+#: ../lib/advene/gui/main.py:4293
+msgid "Offer advanced possibilities"
+msgstr "Ofrece posibilidades avanzadas"
 
-#: ../lib/advene/plugins/brltty.py:279
-msgid "No message"
-msgstr "Sin mensaje"
+#: ../lib/advene/gui/main.py:4294
+msgid "Prefer WYSIWYG"
+msgstr "Preferir WYSIWYG"
 
-#: ../lib/advene/plugins/goodshotdetector.py:45
-msgid "Shot detection (Delakis version)"
-msgstr "Detector de capturas (versión Delakis)"
+#: ../lib/advene/gui/main.py:4294
+msgid "Use WYSIWYG editors when possible (HTML, SVG)"
+msgstr "Utilizar editores WYSIWYG cuando sea posible (HTML, SVG)"
 
-#: ../lib/advene/plugins/goodshotdetector.py:60
-msgid "Cache histogram alongside video files."
-msgstr "Caché de histograma junto con archivos de vídeo."
+#: ../lib/advene/gui/main.py:4295
+msgid "Player control in edit popups"
+msgstr "Control de reproductor en ventanas flotantes de edición"
 
-#: ../lib/advene/plugins/goodshotdetector.py:63
+#: ../lib/advene/gui/main.py:4295
 msgid ""
-"Parameter profile: safe will detect less cuts, aggressive will detect more "
-"cuts (but more false ones too). default is a compromise."
+"Enable generic player controls in edit windows. This may be undesirable "
+"since it overloads some standard text-edition behaviours (esp. control-left/"
+"right)."
 msgstr ""
-"Perfil de parámetro: seguro va a detectar menos cortes, agresivo va a "
-"detectar más cortes (pero más falsos positivos también). Predeterminado es "
-"un compromiso."
+"Habilitar controles de reproductor genéricos en las ventanas de edición. "
+"Esto puede ser indeseable, ya que sobrecarga algunos comportamientos de "
+"edición de texto estándar (esp. control-izquierda/derecha)."
 
-#: ../lib/advene/plugins/goodshotdetector.py:77
-#, python-format
-msgid "Shot (%s profile)"
-msgstr "Captura (%s profile)"
+#: ../lib/advene/gui/main.py:4297
+msgid "Open popups"
+msgstr "Abrir ventanas flotantes"
 
-#: ../lib/advene/plugins/goodshotdetector.py:83
-msgid "Loading histogram"
-msgstr "Cargando histograma"
+#: ../lib/advene/gui/main.py:4298
+msgid "Where should we open adhoc views?"
+msgstr "¿Dónde debemos posicionar las vistas adhoc abiertas?"
 
-#: ../lib/advene/plugins/goodshotdetector.py:146
-msgid "Computing hdiff"
-msgstr "Calcular hdiff: %s"
+#: ../lib/advene/gui/main.py:4299
+msgid "as a popup window"
+msgstr "como una ventana flotante"
 
-#: ../lib/advene/plugins/goodshotdetector.py:153
-msgid "Detecting cuts"
-msgstr "Detectando cortes"
+#: ../lib/advene/gui/main.py:4300
+msgid "embedded east of the video"
+msgstr "embeber este del video"
 
-#: ../lib/advene/plugins/goodshotdetector.py:180
-msgid "Detecting dissolves"
-msgstr "Detectando disoluciones"
+#: ../lib/advene/gui/main.py:4301
+msgid "embedded west of the video"
+msgstr "embeber oeste del video"
 
-#: ../lib/advene/plugins/goodshotdetector.py:265
-msgid "Extracting histogram"
-msgstr "Extrayendo histograma"
+#: ../lib/advene/gui/main.py:4302
+msgid "embedded south of the video"
+msgstr "embeber sur del video"
 
-#: ../lib/advene/plugins/anvil.py:35
-msgid "Anvil importer"
-msgstr "Importador Anvil"
+#: ../lib/advene/gui/main.py:4303
+msgid "embedded at the right of the window"
+msgstr "embeber a la derecha de la ventana"
 
-#: ../lib/advene/plugins/annotationgraph.py:40
-msgid "AnnotationGraph importer"
-msgstr "Importador AnnotationGraph"
+#: ../lib/advene/gui/main.py:4306
+msgid "History size"
+msgstr "Tamaño del historial"
 
-#: ../lib/advene/plugins/fcp.py:33
-msgid "Final Cut Pro XML importer"
-msgstr "Importar XML de Final Cut Pro"
+#: ../lib/advene/gui/main.py:4306
+msgid "History filelist size limit"
+msgstr "Limite del tamaño de la lista de archivos del historial"
 
-#: ../lib/advene/plugins/fcp.py:55
-msgid "FCP clipitem"
-msgstr "Item de clip de FCP"
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember window size"
+msgstr "Recordar el tamaño de ventana"
 
-#: ../lib/advene/plugins/fcp.py:75
-msgid "Importing subtitles"
-msgstr "Importando subtitulos"
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember the size of opened windows"
+msgstr "Recordar el tamaño de las ventanas abiertas"
 
-#: ../lib/advene/plugins/fcp.py:90
-msgid "Importing clips"
-msgstr "Importando clips"
+#: ../lib/advene/gui/main.py:4309
+msgid "Bookmark snapshot width"
+msgstr "Guardar en separador el ancho de la captura de pantalla"
 
-#: ../lib/advene/plugins/fcp.py:93
-msgid "No clip"
-msgstr "No hay clip"
+#: ../lib/advene/gui/main.py:4309
+msgid "Width of the snapshots representing bookmarks"
+msgstr "Ancho de las capturas que representan separadores"
 
-#: ../lib/advene/plugins/tracebuilder.py:219
-#, python-format
-msgid "Cannot export to %(fname)s: %(e)s"
-msgstr "No se puede exportar a %(fname)s: %(e)s"
+#: ../lib/advene/gui/main.py:4310
+msgid "Bookmark snapshot precision"
+msgstr "Precisión de captura del separador"
 
-#: ../lib/advene/plugins/tracebuilder.py:1129
-#: ../lib/advene/plugins/tracebuilder.py:1168
-#, python-format
-msgid "Cannot export to %(host)s:%(port)s %(error)s"
-msgstr "No se puede exportar a %(host)s:%(port)s %(error)s"
+#: ../lib/advene/gui/main.py:4310
+msgid "Precision (in ms) of the displayed bookmark snapshots."
+msgstr ""
+"Precisión (en ms) de la visualización de las capturas de separadores "
+"mostrados"
 
-#: ../lib/advene/plugins/tracebuilder.py:1143
-#, python-format
-msgid "Cannot send data to %(host)s:%(port)s %(error)s"
-msgstr "No se pueden enviar los datos a %(host)s:%(port)s %(error)s"
+#: ../lib/advene/gui/main.py:4312
+msgid "General"
+msgstr "General"
 
-#: ../lib/advene/plugins/tracebuilder.py:1191
-#, python-format
-msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
-msgstr "No se puede enviar evento %(nb)s a %(host)s:%(port)s %(error)s"
+#: ../lib/advene/gui/main.py:4313
+msgid "Weekly update check"
+msgstr "Revisión semanal de actualización"
 
-#: ../lib/advene/plugins/tracebuilder.py:1197
-#, python-format
-msgid "%(nb)s events sent to %(host)s:%(port)s during session."
-msgstr "%(nb)s eventos enviados a %(host)s:%(port)s durante la sesión."
+#: ../lib/advene/gui/main.py:4313 ../lib/advene/gui/util/initialconfig.py:90
+msgid "Weekly check for updates on the Advene website"
+msgstr "Revisión semanal de actualización en el sitio de Advene"
 
-#: ../lib/advene/plugins/dcp.py:65
-msgid "DCP importer"
-msgstr "Importador DCP"
+#: ../lib/advene/gui/main.py:4314
+msgid "On exit,"
+msgstr "Al salir, "
 
-#: ../lib/advene/plugins/dcp.py:120
-#, python-format
-msgid "Converting #%(num)d / %(count)d"
-msgstr "Convirtiendo #%(num)d / %(count)d"
+#: ../lib/advene/gui/main.py:4315
+msgid "How to handle screenshots on exit"
+msgstr "Como manejar capturas de pantalla al salir"
 
-#: ../lib/advene/plugins/ttl.py:41
-msgid "TurTLe (RDF) importer"
-msgstr "Importador TurTLe (RDF) "
+#: ../lib/advene/gui/main.py:4316
+msgid "never save screenshots"
+msgstr "nunca guardar capturas de pantalla"
 
-#: ../lib/advene/plugins/aeidon_import.py:48
-msgid "Aeidon (subtitles) importer"
-msgstr "Importador de subtítulos (Aeidon)"
+#: ../lib/advene/gui/main.py:4317
+msgid "always save screenshots"
+msgstr "siempre guardar capturas de pantalla"
 
-#: ../lib/advene/plugins/soundenveloppe.py:47
-#: ../lib/advene/plugins/soundenveloppe.py:143
-#: ../lib/advene/plugins/soundenveloppe.py:145
-msgid "Sound enveloppe"
-msgstr "Envolvente de sonido"
+#: ../lib/advene/gui/main.py:4318
+msgid "ask before saving screenshots"
+msgstr "preguntar antes de guardar capturas de pantalla"
 
-#: ../lib/advene/plugins/soundenveloppe.py:60
-msgid "Interval (in ms) at which to take samples."
-msgstr "Intervalo (en ms) de cuando tomar muestras."
+#: ../lib/advene/gui/main.py:4320
+msgid "Auto-save"
+msgstr "Guardado automático"
 
-#: ../lib/advene/plugins/soundenveloppe.py:63
-msgid "Maximum number of samples per annotation."
-msgstr "Número máximo de muestras por anotación"
+#: ../lib/advene/gui/main.py:4321
+msgid "Data auto-save functionality"
+msgstr "Funcionalidad de guardado automático de datos"
 
-#: ../lib/advene/plugins/soundenveloppe.py:66
-#: ../lib/advene/plugins/cutter.py:56
-msgid "Channel selection."
-msgstr "Selección de canal"
+#: ../lib/advene/gui/main.py:4322
+msgid "is desactivated"
+msgstr "es desactivado"
 
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#: ../lib/advene/plugins/pocketsphinx.py:119
-#: ../lib/advene/plugins/barcode.py:58
-msgid "Generating annotations"
-msgstr "Generando anotaciones"
+#: ../lib/advene/gui/main.py:4323
+msgid "is done automatically"
+msgstr "se realiza automáticamente"
 
-#: ../lib/advene/plugins/soundenveloppe.py:115
-#, python-format
-msgid "At %s"
-msgstr "En %s"
+#: ../lib/advene/gui/main.py:4324
+msgid "is done after confirmation"
+msgstr "se realiza después de la confirmación"
 
-#: ../lib/advene/plugins/soundenveloppe.py:162
-msgid "Extracting sound enveloppe"
-msgstr "Extrayendo envolvente sonido"
+#: ../lib/advene/gui/main.py:4326
+msgid "Auto-save interval (in s)"
+msgstr "Intervalo del guardado automático (en s)"
 
-#: ../lib/advene/plugins/cutter.py:39
-msgid "Audio segmentation"
-msgstr "Segmentación de audio"
+#: ../lib/advene/gui/main.py:4326
+msgid "Interval (in seconds) between package auto-saves"
+msgstr "Intervalo (en segundos) entre cada guardado automático del paquete"
 
-#: ../lib/advene/plugins/cutter.py:53
-msgid "Volume threshold (in dB, can be negative) before trigger."
-msgstr "Umbral de volumen (en dB, puede ser negativa) antes de disparar."
+#: ../lib/advene/gui/main.py:4328
+msgid "Workspace"
+msgstr "Espacio de trabajo"
 
-#: ../lib/advene/plugins/cutter.py:101
-#, python-format
-msgid "Detected %(count)d segments until %(time)s"
-msgstr "Detectados %(count)d segmentos hasta %(time)s"
+#: ../lib/advene/gui/main.py:4330
+msgid "On package saving,"
+msgstr "Al guardar el paquete,"
 
-#: ../lib/advene/plugins/cutter.py:119
-msgid "Sound segment"
-msgstr "Segmentación de sonido "
+#: ../lib/advene/gui/main.py:4331
+msgid "Do you wish to save the default workspace with the package?"
+msgstr "¿Deseas guardar el área de trabajo predeterminada con el paquete?"
 
-#: ../lib/advene/plugins/cutter.py:120
-#, python-format
-msgid ""
-"Sound segmentation with a threshold of %(threshold)d dB - channel: "
-"%(channel)s"
-msgstr ""
-"Segmentación con un umbral de %(threshold)d de sonido dB - canal: %(channel)s"
+#: ../lib/advene/gui/main.py:4332
+msgid "never save the current workspace"
+msgstr "nunca guardar el área de trabajo actual"
 
-#: ../lib/advene/plugins/cutter.py:138
-msgid "Starting silence detection"
-msgstr "Iniciando detección de silencio"
+#: ../lib/advene/gui/main.py:4333
+msgid "always save the current workspace"
+msgstr "siempre guardar el área de trabajo actual"
 
-#: ../lib/advene/plugins/montagerenderer.py:43
-msgid "Cannot register montage renderer: Gnonlin plugins are not present."
+#: ../lib/advene/gui/main.py:4334
+msgid "ask before saving the current workspace"
+msgstr "preguntar antes de guardar el área de trabajo actual"
+
+#: ../lib/advene/gui/main.py:4336
+#, fuzzy
+msgid "Auto-validation of edited elements"
+msgstr "Validación de la edición de un elemento"
+
+#: ../lib/advene/gui/main.py:4336
+msgid "Automatically validate modified elements when saving the package."
 msgstr ""
-"No puede registrar representador (renderer) de montaje: Los plugins de "
-"Gnonlin no están presentes."
 
-#: ../lib/advene/plugins/mpeg7.py:54
-msgid "MPEG7 importer"
-msgstr "Importador MPEG7"
+#: ../lib/advene/gui/main.py:4338
+msgid "On package load,"
+msgstr "En la carga del paquete,"
 
-#: ../lib/advene/plugins/transcriber.py:40
-msgid "Transcriber importer"
-msgstr "Importador de transcripciones"
+#: ../lib/advene/gui/main.py:4339
+msgid "Do you wish to load the workspace saved with the package?"
+msgstr "¿Deseas cargar el espacio de trabajo guardado con el paquete?"
 
-#: ../lib/advene/plugins/transcriber.py:86
-msgid "Parsing section information"
-msgstr "Analizando sección de información"
+#: ../lib/advene/gui/main.py:4340
+msgid "never load the saved workspace"
+msgstr "nunca cargar el espacio de trabajo guardado"
 
-#: ../lib/advene/plugins/transcriber.py:276
-msgid "Parsing topic and speaker tables information"
-msgstr "Analizando el tópico y la información de las tablas del presentador"
+#: ../lib/advene/gui/main.py:4341
+msgid "always load the saved workspace"
+msgstr "siempre cargar el espacio de trabajo guardado"
 
-#: ../lib/advene/plugins/featuredetect.py:42
-msgid "Feature detection (face...)"
-msgstr "Característica detección (rostro...)"
+#: ../lib/advene/gui/main.py:4342
+msgid "ask before loading the saved workspace"
+msgstr "preguntar antes de cargar el espacio de trabajo guardado"
 
-#: ../lib/advene/plugins/featuredetect.py:57
-msgid "Sensitivity level."
-msgstr "Nivel de sensibilidad"
+#: ../lib/advene/gui/main.py:4345
+msgid "Video Player"
+msgstr "Configura reproductor"
 
-#: ../lib/advene/plugins/featuredetect.py:60
+#: ../lib/advene/gui/main.py:4346
+msgid "Autostart"
+msgstr "Autoinicio"
+
+#: ../lib/advene/gui/main.py:4346
 msgid ""
-"Scale. Original image size will be divided by this factor, in order to speed "
-"up detection."
+"Automatically start the player when loading a media file (either directly or "
+"through a package)"
 msgstr ""
-"Escala. La imagen original se va a dividir por este factor, para agilizar la "
-"detección. "
+"Automáticamente iniciar el reproductor cuando se carga un archivo de media "
+"(ya sea directamente o utilizando un paquete)"
 
-#: ../lib/advene/plugins/featuredetect.py:63
-msgid "Classifier"
-msgstr "Clasificador"
+#: ../lib/advene/gui/main.py:4347
+msgid "Fulscreen timestamp"
+msgstr "Marca de tiempo en pantalla completa"
 
-#: ../lib/advene/plugins/featuredetect.py:77
-#, python-format
-msgid "Feature %s"
-msgstr "Característica %s"
+#: ../lib/advene/gui/main.py:4347
+msgid "Display the timestamp over the video when in fullscreen mode"
+msgstr ""
+"Mostrar la marca de tiempo sobre el video cuando está en modo pantalla "
+"completa"
 
-#: ../lib/advene/plugins/featuredetect.py:79
-#, python-format
-msgid "Detected %s"
-msgstr "Detectado %s"
+#: ../lib/advene/gui/main.py:4348
+msgid "Enable captions"
+msgstr "Habilitar subtítulos"
 
-#: ../lib/advene/plugins/featuredetect.py:81
-msgid "Detection started"
-msgstr "Comenzó la detección"
+#: ../lib/advene/gui/main.py:4348
+msgid "Enable captions over the video"
+msgstr "Habilitar subtítulos sobre el video"
 
-#: ../lib/advene/plugins/featuredetect.py:171
-#, python-format
-msgid "Detected %(count)d feature(s) until %(time)s"
-msgstr "Detectadas %(count)d característica(s) hasta %(time)s"
+#: ../lib/advene/gui/main.py:4349
+msgid "Caption font"
+msgstr "Fuente de los subtítulos"
 
-#: ../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 ""
-"No se puede registrar el reconocimiento de voz: No se encontraron plugins de "
-"Pocketsphinx. Ver http://cmusphinx.sourceforge.net/wiki/gstreamer para "
-"obtener más detalles."
+#: ../lib/advene/gui/main.py:4349
+msgid "TrueType font for captions"
+msgstr "Fuente TrueType para etiquetas"
 
-#: ../lib/advene/plugins/pocketsphinx.py:41
-msgid "Speech recognition (PocketSphinx)"
-msgstr "Reconocimiento de voz (PocketSphinx)"
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG"
+msgstr "Habilitar SVG"
 
-#: ../lib/advene/plugins/pocketsphinx.py:61
-msgid "Filtering noise level [0..1]."
-msgstr "Nivel del filtro de ruido [0..1]."
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG captions over the video"
+msgstr "Habilitar etiquetas SVG sobre el video"
 
-#: ../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 ""
-"Cantidad mínima (en milisegundos) de silencio requerido para terminar la "
-"anotación actual y comenzar una nueva. Disminuir esta longitud resultará en "
-"un gran cantidad de anotaciones cortas e incrementar esta longitud resultará "
-"en una menor cantidad de anotaciones largas."
+#: ../lib/advene/gui/main.py:4352
+msgid "Enable snapshots"
+msgstr "Habilitar captura de pantalla"
 
-#: ../lib/advene/plugins/pocketsphinx.py:69
-msgid "Use default acoustic and language models."
-msgstr "Utiliza los modelos acústicos y de lenguaje predterminados. "
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width"
+msgstr "Ancho de captura de pantalla"
 
-#: ../lib/advene/plugins/pocketsphinx.py:73
-msgid "Acoustic model (directory)"
-msgstr "Modelo acústico (directorio). "
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width in pixels."
+msgstr "Ancho de captura de pantalla en pixeles."
 
-#: ../lib/advene/plugins/pocketsphinx.py:77
-msgid "Phonetic dictionary (.dic file)"
-msgstr "Diccionario fonético (archivo .dic)"
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity"
+msgstr "Verbosidad"
 
-#: ../lib/advene/plugins/pocketsphinx.py:81
-msgid "Language model (.DMP file)"
-msgstr "Modelo de lenguaje (archivo .DMP)"
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity level. -1 for no messages."
+msgstr "Nivel de verbosidad: -1 para no mostrar mensajes."
 
-#: ../lib/advene/plugins/pocketsphinx.py:144
-#: ../lib/advene/plugins/barcode.py:83
-#, python-format
-msgid "%(count)d utterances until %(time)s"
-msgstr "%(count)d declaraciones hasta %(time)s"
+#: ../lib/advene/gui/main.py:4357
+msgid "Devices"
+msgstr "Dispositivos"
 
-#: ../lib/advene/plugins/pocketsphinx.py:153
-msgid "Speech"
-msgstr "Voz"
+#: ../lib/advene/gui/main.py:4359
+msgid "Standard"
+msgstr "Estándar"
 
-#: ../lib/advene/plugins/pocketsphinx.py:155
-msgid "Recognized speech"
-msgstr "Reconocimiento de voz"
+#: ../lib/advene/gui/main.py:4361
+msgid "DVD drive"
+msgstr "Lector DVD"
 
-#: ../lib/advene/plugins/pocketsphinx.py:191
-msgid "Recognizing speech"
-msgstr "Reconociendo voz"
+#: ../lib/advene/gui/main.py:4361
+msgid "Drive letter for the DVD"
+msgstr "Letra del lector para el DVD"
 
-#: ../lib/advene/plugins/barcode.py:36
-#, fuzzy
-msgid "Cannot register barcode extraction: zbar plugin not found."
-msgstr ""
-"No puede registrar representador (renderer) de montaje: Los plugins de "
-"Gnonlin no están presentes."
+#: ../lib/advene/gui/main.py:4362
+msgid "GDI"
+msgstr "GDI"
 
-#: ../lib/advene/plugins/barcode.py:40
-msgid "Barcode (qr-code) extraction"
-msgstr ""
+#: ../lib/advene/gui/main.py:4363
+msgid "Direct X"
+msgstr "Direct X"
 
-#: ../lib/advene/plugins/barcode.py:95
-msgid "Barcode"
-msgstr ""
+#: ../lib/advene/gui/main.py:4365
+msgid "DVD device"
+msgstr "Dispositivo DVD"
 
-#: ../lib/advene/plugins/barcode.py:97
-#, fuzzy
-msgid "Extracted barcode information"
-msgstr "Informacion Media"
+#: ../lib/advene/gui/main.py:4365
+msgid "Device for the DVD"
+msgstr "Dispositivo para el DVD"
 
-#: ../lib/advene/plugins/barcode.py:115
-#, fuzzy
-msgid "Extraction barcodes"
-msgstr "Extrayendo %s"
-
-#: ../lib/advene/plugins/nerd_plugin.py:47
-msgid "NERD (Named Entity Recognition and Disambiguation)"
-msgstr ""
+#: ../lib/advene/gui/main.py:4366
+msgid "X11"
+msgstr "X11"
 
-#: ../lib/advene/plugins/nerd_plugin.py:68
-msgid "NERD API key"
-msgstr ""
+#: ../lib/advene/gui/main.py:4367
+msgid "XVideo"
+msgstr "XVideo"
 
-#: ../lib/advene/plugins/nerd_plugin.py:82
-msgid "NER service to use"
-msgstr ""
+#: ../lib/advene/gui/main.py:4368
+msgid "GL"
+msgstr "GL"
 
-#: ../lib/advene/plugins/nerd_plugin.py:88
-#, fuzzy
-msgid "Type of annotation to analyze"
-msgstr "El tipo de anotación"
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output"
+msgstr "Salida de video"
 
-#: ../lib/advene/plugins/nerd_plugin.py:93
-msgid "Language to analyze"
-msgstr ""
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output module"
+msgstr "Módulo de salida de video"
 
-#: ../lib/advene/plugins/nerd_plugin.py:98
-msgid "Minimum confidence level (between 0.0 and 1.0)"
-msgstr ""
+#: ../lib/advene/gui/main.py:4372
+msgid "Recorder options"
+msgstr "Opciones de grabadora"
 
-#: ../lib/advene/plugins/nerd_plugin.py:103
-#, fuzzy
-msgid "Interpolate position of annotations"
-msgstr "Transcripción de las anotaciones"
+#: ../lib/advene/gui/main.py:4373
+msgid "Audio input"
+msgstr "Entrada de audio"
 
-#: ../lib/advene/plugins/nerd_plugin.py:108
-msgid "Split by entity type"
+#: ../lib/advene/gui/main.py:4373
+msgid "Device name for audio input (with gstrecorder plugin)"
 msgstr ""
+"Nombre del dispositivo para la entrada de audio (con el plugin gstrecorder)"
 
-#: ../lib/advene/plugins/nerd_plugin.py:113
-#, fuzzy
-msgid "Store results as markup in the annotation text"
-msgstr "Busca y reemplaza cadenas de texto en el contenido de las anotaciones"
+#: ../lib/advene/gui/main.py:4374
+msgid "Record video"
+msgstr "Grabar video"
 
-#: ../lib/advene/plugins/nerd_plugin.py:118
-#, fuzzy
-msgid "Create relations between the original annotations and the new ones"
-msgstr "Crea un tipo de relación entre este y..."
+#: ../lib/advene/gui/main.py:4374
+msgid "Record both video and audio"
+msgstr "Grabar ambos video y audio"
 
-#: ../lib/advene/plugins/nerd_plugin.py:150
-#, fuzzy, python-format
-msgid "NERD applied to %s"
-msgstr "Vista aplicada a %s\n"
+#: ../lib/advene/gui/main.py:4377
+msgid "<i>Experimental</i>"
+msgstr "<i>Experimental</i>"
 
-#: ../lib/advene/plugins/nerd_plugin.py:208
-#, python-format
-msgid "NERD %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:4378 ../lib/advene/gui/views/scroller.py:29
+msgid "Scroller"
+msgstr "Desplazador"
 
-#: ../lib/advene/plugins/ted.py:39
-msgid "TED importer"
-msgstr "Importador de TED"
+#: ../lib/advene/gui/main.py:4378
+msgid "Embed the caption scroller below the video"
+msgstr "Embeber el desplazamiento de subtítulos debajo del video"
 
-#: ../lib/advene/plugins/shotdetect.py:35
-msgid "Shotdetect importer"
-msgstr "Importador de shotdetect"
+#: ../lib/advene/gui/main.py:4379 ../lib/advene/gui/views/caption.py:29
+msgid "Caption"
+msgstr "Subtítulos"
 
-#: ../lib/advene/plugins/shotdetect.py:79
-msgid "No shots"
-msgstr "No hay capturas"
+#: ../lib/advene/gui/main.py:4379
+msgid "Embed the caption view below the video"
+msgstr "Embeber la vista de subtítulos debajo del video"
 
-#: ../lib/advene/plugins/tts.py:77
-msgid "Pronounce a text"
-msgstr "Pronuncia un texto"
+#: ../lib/advene/gui/main.py:4381
+msgid "Time-related"
+msgstr "Relacionado con el tiempo"
 
-#: ../lib/advene/plugins/tts.py:78
-msgid "String to pronounce."
-msgstr "Texto a pronunciar"
+#: ../lib/advene/gui/main.py:4382
+msgid "Time format"
+msgstr "Formato del tiempo"
 
-#: ../lib/advene/plugins/tts.py:131 ../lib/advene/gui/plugins/actions.py:259
-#: ../lib/advene/gui/plugins/actions.py:340
-#: ../lib/advene/gui/plugins/actions.py:358
-msgid "No message..."
-msgstr "Sin mensaje..."
+#: ../lib/advene/gui/main.py:4382
+msgid "Format used to display timecodes"
+msgstr "Formato utilizado para mostrar códigos de tiempo"
 
-#: ../lib/advene/plugins/tts.py:156
-msgid "TTS disabled. Cannot find the application 'festival' in PATH"
-msgstr ""
-"TTS deshabilitado. No se puede encontrar la aplicación 'festival' en el PATH"
+#: ../lib/advene/gui/main.py:4396
+msgid "Default FPS"
+msgstr "FPS predeterminados"
 
-#: ../lib/advene/plugins/tts.py:158
-msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
+#: ../lib/advene/gui/main.py:4397
+msgid ""
+"Default FPS (frame-per-second) value, when entering or displaying timestamps "
+"with frame numbers."
 msgstr ""
-"TTS deshabilitado. No se puede encontrar la aplicación 'aplay' en el PATH"
+"Valor predeterminado FPS (cuadros por segundo), cuando se entra o se "
+"muestran las marcas de tiempo con números del marco."
 
-#: ../lib/advene/player/gstreamer.py:434
-msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+#: ../lib/advene/gui/main.py:4398
+msgid "Time increment"
+msgstr "Incremento del tiempo"
+
+#: ../lib/advene/gui/main.py:4398
+msgid ""
+"Skip duration, when using control-left/right or forward/rewind buttons (in "
+"ms)."
 msgstr ""
-"No se puede realizar una captura de pantalla de resolución completa, otra "
-"captura se está realizando. "
+"Saltar duración, cuando se utiliza control-izquierda/derecha o avance / "
+"retroceso (en ms)."
 
-#: ../lib/advene/rules/importer.py:29
-msgid "Event history importer"
-msgstr "Importador de eventos históricos"
+#: ../lib/advene/gui/main.py:4399
+msgid "Second time increment"
+msgstr "Incremento del segundo tiempo"
 
-#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
-#: ../lib/advene/rules/actions.py:120
-msgid "Message to display"
-msgstr "Mensaje a mostrar"
+#: ../lib/advene/gui/main.py:4399
+msgid "Skip duration, when using control-shift-left/right (in ms)."
+msgstr ""
+"Saltar duración, cuando se utiliza control-shift-izquierda/derecha (en ms)."
 
-#: ../lib/advene/rules/actions.py:48
-msgid "Start the player"
-msgstr "Iniciar el reproductor"
+#: ../lib/advene/gui/main.py:4400
+msgid "Third time increment"
+msgstr "Incremento del tercer tiempo"
 
-#: ../lib/advene/rules/actions.py:49
-msgid "Start position (in ms)"
-msgstr "Posicion inicial (en ms)"
+#: ../lib/advene/gui/main.py:4400
+msgid "Skip duration, when using control-shift-up/down (in ms)."
+msgstr "Saltar duración, cuando se utiliza control-shift-arriba/abajo (en ms)."
 
-#: ../lib/advene/rules/actions.py:52 ../lib/advene/rules/actions.py:384
-msgid "The movie start"
-msgstr "El inicio de la película"
+#: ../lib/advene/gui/main.py:4401
+msgid "Custom Up/Down"
+msgstr "Personalizar Arriba / Abajo"
 
-#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
-msgid "The annotation begin"
-msgstr "El comienzo de la anotación"
+#: ../lib/advene/gui/main.py:4401
+msgid ""
+"Use third time increment for up/down navigation without having to hold shift."
+msgstr ""
+"Utilizar incremento de  tercer tiempo para la navegación hacia arriba / "
+"abajo sin tener que sostener shift."
 
-#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
-msgid "The annotation end"
-msgstr "El fin de la anotación"
+#: ../lib/advene/gui/main.py:4403
+msgid "Scroll increment"
+msgstr "Incremento del desplazamiento"
 
-#: ../lib/advene/rules/actions.py:63 ../lib/advene/gui/views/logwindow.py:129
-msgid "Go to the given position"
-msgstr "Ir a la posicion dada"
+#: ../lib/advene/gui/main.py:4403
+msgid ""
+"On most annotations, control+scrollwheel will increment/decrement their "
+"bounds by this value (in ms)."
+msgstr ""
+"En la mayoría de las anotaciones, control + rueda de desplazamiento "
+"aumentará / disminuirá sus límites por este valor (en ms)."
 
-#: ../lib/advene/rules/actions.py:64
-msgid "Goto position (in ms)"
-msgstr "Ir a la posicion (en ms)"
+#: ../lib/advene/gui/main.py:4404
+msgid "Second scroll increment"
+msgstr "Incremento del segundo desplazamiento"
 
-#: ../lib/advene/rules/actions.py:73
-msgid "Stop the player"
-msgstr "Detener el reproductor"
+#: ../lib/advene/gui/main.py:4404
+msgid ""
+"On most annotations, control+shift+scrollwheel will increment/decrement "
+"their bounds by this value (in ms)."
+msgstr ""
+"En la mayoría de las anotaciones, control + shift + scroll aumentará / "
+"disminuirá sus límites por este valor (en ms)."
 
-#: ../lib/advene/rules/actions.py:80
-msgid "Pause the player"
-msgstr "Pausar el reproductor"
+#: ../lib/advene/gui/main.py:4406
+msgid "Player sync"
+msgstr "Sincronizar reproductor"
 
-#: ../lib/advene/rules/actions.py:87
-msgid "Resume the player"
-msgstr "Continuar el reproductor"
+#: ../lib/advene/gui/main.py:4406
+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 ""
+"Intervalo (en ms) por el cual vamos a sincronizar los reproductores "
+"esclavos. Establecer un valor demasiado bajo puede dejar la aplicación "
+"inutilizable. Utiliza 0 para deshabilitar la sincronización contínua."
 
-#: ../lib/advene/rules/actions.py:94
-msgid "Take a snapshot"
-msgstr "Toma una fotografia"
+#: ../lib/advene/gui/main.py:4407
+msgid "Timeline parameters"
+msgstr "Parámetros de la línea del tiempo"
 
-#: ../lib/advene/rules/actions.py:101
-msgid "Display a caption"
-msgstr "Muestra un subtitulo"
+#: ../lib/advene/gui/main.py:4408 ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size"
+msgstr "Tamaño de la fuente"
 
-#: ../lib/advene/rules/actions.py:103
-msgid "Duration of the caption"
-msgstr "Duracion del subtitulo"
+#: ../lib/advene/gui/main.py:4408
+msgid "Font size for annotation widgets"
+msgstr "Tamaño de la fuente para los widgets de anotación"
 
-#: ../lib/advene/rules/actions.py:110 ../lib/advene/rules/actions.py:172
-#: ../lib/advene/gui/plugins/actions.py:61
-#: ../lib/advene/gui/plugins/actions.py:121
-#: ../lib/advene/gui/plugins/actions.py:403
-#: ../lib/advene/gui/plugins/actions.py:538
-msgid "1 second"
-msgstr "1 segundo"
+#: ../lib/advene/gui/main.py:4409
+msgid "Button height"
+msgstr "Altura de los botones"
 
-#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
-#: ../lib/advene/gui/plugins/actions.py:62
-#: ../lib/advene/gui/plugins/actions.py:122
-#: ../lib/advene/gui/plugins/actions.py:404
-#: ../lib/advene/gui/plugins/actions.py:539
-#: ../lib/advene/gui/edit/rules.py:773
-msgid "The annotation duration"
-msgstr "La duración de la anotación"
+#: ../lib/advene/gui/main.py:4409
+msgid "Height of annotation widgets"
+msgstr "Altura de los widgets de anotación"
 
-#: ../lib/advene/rules/actions.py:119 ../lib/advene/gui/popup.py:718
-msgid "Caption the annotation"
-msgstr "Subtitular la anotación"
+#: ../lib/advene/gui/main.py:4410
+msgid "Interline height"
+msgstr "Algura del interlineado"
 
-#: ../lib/advene/rules/actions.py:131
-msgid "Display a graphical shape"
-msgstr "Mostrar una forma gráfica"
+#: ../lib/advene/gui/main.py:4410
+msgid "Height of interlines"
+msgstr "Altura del interlineado"
 
-#: ../lib/advene/rules/actions.py:132
-msgid "Shape (square, circle, triangle)"
-msgstr "Forma (cuadro, círculo, triángulo)"
-
-#: ../lib/advene/rules/actions.py:133
-#: ../lib/advene/gui/edit/shapewidget.py:342
-#: ../lib/advene/gui/edit/elements.py:891
-#: ../lib/advene/gui/edit/elements.py:971
-#: ../lib/advene/gui/edit/elements.py:1085
-#: ../lib/advene/gui/views/tagbag.py:138
-msgid "Color"
-msgstr "Color"
+#: ../lib/advene/gui/main.py:4412
+msgid "Text content"
+msgstr "Contenido de texto"
 
-#: ../lib/advene/rules/actions.py:134
-msgid "x-position (percentage of screen)"
-msgstr "posicion-x (porcentaje de pantalla)"
+#: ../lib/advene/gui/main.py:4413
+msgid "Completion mode"
+msgstr "Modo de terminación"
 
-#: ../lib/advene/rules/actions.py:135
-msgid "y-position (percentage of screen)"
-msgstr "posicion-y (porcentaje de pantalla)"
+#: ../lib/advene/gui/main.py:4413
+msgid "Enable dynamic completion mode"
+msgstr "Habilitar modo de terminación dinámico"
 
-#: ../lib/advene/rules/actions.py:136
-msgid "Size (arbitrary units)"
-msgstr "Tamanio (unidades arbitrarias)"
+#: ../lib/advene/gui/main.py:4414
+msgid "Predefined terms only"
+msgstr ""
 
-#: ../lib/advene/rules/actions.py:137
-msgid "Duration of the display in ms"
-msgstr "Duración de la visualizacion en ms"
+#: ../lib/advene/gui/main.py:4414
+msgid "If completion is enabled, complete only with predefined terms."
+msgstr ""
 
-#: ../lib/advene/rules/actions.py:145
-msgid "A square"
-msgstr "Un cuadrado"
+#: ../lib/advene/gui/main.py:4415
+msgid "Abbreviation mode"
+msgstr "Modo de abreviación"
 
-#: ../lib/advene/rules/actions.py:146
-msgid "A circle"
-msgstr "Un círculo"
+#: ../lib/advene/gui/main.py:4415
+msgid "Enable abbreviation mode"
+msgstr "Habilitar modo de abreviación"
 
-#: ../lib/advene/rules/actions.py:147
-msgid "A triangle"
-msgstr "Un triángulo"
+#: ../lib/advene/gui/main.py:4416
+msgid "Abbreviations"
+msgstr "Abreviaciones"
 
-#: ../lib/advene/rules/actions.py:150
-msgid "White"
-msgstr "Blanco"
+#: ../lib/advene/gui/main.py:4416
+msgid ""
+"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
+"followed by its replacement."
+msgstr ""
+"Abreviaciones de texto. 1 entrada por línea. Cada línea consiste de la "
+"abreviación seguida de su reemplazo."
 
-#: ../lib/advene/rules/actions.py:151
-msgid "Black"
-msgstr "Negro"
+#: ../lib/advene/gui/main.py:4418
+msgid "Text-To-Speech"
+msgstr "Texto-a-voz"
 
-#: ../lib/advene/rules/actions.py:152
-msgid "Red"
-msgstr "Rojo"
+#: ../lib/advene/gui/main.py:4419
+msgid "TTS language"
+msgstr "Lenguaje TTS"
 
-#: ../lib/advene/rules/actions.py:153
-msgid "Green"
-msgstr "Verde"
+#: ../lib/advene/gui/main.py:4420
+msgid "What language settings should be used for text-to-speech"
+msgstr "Qué preferencias de lenguaje deben ser utilizadas para texto-a-voz"
 
-#: ../lib/advene/rules/actions.py:154
-msgid "Blue"
-msgstr "Azul"
+#: ../lib/advene/gui/main.py:4421
+msgid "English"
+msgstr "Inglés"
 
-#: ../lib/advene/rules/actions.py:155
-msgid "Yellow"
-msgstr "Amarillo"
+#: ../lib/advene/gui/main.py:4422
+msgid "French"
+msgstr "Francés"
 
-#: ../lib/advene/rules/actions.py:158
-msgid "At the top of the screen"
-msgstr "En la parte superior de la pantalla"
+#: ../lib/advene/gui/main.py:4423
+msgid "Spanish"
+msgstr "Español"
 
-#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
-msgid "In the middle of the screen"
-msgstr "A la mitad de la pantalla"
+#: ../lib/advene/gui/main.py:4425
+msgid "TTS Encoding"
+msgstr "Codificación TTS"
 
-#: ../lib/advene/rules/actions.py:160
-msgid "At the bottom of the screen"
-msgstr "El fondo de la pantalla"
+#: ../lib/advene/gui/main.py:4426
+msgid "What encoding should be used to communicate with the TTS engine"
+msgstr ""
+"Qué codificación debe ser utilizada para comunicarse con la máquina TTS"
 
-#: ../lib/advene/rules/actions.py:163
-msgid "At the left of the screen"
-msgstr "A la izquierda de la pantalla"
+#: ../lib/advene/gui/main.py:4427
+msgid "TTS Engine"
+msgstr "Máquina TTS"
 
-#: ../lib/advene/rules/actions.py:167
-#: ../lib/advene/gui/edit/transcribe.py:1164
-#: ../lib/advene/gui/views/activebookmarks.py:547
-msgid "Small"
-msgstr "Pequeño"
+#: ../lib/advene/gui/main.py:4428
+msgid ""
+"Which TTS engine should be used (modification requires restarting Advene to "
+"take into account)"
+msgstr ""
+"Cuál máquina TTS debe ser utilizada (la modificación requiere reiniciar "
+"Advene para tomarlo en cuenta)"
 
-#: ../lib/advene/rules/actions.py:168
-#: ../lib/advene/gui/edit/transcribe.py:1165
-#: ../lib/advene/gui/views/activebookmarks.py:548
-msgid "Normal"
-msgstr "Normal"
+#: ../lib/advene/gui/main.py:4429
+msgid "Automatic"
+msgstr "Automático"
 
-#: ../lib/advene/rules/actions.py:169
-#: ../lib/advene/gui/edit/transcribe.py:1166
-#: ../lib/advene/gui/views/activebookmarks.py:549
-msgid "Large"
-msgstr "Grande"
+#: ../lib/advene/gui/main.py:4430
+msgid "eSpeak"
+msgstr "eSpeak"
 
-#: ../lib/advene/rules/actions.py:181
-msgid "Zero the volume during the annotation"
-msgstr "Volumen cero durante la anotacion"
+#: ../lib/advene/gui/main.py:4431
+msgid "Custom script with standard input"
+msgstr "Script personalizado con entrada estándar"
 
-#: ../lib/advene/rules/actions.py:188
-msgid "Zero the volume"
-msgstr "Volumen cero"
+#: ../lib/advene/gui/main.py:4432
+msgid "Custom script with arguments"
+msgstr "Script personalizado con argumentos"
 
-#: ../lib/advene/rules/actions.py:195
-msgid "Restore the volume"
-msgstr "Restaurar el volumen"
+#: ../lib/advene/gui/main.py:4433
+msgid "SAPI"
+msgstr "SAPI"
 
-#: ../lib/advene/rules/actions.py:203
-msgid "Activate a STBV"
-msgstr "Activar una STBV"
+#: ../lib/advene/gui/main.py:4434
+msgid "MacOS X say"
+msgstr "MacOS X dice"
 
-#: ../lib/advene/rules/actions.py:204
-msgid "STBV id"
-msgstr "STBV id"
+#: ../lib/advene/gui/main.py:4435
+msgid "Generic (text output)"
+msgstr "Genérica (salida de texto)"
 
-#: ../lib/advene/rules/actions.py:213
-msgid "Send a user event"
-msgstr "Mandar un evento de usuario"
+#: ../lib/advene/gui/main.py:4479
+msgid "You should restart Advene to take some options into account."
+msgstr "Debes reiniciar Advene para tomar algunas opciones en cuenta. "
 
-#: ../lib/advene/rules/actions.py:214
-msgid "Identifier"
-msgstr "Identificador"
+#: ../lib/advene/gui/main.py:4488
+#, python-format
+msgid "Imagecache saved to %s"
+msgstr "El cache de la imagen guardado en %s"
 
-#: ../lib/advene/rules/actions.py:215
-msgid "Delay in ms before sending the event."
-msgstr "Retraso en ms antes de enviar un evento."
+#: ../lib/advene/gui/main.py:4501
+msgid "Restarting player..."
+msgstr "Reiniciando el reproductor..."
 
-#: ../lib/advene/rules/actions.py:225
-msgid "Open a URL in the web browser"
-msgstr "Abrir un URL en un navegador web"
+#: ../lib/advene/gui/main.py:4561
+msgid "Advene log"
+msgstr "Bitácora de Advene"
 
-#: ../lib/advene/rules/actions.py:226 ../lib/advene/gui/plugins/actions.py:103
-#: ../lib/advene/gui/views/logwindow.py:159
-msgid "URL"
-msgstr "URL"
+#: ../lib/advene/gui/main.py:4604 ../lib/advene/gui/views/timeline.py:1045
+#: ../lib/advene/rules/elements.py:1000
+msgid "Creation of a new annotation type"
+msgstr "Creación de un nuevo tipo de anotacion"
 
-#: ../lib/advene/rules/actions.py:235
-msgid "Open a static view"
-msgstr "Abre una vista estática"
+#: ../lib/advene/gui/main.py:4612 ../lib/advene/gui/views/timeline.py:1074
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+"Selecciona el esquema donde quieres\n"
+"crear un nuevo tipo de relación."
 
-#: ../lib/advene/rules/actions.py:246
-msgid "Set the audio volume"
-msgstr "Establece el volumen del audio"
+#: ../lib/advene/gui/main.py:4630
+msgid "Select the package to merge"
+msgstr "Selecciona el paquete a unir"
 
-#: ../lib/advene/rules/actions.py:247
-msgid "Volume level (from 0 to 100)"
-msgstr "Nivel de volumen (de 0 a 100)"
+#: ../lib/advene/gui/main.py:4651
+msgid "Saving workspace"
+msgstr "Guardando el espacio de trabajo"
 
-#: ../lib/advene/rules/actions.py:256
-msgid "Set the playing rate"
-msgstr "Ajusta la velocidad de reproducción"
+#: ../lib/advene/gui/main.py:4654
+msgid "Enter a view name to save the workspace"
+msgstr "Ingresar el nombre de una vista para guardar el espacio de trabajo"
 
-#: ../lib/advene/rules/actions.py:257
-msgid "Rate (100: normal rate, 200: twice slower)"
-msgstr "Tarifa (100: tasa normal, 200: dos veces más lento)"
+#: ../lib/advene/gui/main.py:4655
+msgid "Default workspace"
+msgstr "Espacio de trabajo predeterminado"
 
-#: ../lib/advene/rules/actions.py:266
-msgid "Play a sound resource"
-msgstr "Reproducir un recurso de sonido"
+#: ../lib/advene/gui/main.py:4656
+msgid "Open this workspace when opening the package"
+msgstr "Abrir este espacio de trabajo cuando se abra el paquete"
 
-#: ../lib/advene/rules/actions.py:267
-msgid "Clip id"
-msgstr "Id del clip"
+#: ../lib/advene/gui/main.py:4679 ../lib/advene/gui/views/__init__.py:289
+#, python-format
+msgid "Error: the identifier %s contains invalid characters."
+msgstr "Error: el identificador %s contiene caracteres no válidos."
 
-#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
-msgid "Volume (0..100)"
-msgstr "Volumen (0..100)"
+#: ../lib/advene/gui/main.py:4690
+#, python-format
+msgid "Error: the view %s exists and is not a workspace view."
+msgstr "Error: La vista %s existe y no es un espacio de trabajo. "
 
-#: ../lib/advene/rules/actions.py:269 ../lib/advene/rules/actions.py:283
-msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
-msgstr ""
-"Equilibrio izquierda-derecha: -1 -> totalmente a la izquierda, 0 -> centro, "
-"1 -> totalmente a la derecha"
+#: ../lib/advene/gui/main.py:4721
+#, python-format
+msgid "Cannot save default workspace: %s"
+msgstr "No se puede guardar el espacio de trabajo predeterminado: %s"
 
-#: ../lib/advene/rules/actions.py:280
-msgid "Play a sound file"
-msgstr "Reproducir un archivo de sonido"
+#: ../lib/advene/gui/main.py:4731
+msgid "Standard workspace has been saved"
+msgstr "El espacio de trabajo estándar ha sido guardado"
 
-#: ../lib/advene/rules/actions.py:281
-msgid "Sound filename"
-msgstr "Nombre del archivo de audio"
+#: ../lib/advene/gui/main.py:4738
+msgid "Website export"
+msgstr "Exportar a sitio web"
 
-#: ../lib/advene/rules/actions.py:293
-msgid "Set a state variable"
-msgstr "Establecer una variable de estado"
+#: ../lib/advene/gui/main.py:4739
+msgid "Exporting views to a website"
+msgstr "Exportar vistas a un sitio web"
 
-#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
-msgid "State variable name"
-msgstr "Nombre de variable de estado"
+#: ../lib/advene/gui/main.py:4742
+msgid "Output directory"
+msgstr "Directorio de salida"
 
-#: ../lib/advene/rules/actions.py:295
-msgid "State value"
-msgstr "Valor de estado"
+#: ../lib/advene/gui/main.py:4751
+msgid "Specify the output directory"
+msgstr "Especifica el directorio de salida"
 
-#: ../lib/advene/rules/actions.py:305
-msgid "Increment a state variable"
-msgstr "Incrementar una variable de estado"
+#: ../lib/advene/gui/main.py:4760
+msgid "Maximum recursion depth"
+msgstr "Profundidad de recursión máxima"
 
-#: ../lib/advene/rules/actions.py:315
-msgid "Clear all state variables"
-msgstr "Limpiar todas las variables de estado"
+#: ../lib/advene/gui/main.py:4767
+msgid "Video URL"
+msgstr "URL del video"
 
-#: ../lib/advene/rules/actions.py:330
-#, python-format
-msgid "Error in the evaluation of the parameter %s:"
-msgstr "Error en la evaluación del parametro %s:"
+#: ../lib/advene/gui/main.py:4769
+msgid ""
+"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 del video, si está disponible en un sitio web para compartir (únicamente "
+"Youtube por el momento).\n"
+"También puede ser un archivo h264/ogg, el cual en este caso será manejado "
+"por el reproductor de video de HTML5."
 
-#: ../lib/advene/rules/actions.py:389 ../lib/advene/gui/plugins/actions.py:247
-#, python-format
-msgid "The %s-related outgoing annotation"
-msgstr "La relación saliente  %s-relacionada"
+#: ../lib/advene/gui/main.py:4819
+msgid "Could not export data: "
+msgstr "No se pueden exportar los datos:"
 
-#: ../lib/advene/rules/actions.py:391 ../lib/advene/gui/plugins/actions.py:249
+#: ../lib/advene/gui/main.py:4821
 #, python-format
-msgid "The %s-related incoming annotation"
-msgstr "La relación entrante %s-relacionada"
+msgid "Website export to %s completed"
+msgstr "Exportar sitio web a %s completado"
 
-#: ../lib/advene/rules/actions.py:551
-#, python-format
-msgid "Cannot find the stbv %s"
-msgstr "No se puede encontrar el stbv %s"
+#: ../lib/advene/gui/main.py:4860
+msgid "This video player is not able to grab specific screenshots"
+msgstr ""
+"Este reproductor de video no es capaz de obtener capturas de pantalla "
+"específicas"
 
-#: ../lib/advene/rules/actions.py:615 ../lib/advene/gui/views/viewbook.py:263
+#: ../lib/advene/gui/main.py:4870
 #, python-format
-msgid "Cannot find the view %s"
-msgstr "No se puede encontrar la vista %s"
+msgid "Updating %d snapshots"
+msgstr "Actualiza %d capturas"
 
-#: ../lib/advene/rules/actions.py:647
-msgid "The set_rate method is unavailable."
-msgstr "El método set_rate no está disponible"
+#: ../lib/advene/gui/main.py:4875
+msgid "No snapshot to update"
+msgstr "No hay capturas para actualizar"
 
-#: ../lib/advene/rules/actions.py:657
-msgid "No 'soundclips' resource folder in the package"
-msgstr "No hay existe una carpeta de recursos de clips de audio en el paquete"
+#: ../lib/advene/gui/main.py:4884
+msgid "You first must load a movie into Advene"
+msgstr "Primero debes de cargar un archivo de video en Advene"
 
-#: ../lib/advene/rules/actions.py:683
-msgid "Full volume"
-msgstr "Volumen total "
+#: ../lib/advene/gui/main.py:4887
+#, python-format
+msgid "The movie %s does not seem to exist."
+msgstr "La película %s parece que no existe."
 
-#: ../lib/advene/rules/actions.py:684
-msgid "Left"
-msgstr "Izquierda"
+#: ../lib/advene/gui/main.py:4943
+msgid "Generating screenshots"
+msgstr "Generando capturas de pantalla"
 
-#: ../lib/advene/rules/actions.py:685
-#: ../lib/advene/gui/edit/transcribe.py:1196
-msgid "Center"
-msgstr "Centrar"
+#: ../lib/advene/gui/main.py:4948
+msgid ""
+"<b>Screenshot generation</b>\n"
+"\n"
+"Screenshots will be captured approximately every 500ms.\n"
+"\n"
+"If the movie was paused or playing, the capture will begin at the current "
+"position. Else, it will begin at the beginning of the movie.\n"
+"Note that the main interface will not be refreshed as long as this window is "
+"open."
+msgstr ""
+"<b>Generación de captura de pantalla </b>\n"
+" \n"
+" Las capturas de pantalla se realizarán cada 500 ms. aproximadamente\n"
+" \n"
+"Si la película se pausa o se reproduce, la captura se iniciará en la "
+"posición actual. Si no, va a comenzar por el principio de la película.\n"
+"Ten en cuenta que la interfaz principal no se actualizará mientras esta "
+"ventana está abierta."
 
-#: ../lib/advene/rules/actions.py:686
-msgid "Right"
-msgstr "Derecha"
+#: ../lib/advene/gui/plugins/shotvalidation.py:33
+msgid "Shot validation view"
+msgstr "Vista de validación de capturas"
 
-#: ../lib/advene/rules/elements.py:141
-msgid "is equal to"
-msgstr "es igual a"
+#: ../lib/advene/gui/plugins/shotvalidation.py:35
+msgid "Display shot validation interface"
+msgstr "Muestra la interfaz de validación de capturas"
 
-#: ../lib/advene/rules/elements.py:142
-msgid "is different from"
-msgstr "es diferente de"
+#: ../lib/advene/gui/plugins/shotvalidation.py:112
+#, python-format
+msgid "Merged #%(first)d-#%(second)d into #%(first)d"
+msgstr "Unidos #%(first)d-#%(second)d en #%(first)d"
 
-#: ../lib/advene/rules/elements.py:143
-msgid "contains"
-msgstr "contiene"
+#: ../lib/advene/gui/plugins/shotvalidation.py:137
+msgid "Last action undone"
+msgstr "Última acción deshecha"
 
-#: ../lib/advene/rules/elements.py:144
-msgid "is greater than"
-msgstr "es mayor que"
+#: ../lib/advene/gui/plugins/shotvalidation.py:155
+#, python-format
+msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
+msgstr "Dividir anotación #%(current)d en #%(current)d y #%(next)d"
 
-#: ../lib/advene/rules/elements.py:145
-msgid "is lower than"
-msgstr "es menor que"
+#: ../lib/advene/gui/plugins/shotvalidation.py:160
+#, python-format
+msgid "Cannot split annotation #%(current)d: out of bounds."
+msgstr "No se puede dividir la anotación #%(current)d: fuera de límite."
 
-#: ../lib/advene/rules/elements.py:146
-msgid "matches the regexp"
-msgstr "concuerda la regexp"
+#: ../lib/advene/gui/plugins/shotvalidation.py:180
+#, python-format
+msgid "Changed cut between #%(first)d and %(second)d"
+msgstr "Cambiar corte entre #%(first)d y %(second)d"
 
-#: ../lib/advene/rules/elements.py:147
-msgid "is before"
-msgstr "esta antes"
+#: ../lib/advene/gui/plugins/shotvalidation.py:183
+msgid "Changed begin time for first annotation"
+msgstr "Tiempo de inicio cambiado para la primer anotación"
 
-#: ../lib/advene/rules/elements.py:148
-msgid "meets"
-msgstr "reune"
+#: ../lib/advene/gui/plugins/shotvalidation.py:189
+msgid "No annotations to adjust"
+msgstr "No hay anotaciones para ajustar"
 
-#: ../lib/advene/rules/elements.py:149
-msgid "overlaps"
-msgstr "traslapa"
+#: ../lib/advene/gui/plugins/shotvalidation.py:196
+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 ""
+"Clic en el cuadro justo después del corte para ajustar el tiempo de corte.\n"
+"Control-clic en un cuadro para indicar un corte faltante."
 
-#: ../lib/advene/rules/elements.py:150
-msgid "during"
-msgstr "dura"
+#: ../lib/advene/gui/plugins/shotvalidation.py:204
+#, python-format
+msgid "Begin of #%(index)d (title: %(content)s)"
+msgstr "Principio de #%(index)d (title: %(content)s)"
 
-#: ../lib/advene/rules/elements.py:151
-msgid "starts"
-msgstr "inicia"
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
+msgid "< Previous cut"
+msgstr "< Corte anterior"
 
-#: ../lib/advene/rules/elements.py:152
-msgid "finishes"
-msgstr "termina"
+#: ../lib/advene/gui/plugins/shotvalidation.py:219
+msgid "Display previous cut"
+msgstr "Muestra el corte anterior"
 
-#: ../lib/advene/rules/elements.py:157
-msgid "is not true"
-msgstr "no es verdadero"
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
+msgid "Next cut >"
+msgstr "Corte siguiente >"
 
-#: ../lib/advene/rules/elements.py:158
-msgid "is true"
-msgstr "es verdadero"
+#: ../lib/advene/gui/plugins/shotvalidation.py:227
+msgid "Display next cut"
+msgstr "Muestra el corte siguiente"
 
-#: ../lib/advene/rules/elements.py:162
-msgid "Basic conditions"
-msgstr "Condiciones basicas"
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
+#: ../lib/advene/gui/views/annotationdisplay.py:92
+#: ../lib/advene/gui/views/timeline.py:86
+msgid "Current time"
+msgstr "Tiempo actual"
 
-#: ../lib/advene/rules/elements.py:163
-msgid "Allen relations"
-msgstr "Relaciones Allen"
+#: ../lib/advene/gui/plugins/shotvalidation.py:253
+msgid "Go to annotation containing current player time."
+msgstr "Ir a la anotación que contiene el tiempo actual del reproductor."
 
-#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
-msgid "Unknown type for overlaps comparison"
-msgstr "Tipo desconocido traslapa la comparacion"
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
+#: ../lib/advene/gui/edit/frameselector.py:197
+msgid "Refresh snapshots"
+msgstr "Refrescar capturas"
 
-#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
-msgid "Unknown type for during comparison"
-msgstr "Tipo desconocido durante la comparacion"
+#: ../lib/advene/gui/plugins/shotvalidation.py:258
+#: ../lib/advene/gui/edit/frameselector.py:198
+msgid "Refresh missing snapshots"
+msgstr "Refrescar capturas faltantes"
 
-#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
-#, python-format
-msgid "Unknown action %s"
-msgstr "Acción desconocida %s"
+#: ../lib/advene/gui/plugins/shotvalidation.py:263
+msgid "Undo last modification"
+msgstr "Deshacer la última modificación"
 
-#: ../lib/advene/rules/elements.py:522
-#, python-format
-msgid "Unknown parameter %s"
-msgstr "Parámetro desconocido %s"
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
+msgid "Merge with previous"
+msgstr "Unir con anterior"
 
-#: ../lib/advene/rules/elements.py:527
-msgid "Unknown actions"
-msgstr "Acciones desconocidas"
+#: ../lib/advene/gui/plugins/shotvalidation.py:270
+msgid "Merge with previous annotation, i.e. remove this bound."
+msgstr "Unir con la anotación previa, i.e. remover este contenedor. "
 
-#: ../lib/advene/rules/elements.py:972
-msgid "Start of the editing of an element"
-msgstr "Iniciar la edición de un elemento."
+#: ../lib/advene/gui/plugins/shotvalidation.py:275
+msgid "Close view."
+msgstr "Cerrar vista."
 
-#: ../lib/advene/rules/elements.py:973
-msgid "Cancel of the editing of an element"
-msgstr "Cancelar la edición de un elemento"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:44
+msgid "Activity trace"
+msgstr "Activar rastreo"
 
-#: ../lib/advene/rules/elements.py:974
-msgid "Destruction of the edit window of an element"
-msgstr "Destrucción de la ventana de edición de un elemento"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:74
+#: ../lib/advene/gui/plugins/eventaccumulator.py:75
+#: ../lib/advene/gui/plugins/tracetimeline.py:65
+#: ../lib/advene/gui/plugins/tracetimeline.py:66
+#: ../lib/advene/gui/plugins/tracepreview.py:73
+#: ../lib/advene/gui/plugins/tracepreview.py:74
+msgid "Beginning edition"
+msgstr "Comenzando edición"
 
-#: ../lib/advene/rules/elements.py:975
-msgid "Validation of the editing of an element"
-msgstr "Validación de la edición de un elemento"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:76
+#: ../lib/advene/gui/plugins/eventaccumulator.py:77
+#: ../lib/advene/gui/plugins/eventaccumulator.py:78
+#: ../lib/advene/gui/plugins/tracetimeline.py:67
+#: ../lib/advene/gui/plugins/tracetimeline.py:68
+#: ../lib/advene/gui/plugins/tracetimeline.py:69
+#: ../lib/advene/gui/plugins/tracepreview.py:75
+#: ../lib/advene/gui/plugins/tracepreview.py:76
+#: ../lib/advene/gui/plugins/tracepreview.py:77
+msgid "Canceling edition"
+msgstr "Cancelando edición"
 
-#: ../lib/advene/rules/elements.py:976
-msgid "Ending editing of a package"
-msgstr "Terminando la edicion de un paquete"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:79
+#: ../lib/advene/gui/plugins/tracetimeline.py:70
+#: ../lib/advene/gui/plugins/tracepreview.py:78
+msgid "Ending edition"
+msgstr "Finalizando edición"
 
-#: ../lib/advene/rules/elements.py:977
-msgid "Beginning of an annotation"
-msgstr "Principio de una anotacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:135
+msgid " Trace : "
+msgstr "Rastreo :"
 
-#: ../lib/advene/rules/elements.py:978
-msgid "End of an annotation"
-msgstr "Fin de una anotacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:139
+msgid " Filters"
+msgstr "Filtros"
 
-#: ../lib/advene/rules/elements.py:979
-msgid "Creation of a new annotation"
-msgstr "Creacion de una nueva anotacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:168
+msgid " Time : "
+msgstr "Tiempo :"
 
-#: ../lib/advene/rules/elements.py:980
-msgid "Ending editing of an annotation"
-msgstr "Finalizando la edicion de una anotacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:178
+msgid " Max. : "
+msgstr "Max. :"
 
-#: ../lib/advene/rules/elements.py:981
-msgid "Suppression of an annotation"
-msgstr "Supresion de una anotacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:187
+msgid "Export"
+msgstr "Exportar"
 
-#: ../lib/advene/rules/elements.py:982
-msgid "Activation of an annotation"
-msgstr "Activacion de una anotacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:203
+#: ../lib/advene/gui/plugins/tracetimeline.py:665
+msgid "Exporting traces"
+msgstr "Exportando rastreos"
 
-#: ../lib/advene/rules/elements.py:983
-msgid "Deactivation of an annotation"
-msgstr "Desactivacion de una anotacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:208
+#: ../lib/advene/gui/plugins/tracetimeline.py:670
+#, python-format
+msgid ""
+"Export done to\n"
+"%s"
+msgstr ""
+"Exportación realizada a\n"
+"%s"
 
-#: ../lib/advene/rules/elements.py:984
-msgid "Merging of two annotations"
-msgstr "Uniendo dos anotaciones."
+#: ../lib/advene/gui/plugins/eventaccumulator.py:254
+msgid "Defining Filters"
+msgstr "Definiendo filtros"
 
-#: ../lib/advene/rules/elements.py:985
-msgid "Moving an annotation"
-msgstr "Mover una anotación"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:560
+#: ../lib/advene/gui/plugins/eventaccumulator.py:615
+#: ../lib/advene/gui/plugins/tracepreview.py:215
+#, python-format
+msgid "of an annotation (%s)"
+msgstr "de una anotación (%s)"
 
-#: ../lib/advene/rules/elements.py:986
-msgid "Activation of a relation"
-msgstr "Activacion de una relacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:562
+#: ../lib/advene/gui/plugins/eventaccumulator.py:617
+#: ../lib/advene/gui/plugins/tracepreview.py:217
+#, python-format
+msgid "of a relation (%s)"
+msgstr "de una relación (%s)"
 
-#: ../lib/advene/rules/elements.py:987
-msgid "Deactivation of a relation"
-msgstr "Desactivacion de una relacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:564
+#: ../lib/advene/gui/plugins/eventaccumulator.py:619
+#: ../lib/advene/gui/plugins/tracepreview.py:219
+#, python-format
+msgid "of an annotation type (%s)"
+msgstr "de un tipo de anotación (%s)"
 
-#: ../lib/advene/rules/elements.py:988
-msgid "Creation of a new relation"
-msgstr "Creacion de una nueva relacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:566
+#: ../lib/advene/gui/plugins/eventaccumulator.py:621
+#: ../lib/advene/gui/plugins/tracepreview.py:221
+#, python-format
+msgid "of a relation type (%s)"
+msgstr "de un tipo de relación (%s)"
 
-#: ../lib/advene/rules/elements.py:989
-msgid "Ending editing of a relation"
-msgstr "Terminando de editar una relacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:568
+#: ../lib/advene/gui/plugins/eventaccumulator.py:623
+#: ../lib/advene/gui/plugins/tracepreview.py:223
+#, python-format
+msgid "of a schema (%s)"
+msgstr "de un esquema (%s)"
 
-#: ../lib/advene/rules/elements.py:990
-msgid "Suppression of a relation"
-msgstr "Supresion de una relacion"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:570
+#: ../lib/advene/gui/plugins/eventaccumulator.py:625
+#: ../lib/advene/gui/plugins/tracepreview.py:225
+#, python-format
+msgid "of a view (%s)"
+msgstr "de una vistas (%s)"
 
-#: ../lib/advene/rules/elements.py:991
-msgid "Creation of a new view"
-msgstr "Creacion de una nueva vista"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:572
+#: ../lib/advene/gui/plugins/eventaccumulator.py:627
+#: ../lib/advene/gui/plugins/tracepreview.py:227
+#, python-format
+msgid "of a package (%s)"
+msgstr "de un paquete (%s) "
 
-#: ../lib/advene/rules/elements.py:992
-msgid "Ending editing of a view"
-msgstr "Terminando de editar una vista"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:574
+#: ../lib/advene/gui/plugins/eventaccumulator.py:629
+#: ../lib/advene/gui/plugins/tracepreview.py:229
+#, python-format
+msgid "of an unknown item (%s)"
+msgstr "de un elemento desconocido (%s) "
 
-#: ../lib/advene/rules/elements.py:993
-msgid "Suppression of a view"
-msgstr "Supresion de una vista"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:380
+#, python-format
+msgid "Rendering type %(type)s as %(presentation)s"
+msgstr "Representando (rendering) el tipo %(type)s como %(presentation)s"
 
-#: ../lib/advene/rules/elements.py:994
-msgid "Creation of a new query"
-msgstr "Creación de una nueva busqueda"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
+msgid "Snapshot only"
+msgstr "Solo captura"
 
-#: ../lib/advene/rules/elements.py:995
-msgid "Ending editing of a query"
-msgstr "Terminando de editar una busqueda"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
+msgid "Overlayed snapshot only"
+msgstr "Solo capturas sobrepuesta"
 
-#: ../lib/advene/rules/elements.py:996
-msgid "Suppression of a query"
-msgstr "Supresion de una búsqueda"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
+msgid "Timestamp only"
+msgstr "Solo marca de tiempo"
 
-#: ../lib/advene/rules/elements.py:997
-msgid "Creation of a new schema"
-msgstr "Creacion de un nuevo esquema"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:528
+msgid "Snapshot+timestamp"
+msgstr "Captura+Marca de tiempo"
 
-#: ../lib/advene/rules/elements.py:998
-msgid "Ending editing of a schema"
-msgstr "Terminando de editar un esquema"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:529
+msgid "Annotation content"
+msgstr "Contenido de anotación"
 
-#: ../lib/advene/rules/elements.py:999
-msgid "Suppression of a schema"
-msgstr "Supresion de un esquema"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:544
+msgid "as a list"
+msgstr "como lista"
 
-#: ../lib/advene/rules/elements.py:1000
-#: ../lib/advene/gui/views/timeline.py:1029 ../lib/advene/gui/main.py:4555
-msgid "Creation of a new annotation type"
-msgstr "Creación de un nuevo tipo de anotacion"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:545
+#, fuzzy
+msgid "as a grid"
+msgstr "como lista"
 
-#: ../lib/advene/rules/elements.py:1001
-msgid "Ending editing an annotation type"
-msgstr "Terminando de editar un tipo de anotacion"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:546
+msgid "as a table"
+msgstr "como tabla"
 
-#: ../lib/advene/rules/elements.py:1002
-msgid "Suppression of an annotation type"
-msgstr "Supresión de un tipo de anotacion"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:547
+#: ../lib/advene/gui/views/viewbook.py:379
+msgid "as a transcription"
+msgstr "como transcripción"
 
-#: ../lib/advene/rules/elements.py:1003
-msgid "Creation of a new relation type"
-msgstr "Creación de un nuevo tipo de relacion"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/views/transcription.py:461
+#, python-format
+msgid "Annotation %s"
+msgstr "Anotación %s"
 
-#: ../lib/advene/rules/elements.py:1004
-msgid "Ending editing a relation type"
-msgstr "Terminando de editar un tipo de relacion"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:685
+msgid "Play video"
+msgstr "Reproducir video"
 
-#: ../lib/advene/rules/elements.py:1005
-msgid "Suppression of a relation type"
-msgstr "Suprimiendo un tipo de relacion"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
+msgid "Show timestamp only"
+msgstr "Solo muestra marca de tiempo"
 
-#: ../lib/advene/rules/elements.py:1006
-msgid "Creation of a new resource"
-msgstr "Creación de un nuevo recurso"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
+msgid "Show content only"
+msgstr "Solo muestra contenido"
 
-#: ../lib/advene/rules/elements.py:1007
-msgid "Ending editing of a resource"
-msgstr "Finalizando la edición de un recurso"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:669
+msgid "Show snapshot only"
+msgstr "Solo muestra captura"
 
-#: ../lib/advene/rules/elements.py:1008
-msgid "Suppression of a resource"
-msgstr "Supresión de un recurso"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
+msgid "Show overlayed timestamp"
+msgstr "Muestra marca de tiempo superpuesta"
 
-#: ../lib/advene/rules/elements.py:1009
-msgid "Modification of the tag"
-msgstr "Modificación de la etiqueta"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+msgid "Show overlayed content"
+msgstr "Mostrar contenido superpuesto"
 
-#: ../lib/advene/rules/elements.py:1010
-msgid "Activating a link"
-msgstr "Activando un link"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#, python-format
+msgid "Annotation type %s"
+msgstr "Tipos de anotación %s"
 
-#: ../lib/advene/rules/elements.py:1011
-msgid "Player start"
-msgstr "Reproductor inicia"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:675
+msgid "display as list"
+msgstr "mostrar como lista"
 
-#: ../lib/advene/rules/elements.py:1012
-msgid "Player stop"
-msgstr "Reproductor detiene"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:676
+#, fuzzy
+msgid "display as grid"
+msgstr "mostrar como lista"
 
-#: ../lib/advene/rules/elements.py:1013
-msgid "Player pause"
-msgstr "Reproductor pausa"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:677
+msgid "display as table"
+msgstr "mostrar como tabla"
 
-#: ../lib/advene/rules/elements.py:1014
-msgid "Player resume"
-msgstr "Reproductor continua"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:678
+msgid "display as transcription"
+msgstr "mostrar como transcripción"
 
-#: ../lib/advene/rules/elements.py:1015
-msgid "Going to a given position"
-msgstr "Ir a una posición dada"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:687
+msgid "Open link"
+msgstr "Abrir vínculo"
 
-#: ../lib/advene/rules/elements.py:1016
-msgid "Loading a new package"
-msgstr "Cargando un nuevo paquete"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:743
+#, python-format
+msgid "HTML editor: cannot parse content (%s)"
+msgstr "Editor HTML: no puede analizar el contenido (%s)"
 
-#: ../lib/advene/rules/elements.py:1017
-msgid "Activating a package"
-msgstr "Activando un paquete"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#, python-format
+msgid "Heading %d"
+msgstr "Título %d"
 
-#: ../lib/advene/rules/elements.py:1018
-msgid "Saving the package"
-msgstr "Guardando el paquete"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
+msgid "Bold"
+msgstr "Negrita"
 
-#: ../lib/advene/rules/elements.py:1019
-msgid "Start of the dynamic view"
-msgstr "Estado de la vista dinamica"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:786
+msgid "Italic"
+msgstr "Itálica"
 
-#: ../lib/advene/rules/elements.py:1020
-msgid "End of the dynamic view"
-msgstr "Fin de la vista dinámica"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
+msgid "Header"
+msgstr "Encabezado"
 
-#: ../lib/advene/rules/elements.py:1021
-msgid "Start of the application"
-msgstr "Inicio de la aplicacion"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+msgid "Copy"
+msgstr "Copiar"
 
-#: ../lib/advene/rules/elements.py:1022
-msgid "End of the application"
-msgstr "Fin de la aplicacion"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:790
+msgid "Cut"
+msgstr "Cortar"
 
-#: ../lib/advene/rules/elements.py:1023
-msgid "User-defined event"
-msgstr "Eventos definidos por el usuario"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
+msgid "Paste"
+msgstr "Pegar"
 
-#: ../lib/advene/rules/elements.py:1024
-msgid "Modification of the associated media"
-msgstr "Modificación del medio asociado"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:793
+#: ../lib/advene/gui/views/timeline.py:139
+msgid "Refresh"
+msgstr "Refrescar"
 
-#: ../lib/advene/rules/elements.py:1025
-msgid "Highlight a bookmark"
-msgstr "Resaltar separador"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:849
+msgid "WYSIWYG editor"
+msgstr "Editor WYSIWYG"
 
-#: ../lib/advene/rules/elements.py:1026
-msgid "Unhighlight a bookmark"
-msgstr "Remover resaltado del separador"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:859
+msgid "Edit HTML source"
+msgstr "Editar el código fuente HTML"
 
-#: ../lib/advene/rules/elements.py:1027
-msgid "Updating duration of the movie"
-msgstr "Actualizando la duración de la película"
+#: ../lib/advene/gui/plugins/tracetimeline.py:71
+#: ../lib/advene/gui/plugins/tracepreview.py:79
+msgid "Moving to"
+msgstr "Moviendo hacia"
 
-#: ../lib/advene/rules/elements.py:1028
-msgid "Displaying a popup"
-msgstr "Muestra una ventana flotante"
+#: ../lib/advene/gui/plugins/tracetimeline.py:87
+msgid "Traces"
+msgstr "Rastreos"
 
-#: ../lib/advene/rules/elements.py:1029
-msgid "Updating a snapshot"
-msgstr "Actualiza una captura"
+#: ../lib/advene/gui/plugins/tracetimeline.py:213
+#, python-format
+msgid "%(name)s (%(index)d)"
+msgstr "%(name)s (%(index)d)"
 
-#: ../lib/advene/rules/elements.py:1067
-msgid "Player control"
-msgstr "Control del reproductor"
+#: ../lib/advene/gui/plugins/tracetimeline.py:241
+msgid "Search"
+msgstr "Buscar"
 
-#: ../lib/advene/rules/elements.py:1068
-msgid "Audio enrichment"
-msgstr "Enriquecer audio"
+#: ../lib/advene/gui/plugins/tracetimeline.py:254
+#: ../lib/advene/gui/plugins/tracetimeline.py:1219
+#, python-format
+msgid "%(name)s (%(index)s)"
+msgstr "%(name)s (%(index)s)"
 
-#: ../lib/advene/rules/elements.py:1069
-msgid "Image enrichment"
-msgstr "Enriquecer imagen"
+#: ../lib/advene/gui/plugins/tracetimeline.py:426
+#: ../lib/advene/gui/views/timeline.py:3457
+#: ../lib/advene/gui/edit/montage.py:446
+msgid "Zoom out"
+msgstr "Alejar"
 
-#: ../lib/advene/rules/elements.py:1070
-msgid "External display control"
-msgstr "Control de la pantalla externa"
+#: ../lib/advene/gui/plugins/tracetimeline.py:431
+#: ../lib/advene/gui/views/timeline.py:3462
+#: ../lib/advene/gui/edit/montage.py:451
+msgid "Zoom in"
+msgstr "Acercar"
 
-#: ../lib/advene/rules/elements.py:1071
-msgid "Popup"
-msgstr "Ventana flotante"
+#: ../lib/advene/gui/plugins/tracetimeline.py:436
+msgid "Zoom 100%"
+msgstr "Zoom 100%"
 
-#: ../lib/advene/rules/elements.py:1073
-msgid "State"
-msgstr "Estado"
+#: ../lib/advene/gui/plugins/tracetimeline.py:440
+msgid "Toggle links lock"
+msgstr "Conmutar bloqueo de vínculos "
 
-#: ../lib/advene/rules/elements.py:1074
-msgid "GUI actions"
-msgstr "Acciones GUI"
+#: ../lib/advene/gui/plugins/tracetimeline.py:448
+msgid "Toggle link mode"
+msgstr "Conmutar modo de vínculo"
 
-#: ../lib/advene/rules/elements.py:1075
-msgid "Expert"
-msgstr "Acciones genéricas"
+#: ../lib/advene/gui/plugins/tracetimeline.py:455
+msgid "Open a trace file"
+msgstr "Abre un archivo de rastreo"
 
-#: ../lib/advene/gui/util/initialconfig.py:82
-msgid "Initial Advene configuration"
-msgstr "Configuración inicial de advene"
+#: ../lib/advene/gui/plugins/tracetimeline.py:470
+msgid "Toggle auto refresh"
+msgstr "Conmutar auto refrescar"
 
-#: ../lib/advene/gui/util/initialconfig.py:83
-msgid ""
-"<span size='large'><b>Welcome in Advene</b>\n"
-"This is the first time that you run Advene. Please answer some basic "
-"configuration questions. You will be able to modify these choices from the "
-"Advene interface, in the Edit/Preferences menu.</span>"
-msgstr ""
-"<span size='large'><b>Bienvenido a Advene</b>\n"
-"Esta es la primera vez que se ejecuta Advene. Por favor, contesta algunas "
-"preguntas básicas de configuración. Vas a poder modificar estas opciones "
-"desde la interfaz Advene, en el menú Editar / Preferencias.</span>"
+#: ../lib/advene/gui/plugins/tracetimeline.py:481
+msgid "Open an existing trace"
+msgstr "Abrir un trazo existente"
 
-#: ../lib/advene/gui/util/initialconfig.py:84
-msgid "Interface language"
-msgstr "Idioma de la interfaz"
+#: ../lib/advene/gui/plugins/tracetimeline.py:487
+msgid "Save trace"
+msgstr "Guardar rastreo"
 
-#: ../lib/advene/gui/util/initialconfig.py:84
-msgid "Language used for the interface"
-msgstr "Idioma utilizado para la interfaz"
+#: ../lib/advene/gui/plugins/tracetimeline.py:492
+msgid "Configuration"
+msgstr "Configuración"
 
-#: ../lib/advene/gui/util/initialconfig.py:88 ../lib/advene/gui/main.py:4247
-msgid "System default"
-msgstr "Predeterminado del sistema"
+#: ../lib/advene/gui/plugins/tracetimeline.py:946
+msgid "Zoom and center on linked items"
+msgstr "Acercar y centrar en los elementos vinculados"
 
-#: ../lib/advene/gui/util/initialconfig.py:90
-msgid "Weekly check for Advene updates on the Advene website"
-msgstr ""
-"Revisar semanalmente por actualizaciones de Advene en el sitio de Advene"
+#: ../lib/advene/gui/plugins/tracetimeline.py:955
+msgid "Edit item"
+msgstr "Editar elemento"
 
-#: ../lib/advene/gui/util/initialconfig.py:90 ../lib/advene/gui/main.py:4273
-msgid "Weekly check for updates on the Advene website"
-msgstr "Revisión semanal de actualización en el sitio de Advene"
+#: ../lib/advene/gui/plugins/tracetimeline.py:959
+msgid "Recreate item"
+msgstr "Recrear elemento"
 
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for data files"
-msgstr "Directorio preferido para archivos de datos"
+#: ../lib/advene/gui/plugins/tracetimeline.py:975
+#: ../lib/advene/gui/plugins/tracetimeline.py:996
+#: ../lib/advene/gui/views/timeline.py:2584 ../lib/advene/gui/popup.py:513
+#: ../lib/advene/gui/edit/transcribe.py:500
+msgid "Go to..."
+msgstr "Ir a..."
 
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for storing data files (Advene packages)"
-msgstr ""
-"Directorio preferido para almacenar archivos de datos (Paquetes de Advene)"
+#: ../lib/advene/gui/plugins/tracetimeline.py:979
+msgid "Zoom on action"
+msgstr "Acercar en acción"
 
-#: ../lib/advene/gui/util/initialconfig.py:94
-msgid "Directories to search for movies"
-msgstr "Directorios para buscar archivos de video"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2023
+#: ../lib/advene/gui/views/timeline.py:3331
+#: ../lib/advene/gui/edit/montage.py:541
+msgid "Inspector"
+msgstr "Inspector"
 
-#: ../lib/advene/gui/util/initialconfig.py:94
-#, python-format
-msgid ""
-"List of directories (separated by %(pathsep)s) to search for movie files."
-msgstr ""
-"Lista de directorios (separados por %(pathsep)s) para buscar archivos de "
-"video."
+#: ../lib/advene/gui/plugins/tracetimeline.py:2028
+msgid "Item Id"
+msgstr "Elemento Id"
 
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid "First look for movie file in the same directory as the package"
-msgstr "Primero busca el archivo de video en el mismo directorio del paquete"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2031
+msgid "Item name or class"
+msgstr "Nombre de item o clase"
 
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid ""
-"If checked, the movie file will be searched for in the same directory as the "
-"referencing package."
-msgstr ""
-"Si está seleccionado, el archivo de video se buscará en el mismo directorio "
-"al paquete que hace referencia."
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
+msgid "Type or schema"
+msgstr "Tipo o esquema"
 
-#: ../lib/advene/gui/util/__init__.py:39
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
-#: ../lib/advene/gui/edit/create.py:106
-msgid "Plain text content"
-msgstr "Contenido de texto plano"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
+msgid "Operations"
+msgstr "Operaciones"
 
-#: ../lib/advene/gui/util/__init__.py:40
-msgid "HTML content"
-msgstr "Contenido HTML"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2081
+msgid "Comment"
+msgstr "Comentar"
 
-#: ../lib/advene/gui/util/__init__.py:41
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
-#: ../lib/advene/gui/edit/create.py:107
-msgid "Simple-structured content"
-msgstr "Contenido de estructura simple"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2113
+#: ../lib/advene/gui/edit/merge.py:191
+msgid "Action"
+msgstr "Acción"
 
-#: ../lib/advene/gui/util/__init__.py:42
-msgid "List of numeric values"
-msgstr "Lista de valores numéricos"
+#: ../lib/advene/gui/plugins/logmessages.py:35
+msgid "Log Messages"
+msgstr "Registrar mensajes"
 
-#: ../lib/advene/gui/util/__init__.py:43
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
-#: ../lib/advene/gui/edit/create.py:108
-msgid "SVG graphics content"
-msgstr "Contenido de gráficos SVG"
+#: ../lib/advene/gui/plugins/actions.py:40 ../lib/advene/core/controller.py:277
+#: ../lib/advene/rules/actions.py:36
+msgid "Display a message"
+msgstr "Muestra un mensaje"
 
-#: ../lib/advene/gui/util/__init__.py:459
-#, python-format
-msgid ""
-"Annotation Type %(title)s:\n"
-"%(count)s"
-msgstr ""
-"Tipo de anotación %(title)s:\n"
-"%(count)s"
+#: ../lib/advene/gui/plugins/actions.py:41
+#: ../lib/advene/gui/plugins/actions.py:53
+#: ../lib/advene/gui/plugins/actions.py:71
+#: ../lib/advene/gui/plugins/actions.py:86
+#: ../lib/advene/gui/plugins/actions.py:102
+#: ../lib/advene/gui/plugins/actions.py:203
+#: ../lib/advene/core/controller.py:278
+msgid "String to display."
+msgstr "Cadena a mostrar"
 
-#: ../lib/advene/gui/util/__init__.py:465
-#, python-format
-msgid ""
-"Relation Type %(title)s:\n"
-"%(count)s"
-msgstr ""
-"Tipo de relación %(title)s:\n"
-"%(count)s"
+#: ../lib/advene/gui/plugins/actions.py:44
+#: ../lib/advene/gui/plugins/actions.py:58
+#: ../lib/advene/gui/plugins/actions.py:110
+#: ../lib/advene/gui/plugins/actions.py:399
+#: ../lib/advene/gui/plugins/actions.py:527 ../lib/advene/gui/edit/rules.py:770
+#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
+#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
+#: ../lib/advene/rules/actions.py:123
+msgid "The annotation content"
+msgstr "El contenido de la anotación "
 
-#: ../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
-#: ../lib/advene/gui/views/table.py:557 ../lib/advene/gui/main.py:4176
-msgid "Title"
-msgstr "Titulo"
+#: ../lib/advene/gui/plugins/actions.py:52
+msgid "Display a popup"
+msgstr "Muestra un popup"
 
-#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/rules.py:1092
-#: ../lib/advene/gui/edit/imports.py:325
-#: ../lib/advene/gui/edit/elements.py:507
-#: ../lib/advene/gui/edit/elements.py:556
-#: ../lib/advene/gui/edit/elements.py:644
-#: ../lib/advene/gui/edit/elements.py:724
-#: ../lib/advene/gui/edit/elements.py:873
-#: ../lib/advene/gui/edit/elements.py:942
-#: ../lib/advene/gui/edit/elements.py:1054
-#: ../lib/advene/gui/edit/elements.py:1115
-#: ../lib/advene/gui/views/table.py:255 ../lib/advene/gui/views/table.py:559
-msgid "Id"
-msgstr "Id"
+#: ../lib/advene/gui/plugins/actions.py:54
+#: ../lib/advene/gui/plugins/actions.py:73
+#: ../lib/advene/gui/plugins/actions.py:88
+#: ../lib/advene/gui/plugins/actions.py:104
+#: ../lib/advene/gui/plugins/actions.py:160
+#: ../lib/advene/gui/plugins/actions.py:184
+msgid "Display duration in ms. Ignored if empty."
+msgstr "Muestra la duración en ms. Ignorado si esta vacio."
 
-#: ../lib/advene/gui/util/dialog.py:404 ../lib/advene/gui/util/dialog.py:443
-msgid "Name the element"
-msgstr "Nombra el elemetno"
+#: ../lib/advene/gui/plugins/actions.py:61
+#: ../lib/advene/gui/plugins/actions.py:121
+#: ../lib/advene/gui/plugins/actions.py:403
+#: ../lib/advene/gui/plugins/actions.py:538 ../lib/advene/rules/actions.py:110
+#: ../lib/advene/rules/actions.py:172
+msgid "1 second"
+msgstr "1 segundo"
 
-#: ../lib/advene/gui/util/dialog.py:407 ../lib/advene/gui/util/dialog.py:444
-msgid "Choose a name for the element"
-msgstr "Elige un nombre para el elemento"
+#: ../lib/advene/gui/plugins/actions.py:62
+#: ../lib/advene/gui/plugins/actions.py:122
+#: ../lib/advene/gui/plugins/actions.py:404
+#: ../lib/advene/gui/plugins/actions.py:539 ../lib/advene/gui/edit/rules.py:777
+#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
+msgid "The annotation duration"
+msgstr "La duración de la anotación"
 
-#: ../lib/advene/gui/util/dialog.py:482
-msgid "Open a file"
-msgstr "Abre un archivo"
+#: ../lib/advene/gui/plugins/actions.py:70
+msgid "Popup an entry box"
+msgstr "Caja de entrada en ventana flotante"
 
-#: ../lib/advene/gui/util/dialog.py:507 ../lib/advene/gui/util/dialog.py:543
-msgid "N/C"
-msgstr "N/C"
+#: ../lib/advene/gui/plugins/actions.py:72
+msgid "Object where to store the answer (should have a content)"
+msgstr "Objeto donde guardar la respuesta (debe tener un contenido)"
 
-#: ../lib/advene/gui/util/dialog.py:512
-msgid "Alias"
-msgstr "Alias"
+#: ../lib/advene/gui/plugins/actions.py:84
+msgid "Display a popup to go to another position"
+msgstr "Muestra un popup para ir a otra posicion"
 
-#: ../lib/advene/gui/util/dialog.py:532
-msgid ""
-"Press to\n"
-"display\n"
-"information"
-msgstr ""
-"Presiona para\n"
-"mostrar\n"
-"informacion"
-
-#: ../lib/advene/gui/util/dialog.py:551
-msgid "Wait..."
-msgstr "Espera..."
-
-#: ../lib/advene/gui/util/dialog.py:555
-#, python-format
-msgid "Error: %s"
-msgstr "Error: %s"
+#: ../lib/advene/gui/plugins/actions.py:85
+#: ../lib/advene/gui/plugins/actions.py:101
+#: ../lib/advene/gui/plugins/actions.py:155
+#: ../lib/advene/gui/plugins/actions.py:177
+msgid "General description"
+msgstr "Descripcion general."
 
-#: ../lib/advene/gui/util/dialog.py:575
-msgid "Any type of file"
-msgstr "Cualquier tipo de archivo"
+#: ../lib/advene/gui/plugins/actions.py:87
+msgid "New position"
+msgstr "Nueva posicion"
 
-#: ../lib/advene/gui/util/dialog.py:577
-msgid "Advene files (.xml, .azp, .apl)"
-msgstr "Archivos de Advene (.xml, .azp, .apl)"
+#: ../lib/advene/gui/plugins/actions.py:90
+#: ../lib/advene/gui/plugins/actions.py:191
+msgid "Go to related annotation"
+msgstr "Ir a la anotación relacionada"
 
-#: ../lib/advene/gui/util/dialog.py:579
-msgid "Advene session (.apl)"
-msgstr "Sesión de Advene (.apl)"
+#: ../lib/advene/gui/plugins/actions.py:100
+msgid "Display a popup linking to an URL"
+msgstr "Mostrar una ventana flotante vinculando a un URL"
 
-#: ../lib/advene/gui/util/dialog.py:580
-msgid "Audio files"
-msgstr "Archivos de audio"
+#: ../lib/advene/gui/plugins/actions.py:103
+#: ../lib/advene/gui/views/logwindow.py:159 ../lib/advene/rules/actions.py:226
+msgid "URL"
+msgstr "URL"
 
-#: ../lib/advene/gui/util/dialog.py:581
-msgid "Video files"
-msgstr "Archivos de video"
+#: ../lib/advene/gui/plugins/actions.py:106
+msgid "string:Display annotation in web browser"
+msgstr "string:Muestra anotación en el navegador web"
 
-#: ../lib/advene/gui/util/dialog.py:626
-#: ../lib/advene/gui/edit/properties.py:418
-msgid "Choose a directory"
-msgstr "Elige un directorio"
+#: ../lib/advene/gui/plugins/actions.py:113
+#: ../lib/advene/gui/views/logwindow.py:160
+#: ../lib/advene/gui/views/logwindow.py:163
+msgid "See the Advene website"
+msgstr "Ver el sitio de Advene"
 
-#: ../lib/advene/gui/util/dialog.py:679
-msgid "Select an element"
-msgstr "Selecciona un elemento"
+#: ../lib/advene/gui/plugins/actions.py:114
+#: ../lib/advene/gui/views/logwindow.py:164
+msgid "See the annotation"
+msgstr "Ver la anotación"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:32
-msgid "Shot validation view"
-msgstr "Vista de validación de capturas"
+#: ../lib/advene/gui/plugins/actions.py:117
+#: ../lib/advene/gui/views/logwindow.py:167
+msgid "The Advene website"
+msgstr "El sitio de Advene"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:34
-msgid "Display shot validation interface"
-msgstr "Muestra la interfaz de validación de capturas"
+#: ../lib/advene/gui/plugins/actions.py:118
+#: ../lib/advene/gui/views/logwindow.py:168
+msgid "The annotation URL"
+msgstr "El URL de la anotación"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:111
-#, python-format
-msgid "Merged #%(first)d-#%(second)d into #%(first)d"
-msgstr "Unidos #%(first)d-#%(second)d en #%(first)d"
+#: ../lib/advene/gui/plugins/actions.py:130
+msgid "Open an interface view"
+msgstr "Abrir una interfaz de vista"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:136
-msgid "Last action undone"
-msgstr "Última acción deshecha"
+#: ../lib/advene/gui/plugins/actions.py:131
+msgid ""
+"View name (timeline, tree, transcription, browser, webbrowser, transcribe)"
+msgstr ""
+"Nombre de vista (linea de tiempo, árbol, transcripción, navegador, navegador "
+"web, transcribir)"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:154
-#, python-format
-msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
-msgstr "Dividir anotación #%(current)d en #%(current)d y #%(next)d"
+#: ../lib/advene/gui/plugins/actions.py:132
+msgid "Destination: popup, south, east"
+msgstr "Destino: popup, sur, este"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:159
-#, python-format
-msgid "Cannot split annotation #%(current)d: out of bounds."
-msgstr "No se puede dividir la anotación #%(current)d: fuera de límite."
+#: ../lib/advene/gui/plugins/actions.py:144
+#: ../lib/advene/gui/views/viewbook.py:307
+msgid "Open a saved view"
+msgstr "Abrir una vista almacenada"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
-#, python-format
-msgid "Changed cut between #%(first)d and %(second)d"
-msgstr "Cambiar corte entre #%(first)d y %(second)d"
+#: ../lib/advene/gui/plugins/actions.py:145
+msgid "Identifier of the saved view"
+msgstr "Identificador de la vista guardada"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:182
-msgid "Changed begin time for first annotation"
-msgstr "Tiempo de inicio cambiado para la primer anotación"
+#: ../lib/advene/gui/plugins/actions.py:154
+msgid "Display a popup with 2 options"
+msgstr "Muestra un popup con 2 opciones"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:188
-msgid "No annotations to adjust"
-msgstr "No hay anotaciones para ajustar"
+#: ../lib/advene/gui/plugins/actions.py:156
+#: ../lib/advene/gui/plugins/actions.py:178
+msgid "First option description"
+msgstr "Descripción de la primera opcion"
 
-#: ../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 ""
-"Clic en el cuadro justo después del corte para ajustar el tiempo de corte.\n"
-"Control-clic en un cuadro para indicar un corte faltante."
+#: ../lib/advene/gui/plugins/actions.py:157
+#: ../lib/advene/gui/plugins/actions.py:179
+msgid "First position"
+msgstr "Primera posicion"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:203
-#, python-format
-msgid "Begin of #%(index)d (title: %(content)s)"
-msgstr "Principio de #%(index)d (title: %(content)s)"
+#: ../lib/advene/gui/plugins/actions.py:158
+#: ../lib/advene/gui/plugins/actions.py:180
+msgid "Second option description"
+msgstr "Descripcion de la segunda opcion"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:217
-msgid "< Previous cut"
-msgstr "< Corte anterior"
+#: ../lib/advene/gui/plugins/actions.py:159
+#: ../lib/advene/gui/plugins/actions.py:181
+msgid "Second position"
+msgstr "Segunda posicion"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:218
-msgid "Display previous cut"
-msgstr "Muestra el corte anterior"
+#: ../lib/advene/gui/plugins/actions.py:163
+#: ../lib/advene/gui/plugins/actions.py:187
+msgid "Go to the beginning"
+msgstr "Ir al comienzo"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:225
-msgid "Next cut >"
-msgstr "Corte siguiente >"
+#: ../lib/advene/gui/plugins/actions.py:165
+#: ../lib/advene/gui/plugins/actions.py:189
+msgid "Go to the end"
+msgstr "Ir al final"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:226
-msgid "Display next cut"
-msgstr "Muestra el corte siguiente"
+#: ../lib/advene/gui/plugins/actions.py:176
+msgid "Display a popup with 3 options"
+msgstr "Muestra un popup con 3 opciones"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:251
-#: ../lib/advene/gui/views/timeline.py:81
-#: ../lib/advene/gui/views/annotationdisplay.py:90
-msgid "Current time"
-msgstr "Tiempo actual"
+#: ../lib/advene/gui/plugins/actions.py:182
+msgid "Third option description"
+msgstr "Descripcion de la tercera opcion"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:252
-msgid "Go to annotation containing current player time."
-msgstr "Ir a la anotación que contiene el tiempo actual del reproductor."
+#: ../lib/advene/gui/plugins/actions.py:183
+msgid "Third position"
+msgstr "Tercera posicion"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:256
-#: ../lib/advene/gui/edit/frameselector.py:193
-msgid "Refresh snapshots"
-msgstr "Refrescar capturas"
+#: ../lib/advene/gui/plugins/actions.py:202
+msgid "Display a popup to navigate to related annotations"
+msgstr ""
+"Muestra una ventana flotante para navegar a las anotaciones relacionadas"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:257
-#: ../lib/advene/gui/edit/frameselector.py:194
-msgid "Refresh missing snapshots"
-msgstr "Refrescar capturas faltantes"
+#: ../lib/advene/gui/plugins/actions.py:204
+#: ../lib/advene/gui/plugins/actions.py:559
+msgid "Choose the related annotation you want to visualise."
+msgstr "Elige el tipo de anotación relacionada que quieres visualizar."
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:261
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:806
-#: ../lib/advene/gui/edit/transcribe.py:1211 ../lib/advene/gui/main.py:350
-msgid "Undo"
-msgstr "Deshacer"
+#: ../lib/advene/gui/plugins/actions.py:211
+msgid "Create a bookmark"
+msgstr "Crea un separador"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:262
-msgid "Undo last modification"
-msgstr "Deshacer la última modificación"
+#: ../lib/advene/gui/plugins/actions.py:212
+msgid "Bookmark position (in ms)"
+msgstr "Separar posición (en ms)"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:268
-msgid "Merge with previous"
-msgstr "Unir con anterior"
+#: ../lib/advene/gui/plugins/actions.py:213
+msgid "Bookmark content."
+msgstr "Contenido del separador."
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:269
-msgid "Merge with previous annotation, i.e. remove this bound."
-msgstr "Unir con la anotación previa, i.e. remover este contenedor. "
+#: ../lib/advene/gui/plugins/actions.py:214
+msgid "Bookmark"
+msgstr "Separador"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:274
-msgid "Close view."
-msgstr "Cerrar vista."
+#: ../lib/advene/gui/plugins/actions.py:234 ../lib/advene/plugins/brltty.py:240
+#: ../lib/advene/plugins/tts.py:110
+msgid "Unknown rule"
+msgstr "Regla desconocida"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:60
-#: ../lib/advene/gui/plugins/tracetimeline.py:61
-#: ../lib/advene/gui/plugins/eventaccumulator.py:73
-#: ../lib/advene/gui/plugins/eventaccumulator.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:72
-#: ../lib/advene/gui/plugins/tracepreview.py:73
-msgid "Beginning edition"
-msgstr "Comenzando edición"
+#: ../lib/advene/gui/plugins/actions.py:235 ../lib/advene/plugins/brltty.py:241
+#: ../lib/advene/plugins/tts.py:111
+#, python-format
+msgid ""
+"Rule %(rulename)s: Error in the evaluation of the parameter "
+"%(parametername)s:"
+msgstr ""
+"Regla %(rulename)s: Error en la evaluación del parámetro %(parametername)s:"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:62
-#: ../lib/advene/gui/plugins/tracetimeline.py:63
-#: ../lib/advene/gui/plugins/tracetimeline.py:64
-#: ../lib/advene/gui/plugins/eventaccumulator.py:75
-#: ../lib/advene/gui/plugins/eventaccumulator.py:76
-#: ../lib/advene/gui/plugins/eventaccumulator.py:77
-#: ../lib/advene/gui/plugins/tracepreview.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:75
-#: ../lib/advene/gui/plugins/tracepreview.py:76
-msgid "Canceling edition"
-msgstr "Cancelando edición"
+#: ../lib/advene/gui/plugins/actions.py:247 ../lib/advene/rules/actions.py:389
+#, python-format
+msgid "The %s-related outgoing annotation"
+msgstr "La relación saliente  %s-relacionada"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:65
-#: ../lib/advene/gui/plugins/eventaccumulator.py:78
-#: ../lib/advene/gui/plugins/tracepreview.py:77
-msgid "Ending edition"
-msgstr "Finalizando edición"
+#: ../lib/advene/gui/plugins/actions.py:249 ../lib/advene/rules/actions.py:391
+#, python-format
+msgid "The %s-related incoming annotation"
+msgstr "La relación entrante %s-relacionada"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:66
-#: ../lib/advene/gui/plugins/tracepreview.py:78
-msgid "Moving to"
-msgstr "Moviendo hacia"
+#: ../lib/advene/gui/plugins/actions.py:259
+#: ../lib/advene/gui/plugins/actions.py:340
+#: ../lib/advene/gui/plugins/actions.py:358 ../lib/advene/plugins/tts.py:131
+msgid "No message..."
+msgstr "Sin mensaje..."
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:82
-msgid "Traces"
-msgstr "Rastreos"
+#: ../lib/advene/gui/plugins/actions.py:276
+#, python-format
+msgid "Error: undefined GUI view %s"
+msgstr "Error: vista GUI indefinida %s"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:208
+#: ../lib/advene/gui/plugins/actions.py:322
 #, python-format
-msgid "%(name)s (%(index)d)"
-msgstr "%(name)s (%(index)d)"
+msgid "Element %s does not look like a view"
+msgstr "Elemento %s no parece una vista"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:236
-msgid "Search"
-msgstr "Buscar"
+#: ../lib/advene/gui/plugins/actions.py:350
+msgid "Information popup"
+msgstr "Popup de informacion"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1224
+#: ../lib/advene/gui/plugins/actions.py:364
 #, python-format
-msgid "%(name)s (%(index)s)"
-msgstr "%(name)s (%(index)s)"
+msgid "Empty destination for entry popup: %s"
+msgstr "Destino vacío para ventana flotante de entrada: %s"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:421
-#: ../lib/advene/gui/edit/montage.py:439
-#: ../lib/advene/gui/views/timeline.py:3444
-msgid "Zoom out"
-msgstr "Alejar"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:426
-#: ../lib/advene/gui/edit/montage.py:444
-#: ../lib/advene/gui/views/timeline.py:3449
-msgid "Zoom in"
-msgstr "Acercar"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:431
-msgid "Zoom 100%"
-msgstr "Zoom 100%"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:435
-msgid "Toggle links lock"
-msgstr "Conmutar bloqueo de vínculos "
+#: ../lib/advene/gui/plugins/actions.py:367
+#, python-format
+msgid "Destination does not have a content: %s"
+msgstr "Destino no tiene contenido: %s"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:443
-msgid "Toggle link mode"
-msgstr "Conmutar modo de vínculo"
+#: ../lib/advene/gui/plugins/actions.py:394
+msgid "Entry popup"
+msgstr "Ventana flotante de entrada"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:450
-msgid "Open a trace file"
-msgstr "Abre un archivo de rastreo"
+#: ../lib/advene/gui/plugins/actions.py:419
+msgid "Follow a link"
+msgstr "Seguir un vínculo"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:465
-msgid "Toggle auto refresh"
-msgstr "Conmutar auto refrescar"
+#: ../lib/advene/gui/plugins/actions.py:423
+msgid "Click to open the URL"
+msgstr "Clic para abrir el URL"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:476
-msgid "Open an existing trace"
-msgstr "Abrir un trazo existente"
+#: ../lib/advene/gui/plugins/actions.py:441
+msgid "URL popup"
+msgstr "Ventana flotante URL"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:482
-msgid "Save trace"
-msgstr "Guardar rastreo"
+#: ../lib/advene/gui/plugins/actions.py:454
+#: ../lib/advene/gui/plugins/actions.py:491
+msgid "Make a choice"
+msgstr "Has una eleccion"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:487
-msgid "Configuration"
-msgstr "Configuración"
+#: ../lib/advene/gui/plugins/actions.py:458
+msgid "Click to go to another position"
+msgstr "Click para ir a otra posicion"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:668
-#: ../lib/advene/gui/plugins/eventaccumulator.py:202
-msgid "Exporting traces"
-msgstr "Exportando rastreos"
+#: ../lib/advene/gui/plugins/actions.py:477
+#: ../lib/advene/gui/plugins/actions.py:515
+#: ../lib/advene/gui/views/singletonpopup.py:98
+msgid "Navigation popup"
+msgstr "Popup de navegación"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:673
-#: ../lib/advene/gui/plugins/eventaccumulator.py:207
+#: ../lib/advene/gui/plugins/actions.py:500
 #, python-format
-msgid ""
-"Export done to\n"
-"%s"
-msgstr ""
-"Exportación realizada a\n"
-"%s"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:951
-msgid "Zoom and center on linked items"
-msgstr "Acercar y centrar en los elementos vinculados"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:960
-msgid "Edit item"
-msgstr "Editar elemento"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:964
-msgid "Recreate item"
-msgstr "Recrear elemento"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:980
-#: ../lib/advene/gui/plugins/tracetimeline.py:1001
-#: ../lib/advene/gui/edit/transcribe.py:502
-#: ../lib/advene/gui/views/timeline.py:2556 ../lib/advene/gui/popup.py:513
-msgid "Go to..."
-msgstr "Ir a..."
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:984
-msgid "Zoom on action"
-msgstr "Acercar en acción"
+msgid "Choice %d"
+msgstr "Eleccion %d"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
-#: ../lib/advene/gui/edit/montage.py:535
-#: ../lib/advene/gui/views/timeline.py:3318
-msgid "Inspector"
-msgstr "Inspector"
+#: ../lib/advene/gui/plugins/actions.py:521
+msgid "The beginning of the annotation"
+msgstr "El principio de la anotación"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2035
-msgid "Item Id"
-msgstr "Elemento Id"
+#: ../lib/advene/gui/plugins/actions.py:522
+msgid "The end of the annotation"
+msgstr "El final de la anotación"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2038
-msgid "Item name or class"
-msgstr "Nombre de item o clase"
+#: ../lib/advene/gui/plugins/actions.py:523
+msgid "The next annotation of the same type"
+msgstr "La siguiente anotación del mismo tipo"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2042
-msgid "Type or schema"
-msgstr "Tipo o esquema"
+#: ../lib/advene/gui/plugins/actions.py:524
+msgid "The previous annotation of the same type"
+msgstr "La anotación previa del mismo tipo"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2045
-msgid "Operations"
-msgstr "Operaciones"
+#: ../lib/advene/gui/plugins/actions.py:573
+#, python-format
+msgid ""
+"Through %(title)s%(relation_content)s:\n"
+"%(annotation_content)s"
+msgstr ""
+"A través %(title)s%(relation_content)s:\n"
+"%(annotation_content)s"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2087
-msgid "Comment"
-msgstr "Comentar"
+#: ../lib/advene/gui/plugins/actions.py:581
+msgid "Relation navigation"
+msgstr "Navegación de relaciones"
 
-#: ../lib/advene/gui/plugins/tracetimeline.py:2119
-#: ../lib/advene/gui/edit/merge.py:191
-msgid "Action"
-msgstr "Acción"
+#: ../lib/advene/gui/plugins/actions.py:591
+msgid "New bookmark"
+msgstr "Nuevo separador"
 
 #: ../lib/advene/gui/plugins/kinect.py:41
 msgid "Kinect Controller"
@@ -3345,6157 +3152,6368 @@ msgstr "Controlador Kinect"
 msgid "Kinect control interface"
 msgstr "Interfaz de control Kinect"
 
-#: ../lib/advene/gui/plugins/actions.py:52
-msgid "Display a popup"
-msgstr "Muestra un popup"
+#: ../lib/advene/gui/plugins/contenthandlers.py:123
+msgid "Label"
+msgstr "Etiqueta"
 
-#: ../lib/advene/gui/plugins/actions.py:54
-#: ../lib/advene/gui/plugins/actions.py:73
-#: ../lib/advene/gui/plugins/actions.py:88
-#: ../lib/advene/gui/plugins/actions.py:104
-#: ../lib/advene/gui/plugins/actions.py:160
-#: ../lib/advene/gui/plugins/actions.py:184
-msgid "Display duration in ms. Ignored if empty."
-msgstr "Muestra la duración en ms. Ignorado si esta vacio."
+#: ../lib/advene/gui/plugins/contenthandlers.py:173
+#, python-format
+msgid ""
+"Error while parsing SVG content:\n"
+"\n"
+"%s"
+msgstr ""
+"Error mientras se analizaba contenido SVG:\n"
+"\n"
+"%s"
 
-#: ../lib/advene/gui/plugins/actions.py:70
-msgid "Popup an entry box"
-msgstr "Caja de entrada en ventana flotante"
+#: ../lib/advene/gui/plugins/contenthandlers.py:248
+msgid " created from "
+msgstr "creado de"
 
-#: ../lib/advene/gui/plugins/actions.py:72
-msgid "Object where to store the answer (should have a content)"
-msgstr "Objeto donde guardar la respuesta (debe tener un contenido)"
+#: ../lib/advene/gui/plugins/contenthandlers.py:314
+msgid "Graphical editor"
+msgstr "Editor gráfico"
 
-#: ../lib/advene/gui/plugins/actions.py:84
-msgid "Display a popup to go to another position"
-msgstr "Muestra un popup para ir a otra posicion"
+#: ../lib/advene/gui/plugins/contenthandlers.py:325
+msgid "Edit XML"
+msgstr "Editar XML"
 
-#: ../lib/advene/gui/plugins/actions.py:85
-#: ../lib/advene/gui/plugins/actions.py:101
-#: ../lib/advene/gui/plugins/actions.py:155
-#: ../lib/advene/gui/plugins/actions.py:177
-msgid "General description"
-msgstr "Descripcion general."
+#: ../lib/advene/gui/plugins/contenthandlers.py:377
+#: ../lib/advene/gui/plugins/contenthandlers.py:433
+#: ../lib/advene/gui/edit/rules.py:190
+#, python-format
+msgid ""
+"The following items seem to be\n"
+"invalid TALES expressions:\n"
+"\n"
+"%s"
+msgstr ""
+"Los siguientes elementos parecen ser\n"
+"expresiones TALES no validas:\n"
+"\n"
+"%s"
 
-#: ../lib/advene/gui/plugins/actions.py:87
-msgid "New position"
-msgstr "Nueva posicion"
+#: ../lib/advene/gui/plugins/tracepreview.py:62
+msgid "Trace preview"
+msgstr "Previsualización de rastreo"
 
-#: ../lib/advene/gui/plugins/actions.py:90
-#: ../lib/advene/gui/plugins/actions.py:191
-msgid "Go to related annotation"
-msgstr "Ir a la anotación relacionada"
+#: ../lib/advene/gui/plugins/tracepreview.py:100
+msgid "Full trace"
+msgstr "Rastreo completo"
 
-#: ../lib/advene/gui/plugins/actions.py:100
-msgid "Display a popup linking to an URL"
-msgstr "Mostrar una ventana flotante vinculando a un URL"
+#: ../lib/advene/gui/plugins/tracepreview.py:101
+msgid "Open the trace timeline view fareast"
+msgstr "Abre la vista de línea de tiempo de rastreo lejano oriente (fareast)"
 
-#: ../lib/advene/gui/plugins/actions.py:106
-msgid "string:Display annotation in web browser"
-msgstr "string:Muestra anotación en el navegador web"
+#: ../lib/advene/gui/plugins/videoplayer.py:39
+msgid "Complementary video player"
+msgstr "Reproductor de video complementario"
 
-#: ../lib/advene/gui/plugins/actions.py:113
-#: ../lib/advene/gui/views/logwindow.py:160
-#: ../lib/advene/gui/views/logwindow.py:163
-msgid "See the Advene website"
-msgstr "Ver el sitio de Advene"
+#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/views/bookmarks.py:249
+#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/timeline.py:140 ../lib/advene/gui/edit/montage.py:58
+#: ../lib/advene/gui/edit/transcribe.py:86
+msgid "Save view"
+msgstr "Guardar vista"
 
-#: ../lib/advene/gui/plugins/actions.py:114
-#: ../lib/advene/gui/views/logwindow.py:164
-msgid "See the annotation"
-msgstr "Ver la anotación"
+#: ../lib/advene/gui/plugins/videoplayer.py:46
+#: ../lib/advene/gui/views/transcription.py:58
+#: ../lib/advene/gui/views/timeline.py:141 ../lib/advene/gui/views/tagbag.py:65
+#: ../lib/advene/gui/views/interactivequery.py:60
+#: ../lib/advene/gui/edit/transcribe.py:87
+msgid "Save default options"
+msgstr "Guardar opciones predeterminadas"
 
-#: ../lib/advene/gui/plugins/actions.py:117
-#: ../lib/advene/gui/views/logwindow.py:167
-msgid "The Advene website"
-msgstr "El sitio de Advene"
+#: ../lib/advene/gui/plugins/videoplayer.py:47
+msgid "Select video file"
+msgstr "Selecciona un archivo de video"
 
-#: ../lib/advene/gui/plugins/actions.py:118
-#: ../lib/advene/gui/views/logwindow.py:168
-msgid "The annotation URL"
-msgstr "El URL de la anotación"
+#: ../lib/advene/gui/plugins/videoplayer.py:128
+msgid "Select a video file"
+msgstr "Selecciona un archivo de video"
 
-#: ../lib/advene/gui/plugins/actions.py:130
-msgid "Open an interface view"
-msgstr "Abrir una interfaz de vista"
+#: ../lib/advene/gui/plugins/videoplayer.py:251
+msgid "Synchronize"
+msgstr "Sincronizar"
 
-#: ../lib/advene/gui/plugins/actions.py:131
-msgid ""
-"View name (timeline, tree, transcription, browser, webbrowser, transcribe)"
-msgstr ""
-"Nombre de vista (linea de tiempo, árbol, transcripción, navegador, navegador "
-"web, transcribir)"
+#: ../lib/advene/gui/plugins/videoplayer.py:269
+msgid "Offset in ms"
+msgstr "Desplazamiento en ms"
 
-#: ../lib/advene/gui/plugins/actions.py:132
-msgid "Destination: popup, south, east"
-msgstr "Destino: popup, sur, este"
+#: ../lib/advene/gui/plugins/videoplayer.py:277
+msgid "Drag and drop to get player time"
+msgstr "Arrastra y suelta para obtener el tiempo del reproductor"
 
-#: ../lib/advene/gui/plugins/actions.py:144
-#: ../lib/advene/gui/views/viewbook.py:308
-msgid "Open a saved view"
-msgstr "Abrir una vista almacenada"
+#: ../lib/advene/gui/views/singletonpopup.py:32
+msgid "SingletonPopup"
+msgstr "Ventana flotante Singleton"
 
-#: ../lib/advene/gui/plugins/actions.py:145
-msgid "Identifier of the saved view"
-msgstr "Identificador de la vista guardada"
+#: ../lib/advene/gui/views/caption.py:31
+msgid "Display a text caption below the video output"
+msgstr "Muestra un subtítulo de texto debajo de la salida de video "
 
-#: ../lib/advene/gui/plugins/actions.py:154
-msgid "Display a popup with 2 options"
-msgstr "Muestra un popup con 2 opciones"
+#: ../lib/advene/gui/views/html.py:88
+#, python-format
+msgid "%s%% loaded"
+msgstr "%s%% cargado"
 
-#: ../lib/advene/gui/plugins/actions.py:156
-#: ../lib/advene/gui/plugins/actions.py:178
-msgid "First option description"
-msgstr "Descripción de la primera opcion"
+#: ../lib/advene/gui/views/html.py:91
+#, python-format
+msgid "Title %s"
+msgstr "Título %s"
 
-#: ../lib/advene/gui/plugins/actions.py:157
-#: ../lib/advene/gui/plugins/actions.py:179
-msgid "First position"
-msgstr "Primera posicion"
+#: ../lib/advene/gui/views/html.py:155
+msgid "HTML Viewer"
+msgstr "Visor HTML"
 
-#: ../lib/advene/gui/plugins/actions.py:158
-#: ../lib/advene/gui/plugins/actions.py:180
-msgid "Second option description"
-msgstr "Descripcion de la segunda opcion"
+#: ../lib/advene/gui/views/html.py:157
+msgid "Embedded HTML widget"
+msgstr "Widget HTML embebido"
 
-#: ../lib/advene/gui/plugins/actions.py:159
-#: ../lib/advene/gui/plugins/actions.py:181
-msgid "Second position"
-msgstr "Segunda posicion"
+#: ../lib/advene/gui/views/html.py:185
+msgid "No available HTML rendering component"
+msgstr "No hay un componente de visualización HTML disponible"
 
-#: ../lib/advene/gui/plugins/actions.py:163
-#: ../lib/advene/gui/plugins/actions.py:187
-msgid "Go to the beginning"
-msgstr "Ir al comienzo"
+#: ../lib/advene/gui/views/annotationdisplay.py:43
+msgid "AnnotationDisplay"
+msgstr "VisualizarAnotaciones"
 
-#: ../lib/advene/gui/plugins/actions.py:165
-#: ../lib/advene/gui/plugins/actions.py:189
-msgid "Go to the end"
-msgstr "Ir al final"
+#: ../lib/advene/gui/views/annotationdisplay.py:45
+msgid "Display the contents of an annotation"
+msgstr "Visualizar el contenido de una anotación"
 
-#: ../lib/advene/gui/plugins/actions.py:176
-msgid "Display a popup with 3 options"
-msgstr "Muestra un popup con 3 opciones"
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/util/helper.py:606
+msgid "No annotation"
+msgstr "No hay anotación"
 
-#: ../lib/advene/gui/plugins/actions.py:182
-msgid "Third option description"
-msgstr "Descripcion de la tercera opcion"
+#: ../lib/advene/gui/views/annotationdisplay.py:112
+#, fuzzy, python-format
+msgid ""
+"Schema %(schema)s (id %(id)s)\n"
+"%(description)s\n"
+"%(stats)s"
+msgstr ""
+"Esquema %(schema)s\n"
+"%(description)s\n"
+"%(total)s\n"
+"Id: %(id)s"
 
-#: ../lib/advene/gui/plugins/actions.py:183
-msgid "Third position"
-msgstr "Tercera posicion"
+#: ../lib/advene/gui/views/annotationdisplay.py:233
+msgid "Screenshot"
+msgstr "Captura de pantalla"
 
-#: ../lib/advene/gui/plugins/actions.py:202
-msgid "Display a popup to navigate to related annotations"
-msgstr ""
-"Muestra una ventana flotante para navegar a las anotaciones relacionadas"
+#: ../lib/advene/gui/views/annotationdisplay.py:255
+#: ../lib/advene/gui/views/relationdisplay.py:104
+msgid "Contents"
+msgstr "Contenido"
 
-#: ../lib/advene/gui/plugins/actions.py:204
-#: ../lib/advene/gui/plugins/actions.py:559
-msgid "Choose the related annotation you want to visualise."
-msgstr "Elige el tipo de anotación relacionada que quieres visualizar."
+#: ../lib/advene/gui/views/annotationdisplay.py:258
+#: ../lib/advene/gui/views/editaccumulator.py:73
+msgid "Validate"
+msgstr "Validar"
 
-#: ../lib/advene/gui/plugins/actions.py:211
-msgid "Create a bookmark"
-msgstr "Crea un separador"
+#: ../lib/advene/gui/views/relationdisplay.py:34
+msgid "RelationDisplay"
+msgstr "Mostrar relación"
 
-#: ../lib/advene/gui/plugins/actions.py:212
-msgid "Bookmark position (in ms)"
-msgstr "Separar posición (en ms)"
+#: ../lib/advene/gui/views/relationdisplay.py:36
+msgid "Display the contents of a relation"
+msgstr "Muestra los contenidos de una relación "
 
-#: ../lib/advene/gui/plugins/actions.py:213
-msgid "Bookmark content."
-msgstr "Contenido del separador."
+#: ../lib/advene/gui/views/relationdisplay.py:79
+msgid "No relation"
+msgstr "No hay relación"
 
-#: ../lib/advene/gui/plugins/actions.py:214
-msgid "Bookmark"
-msgstr "Separador"
+#: ../lib/advene/gui/views/relationdisplay.py:113
+#: ../lib/advene/gui/edit/elements.py:586
+#: ../lib/advene/gui/edit/elements.py:1069
+msgid "Members"
+msgstr "Miembros"
 
-#: ../lib/advene/gui/plugins/actions.py:276
-#, python-format
-msgid "Error: undefined GUI view %s"
-msgstr "Error: vista GUI indefinida %s"
+#: ../lib/advene/gui/views/viewplugin.py:60
+msgid "Generic view plugin"
+msgstr "Plugin de vista generica"
 
-#: ../lib/advene/gui/plugins/actions.py:286
-#: ../lib/advene/gui/views/viewbook.py:124 ../lib/advene/gui/main.py:1189
-msgid "...in its own window"
-msgstr "...está en su ventana"
+#: ../lib/advene/gui/views/viewplugin.py:62
+msgid "You should not ever see this tooltip..."
+msgstr "No deberías de ver este consejo de  herramienta..."
 
-#: ../lib/advene/gui/plugins/actions.py:287
-#: ../lib/advene/gui/views/viewbook.py:125
-#: ../lib/advene/gui/views/__init__.py:381 ../lib/advene/gui/main.py:1190
-msgid "...embedded east of the video"
-msgstr "...embebido en el este del video"
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr "Revisador"
 
-#: ../lib/advene/gui/plugins/actions.py:288
-#: ../lib/advene/gui/views/viewbook.py:126
-#: ../lib/advene/gui/views/__init__.py:382 ../lib/advene/gui/main.py:1191
-msgid "...embedded west of the video"
-msgstr "...embebido en el oeste del video"
+#: ../lib/advene/gui/views/checker.py:39
+msgid "Check various package properties"
+msgstr "Revisar varias propiedades del paquete"
 
-#: ../lib/advene/gui/plugins/actions.py:289
-#: ../lib/advene/gui/views/viewbook.py:127
-#: ../lib/advene/gui/views/__init__.py:383 ../lib/advene/gui/main.py:1192
-msgid "...embedded south of the video"
-msgstr "...embebido al sur del video"
+#: ../lib/advene/gui/views/checker.py:90
+msgid "List of possible issues in the current package"
+msgstr "Lista de problemas posibles en el paquete actual"
 
-#: ../lib/advene/gui/plugins/actions.py:290
-#: ../lib/advene/gui/views/viewbook.py:128
-#: ../lib/advene/gui/views/__init__.py:384 ../lib/advene/gui/main.py:1193
-msgid "...embedded at the right of the window"
-msgstr "...embebido a la derecha de la ventana"
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr "Traslapar"
 
-#: ../lib/advene/gui/plugins/actions.py:322
-#, python-format
-msgid "Element %s does not look like a view"
-msgstr "Elemento %s no parece una vista"
+#: ../lib/advene/gui/views/table.py:60
+msgid "Annotation table view"
+msgstr "Vista de tabla de las anotaciones"
 
-#: ../lib/advene/gui/plugins/actions.py:350
-msgid "Information popup"
-msgstr "Popup de informacion"
+#: ../lib/advene/gui/views/table.py:62
+msgid "Display annotations in a table"
+msgstr "Mostrar las anotaciones en una tabla"
 
-#: ../lib/advene/gui/plugins/actions.py:364
-#, python-format
-msgid "Empty destination for entry popup: %s"
-msgstr "Destino vacío para ventana flotante de entrada: %s"
+#: ../lib/advene/gui/views/table.py:73
+#, fuzzy
+msgid "Export as CSV"
+msgstr "Exporta una tabla"
 
-#: ../lib/advene/gui/plugins/actions.py:367
+#: ../lib/advene/gui/views/table.py:90 ../lib/advene/gui/views/table.py:578
+#: ../lib/advene/gui/views/transcription.py:147
 #, python-format
-msgid "Destination does not have a content: %s"
-msgstr "Destino no tiene contenido: %s"
+msgid "Error in source evaluation %(source)s: %(error)s"
+msgstr "Error en la evaluación de la fuente %(source)s: %(error)s"
 
-#: ../lib/advene/gui/plugins/actions.py:394
-msgid "Entry popup"
-msgstr "Ventana flotante de entrada"
+#: ../lib/advene/gui/views/table.py:267 ../lib/advene/gui/views/table.py:544
+msgid "Snapshot"
+msgstr "Capturas"
 
-#: ../lib/advene/gui/plugins/actions.py:419
-msgid "Follow a link"
-msgstr "Seguir un vínculo"
+#: ../lib/advene/gui/views/table.py:280
+#: ../lib/advene/gui/views/timeline.py:1667
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr "No se puede actualizar la anotación, su representación es muy compleja"
 
-#: ../lib/advene/gui/plugins/actions.py:423
-msgid "Click to open the URL"
-msgstr "Clic para abrir el URL"
+#: ../lib/advene/gui/views/table.py:305 ../lib/advene/gui/edit/elements.py:604
+#: ../lib/advene/gui/edit/elements.py:681
+#: ../lib/advene/gui/edit/elements.py:741
+#: ../lib/advene/gui/edit/elements.py:1132
+msgid "Content"
+msgstr "Contenido"
 
-#: ../lib/advene/gui/plugins/actions.py:441
-msgid "URL popup"
-msgstr "Ventana flotante URL"
+#: ../lib/advene/gui/views/table.py:306 ../lib/advene/gui/views/table.py:675
+#: ../lib/advene/gui/views/browser.py:363 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/edit/elements.py:512
+#: ../lib/advene/gui/edit/elements.py:561
+#: ../lib/advene/gui/edit/elements.py:663
+msgid "Type"
+msgstr "Tipo"
 
-#: ../lib/advene/gui/plugins/actions.py:454
-#: ../lib/advene/gui/plugins/actions.py:491
-msgid "Make a choice"
-msgstr "Has una eleccion"
+#: ../lib/advene/gui/views/table.py:307 ../lib/advene/gui/edit/elements.py:1807
+msgid "Begin"
+msgstr "Inicio"
 
-#: ../lib/advene/gui/plugins/actions.py:458
-msgid "Click to go to another position"
-msgstr "Click para ir a otra posicion"
+#: ../lib/advene/gui/views/table.py:310 ../lib/advene/gui/views/table.py:676
+#: ../lib/advene/gui/util/dialog.py:395 ../lib/advene/gui/edit/rules.py:1096
+#: ../lib/advene/gui/edit/imports.py:325 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/edit/elements.py:560
+#: ../lib/advene/gui/edit/elements.py:648
+#: ../lib/advene/gui/edit/elements.py:728
+#: ../lib/advene/gui/edit/elements.py:877
+#: ../lib/advene/gui/edit/elements.py:946
+#: ../lib/advene/gui/edit/elements.py:1058
+#: ../lib/advene/gui/edit/elements.py:1119
+msgid "Id"
+msgstr "Id"
 
-#: ../lib/advene/gui/plugins/actions.py:477
-#: ../lib/advene/gui/plugins/actions.py:515
-#: ../lib/advene/gui/views/singletonpopup.py:98
-msgid "Navigation popup"
-msgstr "Popup de navegación"
+#: ../lib/advene/gui/views/table.py:449 ../lib/advene/gui/views/table.py:628
+msgid "Export data to file..."
+msgstr "Exportar datos a un archivo..."
 
-#: ../lib/advene/gui/plugins/actions.py:500
+#: ../lib/advene/gui/views/table.py:458 ../lib/advene/gui/views/table.py:637
 #, python-format
-msgid "Choice %d"
-msgstr "Eleccion %d"
+msgid "Error while exporting data to %(filename)s: %(error)s"
+msgstr "Error mientras se exportaban los datos a %(filename)s: %(error)s"
 
-#: ../lib/advene/gui/plugins/actions.py:521
-msgid "The beginning of the annotation"
-msgstr "El principio de la anotación"
+#: ../lib/advene/gui/views/table.py:469
+msgid "id"
+msgstr "id"
 
-#: ../lib/advene/gui/plugins/actions.py:522
-msgid "The end of the annotation"
-msgstr "El final de la anotación"
+#: ../lib/advene/gui/views/table.py:469
+msgid "type"
+msgstr "tipo"
 
-#: ../lib/advene/gui/plugins/actions.py:523
-msgid "The next annotation of the same type"
-msgstr "La siguiente anotación del mismo tipo"
+#: ../lib/advene/gui/views/table.py:469
+msgid "begin"
+msgstr "inicio"
 
-#: ../lib/advene/gui/plugins/actions.py:524
-msgid "The previous annotation of the same type"
-msgstr "La anotación previa del mismo tipo"
+#: ../lib/advene/gui/views/table.py:469
+msgid "end"
+msgstr "fin"
 
-#: ../lib/advene/gui/plugins/actions.py:573
+#: ../lib/advene/gui/views/table.py:469
+msgid "content"
+msgstr "contenido"
+
+#: ../lib/advene/gui/views/table.py:473 ../lib/advene/gui/views/table.py:653
+#: ../lib/advene/core/controller.py:2555
 #, python-format
-msgid ""
-"Through %(title)s%(relation_content)s:\n"
-"%(annotation_content)s"
+msgid "Data exported to %s"
+msgstr "Datos exportados a %s"
+
+#: ../lib/advene/gui/views/table.py:493
+#, python-format
+msgid "Set %(attr)s time to %(time)s"
 msgstr ""
-"A través %(title)s%(relation_content)s:\n"
-"%(annotation_content)s"
 
-#: ../lib/advene/gui/plugins/actions.py:581
-msgid "Relation navigation"
-msgstr "Navegación de relaciones"
+#: ../lib/advene/gui/views/table.py:552
+msgid "Generic table view"
+msgstr "Vista de tabla genérica"
 
-#: ../lib/advene/gui/plugins/actions.py:591
-msgid "New bookmark"
-msgstr "Nuevo separador"
+#: ../lib/advene/gui/views/table.py:554
+msgid "Display Advene elements in a table."
+msgstr "Mostrar los elementos de Advene en tabla"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:43
-msgid "Activity trace"
-msgstr "Activar rastreo"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element title"
+msgstr "Título del elemento"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:134
-msgid " Trace : "
-msgstr "Rastreo :"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:138
-msgid " Filters"
-msgstr "Filtros"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4178
-msgid "Reset"
-msgstr "Reestablecer"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:167
-msgid " Time : "
-msgstr "Tiempo :"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:177
-msgid " Max. : "
-msgstr "Max. :"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:186
-msgid "Export"
-msgstr "Exportar"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element type"
+msgstr "Tipo del elemento"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:253
-msgid "Defining Filters"
-msgstr "Definiendo filtros"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element id"
+msgstr "Id del elemento"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:559
-#: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:214
-#, python-format
-msgid "of an annotation (%s)"
-msgstr "de una anotación (%s)"
+#: ../lib/advene/gui/views/accumulatorpopup.py:49
+msgid "PopupAccumulator"
+msgstr "AcumuladorPopup"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:561
-#: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:216
-#, python-format
-msgid "of a relation (%s)"
-msgstr "de una relación (%s)"
+#: ../lib/advene/gui/views/bookmarks.py:51
+msgid "Bookmarks importer"
+msgstr "Importador de separadores"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:563
-#: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:218
-#, python-format
-msgid "of an annotation type (%s)"
-msgstr "de un tipo de anotación (%s)"
+#: ../lib/advene/gui/views/bookmarks.py:72
+msgid "Bookmarks"
+msgstr "Separadores"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:565
-#: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:220
-#, python-format
-msgid "of a relation type (%s)"
-msgstr "de un tipo de relación (%s)"
+#: ../lib/advene/gui/views/bookmarks.py:74
+msgid "Bookmark timecodes with their corresponding screenshots"
+msgstr ""
+"Separador de tiempos de código con sus capturas de pantalla correspondientes"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:567
-#: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:222
-#, python-format
-msgid "of a schema (%s)"
-msgstr "de un esquema (%s)"
+#: ../lib/advene/gui/views/bookmarks.py:80 ../lib/advene/gui/views/tagbag.py:63
+#: ../lib/advene/gui/views/activebookmarks.py:62
+#: ../lib/advene/gui/views/logwindow.py:50 ../lib/advene/gui/edit/montage.py:59
+msgid "Clear"
+msgstr "Limpiar"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:569
-#: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:224
-#, python-format
-msgid "of a view (%s)"
-msgstr "de una vistas (%s)"
+#: ../lib/advene/gui/views/bookmarks.py:145
+msgid "Select the annotation type to generate"
+msgstr "Selecciona el tipo de anotacion para generar"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:571
-#: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:226
-#, python-format
-msgid "of a package (%s)"
-msgstr "de un paquete (%s) "
+#: ../lib/advene/gui/views/bookmarks.py:150
+msgid "Choose a duration"
+msgstr "Elige una duración"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:573
-#: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:228
-#, python-format
-msgid "of an unknown item (%s)"
-msgstr "de un elemento desconocido (%s) "
+#: ../lib/advene/gui/views/bookmarks.py:151
+msgid "Enter the standard duration (in ms) of created annotations."
+msgstr "Ingresa la duración estándar (en ms) de las anotaciones creadas."
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:122
-msgid "Label"
-msgstr "Etiqueta"
+#: ../lib/advene/gui/views/bookmarks.py:168
+msgid "Converted from bookmarks"
+msgstr "Convertido de los separadores"
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:172
+#: ../lib/advene/gui/views/bookmarks.py:172
+#: ../lib/advene/gui/edit/transcribe.py:1139
 #, python-format
 msgid ""
-"Error while parsing SVG content:\n"
-"\n"
-"%s"
+"Conversion completed.\n"
+"%s annotations generated."
 msgstr ""
-"Error mientras se analizaba contenido SVG:\n"
-"\n"
-"%s"
+"Conversion completa.\n"
+"%s anotaciones generadas."
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:247
-msgid " created from "
-msgstr "creado de"
+#: ../lib/advene/gui/views/bookmarks.py:226
+msgid "Drop a position here to remove it from the list"
+msgstr "Suelta una posición aquí para removerla de la lista"
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:315
-msgid "Graphical editor"
-msgstr "Editor gráfico"
+#: ../lib/advene/gui/views/bookmarks.py:247
+#: ../lib/advene/gui/views/activebookmarks.py:522
+msgid "Insert a bookmark for the current video time"
+msgstr "Inserta un separador para el tiempo actual del video"
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:326
-msgid "Edit XML"
-msgstr "Editar XML"
+#: ../lib/advene/gui/views/bookmarks.py:248
+msgid "Convert bookmarks to annotations"
+msgstr "Convierte los separadores a anotaciones"
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:378
-#: ../lib/advene/gui/plugins/contenthandlers.py:434
-#: ../lib/advene/gui/edit/rules.py:186
-#, python-format
-msgid ""
-"The following items seem to be\n"
-"invalid TALES expressions:\n"
-"\n"
-"%s"
-msgstr ""
-"Los siguientes elementos parecen ser\n"
-"expresiones TALES no validas:\n"
-"\n"
-"%s"
+#: ../lib/advene/gui/views/viewbook.py:37
+msgid "ViewBook"
+msgstr "Libro de vistas"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
-msgid "Video player"
-msgstr "Reproductor de video"
+#: ../lib/advene/gui/views/viewbook.py:58
+#: ../lib/advene/gui/views/viewbook.py:65
+msgid "Cannot remove this widget, it is essential."
+msgstr "No se puede remover este widget, es esencial."
 
-#: ../lib/advene/gui/plugins/videoplayer.py:38
-msgid "Complementary video player"
-msgstr "Reproductor de video complementario"
+#: ../lib/advene/gui/views/viewbook.py:135
+msgid "Detach"
+msgstr "Desadjuntar"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:44
-#: ../lib/advene/gui/edit/montage.py:54
-#: ../lib/advene/gui/edit/transcribe.py:85
-#: ../lib/advene/gui/views/transcription.py:56
-#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:135
-msgid "Save view"
-msgstr "Guardar vista"
+#: ../lib/advene/gui/views/viewbook.py:139
+#: ../lib/advene/gui/views/editaccumulator.py:79
+msgid "Close"
+msgstr "Cerrar"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
-#: ../lib/advene/gui/edit/transcribe.py:86
-#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/transcription.py:57
-#: ../lib/advene/gui/views/interactivequery.py:60
-#: ../lib/advene/gui/views/timeline.py:136
-msgid "Save default options"
-msgstr "Guardar opciones predeterminadas"
+#: ../lib/advene/gui/views/viewbook.py:156
+msgid "Rename the view"
+msgstr "Renombrar la vista"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:46
-msgid "Select video file"
-msgstr "Selecciona un archivo de video"
+#: ../lib/advene/gui/views/viewbook.py:157
+msgid "Please enter the new name of the view"
+msgstr "Por favor ingresa el nuevo nombre de la vista"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:127
-msgid "Select a video file"
-msgstr "Selecciona un archivo de video"
+#: ../lib/advene/gui/views/viewbook.py:196
+msgid "Detach view in its own window, or drag-and-drop to another zone"
+msgstr ""
+"Desadjuntar la vista en su propia ventana, o arrastra y suelta en otra zona"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:250
-msgid "Synchronize"
-msgstr "Sincronizar"
+#: ../lib/advene/gui/views/viewbook.py:210
+msgid "Close view"
+msgstr "Cerrar vista"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:266
-msgid "Offset in ms"
-msgstr "Desplazamiento en ms"
+#: ../lib/advene/gui/views/viewbook.py:233
+#: ../lib/advene/gui/views/viewbook.py:239
+#: ../lib/advene/gui/edit/elements.py:335
+#, python-format
+msgid "Edit %s"
+msgstr "Editar %s"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:274
-msgid "Drag and drop to get player time"
-msgstr "Arrastra y suelta para obtener el tiempo del reproductor"
+#: ../lib/advene/gui/views/viewbook.py:262 ../lib/advene/rules/actions.py:615
+#, python-format
+msgid "Cannot find the view %s"
+msgstr "No se puede encontrar la vista %s"
 
-#: ../lib/advene/gui/plugins/tracepreview.py:61
-msgid "Trace preview"
-msgstr "Previsualización de rastreo"
+#: ../lib/advene/gui/views/viewbook.py:285
+#, fuzzy, python-format
+msgid "Open a new %s for..."
+msgstr "Abrir una nueva transcripción para..."
 
-#: ../lib/advene/gui/plugins/tracepreview.py:99
-msgid "Full trace"
-msgstr "Rastreo completo"
+#: ../lib/advene/gui/views/viewbook.py:297
+msgid "Create a new comment view"
+msgstr "Crear una nueva vista de comentario"
 
-#: ../lib/advene/gui/plugins/tracepreview.py:100
-msgid "Open the trace timeline view fareast"
-msgstr "Abre la vista de línea de tiempo de rastreo lejano oriente (fareast)"
+#: ../lib/advene/gui/views/viewbook.py:299
+msgid "Open a new view"
+msgstr "Abrir una nueva vista"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:376
+#: ../lib/advene/gui/views/viewbook.py:373
 #, python-format
-msgid "Rendering type %(type)s as %(presentation)s"
-msgstr "Representando (rendering) el tipo %(type)s como %(presentation)s"
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:521
-msgid "Snapshot only"
-msgstr "Solo captura"
+msgid "Use annotation-type %s :"
+msgstr "Utilizar un tipo de anotación  %s:"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:522
-msgid "Overlayed snapshot only"
-msgstr "Solo capturas sobrepuesta"
+#: ../lib/advene/gui/views/viewbook.py:377
+#: ../lib/advene/gui/views/viewbook.py:403
+msgid "to edit it"
+msgstr "para editarlo"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:523
-msgid "Timestamp only"
-msgstr "Solo marca de tiempo"
+#: ../lib/advene/gui/views/viewbook.py:378
+#: ../lib/advene/gui/views/viewbook.py:404
+#: ../lib/advene/gui/views/viewbook.py:436
+msgid "to create a new static view"
+msgstr "para crear una nueva vista estática"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:524
-msgid "Snapshot+timestamp"
-msgstr "Captura+Marca de tiempo"
+#: ../lib/advene/gui/views/viewbook.py:380
+msgid "in a timeline"
+msgstr "en una linea de tiempo"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
-msgid "Annotation content"
-msgstr "Contenido de anotación"
+#: ../lib/advene/gui/views/viewbook.py:381
+msgid "as a montage"
+msgstr "como montaje"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:540
-msgid "as a list"
-msgstr "como lista"
+#: ../lib/advene/gui/views/viewbook.py:382
+#: ../lib/advene/gui/views/viewbook.py:435
+msgid "in a table"
+msgstr "en una tabla"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:541
-#, fuzzy
-msgid "as a grid"
-msgstr "como lista"
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
+msgid "in a query"
+msgstr "en una consulta"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:542
-msgid "as a table"
-msgstr "como tabla"
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
+#, python-format
+msgid "Query %s"
+msgstr "Consulta %s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:543
-#: ../lib/advene/gui/views/viewbook.py:380
-msgid "as a transcription"
-msgstr "como transcripción"
+#: ../lib/advene/gui/views/viewbook.py:384
+#: ../lib/advene/gui/views/viewbook.py:406
+msgid "in the TALES browser"
+msgstr "en el navegador TALES"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:661
-#: ../lib/advene/gui/views/transcription.py:461
+#: ../lib/advene/gui/views/viewbook.py:384
 #, python-format
-msgid "Annotation %s"
-msgstr "Anotación %s"
+msgid "Browsing %s"
+msgstr "Navegando %s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:681
-msgid "Play video"
-msgstr "Reproducir video"
+#: ../lib/advene/gui/views/viewbook.py:400
+#, python-format
+msgid "Use annotation %s :"
+msgstr "Utilizar anotación %s:"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
-msgid "Show timestamp only"
-msgstr "Solo muestra marca de tiempo"
+#: ../lib/advene/gui/views/viewbook.py:406
+#, python-format
+msgid "Browse %s"
+msgstr "Navegar %s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
-msgid "Show content only"
-msgstr "Solo muestra contenido"
+#: ../lib/advene/gui/views/viewbook.py:407
+msgid "to display its contents"
+msgstr "para mostrar sus contenidos"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
-msgid "Show snapshot only"
-msgstr "Solo muestra captura"
+#: ../lib/advene/gui/views/viewbook.py:407
+#, python-format
+msgid "%s"
+msgstr "%s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
-msgid "Show overlayed timestamp"
-msgstr "Muestra marca de tiempo superpuesta"
+#: ../lib/advene/gui/views/viewbook.py:408
+msgid "as a bookmark"
+msgstr "como separador"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
-msgid "Show overlayed content"
-msgstr "Mostrar contenido superpuesto"
-
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:670
-#, python-format
-msgid "Annotation type %s"
-msgstr "Tipos de anotación %s"
+#: ../lib/advene/gui/views/viewbook.py:426
+msgid "as the context for the query..."
+msgstr "como contexto para la consulta..."
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
-msgid "display as list"
-msgstr "mostrar como lista"
+#: ../lib/advene/gui/views/viewbook.py:430
+msgid "Set of annotations"
+msgstr "Conjunto de anotaciones"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
-#, fuzzy
-msgid "display as grid"
-msgstr "mostrar como lista"
+#: ../lib/advene/gui/views/viewbook.py:431
+msgid "Use annotations:"
+msgstr "Usa anotaciones:"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:673
-msgid "display as table"
-msgstr "mostrar como tabla"
+#: ../lib/advene/gui/views/viewbook.py:434
+msgid "to edit them"
+msgstr "para editarlas"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
-msgid "display as transcription"
-msgstr "mostrar como transcripción"
+#: ../lib/advene/gui/views/viewbook.py:437
+msgid "as bookmarks"
+msgstr "como separadores"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:683
-msgid "Open link"
-msgstr "Abrir vínculo"
+#: ../lib/advene/gui/views/transcription.py:49
+msgid "Transcription"
+msgstr "Transcripcion"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:739
-#, python-format
-msgid "HTML editor: cannot parse content (%s)"
-msgstr "Editor HTML: no puede analizar el contenido (%s)"
+#: ../lib/advene/gui/views/transcription.py:51
+msgid "Display annotations as a text transcription"
+msgstr "Mostrar las anotaciones como transcripción"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
-#, python-format
-msgid "Heading %d"
-msgstr "Título %d"
+#: ../lib/advene/gui/views/transcription.py:164
+msgid "Transcription options"
+msgstr "Opciones de transcripción"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:783
-msgid "Bold"
-msgstr "Negrita"
+#: ../lib/advene/gui/views/transcription.py:165
+msgid "Default representation"
+msgstr "Representación predeterminada"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:784
-msgid "Italic"
-msgstr "Itálica"
+#: ../lib/advene/gui/views/transcription.py:165
+msgid "Use the default representation for annotations"
+msgstr "Usar la representación predeterminada para las anotaciones"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
-msgid "Header"
-msgstr "Encabezado"
+#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/edit/elements.py:986
+msgid "Representation"
+msgstr "Representacion"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
-msgid "Copy"
-msgstr "Copiar"
+#: ../lib/advene/gui/views/transcription.py:166
+msgid ""
+"If default representation is unchecked,\n"
+"this TALES expression that will be used to format the annotations."
+msgstr ""
+"Si la representación predeterminada no está seleccionada,\n"
+"esta expresión TALES será utilizada para dar formato a las anotaciones."
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:788
-msgid "Cut"
-msgstr "Cortar"
+#: ../lib/advene/gui/views/transcription.py:167
+msgid "Separator"
+msgstr "Separador"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
-msgid "Paste"
-msgstr "Pegar"
+#: ../lib/advene/gui/views/transcription.py:168
+msgid "This separator will be inserted between the annotations."
+msgstr "Este separador va a ser insertado entre las anotaciones"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
-#: ../lib/advene/gui/edit/schemaeditor.py:64
-#: ../lib/advene/gui/views/timeline.py:134 ../lib/advene/gui/views/tree.py:428
-msgid "Refresh"
-msgstr "Refrescar"
+#: ../lib/advene/gui/views/transcription.py:169
+msgid "Whitespace"
+msgstr "Espacio en blanco"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:847
-msgid "WYSIWYG editor"
-msgstr "Editor WYSIWYG"
+#: ../lib/advene/gui/views/transcription.py:170
+msgid "Newline"
+msgstr "Nueva línea"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:857
-msgid "Edit HTML source"
-msgstr "Editar el código fuente HTML"
+#: ../lib/advene/gui/views/transcription.py:171
+msgid "Tabulation"
+msgstr "Tabulación "
 
-#: ../lib/advene/gui/plugins/logmessages.py:35
-msgid "Log Messages"
-msgstr "Registrar mensajes"
+#: ../lib/advene/gui/views/transcription.py:172
+msgid "Dash"
+msgstr "Guión"
 
-#: ../lib/advene/gui/edit/dvdselect.py:73
-#: ../lib/advene/gui/edit/importer.py:143
-msgid "Stop"
-msgstr "Detener"
+#: ../lib/advene/gui/views/transcription.py:173
+msgid "User defined"
+msgstr "Definido por el usuario"
 
-#: ../lib/advene/gui/edit/dvdselect.py:82
-#: ../lib/advene/gui/edit/dvdselect.py:112
-msgid "Preview"
-msgstr "Vista previa"
+#: ../lib/advene/gui/views/transcription.py:175
+msgid "User-defined separator"
+msgstr "Separador definido por el usuario"
 
-#: ../lib/advene/gui/edit/dvdselect.py:91
+#: ../lib/advene/gui/views/transcription.py:175
 msgid ""
-"Select the correct\n"
-"title and chapter\n"
-"of the DVD"
+"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
+"a tabulation."
 msgstr ""
-"Seleccciona el\n"
-"titulo y capitulo \n"
-"correctos del DVD"
+"Separador utilizado si la definición de usuario está seleccionado.Usar \\n "
+"para una nueva línea \\t para tabulación."
 
-#: ../lib/advene/gui/edit/dvdselect.py:104
-msgid "Chapter"
-msgstr "Capitulo"
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Display timestamps"
+msgstr "Muestra las marcas de tiempo"
 
-#: ../lib/advene/gui/edit/merge.py:33
-msgid "Create element"
-msgstr "Crear elemento"
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Insert timestsamp values"
+msgstr "Inserta los valores de la marca de tiempo"
 
-#: ../lib/advene/gui/edit/merge.py:34
-msgid "Create annotation (duplicate id)"
-msgstr "Crear anotación (id duplicada)"
+#: ../lib/advene/gui/views/transcription.py:177
+msgid "Display annotation bounds"
+msgstr "Muestra los limites de la anotacion"
 
-#: ../lib/advene/gui/edit/merge.py:35
-msgid "Create relation (duplicate id)"
-msgstr "Crear relación (id duplicada)"
+#: ../lib/advene/gui/views/transcription.py:237
+#, python-format
+msgid ""
+"Cannot convert the following annotations,\n"
+"the representation pattern is too complex.\n"
+"%s"
+msgstr ""
+"No se pueden convertir las anotaciones siguientes,\n"
+"el patrón de representación es muy complejo.\n"
+"%s"
 
-#: ../lib/advene/gui/edit/merge.py:36
-msgid "Update the color"
-msgstr "Actualizar el color"
+#: ../lib/advene/gui/views/transcription.py:248
+msgid ""
+"Cannot validate the update.\n"
+"The representation pattern is too complex."
+msgstr ""
+"No se puede validar la actualización. \n"
+"El patrón de representación es muy complejo."
 
-#: ../lib/advene/gui/edit/merge.py:37
-msgid "Update the representation"
-msgstr "Actualizar la representación"
+#: ../lib/advene/gui/views/transcription.py:274
+msgid "Save transcription to a text file"
+msgstr "Guarda la transcripción a un archivo de texto"
 
-#: ../lib/advene/gui/edit/merge.py:38
-msgid "Update the description"
-msgstr "Actualizar la descripción"
+#: ../lib/advene/gui/views/transcription.py:275
+msgid "Apply the modifications"
+msgstr "Aplicar las modificaciones"
 
-#: ../lib/advene/gui/edit/merge.py:39
-msgid "Update the title"
-msgstr "Actualizar el título"
+#: ../lib/advene/gui/views/transcription.py:276
+msgid "Find text"
+msgstr "Encontrar texto"
 
-#: ../lib/advene/gui/edit/merge.py:40
-msgid "Update the mimetype"
-msgstr "Actualizar el tipo mime"
+#: ../lib/advene/gui/views/transcription.py:277
+msgid "Quickly switch display options"
+msgstr "Cambia las opciones de visualización rápidamente"
 
-#: ../lib/advene/gui/edit/merge.py:41
-msgid "Update the begin time"
-msgstr "Actualizar el tiempo inicial"
+#: ../lib/advene/gui/views/transcription.py:278
+msgid "Refresh the transcription"
+msgstr "Refresca la transcripción"
 
-#: ../lib/advene/gui/edit/merge.py:42
-msgid "Update the end time"
-msgstr "Actualizar el tiempo final"
+#: ../lib/advene/gui/views/transcription.py:279
+msgid "Edit preferences"
+msgstr "Preferencias de edición"
 
-#: ../lib/advene/gui/edit/merge.py:43
-msgid "Update the content"
-msgstr "Actualizar el contenido"
+#: ../lib/advene/gui/views/transcription.py:697
+#, python-format
+msgid "Cannot write to %(filename)s: %(error)s:"
+msgstr "No se puede escribir a %(filename)s: %(error)s:"
 
-#: ../lib/advene/gui/edit/merge.py:44
-msgid "Update the matchFilter"
-msgstr "Actualizar el filtro de concordancia"
+#: ../lib/advene/gui/views/transcription.py:703
+#: ../lib/advene/gui/edit/transcribe.py:882
+#, python-format
+msgid "Transcription saved to %s"
+msgstr "Transcripción guardada a %s"
 
-#: ../lib/advene/gui/edit/merge.py:45
-msgid "Update the member types"
-msgstr "Actualizar tipos de miembros"
+#: ../lib/advene/gui/views/browser.py:164
+#: ../lib/advene/gui/views/browser.py:166
+msgid "TALES browser"
+msgstr "Navegador TALES"
 
-#: ../lib/advene/gui/edit/merge.py:46
-msgid "Update tags"
-msgstr "Actualizar etiquetas"
+#: ../lib/advene/gui/views/browser.py:171
+msgid "Display result in table"
+msgstr "Mostrar el resultado en tabla"
 
-#: ../lib/advene/gui/edit/merge.py:90
-msgid "Difference between original and merged elements"
-msgstr "Diferencia entre el elemento original y el unido"
+#: ../lib/advene/gui/views/browser.py:194
+msgid "Insert path"
+msgstr "Insertar ruta"
 
-#: ../lib/advene/gui/edit/merge.py:136
-msgid "Current element"
-msgstr "Elemento actual"
+#: ../lib/advene/gui/views/browser.py:195
+msgid "Insert value"
+msgstr "Insertar valor"
 
-#: ../lib/advene/gui/edit/merge.py:141
-msgid "Updated element"
-msgstr "Elemento actualizado"
+#: ../lib/advene/gui/views/browser.py:250
+msgid "Expression returned None (there was an exception)"
+msgstr "La expresión regresó None (hubo una excepción)"
 
-#: ../lib/advene/gui/edit/merge.py:147
-msgid "Show diff"
-msgstr "Mostrar diferencias"
+#: ../lib/advene/gui/views/browser.py:303
+msgid "Result is not a list"
+msgstr "El resultado no es una lista"
 
-#: ../lib/advene/gui/edit/merge.py:180
-msgid "Merge?"
-msgstr "¿Unir?"
+#: ../lib/advene/gui/views/browser.py:360
+#: ../lib/advene/gui/edit/shapewidget.py:942
+msgid "Path"
+msgstr "Ruta"
 
-#: ../lib/advene/gui/edit/merge.py:197
-msgid "Element"
-msgstr "Elemento"
+#: ../lib/advene/gui/views/browser.py:367
+#: ../lib/advene/gui/edit/elements.py:2173
+msgid "Value"
+msgstr "Valor"
 
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
-#, python-format
-msgid "Package %s"
-msgstr "Paquete %s"
+#: ../lib/advene/gui/views/timeline.py:128
+msgid "Display annotations on a timeline"
+msgstr "Muestra las anotaciones en una linea de tiempo"
 
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
-msgid "No title"
-msgstr "Sin titulo"
+#: ../lib/advene/gui/views/timeline.py:142
+msgid "Limit display to current area"
+msgstr "Limitar la visualización al área actual"
 
-#: ../lib/advene/gui/edit/merge.py:267
-msgid "All"
-msgstr "Todo"
+#: ../lib/advene/gui/views/timeline.py:143
+#: ../lib/advene/gui/views/timeline.py:3276
+msgid "Display whole movie"
+msgstr "Muestra la película completa"
 
-#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1588
-msgid "Properties"
-msgstr "Propiedades"
+#: ../lib/advene/gui/views/timeline.py:173
+#, python-format
+msgid "Cannot find annotation type %s"
+msgstr "No se puede encontrar el tipo de anotación %s"
 
-#: ../lib/advene/gui/edit/properties.py:46
-#: ../lib/advene/gui/edit/transcribe.py:147
-#: ../lib/advene/gui/edit/transcribe.py:1195
-#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3483
-#: ../lib/advene/gui/views/timeline.py:3624 ../lib/advene/gui/main.py:4235
-msgid "Preferences"
-msgstr "Preferencias"
+#: ../lib/advene/gui/views/timeline.py:222
+msgid "No scrolling"
+msgstr "No desplazar"
 
-#: ../lib/advene/gui/edit/properties.py:371
-msgid "Choose a file"
-msgstr "Elegir un archivo"
+#: ../lib/advene/gui/views/timeline.py:223
+msgid "Continuous scrolling"
+msgstr "Desplazar continuamente"
 
-#: ../lib/advene/gui/edit/importer.py:45
-msgid "Importer"
-msgstr "Importador"
+#: ../lib/advene/gui/views/timeline.py:224
+msgid "Discrete scrolling"
+msgstr "Desplazamiento discreto"
 
-#: ../lib/advene/gui/edit/importer.py:101
-#: ../lib/advene/gui/edit/importer.py:111
-msgid "Advene package importer"
-msgstr "Importador de paquetes Advene"
+#: ../lib/advene/gui/views/timeline.py:225
+msgid "Annotation scrolling"
+msgstr "Desplazamiento con anotaciones"
 
-#: ../lib/advene/gui/edit/importer.py:115
-msgid "Not likely"
-msgstr "No es probable"
+#: ../lib/advene/gui/views/timeline.py:501
+#, python-format
+msgid "%d annotations"
+msgstr "%d anotaciones"
+
+#: ../lib/advene/gui/views/timeline.py:504
+msgid "Display all types"
+msgstr "Muestra todos los tipos"
 
-#: ../lib/advene/gui/edit/importer.py:137
+#: ../lib/advene/gui/views/timeline.py:506
 #, python-format
-msgid "Completed conversion: %(statistics)s"
-msgstr "Conversión completada: %(statistics)s"
+msgid ""
+"There are %d annotations.\n"
+"The current timeline may take a long time to display them, so only the first "
+"two annotation types are displayed. Use the annotation type selector (second "
+"button in the timeline) to select other annotations types to display, or "
+"click on the 'Display all types' button below."
+msgstr ""
+"Hay %d anotaciones.\n"
+"La línea de tiempo actual puede tardar mucho tiempo en mostrarlas, así que "
+"solo los primeros dos tipos de anotaciones se muestran. Utiliza el selector "
+"de tipo de anotaciones (segundo botón en la línea de tiempo) para "
+"seleccionar otros tipos de anotación para mostrar, o da clic en el debajo "
+"botón 'Mostrar todos los tipos'."
 
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Choose the file to import"
-msgstr "Elige el archivo a importar"
+#: ../lib/advene/gui/views/timeline.py:979
+msgid "Split at current player position"
+msgstr "Dividir en la posición actual del reproductor"
 
-#: ../lib/advene/gui/edit/importer.py:272
-msgid "Filter"
-msgstr "Filtro"
+#: ../lib/advene/gui/views/timeline.py:983
+msgid "Center and zoom"
+msgstr "Centrar y acercar"
 
-#: ../lib/advene/gui/edit/importer.py:276
-msgid "Options"
-msgstr "Opciones"
+#: ../lib/advene/gui/views/timeline.py:1087
+msgid "Create a relation"
+msgstr "Crear una relacion"
 
-#: ../lib/advene/gui/edit/importer.py:287
-msgid "Start"
-msgstr "Inicio"
+#: ../lib/advene/gui/views/timeline.py:1097
+msgid "Create a new relation-type."
+msgstr "Crear un nuevo tipo de relación."
 
-#: ../lib/advene/gui/edit/schemaeditor.py:57
-msgid "Schema Editor"
-msgstr "Editor de esquema"
+#: ../lib/advene/gui/views/timeline.py:1123
+msgid "Merge with this annotation"
+msgstr "Unir con esta anotación"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:132
-msgid "Display"
-msgstr "Mostrar"
+#: ../lib/advene/gui/views/timeline.py:1132
+msgid "Align both begin times"
+msgstr "Alinear ambos tiempos de inicio"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:155
-#: ../lib/advene/gui/edit/shapewidget.py:1587 ../lib/advene/gui/popup.py:472
-#: ../lib/advene/gui/popup.py:476
-msgid "Delete"
-msgstr "Borrar"
+#: ../lib/advene/gui/views/timeline.py:1133
+msgid "Align both end times"
+msgstr "Alinear ambos tiempos finales"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:762
-msgid "Remove relation type"
-msgstr "Remover tipo de relación"
+#: ../lib/advene/gui/views/timeline.py:1134
+msgid "Align end time to selected begin time"
+msgstr "Alinear el tiempo final al tiempo inicial seleccionado "
 
-#: ../lib/advene/gui/edit/schemaeditor.py:765
-#: ../lib/advene/gui/edit/schemaeditor.py:997
-msgid "Create HTML view"
-msgstr "Crear una vista HTML"
+#: ../lib/advene/gui/views/timeline.py:1135
+msgid "Align begin time to selected end time"
+msgstr "Alinear el tiempo inicial al tiempo final seleccionado"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:831
-msgid "Remove annotation type"
-msgstr "Remover tipo de anotación"
+#: ../lib/advene/gui/views/timeline.py:1136
+msgid "Align all times"
+msgstr "Alinear todos los tiempo"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:834
-msgid "Create relation type between this one and..."
-msgstr "Crea un tipo de relación entre este y..."
+#: ../lib/advene/gui/views/timeline.py:1174
+msgid "Cannot delete the annotation : it has relations."
+msgstr "No puedo borrar la anotación: tiene relaciones."
 
-#: ../lib/advene/gui/edit/schemaeditor.py:969
-msgid "New schema"
-msgstr "Nuevo esquema"
+#: ../lib/advene/gui/views/timeline.py:1249
+msgid "Select the appropriate relation type"
+msgstr "Selecciona el tipo apropiado de relación"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:985 ../lib/advene/gui/popup.py:690
-#: ../lib/advene/gui/popup.py:750 ../lib/advene/gui/popup.py:803
-msgid "Select a color"
-msgstr "Selecciona un color"
+#: ../lib/advene/gui/views/timeline.py:1268
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr "Duplicar selección al tipo %s"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:988
-msgid "New annotation type"
-msgstr "Nuevo tipo de anotación"
+#: ../lib/advene/gui/views/timeline.py:1271
+#, python-format
+msgid "Move selection to type %s"
+msgstr "Mover selección al tipo %s"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:991
-msgid "New relation type"
-msgstr "Nuevo tipos de relación"
+#: ../lib/advene/gui/views/timeline.py:1280
+#, python-format
+msgid "Duplicate annotation to type %s"
+msgstr "Duplicar anotación al tipo %s"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:994
-msgid "Hide this schema"
-msgstr "Esconder este esquema"
+#: ../lib/advene/gui/views/timeline.py:1284
+#, python-format
+msgid "Move annotation to type %s"
+msgstr "Mover anotación al tipo %s"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1000
-msgid "Export drawing to pdf"
-msgstr "Exportar dibujo a pdf"
+#: ../lib/advene/gui/views/timeline.py:1291
+#, python-format
+msgid "Duplicate to type %(type)s at %(position)s"
+msgstr "Duplicar al tipo %(type)s en %(position)s"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1042
-msgid "Choose a filename to export the schema as PDF"
-msgstr "Elige un nombre de archivo para exportar el esquema como PDF"
+#: ../lib/advene/gui/views/timeline.py:1297
+#, python-format
+msgid "Move to type %(type)s at %(position)s"
+msgstr "Mover al tipo %(type)s en %(position)s"
 
-#: ../lib/advene/gui/edit/rules.py:84 ../lib/advene/gui/edit/rules.py:86
-#: ../lib/advene/gui/edit/create.py:252
-msgid "Rule"
-msgstr "Regla"
+#: ../lib/advene/gui/views/timeline.py:1307
+msgid "Duplicate and create a relation"
+msgstr "Duplicar y crear una relación"
 
-#: ../lib/advene/gui/edit/rules.py:95 ../lib/advene/gui/edit/create.py:242
-msgid "Subviews"
-msgstr "Subvistas"
+#: ../lib/advene/gui/views/timeline.py:1318
+#, python-format
+msgid "Duplicate at %s and create a relation"
+msgstr "Duplicar al %s y crear una relación"
 
-#: ../lib/advene/gui/edit/rules.py:122
-msgid "Add a new rule"
-msgstr "Agregar una nueva regla"
+#: ../lib/advene/gui/views/timeline.py:1349
+msgid "Annotation filter"
+msgstr "Filtro de anotación"
 
-#: ../lib/advene/gui/edit/rules.py:126
-msgid "Subview"
-msgstr "Subvista"
+#: ../lib/advene/gui/views/timeline.py:1350
+msgid "Enter the searched string"
+msgstr "Ingresar la cadena de texto buscada"
 
-#: ../lib/advene/gui/edit/rules.py:129
-msgid "Add a subview list"
-msgstr "Agregar una lista  de subvista"
+#: ../lib/advene/gui/views/timeline.py:1458
+#, python-format
+msgid "Duplicate all annotations to type %s"
+msgstr "Duplicar todas las anotaciones del tipo %s"
 
-#: ../lib/advene/gui/edit/rules.py:135
-msgid "Remove the current rule"
-msgstr "Eliminar la regla actual"
+#: ../lib/advene/gui/views/timeline.py:1460
+#, python-format
+msgid "Move all annotations to type %s"
+msgstr "Mover todas las anotaciones al tipo %s"
 
-#: ../lib/advene/gui/edit/rules.py:275
-msgid "Source expression"
-msgstr "Expresion fuente (original)"
+#: ../lib/advene/gui/views/timeline.py:1462
+#, python-format
+msgid "Duplicate all annotations matching a string to type %s"
+msgstr ""
+"Duplicar todas las anotaciones que concuerden con una cadena de texto al "
+"tipo %s"
 
-#: ../lib/advene/gui/edit/rules.py:277
-msgid "Return expression"
-msgstr "Regresar expresion"
+#: ../lib/advene/gui/views/timeline.py:1464
+#, python-format
+msgid "Move all annotations matching a string to type %s"
+msgstr ""
+"Mover todas las anotaciones que conuerden con una cadena de texto al tipo %s"
 
-#: ../lib/advene/gui/edit/rules.py:351
-msgid "For all elements in "
-msgstr "Por todos los elementos en"
+#: ../lib/advene/gui/views/timeline.py:1466
+#, python-format
+msgid "Align all annotation time codes using %s as reference."
+msgstr ""
+"Alinear todos los códigos de tiempo de las anotaciones que utilizan %s como "
+"referencia."
 
-#: ../lib/advene/gui/edit/rules.py:352
-msgid "All annotations of the package"
-msgstr "Todas las anotaciones del paquete"
+#: ../lib/advene/gui/views/timeline.py:1468
+#, python-format
+msgid "Align all annotation contents using %s as reference"
+msgstr ""
+"Alinear todos los contenidos de las anotaciones que utilizan %s como "
+"referencia"
 
-#: ../lib/advene/gui/edit/rules.py:353
-msgid "All views of the package"
-msgstr "Todas las vistas del paquete"
+#: ../lib/advene/gui/views/timeline.py:1960
+#: ../lib/advene/gui/views/timeline.py:1989
+#, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Mostrando %(count)d / %(total)d anotaciones..."
 
-#: ../lib/advene/gui/edit/rules.py:354 ../lib/advene/gui/edit/rules.py:798
-msgid "The context annotations"
-msgstr "Las anotaciones del contexto"
+#: ../lib/advene/gui/views/timeline.py:1971
+msgid "Displaying done."
+msgstr "Mostrando terminado"
 
-#: ../lib/advene/gui/edit/rules.py:355 ../lib/advene/gui/edit/rules.py:799
-msgid "The annotations of the context type"
-msgstr "Las anotaciones del tipo de contexto"
+#: ../lib/advene/gui/views/timeline.py:2463
+msgid "Create a new annotation"
+msgstr "Crear una nueva anotación"
 
-#: ../lib/advene/gui/edit/rules.py:370
-msgid "Return "
-msgstr "Regresar"
+#: ../lib/advene/gui/views/timeline.py:2464
+msgid "Zoom on region"
+msgstr "Acercar en región"
 
-#: ../lib/advene/gui/edit/rules.py:372 ../lib/advene/gui/edit/rules.py:787
-msgid "The element"
-msgstr "El elemento"
+#: ../lib/advene/gui/views/timeline.py:2465
+msgid "Restrict display to region"
+msgstr "Restringir muestra en región"
 
-#: ../lib/advene/gui/edit/rules.py:373 ../lib/advene/gui/edit/rules.py:788
-msgid "The element's content"
-msgstr "El contenido del elemento"
+#: ../lib/advene/gui/views/timeline.py:2578
+#: ../lib/advene/gui/edit/transcribe.py:494
+#, python-format
+msgid "Position %s"
+msgstr "Posicion %s"
 
-#: ../lib/advene/gui/edit/rules.py:388
-msgid "If the element matches "
-msgstr "Si el elemento concuerda"
+#: ../lib/advene/gui/views/timeline.py:2588
+msgid "New annotation at player time"
+msgstr "Nueva anotación en el tiempo del reproductor"
 
-#: ../lib/advene/gui/edit/rules.py:390
-msgid "Return the element if it matches "
-msgstr "Regresar el elemento si concuerda"
+#: ../lib/advene/gui/views/timeline.py:2592
+msgid "New annotation at mouse position"
+msgstr "Nueva anotación en la posición del cursor"
 
-#: ../lib/advene/gui/edit/rules.py:408 ../lib/advene/gui/edit/rules.py:617
-msgid "All conditions must be met"
-msgstr "Todas las condiciones se deben cumplir"
+#: ../lib/advene/gui/views/timeline.py:2596
+msgid "Selection"
+msgstr "Selección"
 
-#: ../lib/advene/gui/edit/rules.py:409 ../lib/advene/gui/edit/rules.py:618
-msgid "Any condition can be met"
-msgstr "Cualquier condición se puede cumplir"
+#: ../lib/advene/gui/views/timeline.py:2718
+msgid "Cannot zoom more"
+msgstr "No se puede acercar más"
 
-#: ../lib/advene/gui/edit/rules.py:493 ../lib/advene/gui/edit/rules.py:563
+#: ../lib/advene/gui/views/timeline.py:2933
 #, python-format
-msgid "Rule <b>%s</b>"
-msgstr "Regla <b>%s</b>"
+msgid "From schema %s"
+msgstr "Del esquema %s"
 
-#: ../lib/advene/gui/edit/rules.py:574
-msgid "Rule name"
-msgstr "Nombre de regla"
+#: ../lib/advene/gui/views/timeline.py:2996
+msgid "Restrict playing to this annotation-type"
+msgstr "Restringir la reproducción a este tipo de anotación"
 
-#: ../lib/advene/gui/edit/rules.py:591
-msgid "Event"
-msgstr "Evento"
+#: ../lib/advene/gui/views/timeline.py:3003
+msgid "Goto previous annotation"
+msgstr "Ir a la anotación previa"
 
-#: ../lib/advene/gui/edit/rules.py:599
-msgid "If"
-msgstr "Si"
+#: ../lib/advene/gui/views/timeline.py:3014
+msgid "Goto next annotation"
+msgstr "Ir a la anotación siguiente"
 
-#: ../lib/advene/gui/edit/rules.py:638
-msgid "Then"
-msgstr "Entonces"
+#: ../lib/advene/gui/views/timeline.py:3025
+msgid "+"
+msgstr "+"
 
-#: ../lib/advene/gui/edit/rules.py:683
-msgid "When the "
-msgstr "Cuando el "
+#: ../lib/advene/gui/views/timeline.py:3084
+msgid "Open an annotation display view"
+msgstr "Abrir una vista de muestra de anotaciones "
 
-#: ../lib/advene/gui/edit/rules.py:696
-msgid " occurs,"
-msgstr "ocurra, "
+#: ../lib/advene/gui/views/timeline.py:3091
+msgid "Open a slave montage view (coordinated zoom level)"
+msgstr "Abrir una vista de montaje esclava (coordinado nivel de zoom)"
 
-#: ../lib/advene/gui/edit/rules.py:723 ../lib/advene/gui/edit/rules.py:726
-#, python-format
-msgid "Condition expression: %s"
-msgstr "Expresión condicional: %s"
+#: ../lib/advene/gui/views/timeline.py:3126
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+"<b>Estadísticas acerca de la selección actual</b>\n"
+"\n"
 
-#: ../lib/advene/gui/edit/rules.py:765
-msgid "The annotation type"
-msgstr "El tipo de anotación"
+#: ../lib/advene/gui/views/timeline.py:3133
+msgid "No selected annotation"
+msgstr "No hay anotación seleccionada"
 
-#: ../lib/advene/gui/edit/rules.py:768
+#: ../lib/advene/gui/views/timeline.py:3137
 #, python-format
-msgid "The value of the %s attribute"
-msgstr "El valor del atributo %s"
-
-#: ../lib/advene/gui/edit/rules.py:770
-msgid "The annotation fragment"
-msgstr "El fragmento de la anotación"
+msgid "%d selected annotation(s)"
+msgstr "%d anotación(es) seleccionada(s)"
 
-#: ../lib/advene/gui/edit/rules.py:771
-msgid "The annotation begin time"
-msgstr "El tiempo inicial de la anotación"
+#: ../lib/advene/gui/views/timeline.py:3144
+msgid "Unselect all annotations"
+msgstr "Quitar selección a todas las anotaciones"
 
-#: ../lib/advene/gui/edit/rules.py:772
-msgid "The annotation end time"
-msgstr "El tiempo final de la anotación"
+#: ../lib/advene/gui/views/timeline.py:3145
+msgid "Create a static view"
+msgstr "Crear una nueva vista estática"
 
-#: ../lib/advene/gui/edit/rules.py:774
-msgid "The annotation MIME-type"
-msgstr "El tipo MIME de la anotación"
+#: ../lib/advene/gui/views/timeline.py:3146
+msgid "Highlight selection in other views"
+msgstr "Resalta la selección en otras vistas"
 
-#: ../lib/advene/gui/edit/rules.py:775
-msgid "The annotation's incoming relations"
-msgstr "Las relaciones entrantes de la anotación"
+#: ../lib/advene/gui/views/timeline.py:3147
+#: ../lib/advene/gui/views/timeline.py:3736
+msgid "Tag selection"
+msgstr "Selección de etiquetas"
 
-#: ../lib/advene/gui/edit/rules.py:776
-msgid "The annotation's outgoing relations"
-msgstr "Las relaciones salientes de la anotación"
+#: ../lib/advene/gui/views/timeline.py:3148
+msgid "Delete selected annotations"
+msgstr "Elimina las anotaciones seleccionadas"
 
-#: ../lib/advene/gui/edit/rules.py:779
-#, python-format
-msgid "The %s-related incoming annotations"
-msgstr "Las %s-relacionadas anotaciones entrantes"
+#: ../lib/advene/gui/views/timeline.py:3149
+msgid "Display selection in a table"
+msgstr "Muestra la selección en una tabla"
 
-#: ../lib/advene/gui/edit/rules.py:783
-#, python-format
-msgid "The %s-related outgoing annotations"
-msgstr "Las %s-relacionadas anotaciones salientes "
+#: ../lib/advene/gui/views/timeline.py:3150
+msgid "Center and zoom on selection"
+msgstr "Centrar y acercar en la selección"
 
-#: ../lib/advene/gui/edit/rules.py:789
-msgid "The element fragment"
-msgstr "El fragmento del elemento"
+#: ../lib/advene/gui/views/timeline.py:3151
+msgid "Edit selected annotations"
+msgstr "Edita las anotaciones seleccionadas"
 
-#: ../lib/advene/gui/edit/rules.py:790
-msgid "The element begin time"
-msgstr "El tiempo inicial del elemento"
+#: ../lib/advene/gui/views/timeline.py:3152
+msgid "Merge annotations"
+msgstr "Unir anotaciones"
 
-#: ../lib/advene/gui/edit/rules.py:791
-msgid "The element end time"
-msgstr "El tiempo final del elemento"
+#: ../lib/advene/gui/views/timeline.py:3153
+msgid "Display statistics"
+msgstr "Muestra estadísticas"
 
-#: ../lib/advene/gui/edit/rules.py:792
-msgid "The element duration"
-msgstr "La duración del elemento"
+#: ../lib/advene/gui/views/timeline.py:3269
+msgid "Goto previous page"
+msgstr "Ir a la página anterior"
 
-#: ../lib/advene/gui/edit/rules.py:793
-msgid "The element type"
-msgstr "El tipo de elemento"
+#: ../lib/advene/gui/views/timeline.py:3281
+msgid "Goto next page"
+msgstr "Ir a la página siguiente"
 
-#: ../lib/advene/gui/edit/rules.py:794
-msgid "The element's incoming relations"
-msgstr "Las relaciones entrantes del elemento"
+#: ../lib/advene/gui/views/timeline.py:3337
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+"Inspector cerrado. Clic aquí o en el fondo de la linea de tiempo para abrir."
 
-#: ../lib/advene/gui/edit/rules.py:795
-msgid "The element's outgoing relations"
-msgstr "Las relaciones salientes del elemento"
+#: ../lib/advene/gui/views/timeline.py:3365
+msgid ""
+"Delete the selected annotations or drop an annotation here to delete it."
+msgstr ""
+"Elimina las acciones seleccionadas o arrastra una anotación aquí para "
+"eliminarla."
 
-#: ../lib/advene/gui/edit/rules.py:796
-msgid "The context"
-msgstr "El contexto"
+#: ../lib/advene/gui/views/timeline.py:3387
+msgid ""
+"Drag an annotation type here to remove it from display.\n"
+"Click to edit all displayed types"
+msgstr ""
+"Arrastra un tipo de anotación aquí para removerlo de la visualización.\n"
+"Clic para editar todos los tipos mostrados"
 
-#: ../lib/advene/gui/edit/rules.py:797
-msgid "The context fragment"
-msgstr "El fragmento de contexto"
+#: ../lib/advene/gui/views/timeline.py:3399
+msgid "Selection actions"
+msgstr "Acciones de selección"
 
-#: ../lib/advene/gui/edit/rules.py:809
-#, python-format
-msgid "annotation-type %s"
-msgstr "tipo de anotación %s"
+#: ../lib/advene/gui/views/timeline.py:3414
+msgid "Display relations"
+msgstr "Muestra las relaciones"
 
-#: ../lib/advene/gui/edit/rules.py:812
-#, python-format
-msgid "relation-type %s"
-msgstr "tipos de relación %s"
+#: ../lib/advene/gui/views/timeline.py:3420
+msgid "Display all relations"
+msgstr "Muestra todas las relaciones"
 
-#: ../lib/advene/gui/edit/rules.py:834
-msgid "Select a condition"
-msgstr "Selecciona una condicion"
+#: ../lib/advene/gui/views/timeline.py:3497
+msgid "Center on current player position."
+msgstr "Centrar en la posición actual del reproductor"
 
-#: ../lib/advene/gui/edit/rules.py:878
-#, python-format
-msgid "Parameter %s"
-msgstr "Parámetro %s"
+#: ../lib/advene/gui/views/timeline.py:3513
+msgid "Automatically activate loop when clicking on an annotation"
+msgstr "Activar ciclo automáticamente cuando de da clic en una anotación"
 
-#: ../lib/advene/gui/edit/rules.py:992
-msgid "Select an action"
-msgstr "Selecciona una acción"
+#: ../lib/advene/gui/views/timeline.py:3537
+msgid "Displayed"
+msgstr "Mostrado"
 
-#: ../lib/advene/gui/edit/rules.py:1083
-msgid "Activate?"
-msgstr "¿Activar?"
+#: ../lib/advene/gui/views/timeline.py:3545
+msgid "Not displayed"
+msgstr "No mostrado"
 
-#: ../lib/advene/gui/edit/shapewidget.py:83
-msgid "Generic shape"
-msgstr "Forma genérica"
+#: ../lib/advene/gui/views/timeline.py:3594
+msgid "< All <"
+msgstr "< Todo <"
 
-#: ../lib/advene/gui/edit/shapewidget.py:234
-#: ../lib/advene/gui/edit/shapewidget.py:741
-#, python-format
-msgid "Link to %s"
-msgstr "Vínculo hacia %s"
+#: ../lib/advene/gui/views/timeline.py:3598
+msgid "> All >"
+msgstr "> Todo >"
 
-#: ../lib/advene/gui/edit/shapewidget.py:321
-#: ../lib/advene/gui/views/tagbag.py:132
-msgid "Name"
-msgstr "Nombre"
+#: ../lib/advene/gui/views/timeline.py:3622
+msgid "Displayed annotation types"
+msgstr "Tipos de anotación mostrados"
 
-#: ../lib/advene/gui/edit/shapewidget.py:326
-#: ../lib/advene/gui/edit/shapewidget.py:1299
-msgid "Link"
-msgstr "Vínculo"
+#: ../lib/advene/gui/views/timeline.py:3648
+msgid "Relation type"
+msgstr "Tipo de relación"
 
-#: ../lib/advene/gui/edit/shapewidget.py:331
-msgid "Link label"
-msgstr "Etiqueta de vínculo"
+#: ../lib/advene/gui/views/timeline.py:3648
+msgid "Display relation types"
+msgstr "Mostrar tipos de relación"
 
-#: ../lib/advene/gui/edit/shapewidget.py:349
-msgid "Linewidth"
-msgstr "Ancho de línea"
+#: ../lib/advene/gui/views/timeline.py:3649
+msgid "Relation content"
+msgstr "Contenido de relación"
 
-#: ../lib/advene/gui/edit/shapewidget.py:354
-msgid "Filled"
-msgstr "Lleno"
+#: ../lib/advene/gui/views/timeline.py:3649
+msgid "Display relation content"
+msgstr "Mostrar contenido de relación"
 
-#: ../lib/advene/gui/edit/shapewidget.py:362
-msgid "Opacity"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3650 ../lib/advene/gui/popup.py:516
+msgid "Highlight"
+msgstr "Marcar"
 
-#: ../lib/advene/gui/edit/shapewidget.py:404
-#, python-format
-msgid "Properties of %s"
-msgstr "Propiedades de %s"
+#: ../lib/advene/gui/views/timeline.py:3650
+msgid "Highlight active annotations"
+msgstr "Realzar las anotaciones activas"
 
-#: ../lib/advene/gui/edit/shapewidget.py:451
-msgid "Rectangle"
-msgstr "Rectángulo"
+#: ../lib/advene/gui/views/timeline.py:3737
+msgid "Enter the tag for the selection"
+msgstr "Ingresar etiqueta para la selección"
 
-#: ../lib/advene/gui/edit/shapewidget.py:532
-#: ../lib/advene/gui/edit/shapewidget.py:652
-msgid "Text"
-msgstr "Texto"
+#: ../lib/advene/gui/views/timeline.py:3743
+#: ../lib/advene/gui/views/tagbag.py:165
+msgid "The tag contains invalid characters"
+msgstr "La etiqueta contiene caracteres no válidos"
 
-#: ../lib/advene/gui/edit/shapewidget.py:663
-msgid "Textsize"
-msgstr "Tamaño del texto"
+#: ../lib/advene/gui/views/relation.py:71
+msgid "Relations view"
+msgstr "Vista de relaciones"
 
-#: ../lib/advene/gui/edit/shapewidget.py:677
-msgid "Image"
-msgstr "Imagen"
+#: ../lib/advene/gui/views/editionhistory.py:40
+msgid "Edition History"
+msgstr "Historial de navegación"
 
-#: ../lib/advene/gui/edit/shapewidget.py:761
-msgid "Href"
-msgstr "Href"
+#: ../lib/advene/gui/views/editionhistory.py:42
+msgid "Access last edited/created elements"
+msgstr "Acceder a los elementos editados / creados al final"
 
-#: ../lib/advene/gui/edit/shapewidget.py:771
-msgid "Line"
-msgstr "Línea"
+#: ../lib/advene/gui/views/editionhistory.py:102
+msgid "Created"
+msgstr "Creado"
 
-#: ../lib/advene/gui/edit/shapewidget.py:872
-msgid "Draw an arrow"
-msgstr "Dibujar una flecha"
+#: ../lib/advene/gui/views/editionhistory.py:103
+msgid "Edited"
+msgstr "Editado"
 
-#: ../lib/advene/gui/edit/shapewidget.py:883
-msgid "Arrow size"
-msgstr "Tamaño de la flecha"
+#: ../lib/advene/gui/views/tagbag.py:55
+msgid "Tag Bag"
+msgstr "Bolsa de etiquetas"
 
-#: ../lib/advene/gui/edit/shapewidget.py:935
-#: ../lib/advene/gui/views/browser.py:359
-msgid "Path"
-msgstr "Ruta"
+#: ../lib/advene/gui/views/tagbag.py:62
+msgid "New tag"
+msgstr "Nueva etiqueta"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1102
-#, fuzzy
-msgid "Close path"
-msgstr "Ruta de video"
+#: ../lib/advene/gui/views/tagbag.py:125
+msgid "New tag name"
+msgstr "Nuevo nombre de etiqueta"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1181
-msgid "Circle"
-msgstr "Círculo"
+#: ../lib/advene/gui/views/tagbag.py:131
+msgid "Enter a new tag name and select its color."
+msgstr "Ingresa un nuevo nombre de etiqueta y selecciona su color"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1239
-msgid "Ellipse"
-msgstr "Elipse"
+#: ../lib/advene/gui/views/tagbag.py:135
+#: ../lib/advene/gui/edit/shapewidget.py:341
+msgid "Name"
+msgstr "Nombre"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1589
-msgid "SVG"
-msgstr "SVG"
+#: ../lib/advene/gui/views/tagbag.py:141
+#: ../lib/advene/gui/edit/shapewidget.py:362
+#: ../lib/advene/gui/edit/elements.py:895
+#: ../lib/advene/gui/edit/elements.py:975
+#: ../lib/advene/gui/edit/elements.py:1089 ../lib/advene/rules/actions.py:133
+msgid "Color"
+msgstr "Color"
 
-#: ../lib/advene/gui/edit/shapewidget.py:2172
-msgid "Load SVG"
-msgstr "Cargar SVG"
+#: ../lib/advene/gui/views/tagbag.py:178
+msgid "Tag bag options"
+msgstr "Opciones de  la bolsa de etiquetas"
 
-#: ../lib/advene/gui/edit/shapewidget.py:2178
-msgid "Save SVG"
-msgstr "Guardar SVG"
+#: ../lib/advene/gui/views/tagbag.py:179
+msgid "Update with new tags"
+msgstr "Actualizar con nuevas etiquetas"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:74
-#: ../lib/advene/gui/widget.py:1063
-msgid "Refresh snapshot"
-msgstr "Refrescar captura"
+#: ../lib/advene/gui/views/tagbag.py:179
+msgid "Automatically display new defined tags"
+msgstr "Muestra nuevas etiquetas definidas automáticamente"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/views/tagbag.py:228
 #, python-format
-msgid "Decrement value by %.2f s"
-msgstr "Disminuye el valor por %.2f s"
+msgid "Choose the color for tag %s"
+msgstr "Selecciona el color para la etiqueta %s"
 
-#: ../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/views/tagbag.py:252
+msgid "Set color"
+msgstr "Establece el color"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:130
-#, fuzzy
-msgid ""
-"Click to play\n"
-"Control+click to set to current time\n"
-"Scroll to modify value (with control/shift)\n"
-"Right-click to invalidate screenshot"
-msgstr ""
-"Clic para reproducir\n"
-"Control+clic para establecer el tiempo actual\\Desplazar para modificar el "
-"valor (con control/shift)\n"
-"Clic-derecho para invalidar la captura"
-
-#: ../lib/advene/gui/edit/timeadjustment.py:145
-msgid ""
-"Enter a timecode.\n"
-"An integer value will be considered as milliseconds.\n"
-"A float value (12.2) will be considered as seconds.\n"
-"HH:MM:SS.sss values are possible."
-msgstr ""
-"Ingresa un código de tiempo.\n"
-"Un valor entero será considerado como milisegundos.\n"
-"Un valor flotante (12.2) será considerado como segundos.\n"
-"Valores como HH:MM:SS.sss son posibles."
+#: ../lib/advene/gui/views/tagbag.py:253
+msgid "Remove"
+msgstr "Remover"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:159
-msgid "Set to current player position"
-msgstr "Establecer a la posición del reproductor actual"
+#: ../lib/advene/gui/views/tagbag.py:326
+msgid "Drop a tag here to remove it from the list"
+msgstr "Arrastra una etiqueta aquí para removerla de la lista"
 
-#: ../lib/advene/gui/edit/create.py:81
-#, python-format
-msgid "%s creation"
-msgstr "%s creación"
+#: ../lib/advene/gui/views/tagbag.py:336
+msgid "Save as adhoc view"
+msgstr "Guardar como una vista adhoc"
 
-#: ../lib/advene/gui/edit/create.py:82
-#, python-format
-msgid ""
-"To create a new element of type %s,\n"
-"you must give the following information."
-msgstr ""
-"Para crear un nuevo tipo de elemento %s,\n"
-"debes de dar la siguiente informacion."
+#: ../lib/advene/gui/views/tagbag.py:337
+msgid "Add a new tag"
+msgstr "Agrega una nueva etiqueta"
 
-#: ../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:659
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:251
-#: ../lib/advene/gui/views/table.py:558
-msgid "Type"
-msgstr "Tipo"
+#: ../lib/advene/gui/views/tagbag.py:338
+msgid "Display all defined tags"
+msgstr "Muestra todas las etiquetas definidas"
 
-#: ../lib/advene/gui/edit/create.py:111
-msgid "Dynamic view"
-msgstr "Vista dinamica"
+#: ../lib/advene/gui/views/__init__.py:194
+msgid "Invalid view id"
+msgstr "id vista no válida"
 
-#: ../lib/advene/gui/edit/create.py:112
-msgid "HTML template"
-msgstr "Plantilla HTML"
+#: ../lib/advene/gui/views/__init__.py:240
+#, python-format
+msgid "Cannot save default options: %s"
+msgstr "No se pueden guardar las opciones predeterminadas: %s"
 
-#: ../lib/advene/gui/edit/create.py:113
-msgid "Plain XML"
-msgstr "XML Plano"
+#: ../lib/advene/gui/views/__init__.py:251
+#, python-format
+msgid "Default options saved for view %s"
+msgstr "Opciones predeterminadas para vistas almacenadas %s"
 
-#: ../lib/advene/gui/edit/create.py:114
-msgid "SVG template"
-msgstr "Plantilla SVG"
+#: ../lib/advene/gui/views/__init__.py:283
+#, python-format
+msgid "Saving %s"
+msgstr "Guardando %s"
 
-#: ../lib/advene/gui/edit/create.py:115
-msgid "Plain text template"
-msgstr "Plantilla de texto plano"
+#: ../lib/advene/gui/views/__init__.py:286
+msgid "Enter a view name to save this parametered view"
+msgstr "Ingresar un nombre de vista para almacenar esta vista con parámetros"
 
-#: ../lib/advene/gui/edit/create.py:118
-msgid "Simple query"
-msgstr "Pregunta simple"
+#: ../lib/advene/gui/views/__init__.py:304
+#, python-format
+msgid "Error: the view %s is not an adhoc view."
+msgstr "Error: la vista %s no es una vista adhoc."
 
-#: ../lib/advene/gui/edit/create.py:120
-msgid "Directory"
-msgstr "Directorio"
+#: ../lib/advene/gui/views/__init__.py:329
+msgid "HTML export"
+msgstr "Exportar HTML"
 
-#: ../lib/advene/gui/edit/create.py:128
-msgid "No available type."
-msgstr "No hay tipo disponible "
+#: ../lib/advene/gui/views/__init__.py:330
+msgid "Specify a name for the export view"
+msgstr "Especificar un nombre para la vista de exportar"
 
-#: ../lib/advene/gui/edit/create.py:172
+#: ../lib/advene/gui/views/__init__.py:349
 #, python-format
 msgid ""
-"The identifier %s is not valid.\n"
-"It must be composed of non-accentuated alphabetic characters\n"
-"Underscore is allowed."
+"View successfully exported as %s.\n"
+"Open it in the web browser ?"
 msgstr ""
-"El identificador %s no es valido.\n"
-"Debe de estar compuesto de caracteres sin acentuar\n"
-"Se permite utilizar guion bajo."
+"La vista se exportó satisfactoriamente como %s.\n"
+"¿Abrirla en el navegador web?"
 
-#: ../lib/advene/gui/edit/create.py:177
-#, python-format
-msgid "The identifier %s is already defined."
-msgstr "El identificador %s ya está definido. "
+#: ../lib/advene/gui/views/__init__.py:428
+msgid "Actions"
+msgstr "Acciones"
 
-#: ../lib/advene/gui/edit/create.py:310
-msgid "New resource data"
-msgstr "Nuevos datos del recurso"
+#: ../lib/advene/gui/views/__init__.py:453
+msgid "Click or drag-and-drop to reattach view"
+msgstr "Clic o arrastra-y-suelta para volver a adjuntar la vista"
 
-#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
-msgid "Schemas"
-msgstr "Schemas"
+#: ../lib/advene/gui/views/finder.py:105 ../lib/advene/util/helper.py:402
+msgid "Package"
+msgstr "Paquete"
 
-#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
-#: ../lib/advene/gui/views/interactivequery.py:464
-msgid "Annotations"
-msgstr "Anotaciones"
+#: ../lib/advene/gui/views/finder.py:106
+msgid "List of views"
+msgstr "Lista de vistas"
 
-#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
-#: ../lib/advene/gui/edit/elements.py:517
-msgid "Relations"
-msgstr "Relaciones"
+#: ../lib/advene/gui/views/finder.py:107
+msgid "Static views"
+msgstr "Vistas estáticas"
 
-#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
-msgid "Queries"
-msgstr "Preguntas"
+#: ../lib/advene/gui/views/finder.py:108
+msgid "Dynamic views"
+msgstr "Vistas dinámicas"
 
-#: ../lib/advene/gui/edit/imports.py:320
-msgid "Imported?"
-msgstr "Importado?"
+#: ../lib/advene/gui/views/finder.py:109
+msgid "Admin views"
+msgstr "Vistas e administración"
 
-#: ../lib/advene/gui/edit/imports.py:337
-#: ../lib/advene/gui/edit/elements.py:509
-#: ../lib/advene/gui/edit/elements.py:558
-#: ../lib/advene/gui/edit/elements.py:645
-#: ../lib/advene/gui/edit/elements.py:725
-#: ../lib/advene/gui/edit/elements.py:782
-#: ../lib/advene/gui/edit/elements.py:874
-#: ../lib/advene/gui/edit/elements.py:943
-#: ../lib/advene/gui/edit/elements.py:1055
-#: ../lib/advene/gui/edit/elements.py:1117
-msgid "URI"
-msgstr "URI"
+#: ../lib/advene/gui/views/finder.py:110
+msgid "Adhoc views"
+msgstr "Vistas adhoc"
 
-#: ../lib/advene/gui/edit/imports.py:359
-msgid "Choose the package to import, and its alias"
-msgstr "Elige el paquete a importar, y su alias"
+#: ../lib/advene/gui/views/finder.py:515
+#, python-format
+msgid ""
+"View <b>%(title)s</b>\n"
+"Id: %(id)s"
+msgstr ""
+"Vista <b>%(title)s</b>\n"
+"Id: %(id)s"
 
-#: ../lib/advene/gui/edit/montage.py:47
-msgid "Montage"
-msgstr "Montaje"
+#: ../lib/advene/gui/views/finder.py:522
+msgid "Open in webbrowser"
+msgstr "Abrir en el navegador web"
 
-#: ../lib/advene/gui/edit/montage.py:49
-msgid "Dynamic montage of annotations"
-msgstr "Montaje dinámico de anotaciones"
+#: ../lib/advene/gui/views/finder.py:523
+#, python-format
+msgid "View applied to %s\n"
+msgstr "Vista aplicada a %s\n"
 
-#: ../lib/advene/gui/edit/montage.py:55
-#: ../lib/advene/gui/views/logwindow.py:50
-#: ../lib/advene/gui/views/tagbag.py:60
-#: ../lib/advene/gui/views/activebookmarks.py:59
-#: ../lib/advene/gui/views/bookmarks.py:77
-msgid "Clear"
-msgstr "Limpiar"
+#: ../lib/advene/gui/views/finder.py:528 ../lib/advene/gui/popup.py:496
+msgid "Activate"
+msgstr "Activar"
 
-#: ../lib/advene/gui/edit/montage.py:56
-#: ../lib/advene/gui/views/transcription.py:472
-#: ../lib/advene/gui/widget.py:1059
-msgid "Play"
-msgstr "Reproducir"
+#: ../lib/advene/gui/views/finder.py:531
+msgid "Open in GUI"
+msgstr "Abrir en la interfaz gráfica de usuario"
 
-#: ../lib/advene/gui/edit/montage.py:57
-msgid "Render"
-msgstr "Render"
+#: ../lib/advene/gui/views/finder.py:533
+msgid "Unknown type of view??"
+msgstr "¿Tipo de vista desconocido?"
 
-#: ../lib/advene/gui/edit/montage.py:171
-msgid "Remove from montage"
-msgstr "Eliminar del montaje"
+#: ../lib/advene/gui/views/finder.py:558
+msgid "Edit view"
+msgstr "Editar vista"
 
-#: ../lib/advene/gui/edit/montage.py:303 ../lib/advene/gui/popup.py:444
-#, python-format
-msgid "Extracting %s"
-msgstr "Extrayendo %s"
+#: ../lib/advene/gui/views/finder.py:567
+msgid "Open view"
+msgstr "Abrir vista"
 
-#: ../lib/advene/gui/edit/montage.py:304
+#: ../lib/advene/gui/views/finder.py:607 ../lib/advene/gui/views/finder.py:673
 #, python-format
 msgid ""
-"Exporting montage %(title)s\n"
-"to %%(filename)s"
+"%(type)s <b>%(title)s</b>\n"
+"Id: %(id)s"
 msgstr ""
-"Exportando montaje %(title)s\n"
-"a %%(filename)s"
+"%(type)s <b>%(title)s</b>\n"
+"Id: %(id)s"
 
-#: ../lib/advene/gui/edit/montage.py:396
-msgid "Drop an annotation here to remove it from the list"
-msgstr "Soltar una anotación aquí para eliminarla de la lista"
+#: ../lib/advene/gui/views/finder.py:622
+#: ../lib/advene/gui/views/interactivequery.py:400
+msgid "Edit query"
+msgstr "Edita consulta"
 
-#: ../lib/advene/gui/edit/montage.py:407
-msgid "Play the montage"
-msgstr "Reproducir el montaje"
+#: ../lib/advene/gui/views/finder.py:630
+msgid "Try to apply the query on..."
+msgstr "Trata de aplicar la consulta en..."
 
-#: ../lib/advene/gui/edit/montage.py:412
-msgid "Save the view in the package"
-msgstr "Guardar la vista en el paquete"
+#: ../lib/advene/gui/views/finder.py:650 ../lib/advene/gui/popup.py:829
+msgid "the package"
+msgstr "el paquete"
 
-#: ../lib/advene/gui/edit/montage.py:460
-msgid "Set zoom level"
-msgstr "Establecer el nivel de zoom"
+#: ../lib/advene/gui/views/finder.py:651 ../lib/advene/gui/popup.py:830
+msgid "all annotations of the package"
+msgstr "todas las anotaciones del paquete"
 
-#: ../lib/advene/gui/edit/montage.py:465
-msgid "Set 100% zoom"
-msgstr "Establecer 100% zoom"
+#: ../lib/advene/gui/views/finder.py:652 ../lib/advene/gui/popup.py:831
+msgid "the first annotation of the package"
+msgstr "la primer anotación del paquete"
 
-#: ../lib/advene/gui/edit/montage.py:471
-#: ../lib/advene/gui/views/interactivequery.py:439
-msgid "Unhighlight annotations"
-msgstr "Quitar resaltado de anotaciones"
+#: ../lib/advene/gui/views/finder.py:697
+msgid "Edit resource"
+msgstr "Editar recurso"
 
-#: ../lib/advene/gui/edit/montage.py:475 ../lib/advene/gui/edit/montage.py:484
-#: ../lib/advene/gui/views/interactivequery.py:443
-#: ../lib/advene/gui/views/interactivequery.py:480
-msgid "Highlight annotations"
-msgstr "Resalta las anotaciones"
+#: ../lib/advene/gui/views/finder.py:732 ../lib/advene/util/helper.py:565
+#, python-format
+msgid ""
+"Package %(title)s:\n"
+"%(schema)s\n"
+"%(annotation)s in %(annotation_type)s\n"
+"%(relation)s in %(relation_type)s\n"
+"%(query)s\n"
+"%(view)s\n"
+"\n"
+"Description:\n"
+"%(description)s\n"
+msgstr ""
+"Paquete %(title)s:\n"
+"%(schema)s\n"
+"%(annotation)s in %(annotation_type)s\n"
+"%(relation)s in %(relation_type)s\n"
+"%(query)s\n"
+"%(view)s\n"
+"\n"
+"Descripción:\n"
+"%(description)s\n"
 
-#: ../lib/advene/gui/edit/montage.py:545
-msgid "Total duration:"
-msgstr "Duración total"
+#: ../lib/advene/gui/views/finder.py:753
+#, fuzzy, python-format
+msgid "%(type)s %(title)s"
+msgstr ""
+"%(type)s <b>%(title)s</b>\n"
+"Id: %(id)s"
 
-#: ../lib/advene/gui/edit/frameselector.py:43
-msgid "Click on a frame to select its time."
-msgstr "Clic en un cuadro para seleccionar su tiempo. "
+#: ../lib/advene/gui/views/finder.py:756 ../lib/advene/gui/edit/elements.py:517
+#: ../lib/advene/gui/edit/elements.py:566
+#: ../lib/advene/gui/edit/elements.py:653
+#: ../lib/advene/gui/edit/elements.py:733
+#: ../lib/advene/gui/edit/elements.py:791
+#: ../lib/advene/gui/edit/elements.py:882
+#: ../lib/advene/gui/edit/elements.py:952
+#: ../lib/advene/gui/edit/elements.py:1064
+msgid "Metadata"
+msgstr "Meta datos"
 
-#: ../lib/advene/gui/edit/frameselector.py:177
-msgid "Select the appropriate snapshot"
-msgstr "Selecciona la captura apropiada"
+#: ../lib/advene/gui/views/finder.py:773
+msgid "Column-based package finder"
+msgstr "Buscador de paquete basado en columnas"
 
-#: ../lib/advene/gui/edit/frameselector.py:230
-#: ../lib/advene/gui/edit/frameselector.py:283
-msgid "Click to see more frames or scroll with the mouse wheel"
-msgstr "Click para ver más cuadros o desplaza con la rueda del ratón"
+#: ../lib/advene/gui/views/editaccumulator.py:45
+msgid "EditAccumulator"
+msgstr "Editar acumulador"
 
-#: ../lib/advene/gui/edit/transcribe.py:67
-msgid "Transcription importer"
-msgstr "Importador de transcripciones"
+#: ../lib/advene/gui/views/activebookmarks.py:55
+#: ../lib/advene/gui/views/activebookmarks.py:57
+msgid "ActiveBookmarks"
+msgstr "SeparadoresActivos"
 
-#: ../lib/advene/gui/edit/transcribe.py:78
-msgid "Note taking"
-msgstr "Tomar notas"
-
-#: ../lib/advene/gui/edit/transcribe.py:80
-msgid "Take notes on the fly as a timestamped transcription"
-msgstr "Importar anotaciones de una transcripción timestamped"
-
-#: ../lib/advene/gui/edit/transcribe.py:87
-#: ../lib/advene/gui/views/activebookmarks.py:60
+#: ../lib/advene/gui/views/activebookmarks.py:63
+#: ../lib/advene/gui/edit/transcribe.py:88
 msgid "Export as static view"
 msgstr "Exportar como vista estática"
 
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Timestamp"
-msgstr "Marca de tiempo"
+#: ../lib/advene/gui/views/activebookmarks.py:443
+msgid "Chronological order"
+msgstr "Orden cronológico"
 
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Click inserts timestamp marks"
-msgstr "Clic inserta marcas de tiempo"
+#: ../lib/advene/gui/views/activebookmarks.py:444
+msgid "Completeness and chronological order"
+msgstr "Nivel de completado y orden cronológico"
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "Insert on single-click"
-msgstr "Insertar con un solo clic"
+#: ../lib/advene/gui/views/activebookmarks.py:460
+msgid "Bookmark duration"
+msgstr "Duración del separador"
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "A single click will insert the mark (else a double click is needed)"
-msgstr "Un clic insertará la marca (si no se necesita un doble clic)"
+#: ../lib/advene/gui/views/activebookmarks.py:461
+msgid "Enter the duration (in ms) to convert bookmarks into annotations"
+msgstr ""
+"Ingresar la duración (en ms) para convertir los separadores en anotaciones"
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play on scroll"
-msgstr "Reproducir en desplazamiento"
+#: ../lib/advene/gui/views/activebookmarks.py:483
+msgid "User-specified duration"
+msgstr "Duración especificada por el usuario"
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play the new position upon timestamp modification"
-msgstr ""
-"Reproduce la nueva posición después de la modificación de la marca de tiempo"
+#: ../lib/advene/gui/views/activebookmarks.py:484
+msgid "2s duration"
+msgstr "2s duración"
 
-#: ../lib/advene/gui/edit/transcribe.py:151
-msgid "Generate empty annotations"
-msgstr "Genera anotaciones vacías"
+#: ../lib/advene/gui/views/activebookmarks.py:485
+msgid "Complete coverage"
+msgstr "Cobertura completa"
 
-#: ../lib/advene/gui/edit/transcribe.py:151
-msgid "If checked, generate annotations for empty text"
-msgstr "Si está seleccionado, genera anotaciones para texto vacío"
+#: ../lib/advene/gui/views/activebookmarks.py:503
+msgid "Drop a bookmark here to remove it from the list"
+msgstr "Arrastra un separador aquí para removerlo de la lista"
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid "Reaction time"
-msgstr "Tiempo de reacción"
+#: ../lib/advene/gui/views/activebookmarks.py:530
+msgid "Type of the annotations that will be created"
+msgstr "Tipo de anotaciones que serán cradas"
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid ""
-"Reaction time (substracted from current player time, except when paused.)"
-msgstr ""
-"Tiempo de reacción (restado del tiempo de reproducción actual, excepto "
-"cuando está en pausa)."
+#: ../lib/advene/gui/views/activebookmarks.py:548
+#: ../lib/advene/gui/edit/transcribe.py:1155
+msgid "Smallish"
+msgstr "Más pequeño"
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Auto-insert"
-msgstr "Auto-insertar"
+#: ../lib/advene/gui/views/activebookmarks.py:549
+#: ../lib/advene/gui/edit/transcribe.py:1156 ../lib/advene/rules/actions.py:167
+msgid "Small"
+msgstr "Pequeño"
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Automatic timestamp mark insertion"
-msgstr "Inserción de marca de tiempo automática"
+#: ../lib/advene/gui/views/activebookmarks.py:550
+#: ../lib/advene/gui/edit/transcribe.py:1157 ../lib/advene/rules/actions.py:168
+msgid "Normal"
+msgstr "Normal"
 
-#: ../lib/advene/gui/edit/transcribe.py:154
-msgid "Automatic insertion delay"
-msgstr "Retardo automático de inserción"
+#: ../lib/advene/gui/views/activebookmarks.py:551
+#: ../lib/advene/gui/edit/transcribe.py:1158 ../lib/advene/rules/actions.py:169
+msgid "Large"
+msgstr "Grande"
 
-#: ../lib/advene/gui/edit/transcribe.py:154
-msgid ""
-"If autoinsert is active, timestamp marks will be automatically inserted when "
-"text is entered after no interaction since this delay (in ms).\n"
-"1000 is typically a good value."
-msgstr ""
-"Si autoinsertar está activo, la marca de tiempo se insertará automáticamente "
-"cuando se introduce texto y no hay interacción desde este retardo (en ms).\n"
-"1000 es generalmente un buen valor."
+#: ../lib/advene/gui/views/activebookmarks.py:552
+#: ../lib/advene/gui/edit/transcribe.py:1159
+msgid "Larger"
+msgstr "Más grande"
 
-#: ../lib/advene/gui/edit/transcribe.py:155 ../lib/advene/gui/main.py:4368
-msgid "Font size"
-msgstr "Tamaño de la fuente"
+#: ../lib/advene/gui/views/activebookmarks.py:553
+#: ../lib/advene/gui/edit/transcribe.py:1160
+msgid "Huge"
+msgstr "Inmenso"
 
-#: ../lib/advene/gui/edit/transcribe.py:155
-msgid "Font size for text (0 for standard size)"
-msgstr "Tamaño de la fuente para el texto (0 para el tamaño estándar)"
+#: ../lib/advene/gui/views/activebookmarks.py:563
+msgid "Reorder active bookmarks"
+msgstr "Reorganizar los separadores activos"
 
-#: ../lib/advene/gui/edit/transcribe.py:215
-#: ../lib/advene/gui/edit/transcribe.py:219
-#: ../lib/advene/gui/edit/transcribe.py:379
-#: ../lib/advene/gui/edit/transcribe.py:383
-msgid "Invalid timestamp mark"
-msgstr "Marca no valida timestamp"
+#: ../lib/advene/gui/views/activebookmarks.py:564
+msgid "Complete bookmarks into annotations"
+msgstr "Completar los separadores en anotaciones"
 
-#: ../lib/advene/gui/edit/transcribe.py:496
-#: ../lib/advene/gui/views/timeline.py:2550
-#, python-format
-msgid "Position %s"
-msgstr "Posicion %s"
+#: ../lib/advene/gui/views/activebookmarks.py:565
+msgid "Save the current state"
+msgstr "Guardar el estado actual"
 
-#: ../lib/advene/gui/edit/transcribe.py:506 ../lib/advene/gui/popup.py:456
-msgid "Edit"
-msgstr "Editar"
+#: ../lib/advene/gui/views/activebookmarks.py:566
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Set the size of snaphots"
+msgstr "Establece el tamaño de las capturas de pantalla"
 
-#: ../lib/advene/gui/edit/transcribe.py:510
-msgid "Ignore the following text (toggle)"
-msgstr "Ignora el siguiente texto"
+#: ../lib/advene/gui/views/activebookmarks.py:833
+msgid "Remove end timestamp"
+msgstr "Remover la estampa de tiempo (timestamp) final"
 
-#: ../lib/advene/gui/edit/transcribe.py:514
-msgid "Remove mark"
-msgstr "Eliminar marca. "
+#: ../lib/advene/gui/views/activebookmarks.py:1041
+msgid ""
+"Error: cannot find an appropriate schema to create the Active-bookmark type."
+msgstr ""
+"Error: no se puede encontrar un esquema apropiado para crear el tipo de "
+"separador-activo. "
 
-#: ../lib/advene/gui/edit/transcribe.py:518
-msgid "Reaction-time offset"
-msgstr "Tiempo de reacción (compensación)"
+#: ../lib/advene/gui/views/activebookmarks.py:1046
+msgid "Active bookmark"
+msgstr "Separador activo"
 
-#: ../lib/advene/gui/edit/transcribe.py:522
-msgid "-1 sec"
-msgstr "-1 sec"
+#: ../lib/advene/gui/views/activebookmarks.py:1084
+msgid "Validate the annotation"
+msgstr "Validar la anotación"
 
-#: ../lib/advene/gui/edit/transcribe.py:525
-msgid "-0.5 sec"
-msgstr "-0.5 sec"
+#: ../lib/advene/gui/views/activebookmarks.py:1228
+msgid "Duplicate bookmark"
+msgstr "Duplicar el separador"
 
-#: ../lib/advene/gui/edit/transcribe.py:528
-msgid "-0.1 sec"
-msgstr "-0.1 sec"
+#: ../lib/advene/gui/views/activebookmarks.py:1229
+msgid "Remove bookmark"
+msgstr "Remover el separador"
 
-#: ../lib/advene/gui/edit/transcribe.py:532
-msgid "+1 sec"
-msgstr "+1 sec"
+#: ../lib/advene/gui/views/activebookmarks.py:1238
+msgid "Remove begin timestamp"
+msgstr "Remover la estampa de tiempo (timestamp) inicial"
 
-#: ../lib/advene/gui/edit/transcribe.py:535
-msgid "+0.5 sec"
-msgstr "+0.5 sec"
+#: ../lib/advene/gui/views/activebookmarks.py:1245
+msgid "Complete bookmark"
+msgstr "Completa el separador"
 
-#: ../lib/advene/gui/edit/transcribe.py:538
-msgid "+0.1 sec"
-msgstr "+0.1 sec"
+#: ../lib/advene/gui/views/activebookmarks.py:1249
+msgid "Change type to"
+msgstr "Cambiar el tipo a"
 
-#: ../lib/advene/gui/edit/transcribe.py:629
-msgid "Invalid timestamp"
-msgstr "Timestamp no valida"
+#: ../lib/advene/gui/views/logwindow.py:43
+msgid "Links"
+msgstr "Vínculos"
 
-#: ../lib/advene/gui/edit/transcribe.py:762
-#, python-format
-msgid "Invalid timestamp mark in conversion: %s"
-msgstr "Marca del tiempo no válida en la conversión: %s"
+#: ../lib/advene/gui/views/logwindow.py:45
+msgid "URL stack"
+msgstr "Apilado URL"
 
-#: ../lib/advene/gui/edit/transcribe.py:879
+#: ../lib/advene/gui/views/logwindow.py:123
 #, python-format
-msgid "Cannot save the file: %s"
-msgstr "No se puede guardar el archivo: %s"
+msgid "Go to %s"
+msgstr "Ir a %s"
 
-#: ../lib/advene/gui/edit/transcribe.py:884
-#: ../lib/advene/gui/views/transcription.py:703
-#, python-format
-msgid "Transcription saved to %s"
-msgstr "Transcripción guardada a %s"
+#: ../lib/advene/gui/views/logwindow.py:129 ../lib/advene/rules/actions.py:63
+msgid "Go to the given position"
+msgstr "Ir a la posicion dada"
 
-#: ../lib/advene/gui/edit/transcribe.py:890
-#: ../lib/advene/gui/edit/transcribe.py:980
-msgid "This will overwrite the current textual content. Are you sure?"
-msgstr "Esto va a sobrescribir el contenido actual textual. ¿Estás seguro?"
+#: ../lib/advene/gui/views/logwindow.py:157
+msgid "Push a URL on the stack"
+msgstr "Meter un URL al apilado"
 
-#: ../lib/advene/gui/edit/transcribe.py:893
-msgid "Select transcription file to load"
-msgstr "Selecciona un archivo de transcripción para cargar"
+#: ../lib/advene/gui/views/logwindow.py:158
+msgid "Description of the URL"
+msgstr "Descripción del URL"
 
-#: ../lib/advene/gui/edit/transcribe.py:910
-#, python-format
-msgid "Cannot open %(filename)s: %(error)s"
-msgstr "No se puede abrir %(filename)s: %(error)s"
+#: ../lib/advene/gui/views/interactivequery.py:51
+#: ../lib/advene/gui/views/interactivequery.py:99
+msgid "Interactive query"
+msgstr "Busqueda interactiva"
 
-#: ../lib/advene/gui/edit/transcribe.py:965
-msgid "Cannot import annotations: no existing interface"
-msgstr "No se pueden importar las anotaciones: no existe interfaz"
+#: ../lib/advene/gui/views/interactivequery.py:53
+msgid "Interactive query dialog"
+msgstr "Diálogo de consulta interactiva"
 
-#: ../lib/advene/gui/edit/transcribe.py:967
-msgid "Select the annotation type to import"
-msgstr "Selecciona el tipo de anotación a importar"
+#: ../lib/advene/gui/views/interactivequery.py:59
+#: ../lib/advene/gui/views/interactivequery.py:256
+msgid "Save query"
+msgstr "Guardar consulta"
 
-#: ../lib/advene/gui/edit/transcribe.py:976
+#: ../lib/advene/gui/views/interactivequery.py:122
+#: ../lib/advene/gui/views/interactivequery.py:172
 #, python-format
-msgid "There are no annotations of type %s"
-msgstr "No hay anotaciones del tipo %s"
+msgid ""
+"Invalid query.\n"
+"The following fields have an invalid value:\n"
+"%s"
+msgstr ""
+"Busqueda invalida.\n"
+"Los campos siguientes tienen un valor no valido:\n"
+"%s"
 
-#: ../lib/advene/gui/edit/transcribe.py:1005
-msgid "Cannot convert the data: no associated package"
-msgstr "No se pueden convertir los datos: no hay un paquete asociado"
+#: ../lib/advene/gui/views/interactivequery.py:136
+#: ../lib/advene/gui/views/interactivequery.py:296
+msgid "Saving the query..."
+msgstr "Guardando la consulta..."
 
-#: ../lib/advene/gui/edit/transcribe.py:1008
-msgid "Converting transcription"
-msgstr "Transcripción de conversión"
+#: ../lib/advene/gui/views/interactivequery.py:137
+#: ../lib/advene/gui/views/interactivequery.py:297
+msgid "Give a title and identifier for saving the query"
+msgstr "Da un título e identificador para guardar la consulta"
 
-#: ../lib/advene/gui/edit/transcribe.py:1014
-msgid "Choose the annotation-type where to create annotations.\n"
-msgstr "Elige el tipo de anotación dónde crear anotaciones.\n"
+#: ../lib/advene/gui/views/interactivequery.py:180
+msgid "Expert search"
+msgstr "Búsqueda experta"
 
-#: ../lib/advene/gui/edit/transcribe.py:1022
-msgid "Delete existing annotations in this type"
-msgstr "Elimina las anotaciones existentes en este tipo"
+#: ../lib/advene/gui/views/interactivequery.py:186
+#, python-format
+msgid ""
+"TALES error in interactive expression:\n"
+"%s"
+msgstr ""
+"TALES error en una expresión interactiva:\n"
+"%s"
 
-#: ../lib/advene/gui/edit/transcribe.py:1027
-#: ../lib/advene/gui/views/timeline.py:3009 ../lib/advene/gui/main.py:3222
-msgid "Create a new annotation type"
-msgstr "Crea un nuevo tipo de anotacion"
+#: ../lib/advene/gui/views/interactivequery.py:247
+msgid "Interactive result"
+msgstr "Resultado interactivo"
 
-#: ../lib/advene/gui/edit/transcribe.py:1045
-msgid "Select type"
-msgstr "Selecciona tipo"
-
-#: ../lib/advene/gui/edit/transcribe.py:1049
-msgid "You want to create a new type. Please specify its schema and title."
-msgstr ""
-"Quieres crear un nuevo tipo. Por favor especifica su esquema y título. "
-
-#: ../lib/advene/gui/edit/transcribe.py:1061
-msgid "Containing schema"
-msgstr "Esquema contenedor"
+#: ../lib/advene/gui/views/interactivequery.py:249
+msgid "Interactive result display"
+msgstr "Visualización interactiva de resultado"
 
-#: ../lib/advene/gui/edit/transcribe.py:1074
-msgid "Export options"
-msgstr "Opciones para exportar"
+#: ../lib/advene/gui/views/interactivequery.py:274
+msgid "Result of interactive query"
+msgstr "Resultado de una consulta interactiva"
 
-#: ../lib/advene/gui/edit/transcribe.py:1079
-msgid "Generate annotations for empty contents"
-msgstr "Generar anotaciones para contenido vacío"
+#: ../lib/advene/gui/views/interactivequery.py:278
+msgid "Result of a query"
+msgstr "Resultado de una consulta"
 
-#: ../lib/advene/gui/edit/transcribe.py:1104
+#: ../lib/advene/gui/views/interactivequery.py:333
 #, python-format
-msgid "The %s identifier already exists. Choose another one."
-msgstr "El %s identificador ya existe. Elegir otro. "
+msgid "Comment on annotations containing %s"
+msgstr "Comentar en anotaciones que contengan %s"
 
-#: ../lib/advene/gui/edit/transcribe.py:1143
-msgid "Notes converted"
-msgstr "Notas convertidas"
+#: ../lib/advene/gui/views/interactivequery.py:352
+msgid "Choose the annotation type where annotations will be created."
+msgstr "Elige el tipo de anotación donde van a ser creadas las anotaciones"
 
-#: ../lib/advene/gui/edit/transcribe.py:1147
-#: ../lib/advene/gui/views/bookmarks.py:169
+#: ../lib/advene/gui/views/interactivequery.py:356
 #, python-format
-msgid ""
-"Conversion completed.\n"
-"%s annotations generated."
-msgstr ""
-"Conversion completa.\n"
-"%s anotaciones generadas."
+msgid "Copied result of the '%s' query"
+msgstr "Resultado copiado de la '%s'  consulta"
 
-#: ../lib/advene/gui/edit/transcribe.py:1163
-#: ../lib/advene/gui/views/activebookmarks.py:546
-msgid "Smallish"
-msgstr "Más pequeño"
+#: ../lib/advene/gui/views/interactivequery.py:368
+#, python-format
+msgid "Search/replace content in %d elements"
+msgstr "Buscar / reemplazar contenido en %d elementos"
 
-#: ../lib/advene/gui/edit/transcribe.py:1167
-#: ../lib/advene/gui/views/activebookmarks.py:550
-msgid "Larger"
-msgstr "Más grande"
+#: ../lib/advene/gui/views/interactivequery.py:396
+msgid "Edit query again"
+msgstr "Edita la consulta de nuevo"
 
-#: ../lib/advene/gui/edit/transcribe.py:1168
-#: ../lib/advene/gui/views/activebookmarks.py:551
-msgid "Huge"
-msgstr "Inmenso"
+#: ../lib/advene/gui/views/interactivequery.py:410
+msgid "Search again"
+msgstr "Busca de nuevo"
 
-#: ../lib/advene/gui/edit/transcribe.py:1190
-msgid "Open"
-msgstr "Abrir"
+#: ../lib/advene/gui/views/interactivequery.py:416
+msgid "Empty result"
+msgstr "Vacía el resultado"
 
-#: ../lib/advene/gui/edit/transcribe.py:1191
-msgid "Save"
-msgstr "Guardar"
+#: ../lib/advene/gui/views/interactivequery.py:425
+#, python-format
+msgid "Result is a list of %d annotations."
+msgstr "El resultado es una lista de %d anotaciones."
 
-#: ../lib/advene/gui/edit/transcribe.py:1192
-msgid "Save As"
-msgstr "Guardar como"
+#: ../lib/advene/gui/views/interactivequery.py:427
+#, python-format
+msgid "Result is a list of  %(number)d elements with %(elements)s."
+msgstr "El resultado es una lista de %(number)d elementos con %(elements)s."
 
-#: ../lib/advene/gui/edit/transcribe.py:1193
-msgid "Import"
-msgstr "Importar"
+#: ../lib/advene/gui/views/interactivequery.py:439
+#: ../lib/advene/gui/edit/montage.py:478
+msgid "Unhighlight annotations"
+msgstr "Quitar resaltado de anotaciones"
 
-#: ../lib/advene/gui/edit/transcribe.py:1193
-msgid "Import from annotations"
-msgstr "Importar de anotaciones"
+#: ../lib/advene/gui/views/interactivequery.py:443
+#: ../lib/advene/gui/views/interactivequery.py:480
+#: ../lib/advene/gui/edit/montage.py:482 ../lib/advene/gui/edit/montage.py:491
+msgid "Highlight annotations"
+msgstr "Resalta las anotaciones"
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
-msgid "Convert"
-msgstr "Convertir "
+#: ../lib/advene/gui/views/interactivequery.py:464
+#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
+msgid "Annotations"
+msgstr "Anotaciones"
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
-msgid "Convert to annotations"
-msgstr "Convertir a anotaciones"
+#: ../lib/advene/gui/views/interactivequery.py:470
+msgid "Other elements"
+msgstr "Otros elementos"
 
-#: ../lib/advene/gui/edit/transcribe.py:1196
-msgid "Center on the current mark"
-msgstr "Centrar en la marca actual"
+#: ../lib/advene/gui/views/interactivequery.py:474
+msgid "Display annotations in timeline"
+msgstr "Mostrar anotaciones en una línea de tiempo"
 
-#: ../lib/advene/gui/edit/transcribe.py:1197
-msgid "Find"
-msgstr "Encontrar"
+#: ../lib/advene/gui/views/interactivequery.py:475
+msgid "Display annotations as transcription"
+msgstr "Mostrar anotaciones comp transcripción"
 
-#: ../lib/advene/gui/edit/transcribe.py:1197
-msgid "Search a string"
-msgstr "Buscar una cadena de texto"
+#: ../lib/advene/gui/views/interactivequery.py:481
+#: ../lib/advene/gui/views/interactivequery.py:503
+msgid "Export table"
+msgstr "Exporta una tabla"
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-msgid "Scale"
-msgstr "Escala"
+#: ../lib/advene/gui/views/interactivequery.py:482
+msgid "Create annotations from the result"
+msgstr "Crear anotaciones del resultado"
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-#: ../lib/advene/gui/views/activebookmarks.py:564
-msgid "Set the size of snaphots"
-msgstr "Establece el tamaño de las capturas de pantalla"
+#: ../lib/advene/gui/views/interactivequery.py:483
+msgid "Define a montage with the result"
+msgstr "Definir un montaje con el resultado"
 
-#: ../lib/advene/gui/edit/transcribe.py:1221
-msgid "Automatically scroll to the mark position when playing"
-msgstr ""
-"Desplaza automáticamente a la posición de la marca mientras se reproduce."
+#: ../lib/advene/gui/views/interactivequery.py:484
+msgid "Create a comment view with the result"
+msgstr "Crear una vista de comentario con el resultado"
 
-#: ../lib/advene/gui/edit/transcribe.py:1223
-msgid "Autoscroll"
-msgstr "Auto desplazar"
+#: ../lib/advene/gui/views/interactivequery.py:485
+msgid "Search and replace strings in the annotations content"
+msgstr "Busca y reemplaza cadenas de texto en el contenido de las anotaciones"
 
-#: ../lib/advene/gui/edit/transcribe.py:1230
-msgid "Autoinsert"
-msgstr "Auto insertar"
+#: ../lib/advene/gui/views/interactivequery.py:510
+msgid "Edit elements"
+msgstr "Editar elementos"
 
-#: ../lib/advene/gui/edit/transcribe.py:1232
-msgid "Automatically insert marks"
-msgstr "Inserta marcas automáticamente"
+#: ../lib/advene/gui/views/interactivequery.py:516
+msgid "Open in python evaluator"
+msgstr "Abrir en el evaluador de python"
 
-#: ../lib/advene/gui/edit/elements.py:74
+#: ../lib/advene/gui/views/interactivequery.py:519
 #, python-format
-msgid "No edit popup available for element %s"
-msgstr "No edit popup disponible para el elemento %s"
+msgid ""
+"Result:\n"
+"%s"
+msgstr ""
+"Resultado:\n"
+"%s"
 
-#: ../lib/advene/gui/edit/elements.py:95
-msgid "Edit Window"
-msgstr "Ventana de edición"
+#: ../lib/advene/gui/views/interactivequery.py:561
+msgid "Results of _interactive query"
+msgstr "Resultados de_la búsqueda interactiva"
 
-#: ../lib/advene/gui/edit/elements.py:134
-msgid "Apply changes and close the edit window"
-msgstr "Aplicar cambios y cerrar ventana de edición"
+#: ../lib/advene/gui/popup.py:138
+msgid "Choose the file to insert"
+msgstr "Elige un archivo a insertar"
 
-#: ../lib/advene/gui/edit/elements.py:139
-msgid "Apply changes"
-msgstr "Aplicar cambios"
+#: ../lib/advene/gui/popup.py:146
+msgid "Select a valid identifier"
+msgstr "Selecciona un identificador válido"
 
-#: ../lib/advene/gui/edit/elements.py:273
-msgid "Content has been modified. Close anyway and lose data?"
+#: ../lib/advene/gui/popup.py:147
+#, python-format
+msgid ""
+"The filename %s contains invalid characters\n"
+"that have been replaced.\n"
+"You can modify this identifier if necessary:"
 msgstr ""
-"El contenido ha sido modificado. ¿Cerrar de cualquier manera y perder datos?"
+"El nombre de archivo %s contiene caracteres no válidos\n"
+"que han sido reemplazados.\n"
+"Puedes modificar este identificador si es necesario:"
 
-#: ../lib/advene/gui/edit/elements.py:331
-#: ../lib/advene/gui/views/viewbook.py:234
-#: ../lib/advene/gui/views/viewbook.py:240
-#, python-format
-msgid "Edit %s"
-msgstr "Editar %s"
+#: ../lib/advene/gui/popup.py:158
+msgid "Choose the soundclip to insert"
+msgstr "Elegir clip de audio para insertar"
 
-#: ../lib/advene/gui/edit/elements.py:333
-#, python-format
-msgid "View %s (read-only)"
-msgstr "Vista %s (solo-lectura)"
+#: ../lib/advene/gui/popup.py:162
+msgid "Choose the directory to insert"
+msgstr "Elige un directorio para insertar"
 
-#: ../lib/advene/gui/edit/elements.py:369
-#, python-format
-msgid "Display %s"
-msgstr "Muestra %s"
+#: ../lib/advene/gui/popup.py:177
+msgid "Named-Entity extraction using NERD"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:453
-msgid "Apply changes and edit previous annotation of same type"
-msgstr "Aplicar los cambios y editar la anotación anterior del mismo tipo"
+#: ../lib/advene/gui/popup.py:181
+msgid ""
+"Give the offset to use\n"
+"on specified element.\n"
+"It is in ms and can be\n"
+"either positive or negative."
+msgstr ""
+"Da la compensacion para usar\n"
+"en el elemento especificado.\n"
+"Esta en ms y puede ser\n"
+"tanto positiva como negativa."
 
-#: ../lib/advene/gui/edit/elements.py:457
-msgid "Apply changes and edit next annotation of same type"
-msgstr "Aplicar los cambios y editar la anotación siguiente del mismo tipo"
+#: ../lib/advene/gui/popup.py:225
+#, python-format
+msgid "Replace content in %s"
+msgstr "Reemplazar contenido en %s"
 
-#: ../lib/advene/gui/edit/elements.py:463
-msgid "Unhighlight annotation"
-msgstr "Remover resaltado de anotación"
+#: ../lib/advene/gui/popup.py:228
+#, python-format
+msgid "Replace content in annotations of type %s"
+msgstr "Reemplazar el contenido en las anotaciones de tipo %s"
 
-#: ../lib/advene/gui/edit/elements.py:467
-msgid "Highlight annotation"
-msgstr "Resaltar anotación"
+#: ../lib/advene/gui/popup.py:231
+msgid "Replace content in all annotations"
+msgstr "Reemplazar contenido en todas las anotaciones"
 
-#: ../lib/advene/gui/edit/elements.py:498
-msgid "Fragment"
-msgstr "Fragmento"
+#: ../lib/advene/gui/popup.py:324
+#, python-format
+msgid "Copy id %s"
+msgstr "Copiar id %s"
 
-#: ../lib/advene/gui/edit/elements.py:510
-#: ../lib/advene/gui/edit/elements.py:559
-#: ../lib/advene/gui/edit/elements.py:646
-#: ../lib/advene/gui/edit/elements.py:726
-#: ../lib/advene/gui/edit/elements.py:783
-#: ../lib/advene/gui/edit/elements.py:875
-#: ../lib/advene/gui/edit/elements.py:944
-#: ../lib/advene/gui/edit/elements.py:1056
-#: ../lib/advene/gui/edit/elements.py:1118 ../lib/advene/gui/main.py:4174
-msgid "Author"
-msgstr "Autor"
+#: ../lib/advene/gui/popup.py:358
+#, python-format
+msgid ""
+"<b>Statistics about %s</b>\n"
+"\n"
+msgstr ""
+"<b>Estadísticas acerca %s</b>\n"
+"\n"
 
-#: ../lib/advene/gui/edit/elements.py:511
-#: ../lib/advene/gui/edit/elements.py:560
-#: ../lib/advene/gui/edit/elements.py:647
-#: ../lib/advene/gui/edit/elements.py:727
-#: ../lib/advene/gui/edit/elements.py:784
-#: ../lib/advene/gui/edit/elements.py:876
-#: ../lib/advene/gui/edit/elements.py:945
-#: ../lib/advene/gui/edit/elements.py:1057
-#: ../lib/advene/gui/edit/elements.py:1119 ../lib/advene/gui/main.py:4175
-msgid "Date"
-msgstr "Fecha"
+#: ../lib/advene/gui/popup.py:364
+#, python-format
+msgid "Renumbering annotations of type %s"
+msgstr "Renumerando las anotaciones del tipo %s"
 
-#: ../lib/advene/gui/edit/elements.py:513
-#: ../lib/advene/gui/edit/elements.py:562
-#: ../lib/advene/gui/edit/elements.py:649
-#: ../lib/advene/gui/edit/elements.py:729
-#: ../lib/advene/gui/edit/elements.py:787
-#: ../lib/advene/gui/edit/elements.py:878
-#: ../lib/advene/gui/edit/elements.py:948
-#: ../lib/advene/gui/edit/elements.py:1060
-msgid "Metadata"
-msgstr "Meta datos"
-
-#: ../lib/advene/gui/edit/elements.py:582
-#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/views/relationdisplay.py:113
-msgid "Members"
-msgstr "Miembros"
+#: ../lib/advene/gui/popup.py:371
+msgid ""
+"<b>Renumber all annotations according to their order.</b>\n"
+"\n"
+"<i>Note that this action cannot be undone.</i>\n"
+"Replace the first numeric value of the annotation content with the new "
+"annotation number.\n"
+"If no numeric value is found and the annotation is structured, it will "
+"insert the number.\n"
+"If no numeric value is found and the annotation is of type text/plain, it "
+"will overwrite the annotation content.\n"
+"The offset parameter allows you to renumber from a given annotation."
+msgstr ""
+"<b>Cambiar la numeración de todas las anotaciones de acuerdo a su orden.</"
+"b>\n"
+"\n"
+"<i>Esta acción no se puede deshacer.</i>\n"
+"Coloca el primer valor numérico del contenido de anotación con el nuevo "
+"número de anotación.\n"
+"Si no se encuentra ningún valor numérico y la anotación es estructurada, se "
+"insertará el número.\n"
+" Si no se encuentra ningún valor numérico y la anotación es de tipo text/"
+"plain, sobrescribirá el contenido de la anotación.\n"
+"El parámetro de desplazamiento le permite volver a numerar a partir de una "
+"anotación dada."
 
-#: ../lib/advene/gui/edit/elements.py:600
-#: ../lib/advene/gui/edit/elements.py:677
-#: ../lib/advene/gui/edit/elements.py:737
-#: ../lib/advene/gui/edit/elements.py:1128
-#: ../lib/advene/gui/views/table.py:250
-msgid "Content"
-msgstr "Contenido"
+#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
+msgid "Offset"
+msgstr "Compensar"
 
-#: ../lib/advene/gui/edit/elements.py:617
-msgid "Apply changes and visualise in web browser"
-msgstr "Aplicar los cambios y visualizar en el navegador web"
+#: ../lib/advene/gui/popup.py:399
+#, python-format
+msgid "Renumbering %d annotations"
+msgstr "Volviendo a numerar %d anotaciones"
 
-#: ../lib/advene/gui/edit/elements.py:622
-msgid "Apply changes and activate the view"
-msgstr "Aplicar los cambios y activar la vista"
+#: ../lib/advene/gui/popup.py:408
+#, python-format
+msgid "Annotation #%d"
+msgstr "Anotación #%d"
 
-#: ../lib/advene/gui/edit/elements.py:630
-#: ../lib/advene/gui/edit/elements.py:711
-#: ../lib/advene/gui/edit/elements.py:768
-#: ../lib/advene/gui/edit/elements.py:859
-#: ../lib/advene/gui/edit/elements.py:928
-#: ../lib/advene/gui/edit/elements.py:1030
-msgid "Title (name)"
-msgstr "Título (nombre)"
+#: ../lib/advene/gui/popup.py:444 ../lib/advene/gui/edit/montage.py:309
+#, python-format
+msgid "Extracting %s"
+msgstr "Extrayendo %s"
 
-#: ../lib/advene/gui/edit/elements.py:634
-msgid "Name of the view"
-msgstr "Nombre de la vista"
+#: ../lib/advene/gui/popup.py:445
+#, python-format
+msgid ""
+"Exporting annotation %(title)s\n"
+"from %(begin)s to %(end)s\n"
+"to %%(filename)s"
+msgstr ""
+"Exportando anotación %(title)s\n"
+"de %(begin)s a %(end)s\n"
+"a %%(filename)s"
 
-#: ../lib/advene/gui/edit/elements.py:658
-msgid "Class"
-msgstr "Clase"
+#: ../lib/advene/gui/popup.py:456 ../lib/advene/gui/edit/transcribe.py:504
+msgid "Edit"
+msgstr "Editar"
 
-#: ../lib/advene/gui/edit/elements.py:661
-msgid "Match Filter"
-msgstr "Concordar filtro"
+#: ../lib/advene/gui/popup.py:458
+msgid "Browse"
+msgstr "Navegar"
 
-#: ../lib/advene/gui/edit/elements.py:699 ../lib/advene/gui/popup.py:821
-#, python-format
-msgid "Exception in query: %s"
-msgstr "Excepción en la consulta: %s"
+#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
+msgid "Open in web browser"
+msgstr "Abrir en un navegador web"
 
-#: ../lib/advene/gui/edit/elements.py:704
-#, fuzzy
-msgid "Validate and run query on package"
-msgstr "Crea un nuevo paquete"
+#: ../lib/advene/gui/popup.py:472 ../lib/advene/gui/popup.py:476
+#: ../lib/advene/gui/edit/shapewidget.py:1598
+msgid "Delete"
+msgstr "Borrar"
 
-#: ../lib/advene/gui/edit/elements.py:715
-msgid "Name of the query"
-msgstr "Nombre de la consulta"
+#: ../lib/advene/gui/popup.py:479
+msgid "Search/replace content"
+msgstr "Buscar / reemplazar contenido "
 
-#: ../lib/advene/gui/edit/elements.py:772
-msgid "Name of the package"
-msgstr "Nombre del paquete"
+#: ../lib/advene/gui/popup.py:497
+msgid "Desactivate"
+msgstr "Desactivar"
 
-#: ../lib/advene/gui/edit/elements.py:790
-#: ../lib/advene/gui/edit/elements.py:881
-#: ../lib/advene/gui/edit/elements.py:960
-#: ../lib/advene/gui/edit/elements.py:1074
-msgid "Description"
-msgstr "Descripcion"
+#: ../lib/advene/gui/popup.py:514
+msgid "Loop"
+msgstr "Ciclo"
 
-#: ../lib/advene/gui/edit/elements.py:794
-#: ../lib/advene/gui/edit/elements.py:885
-#: ../lib/advene/gui/edit/elements.py:964
-#: ../lib/advene/gui/edit/elements.py:1078
-msgid "Textual description of the package"
-msgstr "Descripción textual del paquete"
+#: ../lib/advene/gui/popup.py:515
+msgid "Duplicate"
+msgstr "Duplicar"
 
-#: ../lib/advene/gui/edit/elements.py:799
-msgid "Default dynamic view"
-msgstr "Vista dinamica predefinida"
+#: ../lib/advene/gui/popup.py:519
+msgid "Save snapshot..."
+msgstr "Guardar captura..."
 
-#: ../lib/advene/gui/edit/elements.py:803
-msgid "Dynamic view to activate on package load"
-msgstr "Vista dinámica para activar en la carga del paquete"
+#: ../lib/advene/gui/popup.py:521
+msgid "Extract video fragment"
+msgstr "Extraer fragmento de video"
 
-#: ../lib/advene/gui/edit/elements.py:808
-msgid "Default static view"
-msgstr "Vista estatica predefinida"
+#: ../lib/advene/gui/popup.py:551
+msgid "Incoming"
+msgstr "Entrando "
 
-#: ../lib/advene/gui/edit/elements.py:812
-msgid "Static view to open on package load"
-msgstr "Vista estática para abrir en la carga del paquete"
+#: ../lib/advene/gui/popup.py:567
+msgid "Outgoing"
+msgstr "Saliendo "
 
-#: ../lib/advene/gui/edit/elements.py:817
-msgid "Default adhoc view"
-msgstr "Vista adhoc predeterminada"
+#: ../lib/advene/gui/popup.py:582
+msgid "Related annotations"
+msgstr "Anotaciones relacionadas"
 
-#: ../lib/advene/gui/edit/elements.py:821
-msgid "Adhoc view to open on package load"
-msgstr "Vista adhoc para abrir en la carga del paquete"
+#: ../lib/advene/gui/popup.py:589
+msgid "Incoming relations"
+msgstr "Relaciones entrantes"
 
-#: ../lib/advene/gui/edit/elements.py:826
-msgid "Cached duration"
-msgstr "Duración en caché"
+#: ../lib/advene/gui/popup.py:596
+msgid "Outgoing relations"
+msgstr "Relaciones salientes"
 
-#: ../lib/advene/gui/edit/elements.py:830
-msgid "Cached duration in ms"
-msgstr "Duración en caché en ms"
+#: ../lib/advene/gui/popup.py:612
+#, python-format
+msgid "Begin: %s"
+msgstr "Inicio: %s"
 
-#: ../lib/advene/gui/edit/elements.py:835
-msgid "Mediafile"
-msgstr "Archivo media"
+#: ../lib/advene/gui/popup.py:614
+#, python-format
+msgid "End: %s"
+msgstr "Final: %s"
 
-#: ../lib/advene/gui/edit/elements.py:839
-msgid "Location of associated media file"
-msgstr "Ubicación del archivo media asociado"
+#: ../lib/advene/gui/popup.py:615
+#, python-format
+msgid "Duration: %s"
+msgstr "Duración: %s"
 
-#: ../lib/advene/gui/edit/elements.py:863
-msgid "Name of the schema"
-msgstr "nombre del esquema"
+#: ../lib/advene/gui/popup.py:622
+msgid "Members:"
+msgstr "Miembros:"
 
-#: ../lib/advene/gui/edit/elements.py:895
-#: ../lib/advene/gui/edit/elements.py:975
-msgid "TALES expression returning a color for the element"
-msgstr "Expresión TALES regresando un color para el elemento"
+#: ../lib/advene/gui/popup.py:635
+msgid "Edit package properties..."
+msgstr "Editar propiedades de los paquetes..."
 
-#: ../lib/advene/gui/edit/elements.py:902
-#: ../lib/advene/gui/edit/elements.py:993
-msgid "Item color"
-msgstr "Color del elemento"
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
+#, python-format
+msgid "%d annotations(s) - statistics"
+msgstr "%d anotaciones - estadísticas"
 
-#: ../lib/advene/gui/edit/elements.py:906
-#: ../lib/advene/gui/edit/elements.py:997
-msgid ""
-"TALES expression returning a color for the items contained by the element"
-msgstr ""
-"Expresión TALES regresando un color para los elementos contenidos por el "
-"elemento"
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
+msgid "Create a new static view..."
+msgstr "Crear una nueva vista..."
 
-#: ../lib/advene/gui/edit/elements.py:932
-#: ../lib/advene/gui/edit/elements.py:1034
-msgid "Name of the type"
-msgstr "Nombre del tipo"
+#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:865
+msgid "Create a new dynamic view..."
+msgstr "Crear una nueva vista dinámica..."
 
-#: ../lib/advene/gui/edit/elements.py:950
-#: ../lib/advene/gui/edit/elements.py:1039
-#: ../lib/advene/gui/edit/elements.py:1308
-msgid "MIME Type"
-msgstr "Tipo MIME"
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
+msgid "Create a new annotation..."
+msgstr "Crear una nueva anotacion"
 
-#: ../lib/advene/gui/edit/elements.py:954
-#: ../lib/advene/gui/edit/elements.py:1043
-msgid "MIMEType of the content"
-msgstr "Tipo MIME del contenido"
+#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
+msgid "Create a new schema..."
+msgstr "Crear un nuevo esquema..."
 
-#: ../lib/advene/gui/edit/elements.py:982
-#: ../lib/advene/gui/views/transcription.py:165
-msgid "Representation"
-msgstr "Representacion"
+#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
+msgid "Create a new query..."
+msgstr "Crear una nueva busqueda..."
 
-#: ../lib/advene/gui/edit/elements.py:986
-msgid ""
-"TALES expression used to get a compact representation of the annotations"
-msgstr ""
-"Expresión TALES utilizada para obtener una representación compacta de las "
-"anotaciones"
+#: ../lib/advene/gui/popup.py:651
+msgid "Create a new folder..."
+msgstr "Crear una nueva carpeta..."
 
-#: ../lib/advene/gui/edit/elements.py:987
-#, python-format
-msgid "Display %s key"
-msgstr "Muestra %s clave"
+#: ../lib/advene/gui/popup.py:652
+msgid "Create a new resource file..."
+msgstr "Crear un nuevo archivo de recurso..."
 
-#: ../lib/advene/gui/edit/elements.py:1003
-msgid "Completions"
-msgstr "Terminaciones"
+#: ../lib/advene/gui/popup.py:653
+msgid "Insert a new resource file..."
+msgstr "Insertar un nuevo archivo de recurso..."
 
-#: ../lib/advene/gui/edit/elements.py:1007
-msgid "Space-separated list of words used for content completion"
-msgstr ""
-"Lista de palabras separadas por espacio utilizadas para completar contenido"
+#: ../lib/advene/gui/popup.py:654
+msgid "Insert a new resource directory..."
+msgstr "Insertar un nuevo directorio de recursos..."
 
-#: ../lib/advene/gui/edit/elements.py:1013
-msgid "Advanced"
-msgstr "Avanzado"
+#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
+msgid "Insert a soundclip..."
+msgstr "Insertar un clip de sonido..."
 
-#: ../lib/advene/gui/edit/elements.py:1063
-msgid "Any annotation type"
-msgstr "Cualquier tipo de anotación"
+#: ../lib/advene/gui/popup.py:676
+msgid "Play sound"
+msgstr "Reproducir sonido"
 
-#: ../lib/advene/gui/edit/elements.py:1089
-msgid "TALES expression specifying a color"
-msgstr "Expresión TALES especificando un color"
+#: ../lib/advene/gui/popup.py:686
+msgid "Create a new annotation type..."
+msgstr "Crear un nuevo tipo de anotacion..."
 
-#: ../lib/advene/gui/edit/elements.py:1116
-msgid "MIMEType"
-msgstr "Tipo MIME"
+#: ../lib/advene/gui/popup.py:688
+msgid "Create a new relation type..."
+msgstr "Crear un nuevo tipo de relacion..."
 
-#: ../lib/advene/gui/edit/elements.py:1341
-#, python-format
-msgid "Error: cannot find a content handler for %s"
-msgstr "Error: no se puede encontrar un control para %s"
+#: ../lib/advene/gui/popup.py:690 ../lib/advene/gui/popup.py:750
+#: ../lib/advene/gui/popup.py:803
+msgid "Select a color"
+msgstr "Selecciona un color"
 
-#: ../lib/advene/gui/edit/elements.py:1457
-#: ../lib/advene/gui/edit/elements.py:1682
+#: ../lib/advene/gui/popup.py:699
 #, python-format
-msgid ""
-"Cannot read the data:\n"
-"%s"
-msgstr ""
-"No se pueden leer los datos:\n"
-"%s"
-
-#: ../lib/advene/gui/edit/elements.py:1481
-#: ../lib/advene/gui/edit/elements.py:1707
-msgid "Save content to..."
-msgstr "Salvar el contenido a..."
+msgid "A caption dynamic view for %s already seems to exist."
+msgstr "Un subtítulo dinámico para la vista %s parece que ya existe."
 
-#: ../lib/advene/gui/edit/elements.py:1492
-#: ../lib/advene/gui/edit/elements.py:1720
+#: ../lib/advene/gui/popup.py:708
 #, python-format
-msgid ""
-"Cannot save the data:\n"
-"%s"
-msgstr ""
-"No se pueden guardar los datos:\n"
-"%s"
+msgid "Caption %s annotations"
+msgstr "Subtítulo %s anotaciones"
 
-#: ../lib/advene/gui/edit/elements.py:1511
-#: ../lib/advene/gui/edit/elements.py:1734
-msgid "Open a file (C-o)"
-msgstr "Abrir un archivo (C-o)"
+#: ../lib/advene/gui/popup.py:718 ../lib/advene/rules/actions.py:119
+msgid "Caption the annotation"
+msgstr "Subtitular la anotación"
 
-#: ../lib/advene/gui/edit/elements.py:1516
-#: ../lib/advene/gui/edit/elements.py:1739
-msgid "Save to a file (C-s)"
-msgstr "Guardar a un archivo (C-s)"
+#: ../lib/advene/gui/popup.py:740
+msgid "Create a comment view"
+msgstr "Crear una vista de comentario"
 
-#: ../lib/advene/gui/edit/elements.py:1521
-#: ../lib/advene/gui/edit/elements.py:1744
-msgid "Reload the file (C-r)"
-msgstr "Volver a cargar el archivo (C-r)"
+#: ../lib/advene/gui/popup.py:741
+msgid "Generate a caption dynamic view..."
+msgstr "Genera una vista dinámica de subtítulos"
 
-#: ../lib/advene/gui/edit/elements.py:1527
-msgid "Insert a value from the browser (C-i)"
-msgstr "Inserta un valor del navegador (C-i)"
+#: ../lib/advene/gui/popup.py:742
+msgid "Display as transcription"
+msgstr "Muestra como transcripcion"
 
-#: ../lib/advene/gui/edit/elements.py:1773
-msgid "Begin time is greater than end time"
-msgstr "Tiempo de inicio es mayor que el tiempo final"
+#: ../lib/advene/gui/popup.py:743
+msgid "Display annotations in table"
+msgstr "Muestra las anotaciones en una tabla"
 
-#: ../lib/advene/gui/edit/elements.py:1803
-#: ../lib/advene/gui/views/table.py:252
-msgid "Begin"
-msgstr "Inicio"
+#: ../lib/advene/gui/popup.py:744
+msgid "Export to another format..."
+msgstr "Exportar a otro formato"
 
-#: ../lib/advene/gui/edit/elements.py:1812
-#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/main.py:628
-msgid "End"
-msgstr "Final"
+#: ../lib/advene/gui/popup.py:746
+msgid "Extract Named Entities..."
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2044
-msgid "Expecting an integer."
-msgstr "Esperando entero"
+#: ../lib/advene/gui/popup.py:752
+msgid "Delete all annotations"
+msgstr "Borrar todas las anotaciones"
 
-#: ../lib/advene/gui/edit/elements.py:2076
-#, python-format
-msgid ""
-"The %(attribute)s attribute could not be updated:\n"
-"\n"
-"%(error)s\n"
-"\n"
-"Resetting to the original value."
-msgstr ""
-"El atributo %(attribute)s no pudo ser actualizado:\n"
-"\n"
-"%(error)s\n"
-"\n"
-"Restableciendo el valor original."
+#: ../lib/advene/gui/popup.py:753
+msgid "Renumber annotations..."
+msgstr "Volviendo a numerar anotaciones"
+
+#: ../lib/advene/gui/popup.py:754
+#, fuzzy
+msgid "Shot validation view..."
+msgstr "Vista de validación de capturas"
 
-#: ../lib/advene/gui/edit/elements.py:2103
+#: ../lib/advene/gui/popup.py:766
 #, python-format
-msgid ""
-"The following attributes cannot be updated:\n"
-"\n"
-"%s"
-msgstr ""
-"Los siguientes atributos no pudieron ser actualizados:\n"
-"\n"
-"%s"
+msgid "A follow dynamic view for %s already seems to exist."
+msgstr "Una siguiente vista dinámica para %s parece que ya existe."
 
-#: ../lib/advene/gui/edit/elements.py:2143
+#: ../lib/advene/gui/popup.py:775
 #, python-format
-msgid ""
-"The following attributes could not be updated:\n"
-"\n"
-"%s"
-msgstr ""
-"Los siguientes atributos no pudieron ser actualizados:\n"
-"\n"
-"%s"
+msgid "Follow %s relation-type"
+msgstr "Seguir %s tipos de relación"
 
-#: ../lib/advene/gui/edit/elements.py:2160
-msgid "Attribute"
-msgstr "Atributo"
+#: ../lib/advene/gui/popup.py:784
+msgid "Follow the relation"
+msgstr "Seguir la relación"
 
-#: ../lib/advene/gui/edit/elements.py:2168
-#: ../lib/advene/gui/views/browser.py:366
-msgid "Value"
-msgstr "Valor"
+#: ../lib/advene/gui/popup.py:804
+msgid "Delete all relations..."
+msgstr "Borrar todas las relaciones..."
 
-#: ../lib/advene/gui/edit/elements.py:2259
-msgid "Insert an element"
-msgstr "Insertar un elemento"
+#: ../lib/advene/gui/popup.py:805
+msgid "Create montage from related annotations"
+msgstr " Crear un montaje de las anotaciones relacionadas"
 
-#: ../lib/advene/gui/edit/elements.py:2260
-msgid "Choose the element to insert."
-msgstr "Elegir elemento a insertar"
+#: ../lib/advene/gui/popup.py:806
+msgid "Create dynamic view following relations"
+msgstr "Crear una vista dinámica siguiendo relaciones"
 
-#: ../lib/advene/gui/edit/elements.py:2330
-#: ../lib/advene/gui/edit/elements.py:2373
+#: ../lib/advene/gui/popup.py:821 ../lib/advene/gui/edit/elements.py:703
 #, python-format
-msgid "Some tags contain invalid characters: %s"
-msgstr "Algunas etiquetas contienen caracteres no válidos: %s"
+msgid "Exception in query: %s"
+msgstr "Excepción en la consulta: %s"
 
-#: ../lib/advene/gui/edit/elements.py:2353
-msgid "Tags:"
-msgstr "Etiquetas:"
+#: ../lib/advene/gui/popup.py:824
+msgid "Apply query on..."
+msgstr "Aplica la consulta en..."
 
-#: ../lib/advene/gui/views/browser.py:163
-#: ../lib/advene/gui/views/browser.py:165
-msgid "TALES browser"
-msgstr "Navegador TALES"
+#: ../lib/advene/gui/popup.py:849
+msgid "Activate view"
+msgstr "Activar vista"
 
-#: ../lib/advene/gui/views/browser.py:170
-msgid "Display result in table"
-msgstr "Mostrar el resultado en tabla"
+#: ../lib/advene/gui/popup.py:851
+msgid "Open adhoc view"
+msgstr "Abrir vista adhoc"
 
-#: ../lib/advene/gui/views/browser.py:193
-msgid "Insert path"
-msgstr "Insertar ruta"
+#: ../lib/advene/gui/util/initialconfig.py:82
+msgid "Initial Advene configuration"
+msgstr "Configuración inicial de advene"
 
-#: ../lib/advene/gui/views/browser.py:194
-msgid "Insert value"
-msgstr "Insertar valor"
+#: ../lib/advene/gui/util/initialconfig.py:83
+msgid ""
+"<span size='large'><b>Welcome in Advene</b>\n"
+"This is the first time that you run Advene. Please answer some basic "
+"configuration questions. You will be able to modify these choices from the "
+"Advene interface, in the Edit/Preferences menu.</span>"
+msgstr ""
+"<span size='large'><b>Bienvenido a Advene</b>\n"
+"Esta es la primera vez que se ejecuta Advene. Por favor, contesta algunas "
+"preguntas básicas de configuración. Vas a poder modificar estas opciones "
+"desde la interfaz Advene, en el menú Editar / Preferencias.</span>"
 
-#: ../lib/advene/gui/views/browser.py:249
-msgid "Expression returned None (there was an exception)"
-msgstr "La expresión regresó None (hubo una excepción)"
+#: ../lib/advene/gui/util/initialconfig.py:84
+msgid "Interface language"
+msgstr "Idioma de la interfaz"
 
-#: ../lib/advene/gui/views/browser.py:302
-msgid "Result is not a list"
-msgstr "El resultado no es una lista"
+#: ../lib/advene/gui/util/initialconfig.py:84
+msgid "Language used for the interface"
+msgstr "Idioma utilizado para la interfaz"
 
-#: ../lib/advene/gui/views/accumulatorpopup.py:49
-msgid "PopupAccumulator"
-msgstr "AcumuladorPopup"
+#: ../lib/advene/gui/util/initialconfig.py:90
+msgid "Weekly check for Advene updates on the Advene website"
+msgstr ""
+"Revisar semanalmente por actualizaciones de Advene en el sitio de Advene"
 
-#: ../lib/advene/gui/views/editionhistory.py:40
-msgid "Edition History"
-msgstr "Historial de navegación"
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for data files"
+msgstr "Directorio preferido para archivos de datos"
 
-#: ../lib/advene/gui/views/editionhistory.py:42
-msgid "Access last edited/created elements"
-msgstr "Acceder a los elementos editados / creados al final"
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for storing data files (Advene packages)"
+msgstr ""
+"Directorio preferido para almacenar archivos de datos (Paquetes de Advene)"
 
-#: ../lib/advene/gui/views/editionhistory.py:102
-msgid "Created"
-msgstr "Creado"
+#: ../lib/advene/gui/util/initialconfig.py:94
+msgid "Directories to search for movies"
+msgstr "Directorios para buscar archivos de video"
 
-#: ../lib/advene/gui/views/editionhistory.py:103
-msgid "Edited"
-msgstr "Editado"
+#: ../lib/advene/gui/util/initialconfig.py:94
+#, python-format
+msgid ""
+"List of directories (separated by %(pathsep)s) to search for movie files."
+msgstr ""
+"Lista de directorios (separados por %(pathsep)s) para buscar archivos de "
+"video."
 
-#: ../lib/advene/gui/views/logwindow.py:43
-msgid "Links"
-msgstr "Vínculos"
+#: ../lib/advene/gui/util/initialconfig.py:95
+msgid "First look for movie file in the same directory as the package"
+msgstr "Primero busca el archivo de video en el mismo directorio del paquete"
 
-#: ../lib/advene/gui/views/logwindow.py:45
-msgid "URL stack"
-msgstr "Apilado URL"
+#: ../lib/advene/gui/util/initialconfig.py:95
+msgid ""
+"If checked, the movie file will be searched for in the same directory as the "
+"referencing package."
+msgstr ""
+"Si está seleccionado, el archivo de video se buscará en el mismo directorio "
+"al paquete que hace referencia."
 
-#: ../lib/advene/gui/views/logwindow.py:123
-#, python-format
-msgid "Go to %s"
-msgstr "Ir a %s"
+#: ../lib/advene/gui/util/__init__.py:44 ../lib/advene/gui/edit/create.py:106
+msgid "Plain text content"
+msgstr "Contenido de texto plano"
 
-#: ../lib/advene/gui/views/logwindow.py:157
-msgid "Push a URL on the stack"
-msgstr "Meter un URL al apilado"
+#: ../lib/advene/gui/util/__init__.py:45
+msgid "HTML content"
+msgstr "Contenido HTML"
 
-#: ../lib/advene/gui/views/logwindow.py:158
-msgid "Description of the URL"
-msgstr "Descripción del URL"
+#: ../lib/advene/gui/util/__init__.py:46 ../lib/advene/gui/edit/create.py:107
+msgid "Simple-structured content"
+msgstr "Contenido de estructura simple"
 
-#: ../lib/advene/gui/views/checker.py:37
-msgid "Checker"
-msgstr "Revisador"
+#: ../lib/advene/gui/util/__init__.py:47
+msgid "List of numeric values"
+msgstr "Lista de valores numéricos"
 
-#: ../lib/advene/gui/views/checker.py:39
-msgid "Check various package properties"
-msgstr "Revisar varias propiedades del paquete"
+#: ../lib/advene/gui/util/__init__.py:48 ../lib/advene/gui/edit/create.py:108
+msgid "SVG graphics content"
+msgstr "Contenido de gráficos SVG"
 
-#: ../lib/advene/gui/views/checker.py:90
-msgid "List of possible issues in the current package"
-msgstr "Lista de problemas posibles en el paquete actual"
+#: ../lib/advene/gui/util/__init__.py:389
+#, python-format
+msgid ""
+"Annotation Type %(title)s:\n"
+"%(count)s"
+msgstr ""
+"Tipo de anotación %(title)s:\n"
+"%(count)s"
 
-#: ../lib/advene/gui/views/checker.py:108
-msgid "Overlapping"
-msgstr "Traslapar"
+#: ../lib/advene/gui/util/__init__.py:395
+#, python-format
+msgid ""
+"Relation Type %(title)s:\n"
+"%(count)s"
+msgstr ""
+"Tipo de relación %(title)s:\n"
+"%(count)s"
 
-#: ../lib/advene/gui/views/tagbag.py:52
-msgid "Tag Bag"
-msgstr "Bolsa de etiquetas"
+#: ../lib/advene/gui/util/dialog.py:414 ../lib/advene/gui/util/dialog.py:453
+msgid "Name the element"
+msgstr "Nombra el elemetno"
 
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
-msgid "Bag of tags"
-msgstr "Bolsa de etiquetas"
+#: ../lib/advene/gui/util/dialog.py:417 ../lib/advene/gui/util/dialog.py:454
+msgid "Choose a name for the element"
+msgstr "Elige un nombre para el elemento"
 
-#: ../lib/advene/gui/views/tagbag.py:59
-msgid "New tag"
-msgstr "Nueva etiqueta"
+#: ../lib/advene/gui/util/dialog.py:492
+msgid "Open a file"
+msgstr "Abre un archivo"
 
-#: ../lib/advene/gui/views/tagbag.py:122
-msgid "New tag name"
-msgstr "Nuevo nombre de etiqueta"
+#: ../lib/advene/gui/util/dialog.py:517 ../lib/advene/gui/util/dialog.py:553
+msgid "N/C"
+msgstr "N/C"
 
-#: ../lib/advene/gui/views/tagbag.py:128
-msgid "Enter a new tag name and select its color."
-msgstr "Ingresa un nuevo nombre de etiqueta y selecciona su color"
+#: ../lib/advene/gui/util/dialog.py:522
+msgid "Alias"
+msgstr "Alias"
 
-#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3720
-msgid "The tag contains invalid characters"
-msgstr "La etiqueta contiene caracteres no válidos"
+#: ../lib/advene/gui/util/dialog.py:542
+msgid ""
+"Press to\n"
+"display\n"
+"information"
+msgstr ""
+"Presiona para\n"
+"mostrar\n"
+"informacion"
 
-#: ../lib/advene/gui/views/tagbag.py:175
-msgid "Tag bag options"
-msgstr "Opciones de  la bolsa de etiquetas"
+#: ../lib/advene/gui/util/dialog.py:561
+msgid "Wait..."
+msgstr "Espera..."
 
-#: ../lib/advene/gui/views/tagbag.py:176
-msgid "Update with new tags"
-msgstr "Actualizar con nuevas etiquetas"
+#: ../lib/advene/gui/util/dialog.py:565
+#, python-format
+msgid "Error: %s"
+msgstr "Error: %s"
 
-#: ../lib/advene/gui/views/tagbag.py:176
-msgid "Automatically display new defined tags"
-msgstr "Muestra nuevas etiquetas definidas automáticamente"
+#: ../lib/advene/gui/util/dialog.py:585
+msgid "Any type of file"
+msgstr "Cualquier tipo de archivo"
 
-#: ../lib/advene/gui/views/tagbag.py:225
-#, python-format
-msgid "Choose the color for tag %s"
-msgstr "Selecciona el color para la etiqueta %s"
+#: ../lib/advene/gui/util/dialog.py:587
+msgid "Advene files (.xml, .azp, .apl)"
+msgstr "Archivos de Advene (.xml, .azp, .apl)"
 
-#: ../lib/advene/gui/views/tagbag.py:249
-msgid "Set color"
-msgstr "Establece el color"
+#: ../lib/advene/gui/util/dialog.py:589
+msgid "Advene session (.apl)"
+msgstr "Sesión de Advene (.apl)"
 
-#: ../lib/advene/gui/views/tagbag.py:250
-msgid "Remove"
-msgstr "Remover"
+#: ../lib/advene/gui/util/dialog.py:590
+msgid "Audio files"
+msgstr "Archivos de audio"
 
-#: ../lib/advene/gui/views/tagbag.py:324
-msgid "Drop a tag here to remove it from the list"
-msgstr "Arrastra una etiqueta aquí para removerla de la lista"
+#: ../lib/advene/gui/util/dialog.py:591
+msgid "Video files"
+msgstr "Archivos de video"
 
-#: ../lib/advene/gui/views/tagbag.py:333
-msgid "Save as adhoc view"
-msgstr "Guardar como una vista adhoc"
+#: ../lib/advene/gui/util/dialog.py:636
+#: ../lib/advene/gui/edit/properties.py:423
+msgid "Choose a directory"
+msgstr "Elige un directorio"
 
-#: ../lib/advene/gui/views/tagbag.py:334
-msgid "Add a new tag"
-msgstr "Agrega una nueva etiqueta"
+#: ../lib/advene/gui/util/dialog.py:689
+msgid "Select an element"
+msgstr "Selecciona un elemento"
 
-#: ../lib/advene/gui/views/tagbag.py:335
-msgid "Display all defined tags"
-msgstr "Muestra todas las etiquetas definidas"
+#: ../lib/advene/gui/edit/rules.py:88 ../lib/advene/gui/edit/rules.py:90
+#: ../lib/advene/gui/edit/create.py:252
+msgid "Rule"
+msgstr "Regla"
 
-#: ../lib/advene/gui/views/transcription.py:48
-msgid "Transcription"
-msgstr "Transcripcion"
+#: ../lib/advene/gui/edit/rules.py:99 ../lib/advene/gui/edit/create.py:242
+msgid "Subviews"
+msgstr "Subvistas"
 
-#: ../lib/advene/gui/views/transcription.py:50
-msgid "Display annotations as a text transcription"
-msgstr "Mostrar las anotaciones como transcripción"
+#: ../lib/advene/gui/edit/rules.py:126
+msgid "Add a new rule"
+msgstr "Agregar una nueva regla"
 
-#: ../lib/advene/gui/views/transcription.py:146
-#, python-format
-msgid "Error in source evaluation %(source)s: %(error)s"
-msgstr "Error en la evaluación de la fuente %(source)s: %(error)s"
+#: ../lib/advene/gui/edit/rules.py:130
+msgid "Subview"
+msgstr "Subvista"
 
-#: ../lib/advene/gui/views/transcription.py:163
-msgid "Transcription options"
-msgstr "Opciones de transcripción"
+#: ../lib/advene/gui/edit/rules.py:133
+msgid "Add a subview list"
+msgstr "Agregar una lista  de subvista"
 
-#: ../lib/advene/gui/views/transcription.py:164
-msgid "Default representation"
-msgstr "Representación predeterminada"
+#: ../lib/advene/gui/edit/rules.py:139
+msgid "Remove the current rule"
+msgstr "Eliminar la regla actual"
 
-#: ../lib/advene/gui/views/transcription.py:164
-msgid "Use the default representation for annotations"
-msgstr "Usar la representación predeterminada para las anotaciones"
+#: ../lib/advene/gui/edit/rules.py:279
+msgid "Source expression"
+msgstr "Expresion fuente (original)"
 
-#: ../lib/advene/gui/views/transcription.py:165
-msgid ""
-"If default representation is unchecked,\n"
-"this TALES expression that will be used to format the annotations."
-msgstr ""
-"Si la representación predeterminada no está seleccionada,\n"
-"esta expresión TALES será utilizada para dar formato a las anotaciones."
+#: ../lib/advene/gui/edit/rules.py:281
+msgid "Return expression"
+msgstr "Regresar expresion"
 
-#: ../lib/advene/gui/views/transcription.py:166
-msgid "Separator"
-msgstr "Separador"
+#: ../lib/advene/gui/edit/rules.py:355
+msgid "For all elements in "
+msgstr "Por todos los elementos en"
 
-#: ../lib/advene/gui/views/transcription.py:167
-msgid "This separator will be inserted between the annotations."
-msgstr "Este separador va a ser insertado entre las anotaciones"
+#: ../lib/advene/gui/edit/rules.py:356
+msgid "All annotations of the package"
+msgstr "Todas las anotaciones del paquete"
 
-#: ../lib/advene/gui/views/transcription.py:168
-msgid "Whitespace"
-msgstr "Espacio en blanco"
+#: ../lib/advene/gui/edit/rules.py:357
+msgid "All views of the package"
+msgstr "Todas las vistas del paquete"
 
-#: ../lib/advene/gui/views/transcription.py:169
-msgid "Newline"
-msgstr "Nueva línea"
+#: ../lib/advene/gui/edit/rules.py:358 ../lib/advene/gui/edit/rules.py:802
+msgid "The context annotations"
+msgstr "Las anotaciones del contexto"
 
-#: ../lib/advene/gui/views/transcription.py:170
-msgid "Tabulation"
-msgstr "Tabulación "
+#: ../lib/advene/gui/edit/rules.py:359 ../lib/advene/gui/edit/rules.py:803
+msgid "The annotations of the context type"
+msgstr "Las anotaciones del tipo de contexto"
 
-#: ../lib/advene/gui/views/transcription.py:171
-msgid "Dash"
-msgstr "Guión"
+#: ../lib/advene/gui/edit/rules.py:362 ../lib/advene/core/controller.py:584
+#, python-format
+msgid "Annotations of type %s"
+msgstr "Anotaciones de tipo %s"
 
-#: ../lib/advene/gui/views/transcription.py:172
-msgid "User defined"
-msgstr "Definido por el usuario"
+#: ../lib/advene/gui/edit/rules.py:374
+msgid "Return "
+msgstr "Regresar"
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid "User-defined separator"
-msgstr "Separador definido por el usuario"
+#: ../lib/advene/gui/edit/rules.py:376 ../lib/advene/gui/edit/rules.py:791
+msgid "The element"
+msgstr "El elemento"
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid ""
-"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
-"a tabulation."
-msgstr ""
-"Separador utilizado si la definición de usuario está seleccionado.Usar \\n "
-"para una nueva línea \\t para tabulación."
+#: ../lib/advene/gui/edit/rules.py:377 ../lib/advene/gui/edit/rules.py:792
+msgid "The element's content"
+msgstr "El contenido del elemento"
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Display timestamps"
-msgstr "Muestra las marcas de tiempo"
+#: ../lib/advene/gui/edit/rules.py:392
+msgid "If the element matches "
+msgstr "Si el elemento concuerda"
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Insert timestsamp values"
-msgstr "Inserta los valores de la marca de tiempo"
+#: ../lib/advene/gui/edit/rules.py:394
+msgid "Return the element if it matches "
+msgstr "Regresar el elemento si concuerda"
 
-#: ../lib/advene/gui/views/transcription.py:176
-msgid "Display annotation bounds"
-msgstr "Muestra los limites de la anotacion"
+#: ../lib/advene/gui/edit/rules.py:412 ../lib/advene/gui/edit/rules.py:621
+msgid "All conditions must be met"
+msgstr "Todas las condiciones se deben cumplir"
+
+#: ../lib/advene/gui/edit/rules.py:413 ../lib/advene/gui/edit/rules.py:622
+msgid "Any condition can be met"
+msgstr "Cualquier condición se puede cumplir"
 
-#: ../lib/advene/gui/views/transcription.py:236
+#: ../lib/advene/gui/edit/rules.py:497 ../lib/advene/gui/edit/rules.py:567
 #, python-format
-msgid ""
-"Cannot convert the following annotations,\n"
-"the representation pattern is too complex.\n"
-"%s"
-msgstr ""
-"No se pueden convertir las anotaciones siguientes,\n"
-"el patrón de representación es muy complejo.\n"
-"%s"
+msgid "Rule <b>%s</b>"
+msgstr "Regla <b>%s</b>"
 
-#: ../lib/advene/gui/views/transcription.py:247
-msgid ""
-"Cannot validate the update.\n"
-"The representation pattern is too complex."
-msgstr ""
-"No se puede validar la actualización. \n"
-"El patrón de representación es muy complejo."
+#: ../lib/advene/gui/edit/rules.py:578
+msgid "Rule name"
+msgstr "Nombre de regla"
 
-#: ../lib/advene/gui/views/transcription.py:273
-msgid "Save transcription to a text file"
-msgstr "Guarda la transcripción a un archivo de texto"
+#: ../lib/advene/gui/edit/rules.py:595
+msgid "Event"
+msgstr "Evento"
 
-#: ../lib/advene/gui/views/transcription.py:274
-msgid "Apply the modifications"
-msgstr "Aplicar las modificaciones"
+#: ../lib/advene/gui/edit/rules.py:603
+msgid "If"
+msgstr "Si"
 
-#: ../lib/advene/gui/views/transcription.py:275
-msgid "Find text"
-msgstr "Encontrar texto"
+#: ../lib/advene/gui/edit/rules.py:642
+msgid "Then"
+msgstr "Entonces"
 
-#: ../lib/advene/gui/views/transcription.py:276
-msgid "Quickly switch display options"
-msgstr "Cambia las opciones de visualización rápidamente"
+#: ../lib/advene/gui/edit/rules.py:687
+msgid "When the "
+msgstr "Cuando el "
 
-#: ../lib/advene/gui/views/transcription.py:277
-msgid "Refresh the transcription"
-msgstr "Refresca la transcripción"
+#: ../lib/advene/gui/edit/rules.py:700
+msgid " occurs,"
+msgstr "ocurra, "
 
-#: ../lib/advene/gui/views/transcription.py:278
-msgid "Edit preferences"
-msgstr "Preferencias de edición"
-
-#: ../lib/advene/gui/views/transcription.py:697
+#: ../lib/advene/gui/edit/rules.py:727 ../lib/advene/gui/edit/rules.py:730
 #, python-format
-msgid "Cannot write to %(filename)s: %(error)s:"
-msgstr "No se puede escribir a %(filename)s: %(error)s:"
-
-#: ../lib/advene/gui/views/activebookmarks.py:52
-#: ../lib/advene/gui/views/activebookmarks.py:54
-msgid "ActiveBookmarks"
-msgstr "SeparadoresActivos"
+msgid "Condition expression: %s"
+msgstr "Expresión condicional: %s"
 
-#: ../lib/advene/gui/views/activebookmarks.py:441
-msgid "Chronological order"
-msgstr "Orden cronológico"
+#: ../lib/advene/gui/edit/rules.py:769
+msgid "The annotation type"
+msgstr "El tipo de anotación"
 
-#: ../lib/advene/gui/views/activebookmarks.py:442
-msgid "Completeness and chronological order"
-msgstr "Nivel de completado y orden cronológico"
+#: ../lib/advene/gui/edit/rules.py:772
+#, python-format
+msgid "The value of the %s attribute"
+msgstr "El valor del atributo %s"
 
-#: ../lib/advene/gui/views/activebookmarks.py:458
-msgid "Bookmark duration"
-msgstr "Duración del separador"
+#: ../lib/advene/gui/edit/rules.py:774
+msgid "The annotation fragment"
+msgstr "El fragmento de la anotación"
 
-#: ../lib/advene/gui/views/activebookmarks.py:459
-msgid "Enter the duration (in ms) to convert bookmarks into annotations"
-msgstr ""
-"Ingresar la duración (en ms) para convertir los separadores en anotaciones"
+#: ../lib/advene/gui/edit/rules.py:775
+msgid "The annotation begin time"
+msgstr "El tiempo inicial de la anotación"
 
-#: ../lib/advene/gui/views/activebookmarks.py:481
-msgid "User-specified duration"
-msgstr "Duración especificada por el usuario"
+#: ../lib/advene/gui/edit/rules.py:776
+msgid "The annotation end time"
+msgstr "El tiempo final de la anotación"
 
-#: ../lib/advene/gui/views/activebookmarks.py:482
-msgid "2s duration"
-msgstr "2s duración"
+#: ../lib/advene/gui/edit/rules.py:778
+msgid "The annotation MIME-type"
+msgstr "El tipo MIME de la anotación"
 
-#: ../lib/advene/gui/views/activebookmarks.py:483
-msgid "Complete coverage"
-msgstr "Cobertura completa"
+#: ../lib/advene/gui/edit/rules.py:779
+msgid "The annotation's incoming relations"
+msgstr "Las relaciones entrantes de la anotación"
 
-#: ../lib/advene/gui/views/activebookmarks.py:501
-msgid "Drop a bookmark here to remove it from the list"
-msgstr "Arrastra un separador aquí para removerlo de la lista"
+#: ../lib/advene/gui/edit/rules.py:780
+msgid "The annotation's outgoing relations"
+msgstr "Las relaciones salientes de la anotación"
 
-#: ../lib/advene/gui/views/activebookmarks.py:520
-#: ../lib/advene/gui/views/bookmarks.py:243
-msgid "Insert a bookmark for the current video time"
-msgstr "Inserta un separador para el tiempo actual del video"
+#: ../lib/advene/gui/edit/rules.py:783
+#, python-format
+msgid "The %s-related incoming annotations"
+msgstr "Las %s-relacionadas anotaciones entrantes"
 
-#: ../lib/advene/gui/views/activebookmarks.py:528
-msgid "Type of the annotations that will be created"
-msgstr "Tipo de anotaciones que serán cradas"
+#: ../lib/advene/gui/edit/rules.py:787
+#, python-format
+msgid "The %s-related outgoing annotations"
+msgstr "Las %s-relacionadas anotaciones salientes "
 
-#: ../lib/advene/gui/views/activebookmarks.py:561
-msgid "Reorder active bookmarks"
-msgstr "Reorganizar los separadores activos"
+#: ../lib/advene/gui/edit/rules.py:793
+msgid "The element fragment"
+msgstr "El fragmento del elemento"
 
-#: ../lib/advene/gui/views/activebookmarks.py:562
-msgid "Complete bookmarks into annotations"
-msgstr "Completar los separadores en anotaciones"
+#: ../lib/advene/gui/edit/rules.py:794
+msgid "The element begin time"
+msgstr "El tiempo inicial del elemento"
 
-#: ../lib/advene/gui/views/activebookmarks.py:563
-msgid "Save the current state"
-msgstr "Guardar el estado actual"
+#: ../lib/advene/gui/edit/rules.py:795
+msgid "The element end time"
+msgstr "El tiempo final del elemento"
 
-#: ../lib/advene/gui/views/activebookmarks.py:863
-msgid "Remove end timestamp"
-msgstr "Remover la estampa de tiempo (timestamp) final"
+#: ../lib/advene/gui/edit/rules.py:796
+msgid "The element duration"
+msgstr "La duración del elemento"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1071
-msgid ""
-"Error: cannot find an appropriate schema to create the Active-bookmark type."
-msgstr ""
-"Error: no se puede encontrar un esquema apropiado para crear el tipo de "
-"separador-activo. "
+#: ../lib/advene/gui/edit/rules.py:797
+msgid "The element type"
+msgstr "El tipo de elemento"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1076
-msgid "Active bookmark"
-msgstr "Separador activo"
+#: ../lib/advene/gui/edit/rules.py:798
+msgid "The element's incoming relations"
+msgstr "Las relaciones entrantes del elemento"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1114
-msgid "Validate the annotation"
-msgstr "Validar la anotación"
+#: ../lib/advene/gui/edit/rules.py:799
+msgid "The element's outgoing relations"
+msgstr "Las relaciones salientes del elemento"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1260
-msgid "Duplicate bookmark"
-msgstr "Duplicar el separador"
+#: ../lib/advene/gui/edit/rules.py:800
+msgid "The context"
+msgstr "El contexto"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1261
-msgid "Remove bookmark"
-msgstr "Remover el separador"
+#: ../lib/advene/gui/edit/rules.py:801
+msgid "The context fragment"
+msgstr "El fragmento de contexto"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1270
-msgid "Remove begin timestamp"
-msgstr "Remover la estampa de tiempo (timestamp) inicial"
+#: ../lib/advene/gui/edit/rules.py:813
+#, python-format
+msgid "annotation-type %s"
+msgstr "tipo de anotación %s"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1277
-msgid "Complete bookmark"
-msgstr "Completa el separador"
+#: ../lib/advene/gui/edit/rules.py:816
+#, python-format
+msgid "relation-type %s"
+msgstr "tipos de relación %s"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1281
-msgid "Change type to"
-msgstr "Cambiar el tipo a"
+#: ../lib/advene/gui/edit/rules.py:838
+msgid "Select a condition"
+msgstr "Selecciona una condicion"
 
-#: ../lib/advene/gui/views/bookmarks.py:48
-msgid "Bookmarks importer"
-msgstr "Importador de separadores"
+#: ../lib/advene/gui/edit/rules.py:882
+#, python-format
+msgid "Parameter %s"
+msgstr "Parámetro %s"
 
-#: ../lib/advene/gui/views/bookmarks.py:69
-msgid "Bookmarks"
-msgstr "Separadores"
+#: ../lib/advene/gui/edit/rules.py:996
+msgid "Select an action"
+msgstr "Selecciona una acción"
 
-#: ../lib/advene/gui/views/bookmarks.py:71
-msgid "Bookmark timecodes with their corresponding screenshots"
-msgstr ""
-"Separador de tiempos de código con sus capturas de pantalla correspondientes"
+#: ../lib/advene/gui/edit/rules.py:1087
+msgid "Activate?"
+msgstr "¿Activar?"
 
-#: ../lib/advene/gui/views/bookmarks.py:142
-msgid "Select the annotation type to generate"
-msgstr "Selecciona el tipo de anotacion para generar"
+#: ../lib/advene/gui/edit/properties.py:37
+#: ../lib/advene/gui/edit/shapewidget.py:1599
+msgid "Properties"
+msgstr "Propiedades"
 
-#: ../lib/advene/gui/views/bookmarks.py:147
-msgid "Choose a duration"
-msgstr "Elige una duración"
+#: ../lib/advene/gui/edit/properties.py:376
+msgid "Choose a file"
+msgstr "Elegir un archivo"
 
-#: ../lib/advene/gui/views/bookmarks.py:148
-msgid "Enter the standard duration (in ms) of created annotations."
-msgstr "Ingresa la duración estándar (en ms) de las anotaciones creadas."
+#: ../lib/advene/gui/edit/frameselector.py:44
+msgid "Click on a frame to select its time."
+msgstr "Clic en un cuadro para seleccionar su tiempo. "
 
-#: ../lib/advene/gui/views/bookmarks.py:165
-msgid "Converted from bookmarks"
-msgstr "Convertido de los separadores"
+#: ../lib/advene/gui/edit/frameselector.py:181
+msgid "Select the appropriate snapshot"
+msgstr "Selecciona la captura apropiada"
 
-#: ../lib/advene/gui/views/bookmarks.py:223
-msgid "Drop a position here to remove it from the list"
-msgstr "Suelta una posición aquí para removerla de la lista"
+#: ../lib/advene/gui/edit/frameselector.py:234
+#: ../lib/advene/gui/edit/frameselector.py:287
+msgid "Click to see more frames or scroll with the mouse wheel"
+msgstr "Click para ver más cuadros o desplaza con la rueda del ratón"
 
-#: ../lib/advene/gui/views/bookmarks.py:244
-msgid "Convert bookmarks to annotations"
-msgstr "Convierte los separadores a anotaciones"
+#: ../lib/advene/gui/edit/create.py:81
+#, python-format
+msgid "%s creation"
+msgstr "%s creación"
 
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3609
-msgid "Comment here"
-msgstr "Comenta aquí"
+#: ../lib/advene/gui/edit/create.py:82
+#, python-format
+msgid ""
+"To create a new element of type %s,\n"
+"you must give the following information."
+msgstr ""
+"Para crear un nuevo tipo de elemento %s,\n"
+"debes de dar la siguiente informacion."
 
-#: ../lib/advene/gui/views/viewplugin.py:60
-msgid "Generic view plugin"
-msgstr "Plugin de vista generica"
+#: ../lib/advene/gui/edit/create.py:111
+msgid "Dynamic view"
+msgstr "Vista dinamica"
 
-#: ../lib/advene/gui/views/viewplugin.py:62
-msgid "You should not ever see this tooltip..."
-msgstr "No deberías de ver este consejo de  herramienta..."
+#: ../lib/advene/gui/edit/create.py:112
+msgid "HTML template"
+msgstr "Plantilla HTML"
 
-#: ../lib/advene/gui/views/interactivequery.py:51
-#: ../lib/advene/gui/views/interactivequery.py:99
-msgid "Interactive query"
-msgstr "Busqueda interactiva"
+#: ../lib/advene/gui/edit/create.py:113
+msgid "Plain XML"
+msgstr "XML Plano"
 
-#: ../lib/advene/gui/views/interactivequery.py:53
-msgid "Interactive query dialog"
-msgstr "Diálogo de consulta interactiva"
+#: ../lib/advene/gui/edit/create.py:114
+msgid "SVG template"
+msgstr "Plantilla SVG"
 
-#: ../lib/advene/gui/views/interactivequery.py:59
-#: ../lib/advene/gui/views/interactivequery.py:256
-msgid "Save query"
-msgstr "Guardar consulta"
+#: ../lib/advene/gui/edit/create.py:115
+msgid "Plain text template"
+msgstr "Plantilla de texto plano"
 
-#: ../lib/advene/gui/views/interactivequery.py:122
-#: ../lib/advene/gui/views/interactivequery.py:172
-#, python-format
-msgid ""
-"Invalid query.\n"
-"The following fields have an invalid value:\n"
-"%s"
-msgstr ""
-"Busqueda invalida.\n"
-"Los campos siguientes tienen un valor no valido:\n"
-"%s"
+#: ../lib/advene/gui/edit/create.py:118
+msgid "Simple query"
+msgstr "Pregunta simple"
 
-#: ../lib/advene/gui/views/interactivequery.py:136
-#: ../lib/advene/gui/views/interactivequery.py:296
-msgid "Saving the query..."
-msgstr "Guardando la consulta..."
+#: ../lib/advene/gui/edit/create.py:120
+msgid "Directory"
+msgstr "Directorio"
 
-#: ../lib/advene/gui/views/interactivequery.py:137
-#: ../lib/advene/gui/views/interactivequery.py:297
-msgid "Give a title and identifier for saving the query"
-msgstr "Da un título e identificador para guardar la consulta"
+#: ../lib/advene/gui/edit/create.py:122 ../lib/advene/util/helper.py:411
+msgid "Resource File"
+msgstr "Archivos de recursos"
 
-#: ../lib/advene/gui/views/interactivequery.py:180
-msgid "Expert search"
-msgstr "Búsqueda experta"
+#: ../lib/advene/gui/edit/create.py:128
+msgid "No available type."
+msgstr "No hay tipo disponible "
 
-#: ../lib/advene/gui/views/interactivequery.py:186
+#: ../lib/advene/gui/edit/create.py:172
 #, python-format
 msgid ""
-"TALES error in interactive expression:\n"
-"%s"
+"The identifier %s is not valid.\n"
+"It must be composed of non-accentuated alphabetic characters\n"
+"Underscore is allowed."
 msgstr ""
-"TALES error en una expresión interactiva:\n"
-"%s"
+"El identificador %s no es valido.\n"
+"Debe de estar compuesto de caracteres sin acentuar\n"
+"Se permite utilizar guion bajo."
 
-#: ../lib/advene/gui/views/interactivequery.py:247
-msgid "Interactive result"
-msgstr "Resultado interactivo"
+#: ../lib/advene/gui/edit/create.py:177
+#, python-format
+msgid "The identifier %s is already defined."
+msgstr "El identificador %s ya está definido. "
 
-#: ../lib/advene/gui/views/interactivequery.py:249
-msgid "Interactive result display"
-msgstr "Visualización interactiva de resultado"
+#: ../lib/advene/gui/edit/create.py:310
+msgid "New resource data"
+msgstr "Nuevos datos del recurso"
 
-#: ../lib/advene/gui/views/interactivequery.py:274
-msgid "Result of interactive query"
-msgstr "Resultado de una consulta interactiva"
+#: ../lib/advene/gui/edit/imports.py:129 ../lib/advene/gui/edit/imports.py:130
+#: ../lib/advene/core/controller.py:585
+msgid "Views"
+msgstr "Vistas"
 
-#: ../lib/advene/gui/views/interactivequery.py:278
-msgid "Result of a query"
-msgstr "Resultado de una consulta"
+#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
+msgid "Schemas"
+msgstr "Schemas"
 
-#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3188
-#, python-format
-msgid "'%s'"
-msgstr "'%s'"
+#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
+#: ../lib/advene/gui/edit/elements.py:521
+msgid "Relations"
+msgstr "Relaciones"
 
-#: ../lib/advene/gui/views/interactivequery.py:333
-#, python-format
-msgid "Comment on annotations containing %s"
-msgstr "Comentar en anotaciones que contengan %s"
+#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
+msgid "Queries"
+msgstr "Preguntas"
 
-#: ../lib/advene/gui/views/interactivequery.py:352
-msgid "Choose the annotation type where annotations will be created."
-msgstr "Elige el tipo de anotación donde van a ser creadas las anotaciones"
+#: ../lib/advene/gui/edit/imports.py:320
+msgid "Imported?"
+msgstr "Importado?"
 
-#: ../lib/advene/gui/views/interactivequery.py:356
-#, python-format
-msgid "Copied result of the '%s' query"
-msgstr "Resultado copiado de la '%s'  consulta"
+#: ../lib/advene/gui/edit/imports.py:337 ../lib/advene/gui/edit/elements.py:513
+#: ../lib/advene/gui/edit/elements.py:562
+#: ../lib/advene/gui/edit/elements.py:649
+#: ../lib/advene/gui/edit/elements.py:729
+#: ../lib/advene/gui/edit/elements.py:786
+#: ../lib/advene/gui/edit/elements.py:878
+#: ../lib/advene/gui/edit/elements.py:947
+#: ../lib/advene/gui/edit/elements.py:1059
+#: ../lib/advene/gui/edit/elements.py:1121
+msgid "URI"
+msgstr "URI"
 
-#: ../lib/advene/gui/views/interactivequery.py:368
+#: ../lib/advene/gui/edit/imports.py:359
+msgid "Choose the package to import, and its alias"
+msgstr "Elige el paquete a importar, y su alias"
+
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
 #, python-format
-msgid "Search/replace content in %d elements"
-msgstr "Buscar / reemplazar contenido en %d elementos"
+msgid "Package %s"
+msgstr "Paquete %s"
 
-#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3185
-msgid "Empty quicksearch string"
-msgstr "Limpiar cadena de texto de la búsqueda rápida"
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
+msgid "No title"
+msgstr "Sin titulo"
 
-#: ../lib/advene/gui/views/interactivequery.py:396
-msgid "Edit query again"
-msgstr "Edita la consulta de nuevo"
+#: ../lib/advene/gui/edit/shapewidget.py:89
+msgid "Generic shape"
+msgstr "Forma genérica"
 
-#: ../lib/advene/gui/views/interactivequery.py:400
-#: ../lib/advene/gui/views/finder.py:436
-msgid "Edit query"
-msgstr "Edita consulta"
+#: ../lib/advene/gui/edit/shapewidget.py:254
+#: ../lib/advene/gui/edit/shapewidget.py:753
+#, python-format
+msgid "Link to %s"
+msgstr "Vínculo hacia %s"
 
-#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:537
-msgid "String to search"
-msgstr "Texto a buscar"
+#: ../lib/advene/gui/edit/shapewidget.py:346
+#: ../lib/advene/gui/edit/shapewidget.py:1301
+msgid "Link"
+msgstr "Vínculo"
 
-#: ../lib/advene/gui/views/interactivequery.py:410
-msgid "Search again"
-msgstr "Busca de nuevo"
+#: ../lib/advene/gui/edit/shapewidget.py:351
+msgid "Link label"
+msgstr "Etiqueta de vínculo"
 
-#: ../lib/advene/gui/views/interactivequery.py:416
-msgid "Empty result"
-msgstr "Vacía el resultado"
+#: ../lib/advene/gui/edit/shapewidget.py:369
+msgid "Linewidth"
+msgstr "Ancho de línea"
 
-#: ../lib/advene/gui/views/interactivequery.py:425
-#, python-format
-msgid "Result is a list of %d annotations."
-msgstr "El resultado es una lista de %d anotaciones."
+#: ../lib/advene/gui/edit/shapewidget.py:374
+msgid "Filled"
+msgstr "Lleno"
 
-#: ../lib/advene/gui/views/interactivequery.py:427
-#, python-format
-msgid "Result is a list of  %(number)d elements with %(elements)s."
-msgstr "El resultado es una lista de %(number)d elementos con %(elements)s."
+#: ../lib/advene/gui/edit/shapewidget.py:382
+msgid "Opacity"
+msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:470
-msgid "Other elements"
-msgstr "Otros elementos"
+#: ../lib/advene/gui/edit/shapewidget.py:424
+#, python-format
+msgid "Properties of %s"
+msgstr "Propiedades de %s"
 
-#: ../lib/advene/gui/views/interactivequery.py:474
-msgid "Display annotations in timeline"
-msgstr "Mostrar anotaciones en una línea de tiempo"
+#: ../lib/advene/gui/edit/shapewidget.py:471
+msgid "Rectangle"
+msgstr "Rectángulo"
 
-#: ../lib/advene/gui/views/interactivequery.py:475
-msgid "Display annotations as transcription"
-msgstr "Mostrar anotaciones comp transcripción"
+#: ../lib/advene/gui/edit/shapewidget.py:551
+#: ../lib/advene/gui/edit/shapewidget.py:664
+msgid "Text"
+msgstr "Texto"
 
-#: ../lib/advene/gui/views/interactivequery.py:481
-#: ../lib/advene/gui/views/interactivequery.py:503
-msgid "Export table"
-msgstr "Exporta una tabla"
+#: ../lib/advene/gui/edit/shapewidget.py:675
+msgid "Textsize"
+msgstr "Tamaño del texto"
 
-#: ../lib/advene/gui/views/interactivequery.py:482
-msgid "Create annotations from the result"
-msgstr "Crear anotaciones del resultado"
+#: ../lib/advene/gui/edit/shapewidget.py:689
+msgid "Image"
+msgstr "Imagen"
 
-#: ../lib/advene/gui/views/interactivequery.py:483
-msgid "Define a montage with the result"
-msgstr "Definir un montaje con el resultado"
+#: ../lib/advene/gui/edit/shapewidget.py:773
+msgid "Href"
+msgstr "Href"
 
-#: ../lib/advene/gui/views/interactivequery.py:484
-msgid "Create a comment view with the result"
-msgstr "Crear una vista de comentario con el resultado"
+#: ../lib/advene/gui/edit/shapewidget.py:783
+msgid "Line"
+msgstr "Línea"
 
-#: ../lib/advene/gui/views/interactivequery.py:485
-msgid "Search and replace strings in the annotations content"
-msgstr "Busca y reemplaza cadenas de texto en el contenido de las anotaciones"
+#: ../lib/advene/gui/edit/shapewidget.py:879
+msgid "Draw an arrow"
+msgstr "Dibujar una flecha"
 
-#: ../lib/advene/gui/views/interactivequery.py:510
-msgid "Edit elements"
-msgstr "Editar elementos"
+#: ../lib/advene/gui/edit/shapewidget.py:890
+msgid "Arrow size"
+msgstr "Tamaño de la flecha"
 
-#: ../lib/advene/gui/views/interactivequery.py:516
-msgid "Open in python evaluator"
-msgstr "Abrir en el evaluador de python"
+#: ../lib/advene/gui/edit/shapewidget.py:1105
+#, fuzzy
+msgid "Close path"
+msgstr "Ruta de video"
 
-#: ../lib/advene/gui/views/interactivequery.py:519
-#, python-format
-msgid ""
-"Result:\n"
-"%s"
-msgstr ""
-"Resultado:\n"
-"%s"
+#: ../lib/advene/gui/edit/shapewidget.py:1184
+msgid "Circle"
+msgstr "Círculo"
 
-#: ../lib/advene/gui/views/interactivequery.py:561
-msgid "Results of _interactive query"
-msgstr "Resultados de_la búsqueda interactiva"
+#: ../lib/advene/gui/edit/shapewidget.py:1239
+msgid "Ellipse"
+msgstr "Elipse"
 
-#: ../lib/advene/gui/views/relationdisplay.py:34
-msgid "RelationDisplay"
-msgstr "Mostrar relación"
+#: ../lib/advene/gui/edit/shapewidget.py:1600
+msgid "SVG"
+msgstr "SVG"
 
-#: ../lib/advene/gui/views/relationdisplay.py:36
-msgid "Display the contents of a relation"
-msgstr "Muestra los contenidos de una relación "
+#: ../lib/advene/gui/edit/shapewidget.py:2158
+msgid "Load SVG"
+msgstr "Cargar SVG"
 
-#: ../lib/advene/gui/views/relationdisplay.py:79
-msgid "No relation"
-msgstr "No hay relación"
+#: ../lib/advene/gui/edit/shapewidget.py:2164
+msgid "Save SVG"
+msgstr "Guardar SVG"
 
-#: ../lib/advene/gui/views/relationdisplay.py:104
-#: ../lib/advene/gui/views/annotationdisplay.py:253
-msgid "Contents"
-msgstr "Contenido"
+#: ../lib/advene/gui/edit/importer.py:46
+msgid "Importer"
+msgstr "Importador"
 
-#: ../lib/advene/gui/views/html.py:62
-msgid "Cannot go back: first item in history"
-msgstr "No se puede ir atrás: primer elemento en el historial"
+#: ../lib/advene/gui/edit/importer.py:102
+#: ../lib/advene/gui/edit/importer.py:112
+msgid "Advene package importer"
+msgstr "Importador de paquetes Advene"
 
-#: ../lib/advene/gui/views/html.py:220
-#, python-format
-msgid "%s%% loaded"
-msgstr "%s%% cargado"
+#: ../lib/advene/gui/edit/importer.py:116
+msgid "Not likely"
+msgstr "No es probable"
 
-#: ../lib/advene/gui/views/html.py:223
+#: ../lib/advene/gui/edit/importer.py:138
 #, python-format
-msgid "Title %s"
-msgstr "Título %s"
+msgid "Completed conversion: %(statistics)s"
+msgstr "Conversión completada: %(statistics)s"
 
-#: ../lib/advene/gui/views/html.py:287
-msgid "HTML Viewer"
-msgstr "Visor HTML"
+#: ../lib/advene/gui/edit/importer.py:144
+#: ../lib/advene/gui/edit/dvdselect.py:73
+msgid "Stop"
+msgstr "Detener"
 
-#: ../lib/advene/gui/views/html.py:289
-msgid "Embedded HTML widget"
-msgstr "Widget HTML embebido"
+#: ../lib/advene/gui/edit/importer.py:254
+msgid "Choose the file to import"
+msgstr "Elige el archivo a importar"
 
-#: ../lib/advene/gui/views/html.py:319
-msgid "No available HTML rendering component"
-msgstr "No hay un componente de visualización HTML disponible"
+#: ../lib/advene/gui/edit/importer.py:273
+msgid "Filter"
+msgstr "Filtro"
 
-#: ../lib/advene/gui/views/viewbook.py:36
-msgid "ViewBook"
-msgstr "Libro de vistas"
+#: ../lib/advene/gui/edit/importer.py:277
+msgid "Options"
+msgstr "Opciones"
 
-#: ../lib/advene/gui/views/viewbook.py:57
-#: ../lib/advene/gui/views/viewbook.py:64
-msgid "Cannot remove this widget, it is essential."
-msgstr "No se puede remover este widget, es esencial."
+#: ../lib/advene/gui/edit/importer.py:287
+msgid "Start"
+msgstr "Inicio"
 
-#: ../lib/advene/gui/views/viewbook.py:135
-msgid "Detach"
-msgstr "Desadjuntar"
+#: ../lib/advene/gui/edit/dvdselect.py:82
+#: ../lib/advene/gui/edit/dvdselect.py:112
+msgid "Preview"
+msgstr "Vista previa"
 
-#: ../lib/advene/gui/views/viewbook.py:139
-#: ../lib/advene/gui/views/editaccumulator.py:76
-msgid "Close"
-msgstr "Cerrar"
+#: ../lib/advene/gui/edit/dvdselect.py:91
+msgid ""
+"Select the correct\n"
+"title and chapter\n"
+"of the DVD"
+msgstr ""
+"Seleccciona el\n"
+"titulo y capitulo \n"
+"correctos del DVD"
 
-#: ../lib/advene/gui/views/viewbook.py:157
-msgid "Rename the view"
-msgstr "Renombrar la vista"
+#: ../lib/advene/gui/edit/dvdselect.py:104
+msgid "Chapter"
+msgstr "Capitulo"
 
-#: ../lib/advene/gui/views/viewbook.py:158
-msgid "Please enter the new name of the view"
-msgstr "Por favor ingresa el nuevo nombre de la vista"
+#: ../lib/advene/gui/edit/merge.py:33
+msgid "Create element"
+msgstr "Crear elemento"
 
-#: ../lib/advene/gui/views/viewbook.py:197
-msgid "Detach view in its own window, or drag-and-drop to another zone"
-msgstr ""
-"Desadjuntar la vista en su propia ventana, o arrastra y suelta en otra zona"
+#: ../lib/advene/gui/edit/merge.py:34
+msgid "Create annotation (duplicate id)"
+msgstr "Crear anotación (id duplicada)"
 
-#: ../lib/advene/gui/views/viewbook.py:211
-msgid "Close view"
-msgstr "Cerrar vista"
-
-#: ../lib/advene/gui/views/viewbook.py:286
-msgid "Open a new transcription for..."
-msgstr "Abrir una nueva transcripción para..."
-
-#: ../lib/advene/gui/views/viewbook.py:298
-msgid "Create a new comment view"
-msgstr "Crear una nueva vista de comentario"
+#: ../lib/advene/gui/edit/merge.py:35
+msgid "Create relation (duplicate id)"
+msgstr "Crear relación (id duplicada)"
 
-#: ../lib/advene/gui/views/viewbook.py:300
-msgid "Open a new view"
-msgstr "Abrir una nueva vista"
+#: ../lib/advene/gui/edit/merge.py:36
+msgid "Update the color"
+msgstr "Actualizar el color"
 
-#: ../lib/advene/gui/views/viewbook.py:375
-#, python-format
-msgid "Use annotation-type %s :"
-msgstr "Utilizar un tipo de anotación  %s:"
+#: ../lib/advene/gui/edit/merge.py:37
+msgid "Update the representation"
+msgstr "Actualizar la representación"
 
-#: ../lib/advene/gui/views/viewbook.py:378
-#: ../lib/advene/gui/views/viewbook.py:404
-msgid "to edit it"
-msgstr "para editarlo"
+#: ../lib/advene/gui/edit/merge.py:38
+msgid "Update the description"
+msgstr "Actualizar la descripción"
 
-#: ../lib/advene/gui/views/viewbook.py:379
-#: ../lib/advene/gui/views/viewbook.py:405
-#: ../lib/advene/gui/views/viewbook.py:437
-msgid "to create a new static view"
-msgstr "para crear una nueva vista estática"
+#: ../lib/advene/gui/edit/merge.py:39
+msgid "Update the title"
+msgstr "Actualizar el título"
 
-#: ../lib/advene/gui/views/viewbook.py:381
-msgid "in a timeline"
-msgstr "en una linea de tiempo"
+#: ../lib/advene/gui/edit/merge.py:40
+msgid "Update the mimetype"
+msgstr "Actualizar el tipo mime"
 
-#: ../lib/advene/gui/views/viewbook.py:382
-msgid "as a montage"
-msgstr "como montaje"
+#: ../lib/advene/gui/edit/merge.py:41
+msgid "Update the begin time"
+msgstr "Actualizar el tiempo inicial"
 
-#: ../lib/advene/gui/views/viewbook.py:383
-#: ../lib/advene/gui/views/viewbook.py:436
-msgid "in a table"
-msgstr "en una tabla"
+#: ../lib/advene/gui/edit/merge.py:42
+msgid "Update the end time"
+msgstr "Actualizar el tiempo final"
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
-msgid "in a query"
-msgstr "en una consulta"
+#: ../lib/advene/gui/edit/merge.py:43
+msgid "Update the content"
+msgstr "Actualizar el contenido"
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
-#, python-format
-msgid "Query %s"
-msgstr "Consulta %s"
+#: ../lib/advene/gui/edit/merge.py:44
+msgid "Update the matchFilter"
+msgstr "Actualizar el filtro de concordancia"
 
-#: ../lib/advene/gui/views/viewbook.py:385
-#: ../lib/advene/gui/views/viewbook.py:407
-msgid "in the TALES browser"
-msgstr "en el navegador TALES"
+#: ../lib/advene/gui/edit/merge.py:45
+msgid "Update the member types"
+msgstr "Actualizar tipos de miembros"
 
-#: ../lib/advene/gui/views/viewbook.py:385
-#, python-format
-msgid "Browsing %s"
-msgstr "Navegando %s"
+#: ../lib/advene/gui/edit/merge.py:46
+msgid "Update tags"
+msgstr "Actualizar etiquetas"
 
-#: ../lib/advene/gui/views/viewbook.py:401
-#, python-format
-msgid "Use annotation %s :"
-msgstr "Utilizar anotación %s:"
+#: ../lib/advene/gui/edit/merge.py:90
+msgid "Difference between original and merged elements"
+msgstr "Diferencia entre el elemento original y el unido"
 
-#: ../lib/advene/gui/views/viewbook.py:407
-#, python-format
-msgid "Browse %s"
-msgstr "Navegar %s"
+#: ../lib/advene/gui/edit/merge.py:136
+msgid "Current element"
+msgstr "Elemento actual"
 
-#: ../lib/advene/gui/views/viewbook.py:408
-msgid "to display its contents"
-msgstr "para mostrar sus contenidos"
+#: ../lib/advene/gui/edit/merge.py:141
+msgid "Updated element"
+msgstr "Elemento actualizado"
 
-#: ../lib/advene/gui/views/viewbook.py:408
-#, python-format
-msgid "%s"
-msgstr "%s"
+#: ../lib/advene/gui/edit/merge.py:147
+msgid "Show diff"
+msgstr "Mostrar diferencias"
 
-#: ../lib/advene/gui/views/viewbook.py:409
-msgid "as a bookmark"
-msgstr "como separador"
+#: ../lib/advene/gui/edit/merge.py:180
+msgid "Merge?"
+msgstr "¿Unir?"
 
-#: ../lib/advene/gui/views/viewbook.py:427
-msgid "as the context for the query..."
-msgstr "como contexto para la consulta..."
+#: ../lib/advene/gui/edit/merge.py:197
+msgid "Element"
+msgstr "Elemento"
 
-#: ../lib/advene/gui/views/viewbook.py:431
-msgid "Set of annotations"
-msgstr "Conjunto de anotaciones"
+#: ../lib/advene/gui/edit/merge.py:215
+#, fuzzy, python-format
+msgid "Merge elements from %s into %s"
+msgstr "Editar elementos importados de otros paquetes"
 
-#: ../lib/advene/gui/views/viewbook.py:432
-msgid "Use annotations:"
-msgstr "Usa anotaciones:"
+#: ../lib/advene/gui/edit/merge.py:267
+msgid "All"
+msgstr "Todo"
 
-#: ../lib/advene/gui/views/viewbook.py:435
-msgid "to edit them"
-msgstr "para editarlas"
+#: ../lib/advene/gui/edit/merge.py:272 ../lib/advene/core/controller.py:1152
+msgid "None"
+msgstr "Ninguno"
 
-#: ../lib/advene/gui/views/viewbook.py:438
-msgid "as bookmarks"
-msgstr "como separadores"
+#: ../lib/advene/gui/edit/montage.py:51
+msgid "Montage"
+msgstr "Montaje"
 
-#: ../lib/advene/gui/views/singletonpopup.py:32
-msgid "SingletonPopup"
-msgstr "Ventana flotante Singleton"
+#: ../lib/advene/gui/edit/montage.py:53
+msgid "Dynamic montage of annotations"
+msgstr "Montaje dinámico de anotaciones"
 
-#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
-msgid "Timeline"
-msgstr "Linea de tiempo"
+#: ../lib/advene/gui/edit/montage.py:61
+msgid "Render"
+msgstr "Render"
 
-#: ../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/edit/montage.py:176
+msgid "Remove from montage"
+msgstr "Eliminar del montaje"
 
-#: ../lib/advene/gui/views/timeline.py:137
-msgid "Limit display to current area"
-msgstr "Limitar la visualización al área actual"
+#: ../lib/advene/gui/edit/montage.py:310
+#, python-format
+msgid ""
+"Exporting montage %(title)s\n"
+"to %%(filename)s"
+msgstr ""
+"Exportando montaje %(title)s\n"
+"a %%(filename)s"
 
-#: ../lib/advene/gui/views/timeline.py:138
-#: ../lib/advene/gui/views/timeline.py:3265
-msgid "Display whole movie"
-msgstr "Muestra la película completa"
+#: ../lib/advene/gui/edit/montage.py:402
+msgid "Drop an annotation here to remove it from the list"
+msgstr "Soltar una anotación aquí para eliminarla de la lista"
 
-#: ../lib/advene/gui/views/timeline.py:168
-#, python-format
-msgid "Cannot find annotation type %s"
-msgstr "No se puede encontrar el tipo de anotación %s"
+#: ../lib/advene/gui/edit/montage.py:414
+msgid "Play the montage"
+msgstr "Reproducir el montaje"
 
-#: ../lib/advene/gui/views/timeline.py:218
-msgid "No scrolling"
-msgstr "No desplazar"
+#: ../lib/advene/gui/edit/montage.py:419
+msgid "Save the view in the package"
+msgstr "Guardar la vista en el paquete"
 
-#: ../lib/advene/gui/views/timeline.py:219
-msgid "Continuous scrolling"
-msgstr "Desplazar continuamente"
+#: ../lib/advene/gui/edit/montage.py:467
+msgid "Set zoom level"
+msgstr "Establecer el nivel de zoom"
 
-#: ../lib/advene/gui/views/timeline.py:220
-msgid "Discrete scrolling"
-msgstr "Desplazamiento discreto"
+#: ../lib/advene/gui/edit/montage.py:472
+msgid "Set 100% zoom"
+msgstr "Establecer 100% zoom"
 
-#: ../lib/advene/gui/views/timeline.py:221
-msgid "Annotation scrolling"
-msgstr "Desplazamiento con anotaciones"
+#: ../lib/advene/gui/edit/montage.py:551
+msgid "Total duration:"
+msgstr "Duración total"
 
-#: ../lib/advene/gui/views/timeline.py:483
+#: ../lib/advene/gui/edit/timeadjustment.py:97
 #, python-format
-msgid "%d annotations"
-msgstr "%d anotaciones"
-
-#: ../lib/advene/gui/views/timeline.py:486
-msgid "Display all types"
-msgstr "Muestra todos los tipos"
+msgid "Decrement value by %.2f s"
+msgstr "Disminuye el valor por %.2f s"
 
-#: ../lib/advene/gui/views/timeline.py:488
+#: ../lib/advene/gui/edit/timeadjustment.py:99
 #, python-format
+msgid "Increment value by %.2f s"
+msgstr "Aumenta el valor por %.2f s"
+
+#: ../lib/advene/gui/edit/timeadjustment.py:125
+#, fuzzy
 msgid ""
-"There are %d annotations.\n"
-"The current timeline may take a long time to display them, so only the first "
-"two annotation types are displayed. Use the annotation type selector (second "
-"button in the timeline) to select other annotations types to display, or "
-"click on the 'Display all types' button below."
+"Click to play\n"
+"Control+click to set to current time\n"
+"Scroll to modify value (with control/shift)\n"
+"Right-click to invalidate screenshot"
 msgstr ""
-"Hay %d anotaciones.\n"
-"La línea de tiempo actual puede tardar mucho tiempo en mostrarlas, así que "
-"solo los primeros dos tipos de anotaciones se muestran. Utiliza el selector "
-"de tipo de anotaciones (segundo botón en la línea de tiempo) para "
-"seleccionar otros tipos de anotación para mostrar, o da clic en el debajo "
-"botón 'Mostrar todos los tipos'."
-
-#: ../lib/advene/gui/views/timeline.py:963
-msgid "Split at current player position"
-msgstr "Dividir en la posición actual del reproductor"
-
-#: ../lib/advene/gui/views/timeline.py:967
-msgid "Center and zoom"
-msgstr "Centrar y acercar"
+"Clic para reproducir\n"
+"Control+clic para establecer el tiempo actual\\Desplazar para modificar el "
+"valor (con control/shift)\n"
+"Clic-derecho para invalidar la captura"
 
-#: ../lib/advene/gui/views/timeline.py:1058
-#: ../lib/advene/gui/views/tree.py:808 ../lib/advene/gui/main.py:4563
+#: ../lib/advene/gui/edit/timeadjustment.py:140
 msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
+"Enter a timecode.\n"
+"An integer value will be considered as milliseconds.\n"
+"A float value (12.2) will be considered as seconds.\n"
+"HH:MM:SS.sss values are possible."
 msgstr ""
-"Selecciona el esquema donde quieres\n"
-"crear un nuevo tipo de relación."
-
-#: ../lib/advene/gui/views/timeline.py:1071
-#: ../lib/advene/gui/views/tree.py:821
-msgid "Create a relation"
-msgstr "Crear una relacion"
+"Ingresa un código de tiempo.\n"
+"Un valor entero será considerado como milisegundos.\n"
+"Un valor flotante (12.2) será considerado como segundos.\n"
+"Valores como HH:MM:SS.sss son posibles."
 
-#: ../lib/advene/gui/views/timeline.py:1081
-#: ../lib/advene/gui/views/tree.py:831
-msgid "Create a new relation-type."
-msgstr "Crear un nuevo tipo de relación."
+#: ../lib/advene/gui/edit/timeadjustment.py:154
+msgid "Set to current player position"
+msgstr "Establecer a la posición del reproductor actual"
 
-#: ../lib/advene/gui/views/timeline.py:1107
-msgid "Merge with this annotation"
-msgstr "Unir con esta anotación"
+#: ../lib/advene/gui/edit/elements.py:78
+#, python-format
+msgid "No edit popup available for element %s"
+msgstr "No edit popup disponible para el elemento %s"
 
-#: ../lib/advene/gui/views/timeline.py:1116
-msgid "Align both begin times"
-msgstr "Alinear ambos tiempos de inicio"
+#: ../lib/advene/gui/edit/elements.py:99
+msgid "Edit Window"
+msgstr "Ventana de edición"
 
-#: ../lib/advene/gui/views/timeline.py:1117
-msgid "Align both end times"
-msgstr "Alinear ambos tiempos finales"
+#: ../lib/advene/gui/edit/elements.py:138
+msgid "Apply changes and close the edit window"
+msgstr "Aplicar cambios y cerrar ventana de edición"
 
-#: ../lib/advene/gui/views/timeline.py:1118
-msgid "Align end time to selected begin time"
-msgstr "Alinear el tiempo final al tiempo inicial seleccionado "
+#: ../lib/advene/gui/edit/elements.py:143
+msgid "Apply changes"
+msgstr "Aplicar cambios"
 
-#: ../lib/advene/gui/views/timeline.py:1119
-msgid "Align begin time to selected end time"
-msgstr "Alinear el tiempo inicial al tiempo final seleccionado"
-
-#: ../lib/advene/gui/views/timeline.py:1120
-msgid "Align all times"
-msgstr "Alinear todos los tiempo"
-
-#: ../lib/advene/gui/views/timeline.py:1158
-#: ../lib/advene/gui/views/tree.py:700
-msgid "Cannot delete the annotation : it has relations."
-msgstr "No puedo borrar la anotación: tiene relaciones."
-
-#: ../lib/advene/gui/views/timeline.py:1233
-msgid "Select the appropriate relation type"
-msgstr "Selecciona el tipo apropiado de relación"
-
-#: ../lib/advene/gui/views/timeline.py:1252
-#: ../lib/advene/gui/views/tree.py:757
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr "Duplicar selección al tipo %s"
+#: ../lib/advene/gui/edit/elements.py:277
+msgid "Content has been modified. Close anyway and lose data?"
+msgstr ""
+"El contenido ha sido modificado. ¿Cerrar de cualquier manera y perder datos?"
 
-#: ../lib/advene/gui/views/timeline.py:1255
-#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/edit/elements.py:337
 #, python-format
-msgid "Move selection to type %s"
-msgstr "Mover selección al tipo %s"
+msgid "View %s (read-only)"
+msgstr "Vista %s (solo-lectura)"
 
-#: ../lib/advene/gui/views/timeline.py:1264
-#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/edit/elements.py:373
 #, python-format
-msgid "Duplicate annotation to type %s"
-msgstr "Duplicar anotación al tipo %s"
+msgid "Display %s"
+msgstr "Muestra %s"
 
-#: ../lib/advene/gui/views/timeline.py:1268
-#: ../lib/advene/gui/views/tree.py:773
-#, python-format
-msgid "Move annotation to type %s"
-msgstr "Mover anotación al tipo %s"
+#: ../lib/advene/gui/edit/elements.py:457
+msgid "Apply changes and edit previous annotation of same type"
+msgstr "Aplicar los cambios y editar la anotación anterior del mismo tipo"
 
-#: ../lib/advene/gui/views/timeline.py:1275
-#, python-format
-msgid "Duplicate to type %(type)s at %(position)s"
-msgstr "Duplicar al tipo %(type)s en %(position)s"
+#: ../lib/advene/gui/edit/elements.py:461
+msgid "Apply changes and edit next annotation of same type"
+msgstr "Aplicar los cambios y editar la anotación siguiente del mismo tipo"
 
-#: ../lib/advene/gui/views/timeline.py:1281
-#, python-format
-msgid "Move to type %(type)s at %(position)s"
-msgstr "Mover al tipo %(type)s en %(position)s"
+#: ../lib/advene/gui/edit/elements.py:467
+msgid "Unhighlight annotation"
+msgstr "Remover resaltado de anotación"
 
-#: ../lib/advene/gui/views/timeline.py:1291
-#: ../lib/advene/gui/views/tree.py:784
-msgid "Duplicate and create a relation"
-msgstr "Duplicar y crear una relación"
+#: ../lib/advene/gui/edit/elements.py:471
+msgid "Highlight annotation"
+msgstr "Resaltar anotación"
 
-#: ../lib/advene/gui/views/timeline.py:1302
-#, python-format
-msgid "Duplicate at %s and create a relation"
-msgstr "Duplicar al %s y crear una relación"
+#: ../lib/advene/gui/edit/elements.py:502
+msgid "Fragment"
+msgstr "Fragmento"
 
-#: ../lib/advene/gui/views/timeline.py:1333
-msgid "Annotation filter"
-msgstr "Filtro de anotación"
+#: ../lib/advene/gui/edit/elements.py:525 ../lib/advene/core/controller.py:585
+msgid "Tags"
+msgstr "Etiquetas"
 
-#: ../lib/advene/gui/views/timeline.py:1334
-msgid "Enter the searched string"
-msgstr "Ingresar la cadena de texto buscada"
+#: ../lib/advene/gui/edit/elements.py:621
+msgid "Apply changes and visualise in web browser"
+msgstr "Aplicar los cambios y visualizar en el navegador web"
 
-#: ../lib/advene/gui/views/timeline.py:1442
-#, python-format
-msgid "Duplicate all annotations to type %s"
-msgstr "Duplicar todas las anotaciones del tipo %s"
+#: ../lib/advene/gui/edit/elements.py:626
+msgid "Apply changes and activate the view"
+msgstr "Aplicar los cambios y activar la vista"
 
-#: ../lib/advene/gui/views/timeline.py:1444
-#, python-format
-msgid "Move all annotations to type %s"
-msgstr "Mover todas las anotaciones al tipo %s"
+#: ../lib/advene/gui/edit/elements.py:634
+#: ../lib/advene/gui/edit/elements.py:715
+#: ../lib/advene/gui/edit/elements.py:772
+#: ../lib/advene/gui/edit/elements.py:863
+#: ../lib/advene/gui/edit/elements.py:932
+#: ../lib/advene/gui/edit/elements.py:1034
+msgid "Title (name)"
+msgstr "Título (nombre)"
 
-#: ../lib/advene/gui/views/timeline.py:1446
-#, python-format
-msgid "Duplicate all annotations matching a string to type %s"
-msgstr ""
-"Duplicar todas las anotaciones que concuerden con una cadena de texto al "
-"tipo %s"
+#: ../lib/advene/gui/edit/elements.py:638
+msgid "Name of the view"
+msgstr "Nombre de la vista"
 
-#: ../lib/advene/gui/views/timeline.py:1448
-#, python-format
-msgid "Move all annotations matching a string to type %s"
-msgstr ""
-"Mover todas las anotaciones que conuerden con una cadena de texto al tipo %s"
+#: ../lib/advene/gui/edit/elements.py:662
+msgid "Class"
+msgstr "Clase"
 
-#: ../lib/advene/gui/views/timeline.py:1450
-#, python-format
-msgid "Align all annotation time codes using %s as reference."
-msgstr ""
-"Alinear todos los códigos de tiempo de las anotaciones que utilizan %s como "
-"referencia."
+#: ../lib/advene/gui/edit/elements.py:665
+msgid "Match Filter"
+msgstr "Concordar filtro"
 
-#: ../lib/advene/gui/views/timeline.py:1452
-#, python-format
-msgid "Align all annotation contents using %s as reference"
-msgstr ""
-"Alinear todos los contenidos de las anotaciones que utilizan %s como "
-"referencia"
+#: ../lib/advene/gui/edit/elements.py:708
+#, fuzzy
+msgid "Validate and run query on package"
+msgstr "Crea un nuevo paquete"
 
-#: ../lib/advene/gui/views/timeline.py:1642
-#: ../lib/advene/gui/views/table.py:240
-msgid "Cannot update the annotation, its representation is too complex"
-msgstr "No se puede actualizar la anotación, su representación es muy compleja"
+#: ../lib/advene/gui/edit/elements.py:719
+msgid "Name of the query"
+msgstr "Nombre de la consulta"
 
-#: ../lib/advene/gui/views/timeline.py:1936
-#: ../lib/advene/gui/views/timeline.py:1965
-#, python-format
-msgid "Displaying %(count)d / %(total)d annotations..."
-msgstr "Mostrando %(count)d / %(total)d anotaciones..."
+#: ../lib/advene/gui/edit/elements.py:776
+msgid "Name of the package"
+msgstr "Nombre del paquete"
 
-#: ../lib/advene/gui/views/timeline.py:1947
-msgid "Displaying done."
-msgstr "Mostrando terminado"
+#: ../lib/advene/gui/edit/elements.py:794
+#: ../lib/advene/gui/edit/elements.py:885
+#: ../lib/advene/gui/edit/elements.py:964
+#: ../lib/advene/gui/edit/elements.py:1078
+msgid "Description"
+msgstr "Descripcion"
 
-#: ../lib/advene/gui/views/timeline.py:2439
-msgid "Create a new annotation"
-msgstr "Crear una nueva anotación"
+#: ../lib/advene/gui/edit/elements.py:798
+#: ../lib/advene/gui/edit/elements.py:889
+#: ../lib/advene/gui/edit/elements.py:968
+#: ../lib/advene/gui/edit/elements.py:1082
+msgid "Textual description of the package"
+msgstr "Descripción textual del paquete"
 
-#: ../lib/advene/gui/views/timeline.py:2440
-msgid "Zoom on region"
-msgstr "Acercar en región"
+#: ../lib/advene/gui/edit/elements.py:803
+msgid "Default dynamic view"
+msgstr "Vista dinamica predefinida"
 
-#: ../lib/advene/gui/views/timeline.py:2441
-msgid "Restrict display to region"
-msgstr "Restringir muestra en región"
+#: ../lib/advene/gui/edit/elements.py:807
+msgid "Dynamic view to activate on package load"
+msgstr "Vista dinámica para activar en la carga del paquete"
 
-#: ../lib/advene/gui/views/timeline.py:2560
-msgid "New annotation at player time"
-msgstr "Nueva anotación en el tiempo del reproductor"
+#: ../lib/advene/gui/edit/elements.py:812
+msgid "Default static view"
+msgstr "Vista estatica predefinida"
 
-#: ../lib/advene/gui/views/timeline.py:2564
-msgid "New annotation at mouse position"
-msgstr "Nueva anotación en la posición del cursor"
+#: ../lib/advene/gui/edit/elements.py:816
+msgid "Static view to open on package load"
+msgstr "Vista estática para abrir en la carga del paquete"
 
-#: ../lib/advene/gui/views/timeline.py:2568
-msgid "Selection"
-msgstr "Selección"
+#: ../lib/advene/gui/edit/elements.py:821
+msgid "Default adhoc view"
+msgstr "Vista adhoc predeterminada"
 
-#: ../lib/advene/gui/views/timeline.py:2694
-msgid "Cannot zoom more"
-msgstr "No se puede acercar más"
+#: ../lib/advene/gui/edit/elements.py:825
+msgid "Adhoc view to open on package load"
+msgstr "Vista adhoc para abrir en la carga del paquete"
 
-#: ../lib/advene/gui/views/timeline.py:2915
-#, python-format
-msgid "From schema %s"
-msgstr "Del esquema %s"
+#: ../lib/advene/gui/edit/elements.py:830
+msgid "Cached duration"
+msgstr "Duración en caché"
 
-#: ../lib/advene/gui/views/timeline.py:2977
-msgid "Restrict playing to this annotation-type"
-msgstr "Restringir la reproducción a este tipo de anotación"
+#: ../lib/advene/gui/edit/elements.py:834
+msgid "Cached duration in ms"
+msgstr "Duración en caché en ms"
 
-#: ../lib/advene/gui/views/timeline.py:2984
-msgid "Goto previous annotation"
-msgstr "Ir a la anotación previa"
+#: ../lib/advene/gui/edit/elements.py:839
+msgid "Mediafile"
+msgstr "Archivo media"
 
-#: ../lib/advene/gui/views/timeline.py:2995
-msgid "Goto next annotation"
-msgstr "Ir a la anotación siguiente"
+#: ../lib/advene/gui/edit/elements.py:843
+msgid "Location of associated media file"
+msgstr "Ubicación del archivo media asociado"
 
-#: ../lib/advene/gui/views/timeline.py:3006
-msgid "+"
-msgstr "+"
+#: ../lib/advene/gui/edit/elements.py:867
+msgid "Name of the schema"
+msgstr "nombre del esquema"
 
-#: ../lib/advene/gui/views/timeline.py:3064
-msgid "Open an annotation display view"
-msgstr "Abrir una vista de muestra de anotaciones "
+#: ../lib/advene/gui/edit/elements.py:899
+#: ../lib/advene/gui/edit/elements.py:979
+msgid "TALES expression returning a color for the element"
+msgstr "Expresión TALES regresando un color para el elemento"
 
-#: ../lib/advene/gui/views/timeline.py:3071
-msgid "Open a slave montage view (coordinated zoom level)"
-msgstr "Abrir una vista de montaje esclava (coordinado nivel de zoom)"
+#: ../lib/advene/gui/edit/elements.py:906
+#: ../lib/advene/gui/edit/elements.py:997
+msgid "Item color"
+msgstr "Color del elemento"
 
-#: ../lib/advene/gui/views/timeline.py:3106
+#: ../lib/advene/gui/edit/elements.py:910
+#: ../lib/advene/gui/edit/elements.py:1001
 msgid ""
-"<b>Statistics about current selection</b>\n"
-"\n"
+"TALES expression returning a color for the items contained by the element"
 msgstr ""
-"<b>Estadísticas acerca de la selección actual</b>\n"
-"\n"
+"Expresión TALES regresando un color para los elementos contenidos por el "
+"elemento"
 
-#: ../lib/advene/gui/views/timeline.py:3113
-msgid "No selected annotation"
-msgstr "No hay anotación seleccionada"
+#: ../lib/advene/gui/edit/elements.py:936
+#: ../lib/advene/gui/edit/elements.py:1038
+msgid "Name of the type"
+msgstr "Nombre del tipo"
 
-#: ../lib/advene/gui/views/timeline.py:3117
-#, python-format
-msgid "%d selected annotation(s)"
-msgstr "%d anotación(es) seleccionada(s)"
+#: ../lib/advene/gui/edit/elements.py:954
+#: ../lib/advene/gui/edit/elements.py:1043
+#: ../lib/advene/gui/edit/elements.py:1312
+msgid "MIME Type"
+msgstr "Tipo MIME"
 
-#: ../lib/advene/gui/views/timeline.py:3124
-msgid "Unselect all annotations"
-msgstr "Quitar selección a todas las anotaciones"
+#: ../lib/advene/gui/edit/elements.py:958
+#: ../lib/advene/gui/edit/elements.py:1047
+msgid "MIMEType of the content"
+msgstr "Tipo MIME del contenido"
 
-#: ../lib/advene/gui/views/timeline.py:3125
-msgid "Create a static view"
-msgstr "Crear una nueva vista estática"
+#: ../lib/advene/gui/edit/elements.py:990
+msgid ""
+"TALES expression used to get a compact representation of the annotations"
+msgstr ""
+"Expresión TALES utilizada para obtener una representación compacta de las "
+"anotaciones"
 
-#: ../lib/advene/gui/views/timeline.py:3126
-msgid "Highlight selection in other views"
-msgstr "Resalta la selección en otras vistas"
+#: ../lib/advene/gui/edit/elements.py:991
+#, python-format
+msgid "Display %s key"
+msgstr "Muestra %s clave"
 
-#: ../lib/advene/gui/views/timeline.py:3127
-#: ../lib/advene/gui/views/timeline.py:3713
-msgid "Tag selection"
-msgstr "Selección de etiquetas"
+#: ../lib/advene/gui/edit/elements.py:1007
+msgid "Completions"
+msgstr "Terminaciones"
 
-#: ../lib/advene/gui/views/timeline.py:3128
-msgid "Delete selected annotations"
-msgstr "Elimina las anotaciones seleccionadas"
+#: ../lib/advene/gui/edit/elements.py:1011
+msgid "Space-separated list of words used for content completion"
+msgstr ""
+"Lista de palabras separadas por espacio utilizadas para completar contenido"
 
-#: ../lib/advene/gui/views/timeline.py:3129
-msgid "Display selection in a table"
-msgstr "Muestra la selección en una tabla"
+#: ../lib/advene/gui/edit/elements.py:1017
+msgid "Advanced"
+msgstr "Avanzado"
 
-#: ../lib/advene/gui/views/timeline.py:3130
-msgid "Center and zoom on selection"
-msgstr "Centrar y acercar en la selección"
+#: ../lib/advene/gui/edit/elements.py:1067
+msgid "Any annotation type"
+msgstr "Cualquier tipo de anotación"
 
-#: ../lib/advene/gui/views/timeline.py:3131
-msgid "Edit selected annotations"
-msgstr "Edita las anotaciones seleccionadas"
+#: ../lib/advene/gui/edit/elements.py:1093
+msgid "TALES expression specifying a color"
+msgstr "Expresión TALES especificando un color"
 
-#: ../lib/advene/gui/views/timeline.py:3132
-msgid "Merge annotations"
-msgstr "Unir anotaciones"
+#: ../lib/advene/gui/edit/elements.py:1120
+msgid "MIMEType"
+msgstr "Tipo MIME"
 
-#: ../lib/advene/gui/views/timeline.py:3133
-msgid "Display statistics"
-msgstr "Muestra estadísticas"
+#: ../lib/advene/gui/edit/elements.py:1345
+#, python-format
+msgid "Error: cannot find a content handler for %s"
+msgstr "Error: no se puede encontrar un control para %s"
 
-#: ../lib/advene/gui/views/timeline.py:3258
-msgid "Goto previous page"
-msgstr "Ir a la página anterior"
-
-#: ../lib/advene/gui/views/timeline.py:3270
-msgid "Goto next page"
-msgstr "Ir a la página siguiente"
-
-#: ../lib/advene/gui/views/timeline.py:3324
-msgid "Inspector locked. Click here or in the timeline background to unlock."
-msgstr ""
-"Inspector cerrado. Clic aquí o en el fondo de la linea de tiempo para abrir."
-
-#: ../lib/advene/gui/views/timeline.py:3352
+#: ../lib/advene/gui/edit/elements.py:1461
+#: ../lib/advene/gui/edit/elements.py:1686
+#, python-format
 msgid ""
-"Delete the selected annotations or drop an annotation here to delete it."
+"Cannot read the data:\n"
+"%s"
 msgstr ""
-"Elimina las acciones seleccionadas o arrastra una anotación aquí para "
-"eliminarla."
+"No se pueden leer los datos:\n"
+"%s"
 
-#: ../lib/advene/gui/views/timeline.py:3374
+#: ../lib/advene/gui/edit/elements.py:1485
+#: ../lib/advene/gui/edit/elements.py:1711
+msgid "Save content to..."
+msgstr "Salvar el contenido a..."
+
+#: ../lib/advene/gui/edit/elements.py:1496
+#: ../lib/advene/gui/edit/elements.py:1724
+#, python-format
 msgid ""
-"Drag an annotation type here to remove it from display.\n"
-"Click to edit all displayed types"
+"Cannot save the data:\n"
+"%s"
 msgstr ""
-"Arrastra un tipo de anotación aquí para removerlo de la visualización.\n"
-"Clic para editar todos los tipos mostrados"
-
-#: ../lib/advene/gui/views/timeline.py:3386
-msgid "Selection actions"
-msgstr "Acciones de selección"
-
-#: ../lib/advene/gui/views/timeline.py:3401
-msgid "Display relations"
-msgstr "Muestra las relaciones"
+"No se pueden guardar los datos:\n"
+"%s"
 
-#: ../lib/advene/gui/views/timeline.py:3407
-msgid "Display all relations"
-msgstr "Muestra todas las relaciones"
+#: ../lib/advene/gui/edit/elements.py:1515
+#: ../lib/advene/gui/edit/elements.py:1738
+msgid "Open a file (C-o)"
+msgstr "Abrir un archivo (C-o)"
 
-#: ../lib/advene/gui/views/timeline.py:3484
-msgid "Center on current player position."
-msgstr "Centrar en la posición actual del reproductor"
+#: ../lib/advene/gui/edit/elements.py:1520
+#: ../lib/advene/gui/edit/elements.py:1743
+msgid "Save to a file (C-s)"
+msgstr "Guardar a un archivo (C-s)"
 
-#: ../lib/advene/gui/views/timeline.py:3500
-msgid "Automatically activate loop when clicking on an annotation"
-msgstr "Activar ciclo automáticamente cuando de da clic en una anotación"
+#: ../lib/advene/gui/edit/elements.py:1525
+#: ../lib/advene/gui/edit/elements.py:1748
+msgid "Reload the file (C-r)"
+msgstr "Volver a cargar el archivo (C-r)"
 
-#: ../lib/advene/gui/views/timeline.py:3524
-msgid "Displayed"
-msgstr "Mostrado"
+#: ../lib/advene/gui/edit/elements.py:1531
+msgid "Insert a value from the browser (C-i)"
+msgstr "Inserta un valor del navegador (C-i)"
 
-#: ../lib/advene/gui/views/timeline.py:3532
-msgid "Not displayed"
-msgstr "No mostrado"
+#: ../lib/advene/gui/edit/elements.py:1777
+msgid "Begin time is greater than end time"
+msgstr "Tiempo de inicio es mayor que el tiempo final"
 
-#: ../lib/advene/gui/views/timeline.py:3580
-msgid "< All <"
-msgstr "< Todo <"
+#: ../lib/advene/gui/edit/elements.py:2049
+msgid "Expecting an integer."
+msgstr "Esperando entero"
 
-#: ../lib/advene/gui/views/timeline.py:3584
-msgid "> All >"
-msgstr "> Todo >"
+#: ../lib/advene/gui/edit/elements.py:2081
+#, python-format
+msgid ""
+"The %(attribute)s attribute could not be updated:\n"
+"\n"
+"%(error)s\n"
+"\n"
+"Resetting to the original value."
+msgstr ""
+"El atributo %(attribute)s no pudo ser actualizado:\n"
+"\n"
+"%(error)s\n"
+"\n"
+"Restableciendo el valor original."
 
-#: ../lib/advene/gui/views/timeline.py:3600
-msgid "Displayed annotation types"
-msgstr "Tipos de anotación mostrados"
+#: ../lib/advene/gui/edit/elements.py:2108
+#, python-format
+msgid ""
+"The following attributes cannot be updated:\n"
+"\n"
+"%s"
+msgstr ""
+"Los siguientes atributos no pudieron ser actualizados:\n"
+"\n"
+"%s"
 
-#: ../lib/advene/gui/views/timeline.py:3625
-msgid "Relation type"
-msgstr "Tipo de relación"
+#: ../lib/advene/gui/edit/elements.py:2148
+#, python-format
+msgid ""
+"The following attributes could not be updated:\n"
+"\n"
+"%s"
+msgstr ""
+"Los siguientes atributos no pudieron ser actualizados:\n"
+"\n"
+"%s"
 
-#: ../lib/advene/gui/views/timeline.py:3625
-msgid "Display relation types"
-msgstr "Mostrar tipos de relación"
+#: ../lib/advene/gui/edit/elements.py:2165
+msgid "Attribute"
+msgstr "Atributo"
 
-#: ../lib/advene/gui/views/timeline.py:3626
-msgid "Relation content"
-msgstr "Contenido de relación"
+#: ../lib/advene/gui/edit/elements.py:2264
+msgid "Insert an element"
+msgstr "Insertar un elemento"
 
-#: ../lib/advene/gui/views/timeline.py:3626
-msgid "Display relation content"
-msgstr "Mostrar contenido de relación"
+#: ../lib/advene/gui/edit/elements.py:2265
+msgid "Choose the element to insert."
+msgstr "Elegir elemento a insertar"
 
-#: ../lib/advene/gui/views/timeline.py:3627 ../lib/advene/gui/popup.py:516
-msgid "Highlight"
-msgstr "Marcar"
+#: ../lib/advene/gui/edit/elements.py:2335
+#: ../lib/advene/gui/edit/elements.py:2378
+#, python-format
+msgid "Some tags contain invalid characters: %s"
+msgstr "Algunas etiquetas contienen caracteres no válidos: %s"
 
-#: ../lib/advene/gui/views/timeline.py:3627
-msgid "Highlight active annotations"
-msgstr "Realzar las anotaciones activas"
+#: ../lib/advene/gui/edit/elements.py:2358
+msgid "Tags:"
+msgstr "Etiquetas:"
 
-#: ../lib/advene/gui/views/timeline.py:3714
-msgid "Enter the tag for the selection"
-msgstr "Ingresar etiqueta para la selección"
+#: ../lib/advene/gui/edit/transcribe.py:68
+msgid "Transcription importer"
+msgstr "Importador de transcripciones"
 
-#: ../lib/advene/gui/views/tree.py:248
-msgid "No children in on_iter_children()!"
-msgstr "No hay hijos en on_iter_children()!"
+#: ../lib/advene/gui/edit/transcribe.py:79
+msgid "Note taking"
+msgstr "Tomar notas"
 
-#: ../lib/advene/gui/views/tree.py:263
-msgid "No children in on_iter_nth_child()"
-msgstr "No hay hijos en on_iter_nth_child()"
+#: ../lib/advene/gui/edit/transcribe.py:81
+msgid "Take notes on the fly as a timestamped transcription"
+msgstr "Importar anotaciones de una transcripción timestamped"
 
-#: ../lib/advene/gui/views/tree.py:317
-msgid "List of views"
-msgstr "Lista de vistas"
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Timestamp"
+msgstr "Marca de tiempo"
 
-#: ../lib/advene/gui/views/tree.py:318
-msgid "Static views"
-msgstr "Vistas estáticas"
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Click inserts timestamp marks"
+msgstr "Clic inserta marcas de tiempo"
 
-#: ../lib/advene/gui/views/tree.py:319
-msgid "Dynamic views"
-msgstr "Vistas dinámicas"
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "Insert on single-click"
+msgstr "Insertar con un solo clic"
 
-#: ../lib/advene/gui/views/tree.py:320
-msgid "Admin views"
-msgstr "Vistas e administración"
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "A single click will insert the mark (else a double click is needed)"
+msgstr "Un clic insertará la marca (si no se necesita un doble clic)"
 
-#: ../lib/advene/gui/views/tree.py:321
-msgid "Adhoc views"
-msgstr "Vistas adhoc"
+#: ../lib/advene/gui/edit/transcribe.py:150
+msgid "Play on scroll"
+msgstr "Reproducir en desplazamiento"
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
-msgid "Tree view"
-msgstr "Vista de arbol"
+#: ../lib/advene/gui/edit/transcribe.py:150
+msgid "Play the new position upon timestamp modification"
+msgstr ""
+"Reproduce la nueva posición después de la modificación de la marca de tiempo"
 
-#: ../lib/advene/gui/views/tree.py:453
-msgid "Package View"
-msgstr "VIsta de paquete"
+#: ../lib/advene/gui/edit/transcribe.py:151
+msgid "Generate empty annotations"
+msgstr "Genera anotaciones vacías"
 
-#: ../lib/advene/gui/views/editaccumulator.py:42
-msgid "EditAccumulator"
-msgstr "Editar acumulador"
+#: ../lib/advene/gui/edit/transcribe.py:151
+msgid "If checked, generate annotations for empty text"
+msgstr "Si está seleccionado, genera anotaciones para texto vacío"
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-#: ../lib/advene/gui/views/annotationdisplay.py:256
-msgid "Validate"
-msgstr "Validar"
+#: ../lib/advene/gui/edit/transcribe.py:152
+msgid "Reaction time"
+msgstr "Tiempo de reacción"
 
-#: ../lib/advene/gui/views/relation.py:68
-msgid "Relations view"
-msgstr "Vista de relaciones"
+#: ../lib/advene/gui/edit/transcribe.py:152
+msgid ""
+"Reaction time (substracted from current player time, except when paused.)"
+msgstr ""
+"Tiempo de reacción (restado del tiempo de reproducción actual, excepto "
+"cuando está en pausa)."
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4339
-msgid "Caption"
-msgstr "Subtítulos"
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Auto-insert"
+msgstr "Auto-insertar"
 
-#: ../lib/advene/gui/views/caption.py:32
-msgid "Display a text caption below the video output"
-msgstr "Muestra un subtítulo de texto debajo de la salida de video "
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Automatic timestamp mark insertion"
+msgstr "Inserción de marca de tiempo automática"
 
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4338
-msgid "Scroller"
-msgstr "Desplazador"
+#: ../lib/advene/gui/edit/transcribe.py:154
+msgid "Automatic insertion delay"
+msgstr "Retardo automático de inserción"
 
-#: ../lib/advene/gui/views/finder.py:329
-#, python-format
+#: ../lib/advene/gui/edit/transcribe.py:154
 msgid ""
-"View <b>%(title)s</b>\n"
-"Id: %(id)s"
+"If autoinsert is active, timestamp marks will be automatically inserted when "
+"text is entered after no interaction since this delay (in ms).\n"
+"1000 is typically a good value."
 msgstr ""
-"Vista <b>%(title)s</b>\n"
-"Id: %(id)s"
+"Si autoinsertar está activo, la marca de tiempo se insertará automáticamente "
+"cuando se introduce texto y no hay interacción desde este retardo (en ms).\n"
+"1000 es generalmente un buen valor."
 
-#: ../lib/advene/gui/views/finder.py:336
-msgid "Open in webbrowser"
-msgstr "Abrir en el navegador web"
+#: ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size for text (0 for standard size)"
+msgstr "Tamaño de la fuente para el texto (0 para el tamaño estándar)"
 
-#: ../lib/advene/gui/views/finder.py:337
-#, python-format
-msgid "View applied to %s\n"
-msgstr "Vista aplicada a %s\n"
+#: ../lib/advene/gui/edit/transcribe.py:215
+#: ../lib/advene/gui/edit/transcribe.py:219
+#: ../lib/advene/gui/edit/transcribe.py:377
+#: ../lib/advene/gui/edit/transcribe.py:381
+msgid "Invalid timestamp mark"
+msgstr "Marca no valida timestamp"
 
-#: ../lib/advene/gui/views/finder.py:342 ../lib/advene/gui/popup.py:496
-msgid "Activate"
-msgstr "Activar"
+#: ../lib/advene/gui/edit/transcribe.py:508
+msgid "Ignore the following text (toggle)"
+msgstr "Ignora el siguiente texto"
 
-#: ../lib/advene/gui/views/finder.py:345
-msgid "Open in GUI"
-msgstr "Abrir en la interfaz gráfica de usuario"
+#: ../lib/advene/gui/edit/transcribe.py:512
+msgid "Remove mark"
+msgstr "Eliminar marca. "
 
-#: ../lib/advene/gui/views/finder.py:347
-msgid "Unknown type of view??"
-msgstr "¿Tipo de vista desconocido?"
+#: ../lib/advene/gui/edit/transcribe.py:516
+msgid "Reaction-time offset"
+msgstr "Tiempo de reacción (compensación)"
 
-#: ../lib/advene/gui/views/finder.py:372
-msgid "Edit view"
-msgstr "Editar vista"
+#: ../lib/advene/gui/edit/transcribe.py:520
+msgid "-1 sec"
+msgstr "-1 sec"
 
-#: ../lib/advene/gui/views/finder.py:381
-msgid "Open view"
-msgstr "Abrir vista"
+#: ../lib/advene/gui/edit/transcribe.py:523
+msgid "-0.5 sec"
+msgstr "-0.5 sec"
 
-#: ../lib/advene/gui/views/finder.py:421 ../lib/advene/gui/views/finder.py:487
-#, python-format
-msgid ""
-"%(type)s <b>%(title)s</b>\n"
-"Id: %(id)s"
-msgstr ""
-"%(type)s <b>%(title)s</b>\n"
-"Id: %(id)s"
+#: ../lib/advene/gui/edit/transcribe.py:526
+msgid "-0.1 sec"
+msgstr "-0.1 sec"
 
-#: ../lib/advene/gui/views/finder.py:444
-msgid "Try to apply the query on..."
-msgstr "Trata de aplicar la consulta en..."
+#: ../lib/advene/gui/edit/transcribe.py:530
+msgid "+1 sec"
+msgstr "+1 sec"
 
-#: ../lib/advene/gui/views/finder.py:464 ../lib/advene/gui/popup.py:829
-msgid "the package"
-msgstr "el paquete"
+#: ../lib/advene/gui/edit/transcribe.py:533
+msgid "+0.5 sec"
+msgstr "+0.5 sec"
 
-#: ../lib/advene/gui/views/finder.py:465 ../lib/advene/gui/popup.py:830
-msgid "all annotations of the package"
-msgstr "todas las anotaciones del paquete"
+#: ../lib/advene/gui/edit/transcribe.py:536
+msgid "+0.1 sec"
+msgstr "+0.1 sec"
 
-#: ../lib/advene/gui/views/finder.py:466 ../lib/advene/gui/popup.py:831
-msgid "the first annotation of the package"
-msgstr "la primer anotación del paquete"
-
-#: ../lib/advene/gui/views/finder.py:509
-msgid "Edit resource"
-msgstr "Editar recurso"
-
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
-msgid "Package finder"
-msgstr "Buscador de paquetes"
-
-#: ../lib/advene/gui/views/finder.py:525
-msgid "Column-based package finder"
-msgstr "Buscador de paquete basado en columnas"
-
-#: ../lib/advene/gui/views/annotationdisplay.py:41
-msgid "AnnotationDisplay"
-msgstr "VisualizarAnotaciones"
-
-#: ../lib/advene/gui/views/annotationdisplay.py:43
-msgid "Display the contents of an annotation"
-msgstr "Visualizar el contenido de una anotación"
-
-#: ../lib/advene/gui/views/annotationdisplay.py:84
-msgid "No annotation"
-msgstr "No hay anotación"
-
-#: ../lib/advene/gui/views/annotationdisplay.py:110
-#, fuzzy, python-format
-msgid ""
-"Schema %(schema)s (id %(id)s)\n"
-"%(description)s\n"
-"%(stats)s"
-msgstr ""
-"Esquema %(schema)s\n"
-"%(description)s\n"
-"%(total)s\n"
-"Id: %(id)s"
-
-#: ../lib/advene/gui/views/annotationdisplay.py:231
-msgid "Screenshot"
-msgstr "Captura de pantalla"
-
-#: ../lib/advene/gui/views/__init__.py:193
-msgid "Invalid view id"
-msgstr "id vista no válida"
-
-#: ../lib/advene/gui/views/__init__.py:239
-#, python-format
-msgid "Cannot save default options: %s"
-msgstr "No se pueden guardar las opciones predeterminadas: %s"
+#: ../lib/advene/gui/edit/transcribe.py:627
+msgid "Invalid timestamp"
+msgstr "Timestamp no valida"
 
-#: ../lib/advene/gui/views/__init__.py:250
+#: ../lib/advene/gui/edit/transcribe.py:760
 #, python-format
-msgid "Default options saved for view %s"
-msgstr "Opciones predeterminadas para vistas almacenadas %s"
+msgid "Invalid timestamp mark in conversion: %s"
+msgstr "Marca del tiempo no válida en la conversión: %s"
 
-#: ../lib/advene/gui/views/__init__.py:282
+#: ../lib/advene/gui/edit/transcribe.py:877
 #, python-format
-msgid "Saving %s"
-msgstr "Guardando %s"
+msgid "Cannot save the file: %s"
+msgstr "No se puede guardar el archivo: %s"
 
-#: ../lib/advene/gui/views/__init__.py:285
-msgid "Enter a view name to save this parametered view"
-msgstr "Ingresar un nombre de vista para almacenar esta vista con parámetros"
+#: ../lib/advene/gui/edit/transcribe.py:888
+#: ../lib/advene/gui/edit/transcribe.py:972
+msgid "This will overwrite the current textual content. Are you sure?"
+msgstr "Esto va a sobrescribir el contenido actual textual. ¿Estás seguro?"
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4630
-#, python-format
-msgid "Error: the identifier %s contains invalid characters."
-msgstr "Error: el identificador %s contiene caracteres no válidos."
+#: ../lib/advene/gui/edit/transcribe.py:891
+msgid "Select transcription file to load"
+msgstr "Selecciona un archivo de transcripción para cargar"
 
-#: ../lib/advene/gui/views/__init__.py:303
+#: ../lib/advene/gui/edit/transcribe.py:908
 #, python-format
-msgid "Error: the view %s is not an adhoc view."
-msgstr "Error: la vista %s no es una vista adhoc."
+msgid "Cannot open %(filename)s: %(error)s"
+msgstr "No se puede abrir %(filename)s: %(error)s"
 
-#: ../lib/advene/gui/views/__init__.py:328
-msgid "HTML export"
-msgstr "Exportar HTML"
+#: ../lib/advene/gui/edit/transcribe.py:957
+msgid "Cannot import annotations: no existing interface"
+msgstr "No se pueden importar las anotaciones: no existe interfaz"
 
-#: ../lib/advene/gui/views/__init__.py:329
-msgid "Specify a name for the export view"
-msgstr "Especificar un nombre para la vista de exportar"
+#: ../lib/advene/gui/edit/transcribe.py:959
+msgid "Select the annotation type to import"
+msgstr "Selecciona el tipo de anotación a importar"
 
-#: ../lib/advene/gui/views/__init__.py:348
+#: ../lib/advene/gui/edit/transcribe.py:968
 #, python-format
-msgid ""
-"View successfully exported as %s.\n"
-"Open it in the web browser ?"
-msgstr ""
-"La vista se exportó satisfactoriamente como %s.\n"
-"¿Abrirla en el navegador web?"
+msgid "There are no annotations of type %s"
+msgstr "No hay anotaciones del tipo %s"
 
-#: ../lib/advene/gui/views/__init__.py:427
-msgid "Actions"
-msgstr "Acciones"
+#: ../lib/advene/gui/edit/transcribe.py:997
+msgid "Cannot convert the data: no associated package"
+msgstr "No se pueden convertir los datos: no hay un paquete asociado"
 
-#: ../lib/advene/gui/views/__init__.py:452
-msgid "Click or drag-and-drop to reattach view"
-msgstr "Clic o arrastra-y-suelta para volver a adjuntar la vista"
+#: ../lib/advene/gui/edit/transcribe.py:1000
+msgid "Converting transcription"
+msgstr "Transcripción de conversión"
 
-#: ../lib/advene/gui/views/table.py:55
-msgid "Annotation table view"
-msgstr "Vista de tabla de las anotaciones"
+#: ../lib/advene/gui/edit/transcribe.py:1006
+msgid "Choose the annotation-type where to create annotations.\n"
+msgstr "Elige el tipo de anotación dónde crear anotaciones.\n"
 
-#: ../lib/advene/gui/views/table.py:57
-msgid "Display annotations in a table"
-msgstr "Mostrar las anotaciones en una tabla"
+#: ../lib/advene/gui/edit/transcribe.py:1014
+msgid "Delete existing annotations in this type"
+msgstr "Elimina las anotaciones existentes en este tipo"
 
-#: ../lib/advene/gui/views/table.py:227 ../lib/advene/gui/views/table.py:452
-msgid "Snapshot"
-msgstr "Capturas"
+#: ../lib/advene/gui/edit/transcribe.py:1037
+msgid "Select type"
+msgstr "Selecciona tipo"
 
-#: ../lib/advene/gui/views/table.py:254 ../lib/advene/gui/main.py:4178
-msgid "Duration"
-msgstr "Duración"
+#: ../lib/advene/gui/edit/transcribe.py:1041
+msgid "You want to create a new type. Please specify its schema and title."
+msgstr ""
+"Quieres crear un nuevo tipo. Por favor especifica su esquema y título. "
 
-#: ../lib/advene/gui/views/table.py:382 ../lib/advene/gui/views/table.py:511
-msgid "Export data to file..."
-msgstr "Exportar datos a un archivo..."
+#: ../lib/advene/gui/edit/transcribe.py:1053
+msgid "Containing schema"
+msgstr "Esquema contenedor"
 
-#: ../lib/advene/gui/views/table.py:391 ../lib/advene/gui/views/table.py:520
-#, python-format
-msgid "Error while exporting data to %(filename)s: %(error)s"
-msgstr "Error mientras se exportaban los datos a %(filename)s: %(error)s"
+#: ../lib/advene/gui/edit/transcribe.py:1066
+msgid "Export options"
+msgstr "Opciones para exportar"
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "id"
-msgstr "id"
+#: ../lib/advene/gui/edit/transcribe.py:1071
+msgid "Generate annotations for empty contents"
+msgstr "Generar anotaciones para contenido vacío"
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "type"
-msgstr "tipo"
+#: ../lib/advene/gui/edit/transcribe.py:1096
+#, python-format
+msgid "The %s identifier already exists. Choose another one."
+msgstr "El %s identificador ya existe. Elegir otro. "
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "begin"
-msgstr "inicio"
+#: ../lib/advene/gui/edit/transcribe.py:1135
+msgid "Notes converted"
+msgstr "Notas convertidas"
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "end"
-msgstr "fin"
+#: ../lib/advene/gui/edit/transcribe.py:1182
+msgid "Open"
+msgstr "Abrir"
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "content"
-msgstr "contenido"
+#: ../lib/advene/gui/edit/transcribe.py:1183
+msgid "Save"
+msgstr "Guardar"
 
-#: ../lib/advene/gui/views/table.py:460
-msgid "Generic table view"
-msgstr "Vista de tabla genérica"
+#: ../lib/advene/gui/edit/transcribe.py:1184
+msgid "Save As"
+msgstr "Guardar como"
 
-#: ../lib/advene/gui/views/table.py:462
-msgid "Display Advene elements in a table."
-msgstr "Mostrar los elementos de Advene en tabla"
+#: ../lib/advene/gui/edit/transcribe.py:1185
+msgid "Import"
+msgstr "Importar"
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element title"
-msgstr "Título del elemento"
+#: ../lib/advene/gui/edit/transcribe.py:1185
+msgid "Import from annotations"
+msgstr "Importar de anotaciones"
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element type"
-msgstr "Tipo del elemento"
+#: ../lib/advene/gui/edit/transcribe.py:1186
+msgid "Convert"
+msgstr "Convertir "
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element id"
-msgstr "Id del elemento"
+#: ../lib/advene/gui/edit/transcribe.py:1186
+msgid "Convert to annotations"
+msgstr "Convertir a anotaciones"
 
-#: ../lib/advene/gui/widget.py:327
-#, python-format
-msgid "Set of %s annotations"
-msgstr "Conjunto de %s anotaciones"
+#: ../lib/advene/gui/edit/transcribe.py:1188 ../lib/advene/rules/actions.py:685
+msgid "Center"
+msgstr "Centrar"
 
-#: ../lib/advene/gui/widget.py:1067
-msgid "Save as..."
-msgstr "Guardar como..."
+#: ../lib/advene/gui/edit/transcribe.py:1188
+msgid "Center on the current mark"
+msgstr "Centrar en la marca actual"
 
-#: ../lib/advene/gui/widget.py:1072
-msgid "Use current player position"
-msgstr "Utiliza la posición actual del reproductor"
+#: ../lib/advene/gui/edit/transcribe.py:1189
+msgid "Find"
+msgstr "Encontrar"
 
-#: ../lib/advene/gui/widget.py:1078
-msgid "Adjust timestamp"
-msgstr "Ajustar la marca de tiempo"
+#: ../lib/advene/gui/edit/transcribe.py:1189
+msgid "Search a string"
+msgstr "Buscar una cadena de texto"
 
-#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
-msgid "_Select player"
-msgstr "_Selecciona reproductor"
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Scale"
+msgstr "Escala"
 
-#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
-msgid "_View"
-msgstr "_Vista"
+#: ../lib/advene/gui/edit/transcribe.py:1213
+msgid "Automatically scroll to the mark position when playing"
+msgstr ""
+"Desplaza automáticamente a la posición de la marca mientras se reproduce."
 
-#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
-msgid "Packages"
-msgstr "Paquetes"
+#: ../lib/advene/gui/edit/transcribe.py:1215
+msgid "Autoscroll"
+msgstr "Auto desplazar"
 
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
-msgid "Open recent"
-msgstr "Abrir recientes"
+#: ../lib/advene/gui/edit/transcribe.py:1222
+msgid "Autoinsert"
+msgstr "Auto insertar"
 
-#: ../lib/advene/gui/main.py:239
-msgid "Input from the keyboard (function keys)"
-msgstr "Ingresar del teclado (teclas de función)"
+#: ../lib/advene/gui/edit/transcribe.py:1224
+msgid "Automatically insert marks"
+msgstr "Inserta marcas automáticamente"
 
-#: ../lib/advene/gui/main.py:243
-msgid "_File"
-msgstr "_Archivo"
+#: ../lib/advene/core/webcherry.py:51
+msgid "The webserver requires version 3.0 of CherryPy at least."
+msgstr "El servidor web require como mínimo la versión 3.0 de CherryPy."
 
-#: ../lib/advene/gui/main.py:244
-msgid "_New package"
-msgstr "_Nuevo paquete"
+#: ../lib/advene/core/webcherry.py:167
+#, python-format
+msgid ""
+"\n"
+"            <p>\n"
+"            <a href=\"/admin\">Server administration</a> |\n"
+"            <a href=\"/media\">Media control</a> |\n"
+"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
+"            </p>\n"
+"            Location: %(locationbar)s\n"
+"            <hr>\n"
+"            "
+msgstr ""
+"\n"
+"            <p>\n"
+"            <a href=\"/admin\">Administracion de servidor</a> |\n"
+"            <a href=\"/media\">Control media</a> |\n"
+"            <a href=\"%(path)s?mode=raw\">Vista inicial</a>\n"
+"            </p>\n"
+"            Locacion: %(locationbar)s\n"
+"            <hr>\n"
+"            "
 
-#: ../lib/advene/gui/main.py:244
-msgid "Create a new package"
-msgstr "Crea un nuevo paquete"
+#: ../lib/advene/core/webcherry.py:227
+msgid "Unspecified Error"
+msgstr "Error no especificado"
 
-#: ../lib/advene/gui/main.py:245
-msgid "_Open package"
-msgstr "_Abrir paquete"
+#: ../lib/advene/core/webcherry.py:228
+#, python-format
+msgid ""
+"\n"
+"        <h1>Error</h1>\n"
+"        <p>An error occurred:</p>\n"
+"        %s\n"
+"        "
+msgstr ""
+"\n"
+"        <h1>Error</h1>\n"
+"        <p>Un error ocurrió:</p>\n"
+"        %s\n"
+"        "
 
-#: ../lib/advene/gui/main.py:245
-msgid "Open a package"
-msgstr "Abrir un paquete"
+#: ../lib/advene/core/webcherry.py:261
+msgid "<h1>No available mediaplayer</h1>"
+msgstr "<h1>No hay reproductor media disponible</h1>"
 
-#: ../lib/advene/gui/main.py:246
-msgid "Show recently opened packages"
-msgstr "Mostrar paquetes recientemente abiertos"
+#: ../lib/advene/core/webcherry.py:265
+#, python-format
+msgid ""
+"\n"
+"            <h1>Current STBV: %(currentstbv)s</h1>\n"
+"\n"
+"            <h1>Player status</h1>\n"
+"            <table border=\"1\">\n"
+"            <tr>\n"
+"            <td>Current position</td><td>%(position)s</td>\n"
+"            <td>Duration</td><td>%(duration)s</td>\n"
+"            <td>Player status</td><td>%(status)s</td>\n"
+"            </tr>\n"
+"            </table>\n"
+"            "
+msgstr ""
+"\n"
+"            <h1>STBV Actual: %(currentstbv)s</h1>\n"
+"\n"
+"            <h1>Estado del reproductor</h1>\n"
+"            <table border=\"1\">\n"
+"            <tr>\n"
+"            <td>Posición actual</td><td>%(position)s</td>\n"
+"            <td>Tamaño de entrada</td><td>%(duration)s</td>\n"
+"            <td>Estado del reproductor</td><td>%(status)s</td>\n"
+"            </tr>\n"
+"            </table>\n"
+"            "
 
-#: ../lib/advene/gui/main.py:247
-msgid "_Save package"
-msgstr "_Guardar paquete"
+#: ../lib/advene/core/webcherry.py:284
+msgid "<h1>No playlist</h1>"
+msgstr "<h1>No hay lista de reproduccion</h1>"
 
-#: ../lib/advene/gui/main.py:247
-msgid "Save the package"
-msgstr "Guardar el paquete"
+#: ../lib/advene/core/webcherry.py:286
+#, python-format
+msgid ""
+"<h1>Current playlist</h1>\n"
+"                <ul>%s</ul>"
+msgstr ""
+"<h1>Lista de reproduccion actual</h1>\n"
+"                <ul>%s</ul>"
 
-#: ../lib/advene/gui/main.py:248
-msgid "Save package as..."
-msgstr "Guardar paquete como..."
+#: ../lib/advene/core/webcherry.py:288
+msgid ""
+"\n"
+"                <form action=\"/media/play\" method=\"GET\">\n"
+"                Starting pos: <input type=\"text\" name=\"position\" value="
+"\"0\">\n"
+"                <input type=\"submit\" value=\"Play\">\n"
+"                </form>\n"
+"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
+"\">Pause</a><br>\n"
+"                "
+msgstr ""
+"\n"
+"                <form action=\"/media/play\" method=\"GET\">\n"
+"                Posicion inicial: <input type=\"text\" name=\"position\" "
+"value=\"0\">\n"
+"                <input type=\"submit\" value=\"Play\">\n"
+"                </form>\n"
+"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
+"\">Pausa</a><br>\n"
+"                "
 
-#: ../lib/advene/gui/main.py:248
-msgid "Save the package as..."
-msgstr "Guardar el paquete como..."
+#: ../lib/advene/core/webcherry.py:295
+msgid ""
+"<hr />\n"
+"            <form action=\"/media/load\" method=\"GET\">\n"
+"            Add a new file (<em>dvd</em> to play a DVD):\n"
+"            <input type=\"text\" name=\"filename\">\n"
+"            <input type=\"submit\" value=\"Add\">\n"
+"            </form>"
+msgstr ""
+"<hr />\n"
+"            <form action=\"/media/load\" method=\"GET\">\n"
+"            Anadir un nuevo archivo(<em>dvd</em> to play a DVD):\n"
+"            <input type=\"text\" name=\"filename\">\n"
+"            <input type=\"submit\" value=\"Add\">\n"
+"            </form>"
 
-#: ../lib/advene/gui/main.py:249
-msgid "Close package"
-msgstr "Cerrar paquete"
+#: ../lib/advene/core/webcherry.py:301
+msgid ""
+"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
+msgstr ""
+"<h3><a href=\"/media/snapshot\">Accesar a los paquetes de fotos actuales </"
+"h3>"
 
-#: ../lib/advene/gui/main.py:249
-msgid "Close the package"
-msgstr "Cerrar el paquete"
+#: ../lib/advene/core/webcherry.py:310
+#, python-format
+msgid "Unknown STBV identifier: %s"
+msgstr "Identificador STBV desconocido: %s"
 
-#: ../lib/advene/gui/main.py:251
-msgid "Save session"
-msgstr "Guardar sesión"
+#: ../lib/advene/core/webcherry.py:385
+msgid "Media information"
+msgstr "Informacion Media"
 
-#: ../lib/advene/gui/main.py:251
-msgid "Save the current session (list of opened packages)"
-msgstr "Guardar la sesión actual (lista de paquetes abiertos)"
+#: ../lib/advene/core/webcherry.py:398
+msgid "File added"
+msgstr "Archivo anadido"
 
-#: ../lib/advene/gui/main.py:252
-msgid "Save workspace"
-msgstr "Guardar espacio de trabajo"
+#: ../lib/advene/core/webcherry.py:399
+#, python-format
+msgid "<p><strong>%s has been added to the playlist</strong></p>"
+msgstr "<p><strong>%s ha sido anadida a la lista de reproduccion</strong></p>"
 
-#: ../lib/advene/gui/main.py:253
-msgid "...as package view"
-msgstr "...como paquete de vista"
+#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
+msgid "Access to packages snapshots"
+msgstr "Accesar a paquetes de fotografias"
 
-#: ../lib/advene/gui/main.py:254
-msgid "...as standard workspace"
-msgstr "...como espacio de trabajo estándar"
+#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
+msgid "Unknown package alias"
+msgstr "Alias de paquete desconocido"
 
-#: ../lib/advene/gui/main.py:254
-msgid "Use the current layout as standard workspace in the future"
-msgstr ""
-"Usa el despliegue actual como espacio de trabajo predeterminado en el futuro"
+#: ../lib/advene/core/webcherry.py:426
+#, python-format
+msgid "Available snapshots for %s"
+msgstr "Fotos disponibles para %s"
 
-#: ../lib/advene/gui/main.py:256
-msgid "Associate a video _File"
-msgstr "Asociar un archivo de video _F"
+#: ../lib/advene/core/webcherry.py:432
+#, python-format
+msgid ""
+"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
+"a></p>"
+msgstr ""
+"<p><a href=\"/media/snapshot/%s?mode=inline\">Mostrar con imagenes en linea</"
+"a></p>"
 
-#: ../lib/advene/gui/main.py:256
-msgid "Associate a video file"
-msgstr "Asociar un archivo de video"
+#: ../lib/advene/core/webcherry.py:439
+msgid "Done"
+msgstr "Hecho"
 
-#: ../lib/advene/gui/main.py:257
-msgid "Associate a _DVD"
-msgstr "Asociar un _DVD"
+#: ../lib/advene/core/webcherry.py:441
+msgid "Pending"
+msgstr "Pendiente"
 
-#: ../lib/advene/gui/main.py:257
-msgid "Associate a chapter from a DVD"
-msgstr "Asociar un capítulo de un DVD"
+#: ../lib/advene/core/webcherry.py:487
+#, python-format
+msgid "Unknown annotation id: %s"
+msgstr "Id de anotación desconocido: %s"
 
-#: ../lib/advene/gui/main.py:258
-msgid "Associate a _Video stream"
-msgstr "Asociar una corriente de _Video"
+#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
+#, python-format
+msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
+msgstr "No se puede activar stbvid %(stbvid)s: %(error)s"
 
-#: ../lib/advene/gui/main.py:258
-msgid "Enter a video stream address"
-msgstr "Ingresar una dirección de flujo de video"
+#: ../lib/advene/core/webcherry.py:675
+msgid "<p>No GUI is available."
+msgstr "<p>No hay GUI disponible."
 
-#: ../lib/advene/gui/main.py:260
-msgid "_Import File"
-msgstr "_Importar Archivo"
+#: ../lib/advene/core/webcherry.py:677
+#, python-format
+msgid "<p>Opened adhoc views: %s</p>"
+msgstr "<p>Vistas adhoc actuales: %s</p>"
 
-#: ../lib/advene/gui/main.py:260
-msgid "Import data from an external source"
-msgstr "Importar datos de una fuente externa"
+#: ../lib/advene/core/webcherry.py:678
+msgid "<p>Available adhoc views:</p><ul>"
+msgstr "<p>Vistas adhoc disponibles:</p><ul>"
 
-#: ../lib/advene/gui/main.py:261
-msgid "_Process video"
-msgstr "_Procesar video"
+#: ../lib/advene/core/webcherry.py:699
+#, python-format
+msgid "<p>Current stbv: %s</p>"
+msgstr "<p>STBV actual: %s</p>"
 
-#: ../lib/advene/gui/main.py:261
-msgid "Import data from video processing algorithms"
-msgstr "Importar datos de algoritmos de procesamiento de vídeo"
+#: ../lib/advene/core/webcherry.py:700
+#, python-format
+msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
+msgstr "<p>Puedes activar el siguiente STBV:</p><ul>%s</ul>"
 
-#: ../lib/advene/gui/main.py:263
-msgid "Merge package"
-msgstr "Unir paquete"
+#: ../lib/advene/core/webcherry.py:702
+msgid "Activate and play"
+msgstr "Activa y reproduce"
 
-#: ../lib/advene/gui/main.py:263
-msgid "Merge elements from another package"
-msgstr "Editar elementos importados de otros paquetes"
+#: ../lib/advene/core/webcherry.py:708
+msgid "Application information"
+msgstr "Informacion de aplicacion"
 
-#: ../lib/advene/gui/main.py:264
-msgid "Import _DVD chapters"
-msgstr "Importar capitulos del DVD"
+#: ../lib/advene/core/webcherry.py:778
+msgid "Missing element id parameter"
+msgstr "Hace falta el elemento parámetro id"
 
-#: ../lib/advene/gui/main.py:264
-msgid "Create annotations based on DVD chapters"
-msgstr "Crear anotaciones basadas en los capitulos del DVD"
+#: ../lib/advene/core/webcherry.py:782
+#, python-format
+msgid "No existing element with id %s"
+msgstr "No existe el elemento con el id %s"
 
-#: ../lib/advene/gui/main.py:266
-msgid "_Export..."
-msgstr "_Exportar..."
+#: ../lib/advene/core/webcherry.py:791
+#, python-format
+msgid "<p>The GUI view %s does not exist.</p>"
+msgstr "<p>La vista GUI %s no existe.</p>"
 
-#: ../lib/advene/gui/main.py:266
-msgid "Export data to another format"
-msgstr "Importar datos de una fuente externa"
+#: ../lib/advene/core/webcherry.py:798
+msgid "Invalid request"
+msgstr "Petición no válida"
 
-#: ../lib/advene/gui/main.py:267
-msgid "_Website export..."
-msgstr "_Exportar sitio web..."
+#: ../lib/advene/core/webcherry.py:803
+msgid "Invalid configuration variable name"
+msgstr "Nombre de variable de configuración no válido"
 
-#: ../lib/advene/gui/main.py:267
-msgid "Export views to a website"
-msgstr "Exportar vistas a un sitio web"
+#: ../lib/advene/core/webcherry.py:815
+msgid "Invalid value"
+msgstr "Valor no válido"
 
-#: ../lib/advene/gui/main.py:269
-msgid "_Quit"
-msgstr "Salir _Q"
-
-#: ../lib/advene/gui/main.py:271
-msgid "_Edit"
-msgstr "_Editar"
-
-#: ../lib/advene/gui/main.py:272
-msgid "_Undo"
-msgstr "_Deshacer"
-
-#: ../lib/advene/gui/main.py:273
-msgid "_Find"
-msgstr "Encontrar _F"
+#: ../lib/advene/core/webcherry.py:819
+#, python-format
+msgid "Unsupported method %s"
+msgstr "Método no soportado %s"
 
-#: ../lib/advene/gui/main.py:274
-msgid "_Delete"
-msgstr "Eliminar _D"
+#: ../lib/advene/core/webcherry.py:845
+#, python-format
+msgid ""
+"\n"
+"        <h1>Authorized hosts</h1>\n"
+"        <table border=\"1\">\n"
+"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
+"        %s\n"
+"        </table>\n"
+"        <form method=\"GET\">\n"
+"        Add a new hostname to the list :<br>\n"
+"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
+"\"Add\">\n"
+"        </form>\n"
+"        "
+msgstr ""
+"\n"
+"        <h1>Hosts autorizados</h1>\n"
+"        <table border=\"1\">\n"
+"        <tr><th>Host</th><th>Dir. IP </th><th>Acción</th></tr>\n"
+"        %s\n"
+"        </table>\n"
+"        <form method=\"GET\">\n"
+"        Añade un nuevo nombre de host a la lista :<br>\n"
+"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
+"\"Add\">\n"
+"        </form>\n"
+"        "
 
-#: ../lib/advene/gui/main.py:275
-msgid "Create"
-msgstr "Crear"
+#: ../lib/advene/core/webcherry.py:859
+msgid "Access control"
+msgstr "Control de acceso"
 
-#: ../lib/advene/gui/main.py:284
-msgid "P_ackage properties"
-msgstr "P_ropiedades del paquete"
+#: ../lib/advene/core/webcherry.py:864
+msgid "Access control - add a hostname"
+msgstr "Control de acceso - Agrega un nombre de equipo"
 
-#: ../lib/advene/gui/main.py:284
-msgid "Edit package properties"
-msgstr "Editar las propiedades del paquete"
+#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
+#, python-format
+msgid "<strong>Error: %s is an invalid hostname.</strong>"
+msgstr "<strong>Error: %s es un hostname no valido.</strong>"
 
-#: ../lib/advene/gui/main.py:285
-msgid "P_references"
-msgstr "P_referencias"
+#: ../lib/advene/core/webcherry.py:875
+#, python-format
+msgid "<p>Added %s to authorized hosts list.</p>"
+msgstr "<p>Añadido %s a la lista de hosts autorizados.</p>"
 
-#: ../lib/advene/gui/main.py:285
-msgid "Interface preferences"
-msgstr "Preferencias de interfaz"
+#: ../lib/advene/core/webcherry.py:881
+msgid "Access control - delete a hostname"
+msgstr "Control de acceso - Elimina un nombre de equipo"
 
-#: ../lib/advene/gui/main.py:289
-msgid "_Start Web Browser"
-msgstr "_Inicia el explorador Web"
+#: ../lib/advene/core/webcherry.py:889
+msgid "<strong>Cannot remove the localhost access.</strong>"
+msgstr ""
+"<strong>No se puede remover el acceso al equipo local - localhost</strong>"
 
-#: ../lib/advene/gui/main.py:289
-msgid "Start the web browser"
-msgstr "_Inicia el explorador Web"
+#: ../lib/advene/core/webcherry.py:894
+#, python-format
+msgid "<p>Removed %s from authorized hosts list.</p>"
+msgstr "<p>Removido %s de la lista de hosts autorizados.</p>"
 
-#: ../lib/advene/gui/main.py:291
-msgid "Simplify interface"
-msgstr "Simplificar interfaz"
+#: ../lib/advene/core/webcherry.py:896
+#, python-format
+msgid "<p>%s is not in authorized hosts list.</p>"
+msgstr "<p>%s no se encuentra en la lista de equipos autorizados.</p>"
 
-#: ../lib/advene/gui/main.py:291
-msgid "Simplify the application interface (toggle)"
-msgstr "Simplificar la interfaz de la aplicación (conmutar)"
+#: ../lib/advene/core/webcherry.py:945
+msgid "Server Administration"
+msgstr "Administracion del Servidor"
 
-#: ../lib/advene/gui/main.py:292
-msgid "Evaluator"
-msgstr "Evaluador"
+#: ../lib/advene/core/webcherry.py:953
+#, python-format
+msgid ""
+"\n"
+"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
+"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
+"        <p><a href=\"/action\">List available actions</a></p>\n"
+"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
+"        <p><a href=\"/media\">Media control</a></p>\n"
+"        <p><a href=\"/application\">Display GUI status</a></p>\n"
+"        <p><a href=\"/admin/list\">List available files</a></p>\n"
+"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
+"p>\n"
+"        <p>Display mode : %(displaymode)s</p>\n"
+"        <hr>\n"
+"        <p>Load a package :\n"
+"        <form action=\"/admin/load\" method=\"GET\">\n"
+"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
+"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
+"        <input type=\"submit\" value=\"Load\" />\n"
+"        </form>\n"
+"        </body></html>\n"
+"        "
+msgstr ""
+"\n"
+"        <p><a href=\"/admin/access\">Actualizar la lista de acceso</a></p>\n"
+"        <p><a href=\"/admin/methods\">Lista de los métodos TALES "
+"disponibles</a></p>\n"
+"        <p><a href=\"/action\">Lista de acciones disponibles</a></p>\n"
+"        <p><a href=\"/admin/reset\">Restablecer el servidor</a></p>\n"
+"        <p><a href=\"/media\">Control de Medios</a></p>\n"
+"        <p><a href=\"/application\">Mostrar el estado de la interfaz gráfica "
+"de usuario</a></p>\n"
+"        <p><a href=\"/admin/list\">Lista los archivos disponibles</a></p>\n"
+"        <p><a href=\"/packages\">Lista los paquetes cargados</a> "
+"(%(packagelist)s)</p>\n"
+"        <p>Modo de visualización : %(displaymode)s</p>\n"
+"        <hr>\n"
+"        <p>Cargar un paquete :\n"
+"        <form action=\"/admin/load\" method=\"GET\">\n"
+"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
+"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
+"        <input type=\"submit\" value=\"Cargar\" />\n"
+"        </form>\n"
+"        </body></html>\n"
+"        "
 
-#: ../lib/advene/gui/main.py:292
-msgid "Open python evaluator window"
-msgstr "Abre la ventana del evaluador de Python"
+#: ../lib/advene/core/webcherry.py:983
+msgid "Available files"
+msgstr "Archivos disponibles"
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4022
-msgid "Webserver log"
-msgstr "Bitácora del servidor web"
+#: ../lib/advene/core/webcherry.py:1009
+msgid "You should specify an alias"
+msgstr "Debes de especificar un alias"
 
-#: ../lib/advene/gui/main.py:296
-msgid "_Player"
-msgstr "_Reproductor"
+#: ../lib/advene/core/webcherry.py:1014
+msgid "You should specify an uri"
+msgstr "Debes de especificar una uri"
 
-#: ../lib/advene/gui/main.py:297
-msgid "Go to _Time"
-msgstr "Ir al _Tiempo"
+#: ../lib/advene/core/webcherry.py:1020
+#, python-format
+msgid "Package %s loaded"
+msgstr "Paquete %s cargado"
 
-#: ../lib/advene/gui/main.py:297
-msgid "Goto a specified time code"
-msgstr "Ir a un código de tiempo especificado"
+#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
+#, python-format
+msgid ""
+"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
+"the <a href=\"/packages\">package list</a>."
+msgstr ""
+"<p>Ir al <a href=\"/packages/%(alias)s\">%(alias)s</a> paquete o a la <a "
+"href=\"/packages\">lista de paquetes</a>."
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save _ImageCache"
-msgstr "Guarda _ImagenCache"
+#: ../lib/advene/core/webcherry.py:1024
+#, python-format
+msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
+msgstr "<p>No se puede cargar el paquete %(alias)s : %(error)s</p>"
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save the contents of the ImageCache to disk"
-msgstr "Guarda los contenidos de la ImagenCache a disco"
+#: ../lib/advene/core/webcherry.py:1035
+#, python-format
+msgid "Package %s deleted"
+msgstr "Paquete %s borrado"
 
-#: ../lib/advene/gui/main.py:299
-msgid "Reset ImageCache"
-msgstr "Restablecer ImageCache"
+#: ../lib/advene/core/webcherry.py:1036
+msgid "<p>Go to the <a href=\"/packages\">package list</a>."
+msgstr "<p>Ir a la<a href=\"/packages\">lista de paquetes</a>."
 
-#: ../lib/advene/gui/main.py:299
-msgid "Reset the ImageCache"
-msgstr "Restablecer la ImageCache"
+#: ../lib/advene/core/webcherry.py:1039
+#, python-format
+msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
+msgstr "<p>No se puede borrar el paquete %(alias)s : %(error)s</p>"
 
-#: ../lib/advene/gui/main.py:300
-msgid "_Restart player"
-msgstr "_Reinicia reproductor"
+#: ../lib/advene/core/webcherry.py:1056
+#, python-format
+msgid "Package %s saved"
+msgstr "Paquete %s guardado"
 
-#: ../lib/advene/gui/main.py:300
-msgid "Restart the player"
-msgstr "Reiniciar el reproductor"
+#: ../lib/advene/core/webcherry.py:1060
+#, python-format
+msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
+msgstr "<p>No se puede guardar el paquete %(alias)s : %(error)s</p>"
 
-#: ../lib/advene/gui/main.py:302
-msgid "Update annotation screenshots"
-msgstr "Actualizar las capturas de anotaciones"
+#: ../lib/advene/core/webcherry.py:1070
+msgid "Server reset"
+msgstr "Reajuste del servidor (Reset)"
 
-#: ../lib/advene/gui/main.py:302
-msgid "Update screenshots for annotation bounds"
-msgstr "Actualizar las capturas de los límites de anotación"
+#: ../lib/advene/core/webcherry.py:1076
+msgid "Available TALES methods"
+msgstr "Métodos TALES disponibles"
 
-#: ../lib/advene/gui/main.py:303
-msgid "Detect shots"
-msgstr "Detectar tomas"
+#: ../lib/advene/core/webcherry.py:1117
+msgid "Loaded package(s)"
+msgstr "Paquete(s) cargados"
 
-#: ../lib/advene/gui/main.py:303
-msgid "Automatically detect shots"
-msgstr "Detectar tomas automáticamente"
+#: ../lib/advene/core/webcherry.py:1119
+msgid ""
+"\n"
+"        <h1>Loaded package(s)</h1>\n"
+"        <table border=\"1\" width=\"50%\">\n"
+"        <tr>\n"
+"        <th>Alias</th>\n"
+"        <th>Action</th>\n"
+"        <th>URI</th>\n"
+"        <th>Annotations</th>\n"
+"        </tr>\n"
+"        "
+msgstr ""
+"\n"
+"        <h1>Paquete(s) cargado(s)</h1>\n"
+"        <table border=\"1\" width=\"50%\">\n"
+"        <tr>\n"
+"        <th>Alias</th>\n"
+"        <th>Acción</th>\n"
+"        <th>URI</th>\n"
+"        <th>Anotaciones</th>\n"
+"        </tr>\n"
+"        "
 
-#: ../lib/advene/gui/main.py:304
-msgid "Select the player plugin"
-msgstr "Selecciona el plugin del reproductor"
+#: ../lib/advene/core/webcherry.py:1131
+#, python-format
+msgid ""
+"<tr>\n"
+"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
+"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
+"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
+"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
+"            <td>%(uri)s</td>\n"
+"            <td>%(size)d</td>\n"
+"            </tr>\n"
+"            "
+msgstr ""
+"<tr>\n"
+"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
+"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
+"%(uri)s\">Volver a cargar</a>|<a href=\"/admin/delete?alias=%(alias)s"
+"\">Tirar</a>|<a href=\"/admin/save?alias=%(alias)s\">Guardar</a></td>\n"
+"            <td>%(uri)s</td>\n"
+"            <td>%(size)d</td>\n"
+"            </tr>\n"
+"            "
 
-#: ../lib/advene/gui/main.py:307
-msgid "No package"
-msgstr "No paquete"
+#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
+#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
+#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
+#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
+#: ../lib/advene/core/webcherry.py:2039
+msgid "Error"
+msgstr "Error"
 
-#: ../lib/advene/gui/main.py:309
-msgid "_Help"
-msgstr "_Ayuda"
+#: ../lib/advene/core/webcherry.py:1205
+#, python-format
+msgid "The TALES expression %s is not valid."
+msgstr "La expresion TALES %s no es válida."
 
-#: ../lib/advene/gui/main.py:310
-msgid "Help"
-msgstr "Ayuda"
+#: ../lib/advene/core/webcherry.py:1256
+msgid "Content mode not available on non-content data"
+msgstr "El modo de contenido no esta disponible en data sin contenido "
 
-#: ../lib/advene/gui/main.py:311
-msgid "Get support"
-msgstr "Obtener soporte"
+#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
+#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
+#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
+#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
+#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
+#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
+msgid "<h1>Error</h1>"
+msgstr "<h1>Error</h1>"
 
-#: ../lib/advene/gui/main.py:312
-msgid "Check for updates"
-msgstr "Revisar actualizaciones"
+#: ../lib/advene/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
+#, python-format
+msgid ""
+"<p>There was an error in the template code.</p>\n"
+"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"                <p>Error message: <em>%(message)s</em></p>"
+msgstr ""
+"<p>Hubo un error en el código de la plantilla.</p>\n"
+"                <p>Nombre de la etiqueta: <strong>%(tagname)s</strong></p>\n"
+"                <p>Mensaje de error: <em>%(message)s</em></p>"
 
-#: ../lib/advene/gui/main.py:313
-msgid "Display shortcuts"
-msgstr "Mostrar tomas"
+#: ../lib/advene/core/webcherry.py:1290
+#, python-format
+msgid ""
+"<p>An invalid character is in the Context:</p>\n"
+"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
+"pre>"
+msgstr ""
+"<p>Un carácter no válido está en el Contexto:</p>\n"
+"                <p>Mensaje de error: <em>%(error)s</em></p><pre>%(message)s</"
+"pre>"
 
-#: ../lib/advene/gui/main.py:314
-msgid "Display logfile"
-msgstr "Mostrar bitácora (logfile)"
+#: ../lib/advene/core/webcherry.py:1298
+#, python-format
+msgid ""
+"<p>There was an error in the TALES expression.</p>\n"
+"                <pre>%s</pre>"
+msgstr ""
+"<p>Hubo un error en la expresion de TALES.</p>\n"
+"                <pre>%s</pre>"
 
-#: ../lib/advene/gui/main.py:314
-msgid "Display log file"
-msgstr "Mostrar bitácora (log file)"
+#: ../lib/advene/core/webcherry.py:1318
+#, python-format
+msgid ""
+"<p>There was an error.</p>\n"
+"                <pre>%s</pre>"
+msgstr ""
+"<p>Hubo un error.</p>\n"
+"                <pre>%s</pre>"
 
-#: ../lib/advene/gui/main.py:315
-msgid "Open logfile folder"
-msgstr "Abrir archivo de bitácoras (logfile)"
+#: ../lib/advene/core/webcherry.py:1342
+#, python-format
+msgid ""
+"\n"
+"            <hr>\n"
+"            <p>\n"
+"            Location: %(location)s<br>\n"
+"            <form name=\"navigation\" method=\"GET\">\n"
+"            <a href=\"%(levelup)s\">Up one level</a> |\n"
+"            Next level :\n"
+"            <select name=\"path\" onchange=\"submit()\">\n"
+"            "
+msgstr ""
+"\n"
+"            <hr>\n"
+"            <p>\n"
+"            Ubicación: %(location)s<br>\n"
+"            <form name=\"navigation\" method=\"GET\">\n"
+"            <a href=\"%(levelup)s\">Un nivel arriba</a> |\n"
+"            Siguiente nivel :\n"
+"            <select name=\"path\" onchange=\"submit()\">\n"
+"            "
 
-#: ../lib/advene/gui/main.py:315
+#: ../lib/advene/core/webcherry.py:1360
 msgid ""
-"Display logfile folder. It can help when sending the advene.log file by e-"
-"mail."
+"\n"
+"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
+"            <option selected></option>\n"
+"            "
+msgstr ""
+"\n"
+"            </select> Vista: <select name=\"view\" onchange=\"submit()\">\n"
+"            <option selected></option>\n"
+"            "
+
+#: ../lib/advene/core/webcherry.py:1378
+#, python-format
+msgid ""
+"<hr>\n"
+"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
+"package %(uri)s returns %(value)s</p>\n"
+"            "
+msgstr ""
+"<hr>\n"
+"            <p>Evaluando expresión \"<strong>%(expression)s</strong>\" en el "
+"paquete %(uri)s regresa %(value)s</p>\n"
+"            "
+
+#: ../lib/advene/core/webcherry.py:1414
+#, python-format
+msgid "<p>Package <strong>%s</strong> not loaded</p>"
+msgstr "<p>Paquete <strong>%s</strong> no cargado</p>"
+
+#: ../lib/advene/core/webcherry.py:1456
+#, python-format
+msgid ""
+"<p>There was an error in the template code.</p>\n"
+"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"            <p>Error message: <em>%(message)s</em></p>"
+msgstr ""
+"<p>Hubo un error en el código de la plantilla.</p>\n"
+"            <p>Nombre de la etiqueta: <strong>%(tagname)s</strong></p>\n"
+"            <p>Mensaje de error: <em>%(message)s</em></p>"
+
+#: ../lib/advene/core/webcherry.py:1464
+#, python-format
+msgid ""
+"<p>There was an error in the expression.</p>\n"
+"            <pre>%s</pre>"
+msgstr ""
+"<p>Hubo un error en la expresion.</p>\n"
+"            <pre>%s</pre>"
+
+#: ../lib/advene/core/webcherry.py:1472
+#, python-format
+msgid ""
+"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
+"            %(type)s\n"
+"            %(value)s\n"
+"            %(traceback)s</pre>"
+msgstr ""
+"<p>No se puede resolver la expresión TALES %(expr)s en el paquete "
+"%(package)s<p><pre>\n"
+"            %(type)s\n"
+"            %(value)s\n"
+"            %(traceback)s</pre>"
+
+#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
+msgid "<p>Cannot set the value : invalid path</p>"
+msgstr "<p>No puedo asignar el valor : ruta no valida</p>"
+
+#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
+#, python-format
+msgid ""
+"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
+"%(folder)s could not be created.</p>"
+msgstr ""
+"<h1>Error</h1><p>Cuando se crea un recurso %(path)s, la carpeta del recurso "
+"%(folder)s no pudo ser creada.</p>"
+
+#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
+msgid "Resource successfuly created/updated"
+msgstr "Recurso se creó/actualizó satisfactoriamente"
+
+#: ../lib/advene/core/webcherry.py:1611
+msgid "Value successfuly updated"
+msgstr "Valor actualizado satisfactoriamente"
+
+#: ../lib/advene/core/webcherry.py:1613
+#, python-format
+msgid ""
+"Unable to update the attribute %(attribute)s for element %(element)s: "
+"%(error)s."
+msgstr ""
+"Incapaz de actualizar el atributo %(attribute)s para el elemento "
+"%(element)s: %(error)s."
+
+#: ../lib/advene/core/webcherry.py:1724
+msgid "<p>Invalid request</p>."
+msgstr "<p>Peticion no valida</p>."
+
+#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
+msgid "Value updated"
+msgstr "Valor actualizado"
+
+#: ../lib/advene/core/webcherry.py:1789
+#, python-format
+msgid ""
+"\n"
+"                <h1>Value updated</h1>\n"
+"                The value of %(path)s has been updated to\n"
+"                <pre>\n"
+"                %(value)s\n"
+"                </pre>\n"
+"                "
+msgstr ""
+"\n"
+"                <h1>Valor actualizado</h1>\n"
+"                El valor de f %(path)s ha sido actualizado a\n"
+"                <pre>\n"
+"                %(value)s\n"
+"                </pre>\n"
+"                "
+
+#: ../lib/advene/core/webcherry.py:1806
+#, python-format
+msgid ""
+"\n"
+"                    <h1>Value updated</h1>\n"
+"                    The value of %(path)s has been updated to\n"
+"                    <pre>\n"
+"                    %(value)s\n"
+"                    </pre>\n"
+"                    "
+msgstr ""
+"\n"
+"                    <h1>Valor actualizado</h1>\n"
+"                    El valor de %(path)s ha sido actualizado a\n"
+"                    <pre>\n"
+"                    %(value)s\n"
+"                    </pre>\n"
+"                    "
+
+#: ../lib/advene/core/webcherry.py:1817
+#, python-format
+msgid ""
+"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
+msgstr ""
+"Petición mal formada: no se puede actualizar el valor de %(attribute)s en "
+"%(tales)s."
+
+#: ../lib/advene/core/webcherry.py:1860
+msgid "Cannot create an element in something else than a package."
+msgstr "No se puede crear un elemento en algo distinto a un paquete."
+
+#: ../lib/advene/core/webcherry.py:1877
+#, python-format
+msgid "The identifier %s already exists."
+msgstr "El identificador %s ya existe."
+
+#: ../lib/advene/core/webcherry.py:1889
+#, python-format
+msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
+msgstr "<p>Error mientras se creaba la vista %(id)s</p><pre>%(error)s</pre>"
+
+#: ../lib/advene/core/webcherry.py:1895
+msgid "View created"
+msgstr "Vista creada"
+
+#: ../lib/advene/core/webcherry.py:1896
+#, python-format
+msgid ""
+"\n"
+"                 <h1>View <em>%(id)s</em> created</h1>\n"
+"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
+"created.</p>\n"
+"                 "
+msgstr ""
+"\n"
+"                 <h1>Vista <em>%(id)s</em> creada</h1>\n"
+"                 <p>La vista <a href=\"%(url)s\">%(id)s</a> se creó "
+"satisfactoriamente.</p>\n"
+"                 "
+
+#: ../lib/advene/core/webcherry.py:1912
+#, python-format
+msgid "Missing %s parameter"
+msgstr "Parámetro %s faltante"
+
+#: ../lib/advene/core/webcherry.py:1915
+#, python-format
+msgid "Relation type %s does not exist"
+msgstr "La relación del tipo %s no existe"
+
+#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
+#, python-format
+msgid "Annotation %s does not exist"
+msgstr "La anotación del tipo %s no existe"
+
+#: ../lib/advene/core/webcherry.py:1928
+#, python-format
+msgid ""
+"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
+"p>"
 msgstr ""
-"Mostrar el folder de las bitácoras. Puede ser de ayuda cuando se mande el "
-"archivo advene.log por e-mail."
-
-#: ../lib/advene/gui/main.py:316
-msgid "_About"
-msgstr "_Acerca"
+"<p>No se puede crear una relación entre %(member1)s y %(member2)s: tipo no "
+"válido</p>"
 
-#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3750
+#: ../lib/advene/core/webcherry.py:1940
 #, python-format
 msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
+"<p>Error while creating relation between %(member1)s and %(member2)s :</"
+"p><pre>%(error)s</pre>"
 msgstr ""
-"No se puede cargar el paquete %(filename)s:\n"
-"%(error)s"
+"<p>Error mientras se creaba una relación entre %(member1)s y %(member2)s :</"
+"p><pre>%(error)s</pre>"
 
-#: ../lib/advene/gui/main.py:344
-msgid "Open a package file"
-msgstr "Abre un archivo de paquete"
+#: ../lib/advene/core/webcherry.py:1943
+msgid "Relation created"
+msgstr "Relación creada"
 
-#: ../lib/advene/gui/main.py:345
-msgid "Save the current package"
-msgstr "Guarda el paquete actual"
+#: ../lib/advene/core/webcherry.py:1944
+#, python-format
+msgid "<h1>Relation <em>%s</em> created</h1>"
+msgstr "<h1>La relación <em>%s</em> fue creada</h1>"
 
-#: ../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/core/webcherry.py:1954
+#, python-format
+msgid "Annotation type %s does not exist"
+msgstr "La anotación del tipo %s no existe"
 
-#: ../lib/advene/gui/main.py:347
-msgid "Select movie file..."
-msgstr "Seleccionar archivo de pelicula"
+#: ../lib/advene/core/webcherry.py:1971
+#, python-format
+msgid ""
+"<p>Error while creating annotation of type %(type)s :<pre>\n"
+"                    %(errortype)s\n"
+"                    %(value)s\n"
+"                    %(traceback)s</pre>"
+msgstr ""
+"<p>Error mientras se creaba una anotación del tipo %(type)s :<pre>\n"
+"                    %(errortype)s\n"
+"                    %(value)s\n"
+"                    %(traceback)s</pre>"
 
-#: ../lib/advene/gui/main.py:348
-msgid "Select DVD"
-msgstr "Selecciona DVD"
+#: ../lib/advene/core/webcherry.py:1983
+#, python-format
+msgid "Annotation %s created"
+msgstr "Anotación %s creada"
 
-#: ../lib/advene/gui/main.py:352
-msgid "Create a text annotation"
-msgstr "Crear una anotación de texto"
+#: ../lib/advene/core/webcherry.py:1985
+#, python-format
+msgid "Error: Cannot create an object of type %s."
+msgstr "Error: No se puede crear un objeto del tipo %s."
 
-#: ../lib/advene/gui/main.py:353
-msgid "Create a graphical annotation"
-msgstr "Crear una anotación gráfica"
+#: ../lib/advene/core/webcherry.py:1988
+#, python-format
+msgid ""
+"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
+"code></p>"
+msgstr ""
+"Error: No se puede realizar la acción <em>%(action)s</em> en <code>"
+"%(object)s</code></p>"
 
-#: ../lib/advene/gui/main.py:359
-msgid "List recently opened packages"
-msgstr "Listar los paquetes abiertos recientemente"
+#: ../lib/advene/core/webcherry.py:2001
+msgid "Available actions"
+msgstr "Acciones disponibles"
 
-#: ../lib/advene/gui/main.py:389
-msgid "Snapshotter activity"
-msgstr "Actividad de Snapshotter"
+#: ../lib/advene/core/webcherry.py:2010
+#, python-format
+msgid "<li>%(name)s: %(value)s"
+msgstr "<li>%(name)s: %(value)s"
 
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/core/webcherry.py:2033
 #, python-format
-msgid "%d queued requests"
-msgstr "%d peticiones en fila"
+msgid "<p>Unknown action</p><pre>Action: %s</pre>"
+msgstr "<p>Acción desconocida</p><pre>Acción: %s</pre>"
 
-#: ../lib/advene/gui/main.py:392
-msgid "Cancel all requests"
-msgstr "Cancelar todas las peticiones"
+#: ../lib/advene/core/webcherry.py:2040
+msgid "Missing parameter(s) :<ul>"
+msgstr "Parámetro(s) faltante(s):<ul>"
 
-#: ../lib/advene/gui/main.py:397
-msgid "No snapshotter"
-msgstr "No hay snapshotter"
+#: ../lib/advene/core/webcherry.py:2076
+msgid "Advene web resources"
+msgstr "Recursos web de Advene"
 
-#: ../lib/advene/gui/main.py:419
-msgid "No snapshotting activity"
-msgstr "No hay actividad snapshotter"
+#: ../lib/advene/core/webcherry.py:2082
+msgid "Advene webserver"
+msgstr "Servidor web de advene"
 
-#: ../lib/advene/gui/main.py:423
-msgid "Snapshotting"
-msgstr "Snapshotteando"
+#: ../lib/advene/core/webcherry.py:2083
+#, python-format
+msgid ""
+"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
+"webserver run by %(userid)s on %(serveraddress)s.</p>"
+msgstr ""
+"<p>Bienvenido al servidor web <a href=\"http://liris.cnrs.fr/advene/"
+"\">Advene</a> ejecutado por %(userid)s en %(serveraddress)s.</p>"
 
-#: ../lib/advene/gui/main.py:440
-msgid "Display application log messages"
-msgstr "Mostrar los archivos de bitácora de la aplicación"
+#: ../lib/advene/core/webcherry.py:2090
+msgid ""
+" <p>No package is loaded. You can access the <a href=\"/admin\">server "
+"administration page</a>.<p>"
+msgstr ""
+" <p>No hay paquete cargado. Puedes accesar a la<a href=\"/admin\">pagina de "
+"administrador del servidor</a>.<p>"
 
-#: ../lib/advene/gui/main.py:482
-msgid "Quicksearch lists"
-msgstr "Buscar rápidamente en listas"
+#: ../lib/advene/core/webcherry.py:2100
+#, python-format
+msgid ""
+"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
+"view</a>"
+msgstr ""
+"el <a href=\"/packages/%(alias)s/view/%(view)s\"> cargó la vista "
+"predeterminada del paquete</a>"
 
-#: ../lib/advene/gui/main.py:488
-msgid "Please specify the lists of elements to be searched."
-msgstr "Por favor especifica las listas de elementos donde se va a buscar."
+#: ../lib/advene/core/webcherry.py:2102
+#, python-format
+msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
+msgstr "la <a href=\"/packages/%s\">informacion de los paquetes cargados</a>"
+
+#: ../lib/advene/core/webcherry.py:2104
+msgid "the <a href=\"/packages\">loaded packages' data</a>"
+msgstr "la <a href=\"/packages\">informacion de los paquetes cargados</a>"
 
-#: ../lib/advene/gui/main.py:507
+#: ../lib/advene/core/webcherry.py:2105
 #, python-format
 msgid ""
-"Searching on %s.\n"
-"Left click to launch the search, right-click to set the quicksearch options"
+" <p>You can either access %s or the <a href=\"/admin\">server administration "
+"page</a>.<p>"
 msgstr ""
-"Buscando en %s.\n"
-"Clic-izquierdo para lanzar la búsqueda, clic-derecho para establecer las "
-"opciones de búsqueda rápida"
+" <p>Puedes accesar %s a a la <a href=\"/admin\">pagina del servidor de "
+"administracion</a>.<p>"
 
-#: ../lib/advene/gui/main.py:508
+#: ../lib/advene/core/webcherry.py:2107
 #, python-format
-msgid "String to search in %s"
-msgstr "Cadena a buscar en %s"
-
-#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
-msgid "Tracing : "
-msgstr "Rastreando :"
+msgid ""
+"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
+"fr/advene/\">Advene</a> v. %s.</em></p>"
+msgstr ""
+"<hr><p align=\"right\"><em>Documento generado por <a href=\"http://liris."
+"cnrs.fr/advene/\">Advene</a> v. %s.</em></p>"
 
-#: ../lib/advene/gui/main.py:521
-msgid "off"
-msgstr "apagado"
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
+#, python-format
+msgid "Cannot start HTTP server: %s"
+msgstr "No se puede iniciar el servidor HTTP: %s"
 
-#: ../lib/advene/gui/main.py:525
-msgid "on"
-msgstr "en"
+#: ../lib/advene/core/controller.py:375
+msgid "Exception (traceback in console):"
+msgstr "Excepción (registro en consola):"
 
-#: ../lib/advene/gui/main.py:545
-msgid "Launch search"
-msgstr "Lanzar búsqueda"
+#: ../lib/advene/core/controller.py:408
+msgid "No available GUI"
+msgstr "No hay interfaz gráfica de usuario disponible"
 
-#: ../lib/advene/gui/main.py:550
-msgid "Ignore case"
-msgstr "Ignorar mayúsculas / minúsculas"
+#: ../lib/advene/core/controller.py:427
+msgid "No available event handler"
+msgstr "No hay un control de evento disponible"
 
-#: ../lib/advene/gui/main.py:555
-msgid "Searched elements"
-msgstr "Elementos buscados"
+#: ../lib/advene/core/controller.py:435
+msgid "No available gui"
+msgstr "No hay una intefaz gráfica de usuario disponible"
 
-#: ../lib/advene/gui/main.py:625
-msgid "Playing"
-msgstr "Reproduciendo"
+#: ../lib/advene/core/controller.py:451
+#, python-format
+msgid "Warning: redefining an existing feature %s"
+msgstr "Advertencia: Definiendo de nuevo una característica existente %s"
 
-#: ../lib/advene/gui/main.py:626
-msgid "Pause"
-msgstr "Pausar"
+#: ../lib/advene/core/controller.py:583
+msgid "All annotations"
+msgstr "Todas las anotaciones"
 
-#: ../lib/advene/gui/main.py:627
-msgid "Init"
-msgstr "Inicio"
+#: ../lib/advene/core/controller.py:585
+msgid "Ids"
+msgstr "Ids"
 
-#: ../lib/advene/gui/main.py:629
-msgid "Undefined"
-msgstr "Sin definir"
+#: ../lib/advene/core/controller.py:773
+#, python-format
+msgid ""
+"Cannot start the webserver\n"
+"The following processes seem to use the %(port)s port: %(processes)s"
+msgstr ""
+"No se puede iniciar el servidor web \n"
+"Los siguientes procesos parecen utilizar el %(port)s puerto: %(processes)s"
 
-#: ../lib/advene/gui/main.py:901
-msgid "Enter the new time value"
-msgstr "Ingresa un nuevo valor de tiempo"
+#: ../lib/advene/core/controller.py:822 ../lib/advene/core/controller.py:833
+#, python-format
+msgid "Loaded %(uri)s as %(alias)s"
+msgstr "Cargados %(uri)s como %(alias)s"
 
-#: ../lib/advene/gui/main.py:925
+#: ../lib/advene/core/controller.py:824 ../lib/advene/core/controller.py:836
 #, python-format
-msgid "Replace content in %d elements"
-msgstr "Reemplazar contenido en %d elementos"
+msgid "Cannot load package from file %(uri)s: %(error)s"
+msgstr "No se puede cargar el paquete del archivo %(uri)s: %(error)s"
 
-#: ../lib/advene/gui/main.py:938
-msgid "Find word"
-msgstr "Encontrar palabra"
+#: ../lib/advene/core/controller.py:875
+msgid "Deactivating web server"
+msgstr "Desactivando el servidor web"
 
-#: ../lib/advene/gui/main.py:945
-msgid "Replace by"
-msgstr "Reemplazar por"
+#: ../lib/advene/core/controller.py:992
+#, python-format
+msgid "Cannot get audio volume: %s"
+msgstr "No se puede obtener el volumen del audio: %s"
 
-#: ../lib/advene/gui/main.py:973
+#: ../lib/advene/core/controller.py:1042
 #, python-format
-msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
+msgid "Cannot open Advene URL %s: the webserver is not running."
 msgstr ""
-"%(search)s ha sido reemplazado por %(replace)s en %(count)d elemento(s)."
+"No se puede abrir el URL %s de Advene: el servidor web no está corriendo. "
 
-#: ../lib/advene/gui/main.py:982
-msgid "The video extracting feature is not available."
-msgstr "La característica de extracción de video no está disponible"
+#: ../lib/advene/core/controller.py:1246
+#, python-format
+msgid "Found matching video file in moviepath: %s"
+msgstr "Encontre video concordante en la ruta: %s"
 
-#: ../lib/advene/gui/main.py:985
-msgid "Video export"
-msgstr "Exportar video"
+#: ../lib/advene/core/controller.py:1287 ../lib/advene/core/controller.py:1289
+msgid "Analysis of "
+msgstr "Análisis de"
 
-#: ../lib/advene/gui/main.py:987
+#: ../lib/advene/core/controller.py:1489
+msgid "Cannot split the annotation: the given position is outside."
+msgstr ""
+"No se puede dividir la anotación: la posición especificada se encuentra "
+"fuera. "
+
+#: ../lib/advene/core/controller.py:1654
 #, python-format
-msgid "Exporting video montage/fragment to %%(filename)s"
-msgstr "Exportando el montaje de video  / fragmento a %%(filename)s"
+msgid "Cannot find the template package %(filename)s: %(error)s"
+msgstr "No se encuentra el paquete de plantilla %(filename)s: %(error)s"
+
+#: ../lib/advene/core/controller.py:1697
+#, python-format
+msgid "Cannot read the imported package %(uri)s: %(error)s"
+msgstr "No se puede leer el paquete importado %(uri)s: %(error)s"
 
-#: ../lib/advene/gui/main.py:989
-msgid "Please choose a destination filename"
-msgstr "Por favor elige un nombre de archivo para el destino"
+#: ../lib/advene/core/controller.py:1932
+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/gui/main.py:1067
+#: ../lib/advene/core/controller.py:1950
 msgid ""
-"No media association is defined in the package. Please use the 'File/"
-"Associate a video file' menu item to associate a media file."
+"Cannot load package: the following annotations do not have Millisecond "
+"fragments:"
 msgstr ""
-"No se encontró una asociación medios definida en el paquete. Utiliza el "
-"elemento de menú 'Archivo / asociar un archivo de vídeo' para asociar un "
-"archivo multimedia."
+"No puedo cargar el paquete: las anotaciones siguientes no tienen fragmentos "
+"de milisegundos:"
 
-#: ../lib/advene/gui/main.py:1069
+#: ../lib/advene/core/controller.py:1977
 #, 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."
+msgid "Cannot handle master attribute, the package %s is not imported."
 msgstr ""
-"Los medios asociados %s no se pudieron encontrar. Utiliza el elemento de "
-"menú 'Archivo / asociar un archivo de vídeo' para asociar un archivo "
-"multimedia."
+"No se puede manejar el atributo maestro, el paquete %s no está importado. "
 
-#: ../lib/advene/gui/main.py:1071
+#: ../lib/advene/core/controller.py:1979
 #, python-format
-msgid ""
-"You are now working with the following video:\n"
-"%s"
+msgid "Checking master package %s for not yet imported elements."
 msgstr ""
-"Ahora estás trabajando con el siguiente video:\n"
-"%s"
-
-#: ../lib/advene/gui/main.py:1188
-msgid "Open this view..."
-msgstr "Abrir esta vista..."
-
-#: ../lib/advene/gui/main.py:1205
-msgid "_All available views"
-msgstr "Todas las vistas disponibles _A"
+"Revisando el paquete maestro %s para los elementos que todavía no son "
+"importados. "
 
-#: ../lib/advene/gui/main.py:1224
-msgid "Transcription of annotations"
-msgstr "Transcripción de las anotaciones"
+#: ../lib/advene/core/controller.py:2019
+msgid "Standard summary"
+msgstr "Resumen estándar."
 
-#: ../lib/advene/gui/main.py:1227
-msgid "Note-taking editor"
-msgstr "Editor para tomar notas"
+#: ../lib/advene/core/controller.py:2024
+msgid "Default view"
+msgstr "Vista por omision"
 
-#: ../lib/advene/gui/main.py:1228
-msgid "Active bookmarks"
-msgstr "Separadores activos"
+#: ../lib/advene/core/controller.py:2066
+#, python-format
+msgid ""
+"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
+msgstr ""
+"Ciclo infinito en STBV %(name)s: la vista %(imp)s es invocada muchas veces. "
 
-#: ../lib/advene/gui/main.py:1229
-msgid "Schema editor"
-msgstr "Editor de esquema"
+#: ../lib/advene/core/controller.py:2156
+#, python-format
+msgid "Got exception %s when stopping player."
+msgstr "Hubo excepcion %s cuando se detuvo el reproductor."
 
-#: ../lib/advene/gui/main.py:1233
-msgid "TALES explorer"
-msgstr "Explorador TALES"
+#: ../lib/advene/core/controller.py:2242
+#, python-format
+msgid "Raised exception in update_status: %s"
+msgstr "Excepcion levantada en update_status: %s"
 
-#: ../lib/advene/gui/main.py:1234
-msgid "Dynamic montage"
-msgstr "Montaje dinámico"
+#: ../lib/advene/core/controller.py:2269
+msgid "Unable to start the player."
+msgstr "Incapaz de inicializar el reproductor."
 
-#: ../lib/advene/gui/main.py:1238
-msgid "Open a comment view in the web browser"
-msgstr "Abrir una vista de comentario en un navegador web"
+#: ../lib/advene/core/controller.py:2478
+#, python-format
+msgid "Comment on set of %d annotations"
+msgstr "Comentarios sobre el conjunto de %d anotaciones"
 
-#: ../lib/advene/gui/main.py:1239
-msgid "Create or open a comment view"
-msgstr "Crear o abrir una vista de comentario"
+#: ../lib/advene/core/controller.py:2480
+#, python-format
+msgid "Comment on %s"
+msgstr "Comentar en %s"
 
-#: ../lib/advene/gui/main.py:1242
+#: ../lib/advene/core/controller.py:2484
+#, python-format
 msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
+"<h1>Comment on %(title)s</h1>\n"
+"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
+"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
+"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
+"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
+"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
+"\"%(imgurl)s\" ></img></a></span>"
 msgstr ""
-"Editar ventana de marcador de posición (anotación y relaciones ventanas de "
-"edición se pondrán aquí)"
+"<h1>Comentar en %(title)s</h1>\n"
+"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
+"presentation=\"link:snapshot\"><a title=\"Clic para reproducir el video en "
+"Advene\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
+"\"%(href)s\"><img title=\"Clic aquí para reproducir\" width=\"160\" height="
+"\"100\" tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
+"\"%(imgurl)s\" ></img></a></span>"
 
-#: ../lib/advene/gui/main.py:1243
-msgid "Display edition history"
-msgstr "Muestra el historial de edición"
+#: ../lib/advene/core/controller.py:2494
+#, python-format
+msgid "List of %s annotations"
+msgstr "Lista de %s anotaciones"
 
-#: ../lib/advene/gui/main.py:1244
-msgid "Visualise the activity trace preview"
-msgstr "Visualizar la vista previa de la actividad de rastreo"
+#: ../lib/advene/core/controller.py:2529
+#, python-format
+msgid "Cannot export to %(filename)s: %(e)s"
+msgstr "No se puede exportar a %(filename)s: %(e)s"
 
-#: ../lib/advene/gui/main.py:1245
-msgid "Visualise the activity trace as a timeline"
-msgstr "Visualizar la actividad de rastreo como línea de tiempo"
+#: ../lib/advene/core/controller.py:2544 ../lib/advene/core/controller.py:2553
+#, python-format
+msgid "Error when exporting: %s"
+msgstr "Error mientras se exportaba: %s"
 
-#: ../lib/advene/gui/main.py:1274
-msgid "The webserver could not be started. Static views cannot be accessed."
-msgstr ""
-"El servidor web no pudo ser iniciarse. No se pueden acceder las vistas "
-"estáticas."
+#: ../lib/advene/plugins/featuredetect.py:42
+msgid "Feature detection (face...)"
+msgstr "Característica detección (rostro...)"
 
-#: ../lib/advene/gui/main.py:1352
-#, python-format
+#: ../lib/advene/plugins/featuredetect.py:57
+msgid "Sensitivity level."
+msgstr "Nivel de sensibilidad"
+
+#: ../lib/advene/plugins/featuredetect.py:60
 msgid ""
-"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
-"released</b> on %(date)s, but you are running version %(current)s.\n"
-"You can download the latest version from the Advene website: http://liris."
-"cnrs.fr/advene/</span>"
+"Scale. Original image size will be divided by this factor, in order to speed "
+"up detection."
 msgstr ""
-"<span background=\"#ff8888\" size=\"large\"><b>La versión %(version)s de "
-"Advene ha sido liberada</b> en %(date)s, pero estás utilizando la versión "
-"%(current)s.\n"
-"Puedes descargar la última versión del sitio web de Advene: http://liris."
-"cnrs.fr/advene/</span>"
-
-#: ../lib/advene/gui/main.py:1357
-msgid "Go to the website"
-msgstr "Ir al sitio web"
+"Escala. La imagen original se va a dividir por este factor, para agilizar la "
+"detección. "
 
-#: ../lib/advene/gui/main.py:1363
-msgid "Advene release"
-msgstr "Liberación de Advene"
+#: ../lib/advene/plugins/featuredetect.py:63
+msgid "Classifier"
+msgstr "Clasificador"
 
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/plugins/featuredetect.py:77
 #, python-format
-msgid "You are using a up-to-date version of Advene (%(current)s)."
-msgstr ""
-"Estás utilizando una versión actualizada de advene Advene (%(current)s)."
-
-#: ../lib/advene/gui/main.py:1369
-msgid "Advene is up-to-date"
-msgstr "Advene está actualizado"
+msgid "Feature %s"
+msgstr "Característica %s"
 
-#: ../lib/advene/gui/main.py:1383
-msgid "Choose a color"
-msgstr "Elige un color"
+#: ../lib/advene/plugins/featuredetect.py:79
+#, python-format
+msgid "Detected %s"
+msgstr "Detectado %s"
 
-#: ../lib/advene/gui/main.py:1415
-msgid "Select an annotation to loop on it"
-msgstr "Selecciona una anotación para hacer un ciclo en ella."
+#: ../lib/advene/plugins/featuredetect.py:81
+msgid "Detection started"
+msgstr "Comenzó la detección"
 
-#: ../lib/advene/gui/main.py:1417
+#: ../lib/advene/plugins/featuredetect.py:171
 #, python-format
-msgid "Looping on %s"
-msgstr "Ciclo en %s"
-
-#: ../lib/advene/gui/main.py:1476 ../lib/advene/gui/main.py:2367
-msgid "No active dynamic view"
-msgstr "No hay una vista dinámica activa"
+msgid "Detected %(count)d feature(s) until %(time)s"
+msgstr "Detectadas %(count)d característica(s) hasta %(time)s"
 
-#: ../lib/advene/gui/main.py:1487
-msgid "Create a new dynamic view."
-msgstr "Crear una nueva vista dinámica"
+#: ../lib/advene/plugins/ted.py:39
+msgid "TED importer"
+msgstr "Importador de TED"
 
-#: ../lib/advene/gui/main.py:1506
-msgid "Edit the current dynamic view."
-msgstr "Editar la vista dinámica actual."
+#: ../lib/advene/plugins/cutter.py:39
+msgid "Audio segmentation"
+msgstr "Segmentación de audio"
 
-#: ../lib/advene/gui/main.py:1518
-msgid "No dynamic view"
-msgstr "No vista dinamica"
+#: ../lib/advene/plugins/cutter.py:53
+msgid "Volume threshold (in dB, can be negative) before trigger."
+msgstr "Umbral de volumen (en dB, puede ser negativa) antes de disparar."
 
-#: ../lib/advene/gui/main.py:1550
-msgid "Playing rate"
-msgstr "Tasa de reproducción"
+#: ../lib/advene/plugins/cutter.py:56
+#: ../lib/advene/plugins/soundenveloppe.py:62
+msgid "Channel selection."
+msgstr "Selección de canal"
 
-#: ../lib/advene/gui/main.py:1698
-msgid "History"
-msgstr "Historia"
+#: ../lib/advene/plugins/cutter.py:101
+#, python-format
+msgid "Detected %(count)d segments until %(time)s"
+msgstr "Detectados %(count)d segmentos hasta %(time)s"
 
-#: ../lib/advene/gui/main.py:1705
-msgid "Popups"
-msgstr "Popups"
+#: ../lib/advene/plugins/cutter.py:119
+msgid "Sound segment"
+msgstr "Segmentación de sonido "
 
-#: ../lib/advene/gui/main.py:1709
+#: ../lib/advene/plugins/cutter.py:120
+#, python-format
 msgid ""
-"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"notebooks to embed various views."
+"Sound segmentation with a threshold of %(threshold)d dB - channel: "
+"%(channel)s"
 msgstr ""
-"Puedes arrastrar y soltar iconos de vistas (línea de tiempo, vista de árbol, "
-"transcripción...) en los cuadernos de notas para embeber varias vistas."
+"Segmentación con un umbral de %(threshold)d de sonido dB - canal: %(channel)s"
 
-#: ../lib/advene/gui/main.py:1709
-msgid "Information"
-msgstr "Información"
+#: ../lib/advene/plugins/cutter.py:138
+msgid "Starting silence detection"
+msgstr "Iniciando detección de silencio"
 
-#: ../lib/advene/gui/main.py:2004
-msgid "Cannot create annotation. There is no schema to put it in."
-msgstr "No se puede crear la anotación. No hay esquema para ponerla dentro."
+#: ../lib/advene/plugins/ttl.py:41
+msgid "TurTLe (RDF) importer"
+msgstr "Importador TurTLe (RDF) "
 
-#: ../lib/advene/gui/main.py:2013
-msgid "Default annotation type"
-msgstr "Tipo de anotación predeterminado"
+#: ../lib/advene/plugins/shotdetect.py:35
+msgid "Shotdetect importer"
+msgstr "Importador de shotdetect"
 
-#: ../lib/advene/gui/main.py:2025
-msgid "Annotation created"
-msgstr "Anotación creada"
+#: ../lib/advene/plugins/shotdetect.py:79
+msgid "No shots"
+msgstr "No hay capturas"
 
-#: ../lib/advene/gui/main.py:2057
-msgid "Play/Pause [Control-Tab / Control-Space]"
-msgstr "Reproducir / Pausar [Control-Tab / Control-Espacio]"
+#: ../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 ""
+"No se puede registrar el reconocimiento de voz: No se encontraron plugins de "
+"Pocketsphinx. Ver http://cmusphinx.sourceforge.net/wiki/gstreamer para "
+"obtener más detalles."
 
-#: ../lib/advene/gui/main.py:2058
-#, python-format
-msgid "Rewind (%.02f s) [Control-Left]"
-msgstr "Regresar (%.02f s) [Control-Left]"
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr "Reconocimiento de voz (PocketSphinx)"
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr "Nivel del filtro de ruido [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 ""
+"Cantidad mínima (en milisegundos) de silencio requerido para terminar la "
+"anotación actual y comenzar una nueva. Disminuir esta longitud resultará en "
+"un gran cantidad de anotaciones cortas e incrementar esta longitud resultará "
+"en una menor cantidad de anotaciones largas."
 
-#: ../lib/advene/gui/main.py:2059
-#, python-format
-msgid "Forward (%.02f s) [Control-Right]"
-msgstr "Adelantar (%.02f s) [Control-Right]"
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr "Utiliza los modelos acústicos y de lenguaje predterminados. "
 
-#: ../lib/advene/gui/main.py:2060
-msgid "Previous frame [Control-Down]"
-msgstr "Cuadro anterior [Control-Down]"
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr "Modelo acústico (directorio). "
 
-#: ../lib/advene/gui/main.py:2061
-msgid "Next frame [Control-Up]"
-msgstr "Cuadro siguiente [Control-Up]"
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr "Diccionario fonético (archivo .dic)"
 
-#: ../lib/advene/gui/main.py:2062
-msgid "Fullscreen"
-msgstr "Pantalla completa"
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr "Modelo de lenguaje (archivo .DMP)"
 
-#: ../lib/advene/gui/main.py:2214
-#, python-format
-msgid "Screenshot saved to %s"
-msgstr "Captura guardada en %s"
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:86
+#: ../lib/advene/plugins/barcode.py:58
+msgid "Generating annotations"
+msgstr "Generando anotaciones"
 
-#: ../lib/advene/gui/main.py:2216
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#: ../lib/advene/plugins/barcode.py:83
 #, python-format
-msgid ""
-"Screenshot saved in\n"
-" %s"
-msgstr ""
-"Captura de pantalla guardada en\n"
-" %s"
+msgid "%(count)d utterances until %(time)s"
+msgstr "%(count)d declaraciones hasta %(time)s"
 
-#: ../lib/advene/gui/main.py:2218
-#, python-format
-msgid ""
-"Could not save screenshot:\n"
-" %s"
-msgstr ""
-"No se pudo guardar la captura:\n"
-"%s"
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr "Voz"
 
-#: ../lib/advene/gui/main.py:2226
-msgid "Save screenshot to..."
-msgstr "Guardar captura en..."
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr "Reconocimiento de voz"
 
-#: ../lib/advene/gui/main.py:2244
-msgid "Could not take snapshot with enough precision"
-msgstr "No se pudo realizar una captura de pantalla con demasiada precisión"
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr "Reconociendo voz"
 
-#: ../lib/advene/gui/main.py:2282
-msgid "Export package data"
-msgstr "Exportar los datos del paquete"
+#: ../lib/advene/plugins/brltty.py:62
+msgid "Input from the braille table."
+msgstr "Entrada de tabla de braille"
 
-#: ../lib/advene/gui/main.py:2284
-#, python-format
-msgid "Export annotation type %s"
-msgstr "Exportar tipos de anotaciones %s"
+#: ../lib/advene/plugins/brltty.py:66
+msgid "BrlTTY not installed. There will be no braille support."
+msgstr "BrlTTY no está instalado. No habrá soporte para braille."
 
-#: ../lib/advene/gui/main.py:2286
-#, python-format
-msgid "Export element %s"
-msgstr "Exportar elemento %s"
+#: ../lib/advene/plugins/brltty.py:78
+msgid "Could not initialize BrlTTY. No braille support."
+msgstr "No se pudo inicializar BrlTTY. No hay soporte para braille. "
 
-#: ../lib/advene/gui/main.py:2312
-msgid "Export format"
-msgstr "Exportar formato"
+#: ../lib/advene/plugins/brltty.py:84
+msgid "Display a message in Braille"
+msgstr "Muestra un mensaje en Braille"
 
-#: ../lib/advene/gui/main.py:2349
-msgid " (modified)"
-msgstr "(modificado)"
+#: ../lib/advene/plugins/brltty.py:85
+msgid "Message to display."
+msgstr "Mensaje a mostrar"
 
-#: ../lib/advene/gui/main.py:2352
+#: ../lib/advene/plugins/brltty.py:256
 #, python-format
-msgid "Activate %s"
-msgstr "Activar %s"
+msgid "BrlTTY connection error: %s"
+msgstr "Error de conexión BrlTTY: %s"
 
-#: ../lib/advene/gui/main.py:2523
-msgid "Saved workspace"
-msgstr "Espacio de trabajo guardado"
+#: ../lib/advene/plugins/brltty.py:273
+msgid "Braille display: "
+msgstr "Visualización braille: "
 
-#: ../lib/advene/gui/main.py:2575
-msgid "Restoring workspace..."
-msgstr "Restableciendo espacio de trabajo..."
+#: ../lib/advene/plugins/brltty.py:279
+msgid "No message"
+msgstr "Sin mensaje"
 
-#: ../lib/advene/gui/main.py:2581
-#, python-format
-msgid "Do you wish to restore the %s workspace ?"
-msgstr "¿Quieres restablecer el espacio de de trabajo %s?"
+#: ../lib/advene/plugins/transcript.py:32
+#, fuzzy
+msgid "Youtube XML importer"
+msgstr "Importador AnnotationGraph"
 
-#: ../lib/advene/gui/main.py:2586
-msgid "Clear the current workspace"
-msgstr "Limpiar el espacio de trabajo actual"
+#: ../lib/advene/plugins/transcript.py:69
+#, fuzzy
+msgid "Importing transcript"
+msgstr "Importar_Transcripcion"
 
-#: ../lib/advene/gui/main.py:2607
-#, python-format
-msgid "View %s is not an adhoc view"
-msgstr "La vista %s no es una vista adhoc"
+#: ../lib/advene/plugins/aeidon_import.py:48
+msgid "Aeidon (subtitles) importer"
+msgstr "Importador de subtítulos (Aeidon)"
 
-#: ../lib/advene/gui/main.py:2618
-#, python-format
-msgid "Cannot identify the adhoc view %s"
-msgstr "No se puede identificar una vista adhoc %s"
+#: ../lib/advene/plugins/anvil.py:35
+msgid "Anvil importer"
+msgstr "Importador Anvil"
 
-#: ../lib/advene/gui/main.py:2632
-msgid "Choose the annotation type to display as transcription."
-msgstr "Elige el tipo de anotacion para mostrarlo como transcripcion."
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr "Importar XML de Final Cut Pro"
 
-#: ../lib/advene/gui/main.py:2667
-#, python-format
-msgid ""
-"Error: unable to find an edit popup for %(element)s:\n"
-"%(error)s"
-msgstr ""
-"Error: no es posible encontrar una ventana flotante de edición para "
-"%(element)s:\n"
-"%(error)s"
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr "Item de clip de FCP"
 
-#: ../lib/advene/gui/main.py:2675
-#, python-format
-msgid "Editing %s"
-msgstr "Editando %s"
+#: ../lib/advene/plugins/fcp.py:75
+msgid "Importing subtitles"
+msgstr "Importando subtitulos"
 
-#: ../lib/advene/gui/main.py:2687
-#, python-format
-msgid "Comment view (%s)"
-msgstr "Comentar vista (%s)"
+#: ../lib/advene/plugins/fcp.py:90
+msgid "Importing clips"
+msgstr "Importando clips"
 
-#: ../lib/advene/gui/main.py:2754
-#, python-format
-msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
-msgstr "Paquete %(uri)s guardado: %(annotations)s y %(relations)s."
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr "No hay clip"
 
-#: ../lib/advene/gui/main.py:2765
+#: ../lib/advene/plugins/tracebuilder.py:219
 #, python-format
-msgid "Activating package %s"
-msgstr "Activando paquete %s"
+msgid "Cannot export to %(fname)s: %(e)s"
+msgstr "No se puede exportar a %(fname)s: %(e)s"
 
-#: ../lib/advene/gui/main.py:2793
+#: ../lib/advene/plugins/tracebuilder.py:1129
+#: ../lib/advene/plugins/tracebuilder.py:1168
 #, python-format
-msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
-msgstr "Paquete %(uri)s cargado: %(annotations)s y %(relations)s."
-
-#: ../lib/advene/gui/main.py:2826
-msgid "Do you want to restore the saved workspace ?"
-msgstr "¿Quieres restablecer el espacio de trabajo guardado?"
-
-#: ../lib/advene/gui/main.py:2833
-msgid "Advene"
-msgstr "Advene"
+msgid "Cannot export to %(host)s:%(port)s %(error)s"
+msgstr "No se puede exportar a %(host)s:%(port)s %(error)s"
 
-#: ../lib/advene/gui/main.py:3038
+#: ../lib/advene/plugins/tracebuilder.py:1143
 #, python-format
-msgid "Got exception %s. Trying to continue."
-msgstr "Hubo excepción %s. Tratando de continuar. "
-
-#: ../lib/advene/gui/main.py:3062 ../lib/advene/gui/main.py:3083
-#: ../lib/advene/gui/main.py:4033
-msgid "Unknown"
-msgstr "Desconocido"
+msgid "Cannot send data to %(host)s:%(port)s %(error)s"
+msgstr "No se pueden enviar los datos a %(host)s:%(port)s %(error)s"
 
-#: ../lib/advene/gui/main.py:3153
+#: ../lib/advene/plugins/tracebuilder.py:1191
 #, python-format
-msgid ""
-"The package(s) %s are modified.\n"
-"Save them now?"
-msgstr ""
-"Los paquete(s) %s están modificados.\n"
-"¿Guardar ahora?"
-
-#: ../lib/advene/gui/main.py:3203
-msgid "Choose an annotation type."
-msgstr "Elige un tipo de anotacion."
+msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
+msgstr "No se puede enviar evento %(nb)s a %(host)s:%(port)s %(error)s"
 
-#: ../lib/advene/gui/main.py:3247
-msgid "No annotation type is defined."
-msgstr "No hay tipo de anotacion definido."
+#: ../lib/advene/plugins/tracebuilder.py:1197
+#, python-format
+msgid "%(nb)s events sent to %(host)s:%(port)s during session."
+msgstr "%(nb)s eventos enviados a %(host)s:%(port)s durante la sesión."
 
-#: ../lib/advene/gui/main.py:3256
-msgid "Creating a new type."
-msgstr "Creando un nuevo tipo."
+#: ../lib/advene/plugins/goodshotdetector.py:45
+msgid "Shot detection (Delakis version)"
+msgstr "Detector de capturas (versión Delakis)"
 
-#: ../lib/advene/gui/main.py:3260
-msgid "Title of the new type"
-msgstr "Título del nuevo tipo"
+#: ../lib/advene/plugins/goodshotdetector.py:60
+msgid "Cache histogram alongside video files."
+msgstr "Caché de histograma junto con archivos de vídeo."
 
-#: ../lib/advene/gui/main.py:3261
+#: ../lib/advene/plugins/goodshotdetector.py:63
 msgid ""
-"Id of the new type. It is generated from the title, but you may change it if "
-"necessary."
+"Parameter profile: safe will detect less cuts, aggressive will detect more "
+"cuts (but more false ones too). default is a compromise."
 msgstr ""
-"Id del nuevo tipo. Es generada del título,  pero la puedes cambiar si es "
-"necesario."
-
-#: ../lib/advene/gui/main.py:3265
-msgid "Specify the content-type for the annotation type"
-msgstr "Especificar el tipo de contenido para el tipo de anotación"
-
-#: ../lib/advene/gui/main.py:3267
-msgid "Content type"
-msgstr "Tipo de contenido"
-
-#: ../lib/advene/gui/main.py:3274 ../lib/advene/gui/main.py:3383
-msgid "Create a new schema"
-msgstr "Crea un nuevo esquema."
-
-#: ../lib/advene/gui/main.py:3287
-msgid "Choose an existing schema for the new type, or create a new one"
-msgstr "Elige un esquema existente para el nuevo tipo, o crea uno nuevo"
+"Perfil de parámetro: seguro va a detectar menos cortes, agresivo va a "
+"detectar más cortes (pero más falsos positivos también). Predeterminado es "
+"un compromiso."
 
-#: ../lib/advene/gui/main.py:3290 ../lib/advene/gui/main.py:3398
-msgid "Specify the schema title"
-msgstr "Especifica el título del esquema"
+#: ../lib/advene/plugins/goodshotdetector.py:77
+#, python-format
+msgid "Shot (%s profile)"
+msgstr "Captura (%s profile)"
 
-#: ../lib/advene/gui/main.py:3294
-msgid "Title of the new schema"
-msgstr "Título del nuevo esquema"
+#: ../lib/advene/plugins/goodshotdetector.py:78
+#: ../lib/advene/plugins/shotdetectapp.py:87
+msgid "Detected shots"
+msgstr "Capturas detectadas"
 
-#: ../lib/advene/gui/main.py:3295
-msgid ""
-"Id of the new schema. It is generated from the title, but you may change it "
-"if necessary."
-msgstr ""
-"Id del nuevo esquema. Es generado del título, pero lo puedes cambiar si es "
-"necesario."
+#: ../lib/advene/plugins/goodshotdetector.py:83
+msgid "Loading histogram"
+msgstr "Cargando histograma"
 
-#: ../lib/advene/gui/main.py:3318
-msgid ""
-"You specified a annotation-type identifier that already exists. Aborting."
-msgstr ""
-"Especificaste un identificador para el tipo de anotación que ya existe. "
-"Abortando"
+#: ../lib/advene/plugins/goodshotdetector.py:146
+msgid "Computing hdiff"
+msgstr "Calcular hdiff: %s"
 
-#: ../lib/advene/gui/main.py:3336
-msgid "You specified a existing schema identifier. Using the existing schema."
-msgstr ""
-"Especificaste un identificador de esquema existente. Utilizando el esquema "
-"existente."
+#: ../lib/advene/plugins/goodshotdetector.py:153
+msgid "Detecting cuts"
+msgstr "Detectando cortes"
 
-#: ../lib/advene/gui/main.py:3338
-msgid ""
-"You specified an existing identifier that does not reference a schema. "
-"Aborting."
-msgstr ""
-"Especificaste un identificador que no hace referencia a un esquema. "
-"Abortando."
+#: ../lib/advene/plugins/goodshotdetector.py:180
+msgid "Detecting dissolves"
+msgstr "Detectando disoluciones"
 
-#: ../lib/advene/gui/main.py:3365
-msgid "Choose a schema."
-msgstr "Elige un esquema."
+#: ../lib/advene/plugins/goodshotdetector.py:265
+msgid "Extracting histogram"
+msgstr "Extrayendo histograma"
 
-#: ../lib/advene/gui/main.py:3425
-msgid "You specified an existing identifier. Aborting."
-msgstr "Especificaste un identificador existente. Abortando. "
+#: ../lib/advene/plugins/webannotation_import.py:45
+#, fuzzy
+msgid "WebAnnotation importer"
+msgstr "Importador AnnotationGraph"
 
-#: ../lib/advene/gui/main.py:3445
+#: ../lib/advene/plugins/webannotation_import.py:63
+#: ../lib/advene/plugins/owl_import.py:58 ../lib/advene/util/importer.py:363
 #, python-format
-msgid "Package %s modified"
-msgstr "Paquete %s modificado"
+msgid "Converted from %s"
+msgstr "Convertido de %s"
 
-#: ../lib/advene/gui/main.py:3446
-#, python-format
-msgid ""
-"The package %s has been modified but not saved.\n"
-"Save it now?"
+#: ../lib/advene/plugins/montagerenderer.py:43
+msgid "Cannot register montage renderer: Gnonlin plugins are not present."
 msgstr ""
-"El paquete %s ha sido modificado pero no guardado.\n"
-"¿Guardarlo ahora?"
+"No puede registrar representador (renderer) de montaje: Los plugins de "
+"Gnonlin no están presentes."
 
-#: ../lib/advene/gui/main.py:3456
-#, python-format
-msgid "%s snapshots"
-msgstr "%s capturas de pantalla"
+#: ../lib/advene/plugins/transcriber.py:40
+msgid "Transcriber importer"
+msgstr "Importador de transcripciones"
 
-#: ../lib/advene/gui/main.py:3457
-#, python-format
-msgid "Do you want to save the snapshots for media %s?"
-msgstr "¿Quieres guardar las capturas de pantalla para los medios %s?"
+#: ../lib/advene/plugins/transcriber.py:86
+msgid "Parsing section information"
+msgstr "Analizando sección de información"
 
-#: ../lib/advene/gui/main.py:3464 ../lib/advene/gui/main.py:3473
-#: ../lib/advene/gui/main.py:4449
-#, python-format
-msgid "Cannot save imagecache for %(media)s: %(e)s"
-msgstr "No se puede guardar imagecache para %(media)s: %(e)s"
+#: ../lib/advene/plugins/transcriber.py:254 ../lib/advene/util/importer.py:1520
+msgid "Creating package"
+msgstr "Creando paquete"
 
-#: ../lib/advene/gui/main.py:3487
-msgid "first frame"
-msgstr "Primer cuadro"
+#: ../lib/advene/plugins/transcriber.py:260 ../lib/advene/util/importer.py:1527
+msgid "Creating annotation types"
+msgstr "Creando tipos de anotaciones"
 
-#: ../lib/advene/gui/main.py:3488
-msgid "last frame"
-msgstr "último cuadro"
+#: ../lib/advene/plugins/transcriber.py:265 ../lib/advene/util/importer.py:1533
+msgid "Parsing header information"
+msgstr "Analizando información del encabezado"
 
-#: ../lib/advene/gui/main.py:3496
-#, python-format
-msgid "Click on %(bound)s of %(annotation)s"
-msgstr "Clic en %(bound)s de %(annotation)s "
+#: ../lib/advene/plugins/transcriber.py:276
+msgid "Parsing topic and speaker tables information"
+msgstr "Analizando el tópico y la información de las tablas del presentador"
 
-#: ../lib/advene/gui/main.py:3499
-#, python-format
-msgid "Update %(bound)s of %(annotation)s"
-msgstr "Actualizar %(bound)s de %(annotation)s"
+#: ../lib/advene/plugins/tts.py:77
+msgid "Pronounce a text"
+msgstr "Pronuncia un texto"
 
-#: ../lib/advene/gui/main.py:3518
-msgid "Click on the frame corresponding to the timestamp value"
-msgstr "Clic en el cuadro correspondiente al valor de la marca de tiempo"
+#: ../lib/advene/plugins/tts.py:78
+msgid "String to pronounce."
+msgstr "Texto a pronunciar"
 
-#: ../lib/advene/gui/main.py:3520
-msgid "Set new timestamp value"
-msgstr "Establece un nuevo valor para la estampa de tiempo"
+#: ../lib/advene/plugins/tts.py:156
+msgid "TTS disabled. Cannot find the application 'festival' in PATH"
+msgstr ""
+"TTS deshabilitado. No se puede encontrar la aplicación 'festival' en el PATH"
 
-#: ../lib/advene/gui/main.py:3527
-msgid ""
-"<b>Annotation statistics</b>\n"
-"\n"
+#: ../lib/advene/plugins/tts.py:158
+msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
-"<b>Estadísticas de anotación</b>\n"
-"\n"
+"TTS deshabilitado. No se puede encontrar la aplicación 'aplay' en el PATH"
 
-#: ../lib/advene/gui/main.py:3599
-msgid "Text annotation"
-msgstr "Anotación de texto"
+#: ../lib/advene/plugins/soundenveloppe.py:40
+#: ../lib/advene/plugins/soundenveloppe.py:139
+#: ../lib/advene/plugins/soundenveloppe.py:141
+msgid "Sound enveloppe"
+msgstr "Envolvente de sonido"
 
-#: ../lib/advene/gui/main.py:3607 ../lib/advene/gui/main.py:3632
-msgid "Cannot find an appropriate annotation type"
-msgstr "No se puede encontrar un tipo de anotación apropiado"
+#: ../lib/advene/plugins/soundenveloppe.py:56
+msgid "Interval (in ms) at which to take samples."
+msgstr "Intervalo (en ms) de cuando tomar muestras."
 
-#: ../lib/advene/gui/main.py:3625
-msgid "Graphical annotation"
-msgstr "Anotación gráfica"
+#: ../lib/advene/plugins/soundenveloppe.py:59
+msgid "Maximum number of samples per annotation."
+msgstr "Número máximo de muestras por anotación"
 
-#: ../lib/advene/gui/main.py:3677
-msgid ""
-"An unsaved template package exists\n"
-"Save it first."
-msgstr ""
-"Una plantilla de paquete sin guardar existe\n"
-"Guardala primero. "
+#: ../lib/advene/plugins/soundenveloppe.py:111
+#, python-format
+msgid "At %s"
+msgstr "En %s"
 
-#: ../lib/advene/gui/main.py:3686
-msgid "Package modified"
-msgstr "Paquete modificado. "
+#: ../lib/advene/plugins/soundenveloppe.py:158
+msgid "Extracting sound enveloppe"
+msgstr "Extrayendo envolvente sonido"
 
-#: ../lib/advene/gui/main.py:3687
-msgid ""
-"The package that you want to close has been modified but not saved.\n"
-"Save it now?"
+#: ../lib/advene/plugins/barcode.py:36
+#, fuzzy
+msgid "Cannot register barcode extraction: zbar plugin not found."
 msgstr ""
-"El paquete que quieres cerrar ha sido modificado pero no guardado.\n"
-"¿Guardarlo ahora?"
-
-#: ../lib/advene/gui/main.py:3718
-msgid "Load a package"
-msgstr "Cargar un paquete."
+"No puede registrar representador (renderer) de montaje: Los plugins de "
+"Gnonlin no están presentes."
 
-#: ../lib/advene/gui/main.py:3727
-msgid ""
-"A video file was selected. Pretend that the user selected 'Select a video "
-"file'..."
+#: ../lib/advene/plugins/barcode.py:40
+msgid "Barcode (qr-code) extraction"
 msgstr ""
-"Un archivo de video fue seleccionado. Pretende que el usuario seleccionó "
-"'Selecciona un archivo de video...'"
 
-#: ../lib/advene/gui/main.py:3732
-#, 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?"
+#: ../lib/advene/plugins/barcode.py:95
+msgid "Barcode"
 msgstr ""
-"El archivo %s no parece un paquete válido de Advene. Debería de tener una "
-"extensión .azp o .xml. ¿Intentar abrirlo de todas maneras?"
 
-#: ../lib/advene/gui/main.py:3741
-msgid ""
-"You are trying to load a session file, but there are unsaved packages. "
-"Proceed anyway?"
-msgstr ""
-"Estas intentando cargar un archivo de sesión, pero hay paquetes sin guardar. "
-"¿Proceder de cualquier manera?"
+#: ../lib/advene/plugins/barcode.py:97
+#, fuzzy
+msgid "Extracted barcode information"
+msgstr "Informacion Media"
 
-#: ../lib/advene/gui/main.py:3769 ../lib/advene/gui/main.py:3825
-msgid "Do you want to save the current workspace ?"
-msgstr "¿Quieres guardar el espacio de trabajo actual?"
+#: ../lib/advene/plugins/barcode.py:115
+#, fuzzy
+msgid "Extraction barcodes"
+msgstr "Extrayendo %s"
 
-#: ../lib/advene/gui/main.py:3784 ../lib/advene/gui/main.py:3840
-#, python-format
-msgid "Could not save the package: %s"
-msgstr "No se puede guardar el paquete: %s"
+#: ../lib/advene/plugins/dcp.py:65
+msgid "DCP importer"
+msgstr "Importador DCP"
 
-#: ../lib/advene/gui/main.py:3797
+#: ../lib/advene/plugins/dcp.py:120
 #, python-format
-msgid "Save the package %s"
-msgstr "Guardar el paquete %s"
-
-#: ../lib/advene/gui/main.py:3810
-msgid "Invalid file extension"
-msgstr "Extensión de archivo no válida"
+msgid "Converting #%(num)d / %(count)d"
+msgstr "Convirtiendo #%(num)d / %(count)d"
 
-#: ../lib/advene/gui/main.py:3811
-#, python-format
-msgid ""
-"Your package contains resources,\n"
-"the filename (%s) should have a .azp extension.\n"
-"Should I put the correct extension?"
+#: ../lib/advene/plugins/nerd_plugin.py:47
+msgid "NERD (Named Entity Recognition and Disambiguation)"
 msgstr ""
-"Tu paquete contiene recursos,\n"
-"el nombre de archivo (%s) debe de tener una extensión .azp\n"
-"¿Debo incluir la extensión correcta?"
 
-#: ../lib/advene/gui/main.py:3815
-msgid "OK, the resources will be lost."
-msgstr "Ok, los recursos se perderán."
+#: ../lib/advene/plugins/nerd_plugin.py:68
+msgid "NERD API key"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:3817
-msgid "Aborting package saving"
-msgstr "Abortando el guardar paquete"
+#: ../lib/advene/plugins/nerd_plugin.py:82
+msgid "NER service to use"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:3851
-msgid "Save the session in..."
-msgstr "Guardando la sesión en..."
+#: ../lib/advene/plugins/nerd_plugin.py:88
+#, fuzzy
+msgid "Type of annotation to analyze"
+msgstr "El tipo de anotación"
 
-#: ../lib/advene/gui/main.py:3862
-#, python-format
-msgid "Session saved in %s"
-msgstr "Sesión guardada en %s"
+#: ../lib/advene/plugins/nerd_plugin.py:93
+msgid "Language to analyze"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:3871
-msgid "Do you confirm the creation of annotations matching the DVD chapters?"
+#: ../lib/advene/plugins/nerd_plugin.py:98
+msgid "Minimum confidence level (between 0.0 and 1.0)"
 msgstr ""
-"¿Confirmas la creacion de anotaciones concordando con los capitulos del DVD?"
 
-#: ../lib/advene/gui/main.py:3877
-msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
+#: ../lib/advene/plugins/nerd_plugin.py:103
+#, fuzzy
+msgid "Interpolate position of annotations"
+msgstr "Transcripción de las anotaciones"
+
+#: ../lib/advene/plugins/nerd_plugin.py:108
+msgid "Split by entity type"
 msgstr ""
-"No se pueden importar los capítulos del DVD. ¿Instalaste el programa lsdvd?"
 
-#: ../lib/advene/gui/main.py:3885
-msgid "The associated media is not a DVD."
-msgstr "El medio asociado no es un DVD. "
+#: ../lib/advene/plugins/nerd_plugin.py:113
+#, fuzzy
+msgid "Store results as markup in the annotation text"
+msgstr "Busca y reemplaza cadenas de texto en el contenido de las anotaciones"
+
+#: ../lib/advene/plugins/nerd_plugin.py:118
+#, fuzzy
+msgid "Create relations between the original annotations and the new ones"
+msgstr "Crea un tipo de relación entre este y..."
+
+#: ../lib/advene/plugins/nerd_plugin.py:150
+#, fuzzy, python-format
+msgid "NERD applied to %s"
+msgstr "Vista aplicada a %s\n"
 
-#: ../lib/advene/gui/main.py:3896
+#: ../lib/advene/plugins/nerd_plugin.py:208
 #, python-format
-msgid "Processing %s video"
-msgstr "Procesando %s video"
+msgid "NERD %s"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:3899
-msgid "No associated video file"
-msgstr "No hay un archivo de video asociado"
+#: ../lib/advene/plugins/annotationgraph.py:40
+msgid "AnnotationGraph importer"
+msgstr "Importador AnnotationGraph"
 
-#: ../lib/advene/gui/main.py:3926
-msgid "Standard RuleSet"
-msgstr "Conjunto de reglas estándar"
+#: ../lib/advene/plugins/shotdetectapp.py:48
+msgid "ShotdetectApp importer"
+msgstr "Importador de ShotdetectApp"
 
-#: ../lib/advene/gui/main.py:4042
-#, python-format
+#: ../lib/advene/plugins/shotdetectapp.py:59
 msgid ""
-"Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
+"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
+"too many shots are detected, try to increase its value."
 msgstr ""
-"Reproductor no activo - duración en cache : %(duration)s (%(durationms)d ms) "
+"Sensibilidad del algoritmo. Generalmente debe de ser entre 50 y 80. Si se "
+"detectan muchas capturas, intenta incrementar su valor."
 
-#: ../lib/advene/gui/main.py:4054
-#, fuzzy
-msgid ""
-"GNU General Public License v. 2\n"
-"See http://www.gnu.org/copyleft/gpl.html for more details"
-msgstr ""
-"GNU General Public License\n"
-"Ver http://www.gnu.org/copyleft/gpl.html para más detalles"
+#: ../lib/advene/plugins/shotdetectapp.py:146
+#, python-format
+msgid "Detected shot #%(num)d at %(pos)s "
+msgstr "Se detectó toma #%(num)d en %(pos)s "
 
-#: ../lib/advene/gui/main.py:4056
-msgid "Visit the Advene web site for examples and documentation."
-msgstr "Visita el sitio web de Advene para ejemplos y documentación."
+#: ../lib/advene/plugins/mpeg7.py:54
+msgid "MPEG7 importer"
+msgstr "Importador MPEG7"
 
-#: ../lib/advene/gui/main.py:4089 ../lib/advene/gui/main.py:4177
-msgid "Select a movie file"
-msgstr "Selecciona un archivo de pelicula"
+#: ../lib/advene/plugins/cinelab.py:76
+msgid "Cinelab importer"
+msgstr "Importador Cinelab"
 
-#: ../lib/advene/gui/main.py:4101
-msgid "Title/Chapter selection"
-msgstr "Selección de Titulo/Capitulo"
+#: ../lib/advene/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
+#, python-format
+msgid "File %s is not an Advene2 zip package."
+msgstr "El archivo %s no es un paquete Advene2 zip"
 
-#: ../lib/advene/gui/main.py:4143
-msgid "Select a video stream"
-msgstr "Selecciona una corriente de video"
+#: ../lib/advene/plugins/cinelab.py:176
+msgid "Converting annotation types"
+msgstr "Convirtiendo tipos de anotación"
 
-#: ../lib/advene/gui/main.py:4144
-msgid "Enter the address of a video stream"
-msgstr "Ingresa la dirección de una corriente de video"
+#: ../lib/advene/plugins/cinelab.py:217
+msgid "Converting views"
+msgstr "Convirtiendo vistas"
 
-#: ../lib/advene/gui/main.py:4148
-#, python-format
-msgid "Successfully extracted the video stream address (%s) from the url.\n"
+#: ../lib/advene/plugins/cinelab.py:249
+msgid "Importing annotations"
+msgstr "Importando anotaciones"
+
+#: ../lib/advene/plugins/owl_import.py:40
+#, fuzzy
+msgid "OWL (schema) importer"
+msgstr "Importador chaplin"
+
+#: ../lib/advene/player/gstreamer.py:421
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
 msgstr ""
-"Se extrajo la dirección de flujo de video satisfactoriamente (% s) a partir "
-"de la url.\n"
+"No se puede realizar una captura de pantalla de resolución completa, otra "
+"captura se está realizando. "
 
-#: ../lib/advene/gui/main.py:4173
-msgid "Package properties"
-msgstr "Propiedades de paquete"
+#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
+#: ../lib/advene/rules/actions.py:120
+msgid "Message to display"
+msgstr "Mensaje a mostrar"
 
-#: ../lib/advene/gui/main.py:4174
-msgid "Author name"
-msgstr "Nombre de autor"
+#: ../lib/advene/rules/actions.py:48
+msgid "Start the player"
+msgstr "Iniciar el reproductor"
 
-#: ../lib/advene/gui/main.py:4175
-msgid "Package creation date"
-msgstr "Fecha de creación del paquete"
+#: ../lib/advene/rules/actions.py:49
+msgid "Start position (in ms)"
+msgstr "Posicion inicial (en ms)"
 
-#: ../lib/advene/gui/main.py:4176
-msgid "Package title"
-msgstr "Título del paquete"
+#: ../lib/advene/rules/actions.py:52 ../lib/advene/rules/actions.py:384
+msgid "The movie start"
+msgstr "El inicio de la película"
 
-#: ../lib/advene/gui/main.py:4177
-msgid "Associated media"
-msgstr "Media asociada"
+#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
+msgid "The annotation begin"
+msgstr "El comienzo de la anotación"
 
-#: ../lib/advene/gui/main.py:4178
-msgid "Media duration in ms"
-msgstr "Duración del medio en ms"
+#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
+msgid "The annotation end"
+msgstr "El fin de la anotación"
 
-#: ../lib/advene/gui/main.py:4237
-msgid "Paths"
-msgstr "Rutas"
+#: ../lib/advene/rules/actions.py:64
+msgid "Goto position (in ms)"
+msgstr "Ir a la posicion (en ms)"
 
-#: ../lib/advene/gui/main.py:4239
-msgid "Data"
-msgstr "Data"
+#: ../lib/advene/rules/actions.py:73
+msgid "Stop the player"
+msgstr "Detener el reproductor"
 
-#: ../lib/advene/gui/main.py:4239
-msgid "Standard directory for data files"
-msgstr "Directorio estándar para archivos de datos"
+#: ../lib/advene/rules/actions.py:80
+msgid "Pause the player"
+msgstr "Pausar el reproductor"
 
-#: ../lib/advene/gui/main.py:4240
-msgid "Movie path"
-msgstr "Ruta de video"
+#: ../lib/advene/rules/actions.py:87
+msgid "Resume the player"
+msgstr "Continuar el reproductor"
 
-#: ../lib/advene/gui/main.py:4240
-#, python-format
-msgid ""
-"List of directories (separated by %s) to search for movie files (_ means "
-"package directory)"
-msgstr ""
-"Lista de directorios (separados por %s) para buscar archivos de video (_ "
-"significa directorio de paquetes)"
+#: ../lib/advene/rules/actions.py:94
+msgid "Take a snapshot"
+msgstr "Toma una fotografia"
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Imagecache"
-msgstr "Caché de imagen"
+#: ../lib/advene/rules/actions.py:101
+msgid "Display a caption"
+msgstr "Muestra un subtitulo"
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Directory for storing the snapshot cache"
-msgstr "Directorio para almacenar la caché de la captura"
+#: ../lib/advene/rules/actions.py:103
+msgid "Duration of the caption"
+msgstr "Duracion del subtitulo"
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Player"
-msgstr "Reproductor"
+#: ../lib/advene/rules/actions.py:131
+msgid "Display a graphical shape"
+msgstr "Mostrar una forma gráfica"
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Directory of the video player"
-msgstr "Directorio del reproductor de video"
+#: ../lib/advene/rules/actions.py:132
+msgid "Shape (square, circle, triangle)"
+msgstr "Forma (cuadro, círculo, triángulo)"
 
-#: ../lib/advene/gui/main.py:4243
-msgid "Shotdetect"
-msgstr "Shotdetect"
+#: ../lib/advene/rules/actions.py:134
+msgid "x-position (percentage of screen)"
+msgstr "posicion-x (porcentaje de pantalla)"
 
-#: ../lib/advene/gui/main.py:4243
-msgid "Shotdetect application"
-msgstr "Aplicación shotdetect"
+#: ../lib/advene/rules/actions.py:135
+msgid "y-position (percentage of screen)"
+msgstr "posicion-y (porcentaje de pantalla)"
 
-#: ../lib/advene/gui/main.py:4245
-msgid "GUI"
-msgstr "GUI"
+#: ../lib/advene/rules/actions.py:136
+msgid "Size (arbitrary units)"
+msgstr "Tamanio (unidades arbitrarias)"
 
-#: ../lib/advene/gui/main.py:4246
-msgid "Interface language (after restart)"
-msgstr "Idioma de la interfaz (después de reiniciar)"
+#: ../lib/advene/rules/actions.py:137
+msgid "Duration of the display in ms"
+msgstr "Duración de la visualizacion en ms"
 
-#: ../lib/advene/gui/main.py:4246
-msgid ""
-"Language used for the interface (necessitates to restart the application)"
-msgstr "Idioma utilizado por la interfaz (necesita reiniciar la aplicación)"
+#: ../lib/advene/rules/actions.py:145
+msgid "A square"
+msgstr "Un cuadrado"
 
-#: ../lib/advene/gui/main.py:4252
-msgid "Record activity trace"
-msgstr "Registrar la actividad de rastreo"
+#: ../lib/advene/rules/actions.py:146
+msgid "A circle"
+msgstr "Un círculo"
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Expert mode"
-msgstr "Modo experto"
+#: ../lib/advene/rules/actions.py:147
+msgid "A triangle"
+msgstr "Un triángulo"
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Offer advanced possibilities"
-msgstr "Ofrece posibilidades avanzadas"
+#: ../lib/advene/rules/actions.py:150
+msgid "White"
+msgstr "Blanco"
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Prefer WYSIWYG"
-msgstr "Preferir WYSIWYG"
+#: ../lib/advene/rules/actions.py:151
+msgid "Black"
+msgstr "Negro"
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Use WYSIWYG editors when possible (HTML, SVG)"
-msgstr "Utilizar editores WYSIWYG cuando sea posible (HTML, SVG)"
+#: ../lib/advene/rules/actions.py:152
+msgid "Red"
+msgstr "Rojo"
 
-#: ../lib/advene/gui/main.py:4255
-msgid "Player control in edit popups"
-msgstr "Control de reproductor en ventanas flotantes de edición"
+#: ../lib/advene/rules/actions.py:153
+msgid "Green"
+msgstr "Verde"
 
-#: ../lib/advene/gui/main.py:4255
-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 ""
-"Habilitar controles de reproductor genéricos en las ventanas de edición. "
-"Esto puede ser indeseable, ya que sobrecarga algunos comportamientos de "
-"edición de texto estándar (esp. control-izquierda/derecha)."
+#: ../lib/advene/rules/actions.py:154
+msgid "Blue"
+msgstr "Azul"
 
-#: ../lib/advene/gui/main.py:4257
-msgid "Open popups"
-msgstr "Abrir ventanas flotantes"
+#: ../lib/advene/rules/actions.py:155
+msgid "Yellow"
+msgstr "Amarillo"
 
-#: ../lib/advene/gui/main.py:4258
-msgid "Where should we open adhoc views?"
-msgstr "¿Dónde debemos posicionar las vistas adhoc abiertas?"
+#: ../lib/advene/rules/actions.py:158
+msgid "At the top of the screen"
+msgstr "En la parte superior de la pantalla"
 
-#: ../lib/advene/gui/main.py:4259
-msgid "as a popup window"
-msgstr "como una ventana flotante"
+#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
+msgid "In the middle of the screen"
+msgstr "A la mitad de la pantalla"
 
-#: ../lib/advene/gui/main.py:4260
-msgid "embedded east of the video"
-msgstr "embeber este del video"
+#: ../lib/advene/rules/actions.py:160
+msgid "At the bottom of the screen"
+msgstr "El fondo de la pantalla"
 
-#: ../lib/advene/gui/main.py:4261
-msgid "embedded west of the video"
-msgstr "embeber oeste del video"
+#: ../lib/advene/rules/actions.py:163
+msgid "At the left of the screen"
+msgstr "A la izquierda de la pantalla"
 
-#: ../lib/advene/gui/main.py:4262
-msgid "embedded south of the video"
-msgstr "embeber sur del video"
+#: ../lib/advene/rules/actions.py:181
+msgid "Zero the volume during the annotation"
+msgstr "Volumen cero durante la anotacion"
 
-#: ../lib/advene/gui/main.py:4263
-msgid "embedded at the right of the window"
-msgstr "embeber a la derecha de la ventana"
+#: ../lib/advene/rules/actions.py:188
+msgid "Zero the volume"
+msgstr "Volumen cero"
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History size"
-msgstr "Tamaño del historial"
+#: ../lib/advene/rules/actions.py:195
+msgid "Restore the volume"
+msgstr "Restaurar el volumen"
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History filelist size limit"
-msgstr "Limite del tamaño de la lista de archivos del historial"
+#: ../lib/advene/rules/actions.py:203
+msgid "Activate a STBV"
+msgstr "Activar una STBV"
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember window size"
-msgstr "Recordar el tamaño de ventana"
+#: ../lib/advene/rules/actions.py:204
+msgid "STBV id"
+msgstr "STBV id"
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember the size of opened windows"
-msgstr "Recordar el tamaño de las ventanas abiertas"
+#: ../lib/advene/rules/actions.py:213
+msgid "Send a user event"
+msgstr "Mandar un evento de usuario"
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Bookmark snapshot width"
-msgstr "Guardar en separador el ancho de la captura de pantalla"
+#: ../lib/advene/rules/actions.py:214
+msgid "Identifier"
+msgstr "Identificador"
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Width of the snapshots representing bookmarks"
-msgstr "Ancho de las capturas que representan separadores"
+#: ../lib/advene/rules/actions.py:215
+msgid "Delay in ms before sending the event."
+msgstr "Retraso en ms antes de enviar un evento."
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Bookmark snapshot precision"
-msgstr "Precisión de captura del separador"
+#: ../lib/advene/rules/actions.py:225
+msgid "Open a URL in the web browser"
+msgstr "Abrir un URL en un navegador web"
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Precision (in ms) of the displayed bookmark snapshots."
-msgstr ""
-"Precisión (en ms) de la visualización de las capturas de separadores "
-"mostrados"
+#: ../lib/advene/rules/actions.py:235
+msgid "Open a static view"
+msgstr "Abre una vista estática"
 
-#: ../lib/advene/gui/main.py:4272
-msgid "General"
-msgstr "General"
+#: ../lib/advene/rules/actions.py:246
+msgid "Set the audio volume"
+msgstr "Establece el volumen del audio"
 
-#: ../lib/advene/gui/main.py:4273
-msgid "Weekly update check"
-msgstr "Revisión semanal de actualización"
+#: ../lib/advene/rules/actions.py:247
+msgid "Volume level (from 0 to 100)"
+msgstr "Nivel de volumen (de 0 a 100)"
 
-#: ../lib/advene/gui/main.py:4274
-msgid "On exit,"
-msgstr "Al salir, "
+#: ../lib/advene/rules/actions.py:256
+msgid "Set the playing rate"
+msgstr "Ajusta la velocidad de reproducción"
 
-#: ../lib/advene/gui/main.py:4275
-msgid "How to handle screenshots on exit"
-msgstr "Como manejar capturas de pantalla al salir"
+#: ../lib/advene/rules/actions.py:257
+msgid "Rate (100: normal rate, 200: twice slower)"
+msgstr "Tarifa (100: tasa normal, 200: dos veces más lento)"
 
-#: ../lib/advene/gui/main.py:4276
-msgid "never save screenshots"
-msgstr "nunca guardar capturas de pantalla"
+#: ../lib/advene/rules/actions.py:266
+msgid "Play a sound resource"
+msgstr "Reproducir un recurso de sonido"
 
-#: ../lib/advene/gui/main.py:4277
-msgid "always save screenshots"
-msgstr "siempre guardar capturas de pantalla"
+#: ../lib/advene/rules/actions.py:267
+msgid "Clip id"
+msgstr "Id del clip"
 
-#: ../lib/advene/gui/main.py:4278
-msgid "ask before saving screenshots"
-msgstr "preguntar antes de guardar capturas de pantalla"
+#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
+msgid "Volume (0..100)"
+msgstr "Volumen (0..100)"
 
-#: ../lib/advene/gui/main.py:4280
-msgid "Auto-save"
-msgstr "Guardado automático"
+#: ../lib/advene/rules/actions.py:269 ../lib/advene/rules/actions.py:283
+msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
+msgstr ""
+"Equilibrio izquierda-derecha: -1 -> totalmente a la izquierda, 0 -> centro, "
+"1 -> totalmente a la derecha"
 
-#: ../lib/advene/gui/main.py:4281
-msgid "Data auto-save functionality"
-msgstr "Funcionalidad de guardado automático de datos"
+#: ../lib/advene/rules/actions.py:280
+msgid "Play a sound file"
+msgstr "Reproducir un archivo de sonido"
 
-#: ../lib/advene/gui/main.py:4282
-msgid "is desactivated"
-msgstr "es desactivado"
+#: ../lib/advene/rules/actions.py:281
+msgid "Sound filename"
+msgstr "Nombre del archivo de audio"
 
-#: ../lib/advene/gui/main.py:4283
-msgid "is done automatically"
-msgstr "se realiza automáticamente"
+#: ../lib/advene/rules/actions.py:293
+msgid "Set a state variable"
+msgstr "Establecer una variable de estado"
 
-#: ../lib/advene/gui/main.py:4284
-msgid "is done after confirmation"
-msgstr "se realiza después de la confirmación"
+#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
+msgid "State variable name"
+msgstr "Nombre de variable de estado"
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Auto-save interval (in s)"
-msgstr "Intervalo del guardado automático (en s)"
+#: ../lib/advene/rules/actions.py:295
+msgid "State value"
+msgstr "Valor de estado"
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Interval (in seconds) between package auto-saves"
-msgstr "Intervalo (en segundos) entre cada guardado automático del paquete"
+#: ../lib/advene/rules/actions.py:305
+msgid "Increment a state variable"
+msgstr "Incrementar una variable de estado"
 
-#: ../lib/advene/gui/main.py:4288
-msgid "Workspace"
-msgstr "Espacio de trabajo"
+#: ../lib/advene/rules/actions.py:315
+msgid "Clear all state variables"
+msgstr "Limpiar todas las variables de estado"
 
-#: ../lib/advene/gui/main.py:4290
-msgid "On package saving,"
-msgstr "Al guardar el paquete,"
+#: ../lib/advene/rules/actions.py:330
+#, python-format
+msgid "Error in the evaluation of the parameter %s:"
+msgstr "Error en la evaluación del parametro %s:"
 
-#: ../lib/advene/gui/main.py:4291
-msgid "Do you wish to save the default workspace with the package?"
-msgstr "¿Deseas guardar el área de trabajo predeterminada con el paquete?"
+#: ../lib/advene/rules/actions.py:551
+#, python-format
+msgid "Cannot find the stbv %s"
+msgstr "No se puede encontrar el stbv %s"
 
-#: ../lib/advene/gui/main.py:4292
-msgid "never save the current workspace"
-msgstr "nunca guardar el área de trabajo actual"
+#: ../lib/advene/rules/actions.py:647
+msgid "The set_rate method is unavailable."
+msgstr "El método set_rate no está disponible"
 
-#: ../lib/advene/gui/main.py:4293
-msgid "always save the current workspace"
-msgstr "siempre guardar el área de trabajo actual"
+#: ../lib/advene/rules/actions.py:657
+msgid "No 'soundclips' resource folder in the package"
+msgstr "No hay existe una carpeta de recursos de clips de audio en el paquete"
 
-#: ../lib/advene/gui/main.py:4294
-msgid "ask before saving the current workspace"
-msgstr "preguntar antes de guardar el área de trabajo actual"
+#: ../lib/advene/rules/actions.py:683
+msgid "Full volume"
+msgstr "Volumen total "
 
-#: ../lib/advene/gui/main.py:4296
-#, fuzzy
-msgid "Auto-validation of edited elements"
-msgstr "Validación de la edición de un elemento"
+#: ../lib/advene/rules/actions.py:684
+msgid "Left"
+msgstr "Izquierda"
 
-#: ../lib/advene/gui/main.py:4296
-msgid "Automatically validate modified elements when saving the package."
-msgstr ""
+#: ../lib/advene/rules/actions.py:686
+msgid "Right"
+msgstr "Derecha"
 
-#: ../lib/advene/gui/main.py:4298
-msgid "On package load,"
-msgstr "En la carga del paquete,"
+#: ../lib/advene/rules/importer.py:29
+msgid "Event history importer"
+msgstr "Importador de eventos históricos"
 
-#: ../lib/advene/gui/main.py:4299
-msgid "Do you wish to load the workspace saved with the package?"
-msgstr "¿Deseas cargar el espacio de trabajo guardado con el paquete?"
+#: ../lib/advene/rules/elements.py:141
+msgid "is equal to"
+msgstr "es igual a"
 
-#: ../lib/advene/gui/main.py:4300
-msgid "never load the saved workspace"
-msgstr "nunca cargar el espacio de trabajo guardado"
+#: ../lib/advene/rules/elements.py:142
+msgid "is different from"
+msgstr "es diferente de"
 
-#: ../lib/advene/gui/main.py:4301
-msgid "always load the saved workspace"
-msgstr "siempre cargar el espacio de trabajo guardado"
+#: ../lib/advene/rules/elements.py:143
+msgid "contains"
+msgstr "contiene"
 
-#: ../lib/advene/gui/main.py:4302
-msgid "ask before loading the saved workspace"
-msgstr "preguntar antes de cargar el espacio de trabajo guardado"
+#: ../lib/advene/rules/elements.py:144
+msgid "is greater than"
+msgstr "es mayor que"
 
-#: ../lib/advene/gui/main.py:4305
-msgid "Video Player"
-msgstr "Configura reproductor"
+#: ../lib/advene/rules/elements.py:145
+msgid "is lower than"
+msgstr "es menor que"
 
-#: ../lib/advene/gui/main.py:4306
-msgid "Autostart"
-msgstr "Autoinicio"
+#: ../lib/advene/rules/elements.py:146
+msgid "matches the regexp"
+msgstr "concuerda la regexp"
 
-#: ../lib/advene/gui/main.py:4306
-msgid ""
-"Automatically start the player when loading a media file (either directly or "
-"through a package)"
-msgstr ""
-"Automáticamente iniciar el reproductor cuando se carga un archivo de media "
-"(ya sea directamente o utilizando un paquete)"
+#: ../lib/advene/rules/elements.py:147
+msgid "is before"
+msgstr "esta antes"
 
-#: ../lib/advene/gui/main.py:4307
-msgid "Fulscreen timestamp"
-msgstr "Marca de tiempo en pantalla completa"
+#: ../lib/advene/rules/elements.py:148
+msgid "meets"
+msgstr "reune"
 
-#: ../lib/advene/gui/main.py:4307
-msgid "Display the timestamp over the video when in fullscreen mode"
-msgstr ""
-"Mostrar la marca de tiempo sobre el video cuando está en modo pantalla "
-"completa"
+#: ../lib/advene/rules/elements.py:149
+msgid "overlaps"
+msgstr "traslapa"
 
-#: ../lib/advene/gui/main.py:4308
-msgid "Enable captions"
-msgstr "Habilitar subtítulos"
+#: ../lib/advene/rules/elements.py:150
+msgid "during"
+msgstr "dura"
 
-#: ../lib/advene/gui/main.py:4308
-msgid "Enable captions over the video"
-msgstr "Habilitar subtítulos sobre el video"
+#: ../lib/advene/rules/elements.py:151
+msgid "starts"
+msgstr "inicia"
 
-#: ../lib/advene/gui/main.py:4309
-msgid "Caption font"
-msgstr "Fuente de los subtítulos"
+#: ../lib/advene/rules/elements.py:152
+msgid "finishes"
+msgstr "termina"
 
-#: ../lib/advene/gui/main.py:4309
-msgid "TrueType font for captions"
-msgstr "Fuente TrueType para etiquetas"
+#: ../lib/advene/rules/elements.py:157
+msgid "is not true"
+msgstr "no es verdadero"
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG"
-msgstr "Habilitar SVG"
+#: ../lib/advene/rules/elements.py:158
+msgid "is true"
+msgstr "es verdadero"
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG captions over the video"
-msgstr "Habilitar etiquetas SVG sobre el video"
+#: ../lib/advene/rules/elements.py:162
+msgid "Basic conditions"
+msgstr "Condiciones basicas"
 
-#: ../lib/advene/gui/main.py:4312
-msgid "Enable snapshots"
-msgstr "Habilitar captura de pantalla"
+#: ../lib/advene/rules/elements.py:163
+msgid "Allen relations"
+msgstr "Relaciones Allen"
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width"
-msgstr "Ancho de captura de pantalla"
+#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
+msgid "Unknown type for overlaps comparison"
+msgstr "Tipo desconocido traslapa la comparacion"
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width in pixels."
-msgstr "Ancho de captura de pantalla en pixeles."
+#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
+msgid "Unknown type for during comparison"
+msgstr "Tipo desconocido durante la comparacion"
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity"
-msgstr "Verbosidad"
+#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
+#, python-format
+msgid "Unknown action %s"
+msgstr "Acción desconocida %s"
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity level. -1 for no messages."
-msgstr "Nivel de verbosidad: -1 para no mostrar mensajes."
+#: ../lib/advene/rules/elements.py:522
+#, python-format
+msgid "Unknown parameter %s"
+msgstr "Parámetro desconocido %s"
 
-#: ../lib/advene/gui/main.py:4317
-msgid "Devices"
-msgstr "Dispositivos"
+#: ../lib/advene/rules/elements.py:527
+msgid "Unknown actions"
+msgstr "Acciones desconocidas"
 
-#: ../lib/advene/gui/main.py:4319
-msgid "Standard"
-msgstr "Estándar"
+#: ../lib/advene/rules/elements.py:972
+msgid "Start of the editing of an element"
+msgstr "Iniciar la edición de un elemento."
 
-#: ../lib/advene/gui/main.py:4321
-msgid "DVD drive"
-msgstr "Lector DVD"
+#: ../lib/advene/rules/elements.py:973
+msgid "Cancel of the editing of an element"
+msgstr "Cancelar la edición de un elemento"
 
-#: ../lib/advene/gui/main.py:4321
-msgid "Drive letter for the DVD"
-msgstr "Letra del lector para el DVD"
+#: ../lib/advene/rules/elements.py:974
+msgid "Destruction of the edit window of an element"
+msgstr "Destrucción de la ventana de edición de un elemento"
 
-#: ../lib/advene/gui/main.py:4322
-msgid "GDI"
-msgstr "GDI"
+#: ../lib/advene/rules/elements.py:975
+msgid "Validation of the editing of an element"
+msgstr "Validación de la edición de un elemento"
 
-#: ../lib/advene/gui/main.py:4323
-msgid "Direct X"
-msgstr "Direct X"
+#: ../lib/advene/rules/elements.py:976
+msgid "Ending editing of a package"
+msgstr "Terminando la edicion de un paquete"
 
-#: ../lib/advene/gui/main.py:4325
-msgid "DVD device"
-msgstr "Dispositivo DVD"
+#: ../lib/advene/rules/elements.py:977
+msgid "Beginning of an annotation"
+msgstr "Principio de una anotacion"
 
-#: ../lib/advene/gui/main.py:4325
-msgid "Device for the DVD"
-msgstr "Dispositivo para el DVD"
+#: ../lib/advene/rules/elements.py:978
+msgid "End of an annotation"
+msgstr "Fin de una anotacion"
 
-#: ../lib/advene/gui/main.py:4326
-msgid "X11"
-msgstr "X11"
+#: ../lib/advene/rules/elements.py:979
+msgid "Creation of a new annotation"
+msgstr "Creacion de una nueva anotacion"
 
-#: ../lib/advene/gui/main.py:4327
-msgid "XVideo"
-msgstr "XVideo"
+#: ../lib/advene/rules/elements.py:980
+msgid "Ending editing of an annotation"
+msgstr "Finalizando la edicion de una anotacion"
 
-#: ../lib/advene/gui/main.py:4328
-msgid "GL"
-msgstr "GL"
+#: ../lib/advene/rules/elements.py:981
+msgid "Suppression of an annotation"
+msgstr "Supresion de una anotacion"
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output"
-msgstr "Salida de video"
+#: ../lib/advene/rules/elements.py:982
+msgid "Activation of an annotation"
+msgstr "Activacion de una anotacion"
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output module"
-msgstr "Módulo de salida de video"
+#: ../lib/advene/rules/elements.py:983
+msgid "Deactivation of an annotation"
+msgstr "Desactivacion de una anotacion"
 
-#: ../lib/advene/gui/main.py:4332
-msgid "Recorder options"
-msgstr "Opciones de grabadora"
+#: ../lib/advene/rules/elements.py:984
+msgid "Merging of two annotations"
+msgstr "Uniendo dos anotaciones."
 
-#: ../lib/advene/gui/main.py:4333
-msgid "Audio input"
-msgstr "Entrada de audio"
+#: ../lib/advene/rules/elements.py:985
+msgid "Moving an annotation"
+msgstr "Mover una anotación"
 
-#: ../lib/advene/gui/main.py:4333
-msgid "Device name for audio input (with gstrecorder plugin)"
-msgstr ""
-"Nombre del dispositivo para la entrada de audio (con el plugin gstrecorder)"
+#: ../lib/advene/rules/elements.py:986
+msgid "Activation of a relation"
+msgstr "Activacion de una relacion"
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record video"
-msgstr "Grabar video"
+#: ../lib/advene/rules/elements.py:987
+msgid "Deactivation of a relation"
+msgstr "Desactivacion de una relacion"
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record both video and audio"
-msgstr "Grabar ambos video y audio"
+#: ../lib/advene/rules/elements.py:988
+msgid "Creation of a new relation"
+msgstr "Creacion de una nueva relacion"
 
-#: ../lib/advene/gui/main.py:4337
-msgid "<i>Experimental</i>"
-msgstr "<i>Experimental</i>"
+#: ../lib/advene/rules/elements.py:989
+msgid "Ending editing of a relation"
+msgstr "Terminando de editar una relacion"
 
-#: ../lib/advene/gui/main.py:4338
-msgid "Embed the caption scroller below the video"
-msgstr "Embeber el desplazamiento de subtítulos debajo del video"
+#: ../lib/advene/rules/elements.py:990
+msgid "Suppression of a relation"
+msgstr "Supresion de una relacion"
 
-#: ../lib/advene/gui/main.py:4339
-msgid "Embed the caption view below the video"
-msgstr "Embeber la vista de subtítulos debajo del video"
+#: ../lib/advene/rules/elements.py:991
+msgid "Creation of a new view"
+msgstr "Creacion de una nueva vista"
 
-#: ../lib/advene/gui/main.py:4341
-msgid "Time-related"
-msgstr "Relacionado con el tiempo"
+#: ../lib/advene/rules/elements.py:992
+msgid "Ending editing of a view"
+msgstr "Terminando de editar una vista"
 
-#: ../lib/advene/gui/main.py:4342
-msgid "Time format"
-msgstr "Formato del tiempo"
+#: ../lib/advene/rules/elements.py:993
+msgid "Suppression of a view"
+msgstr "Supresion de una vista"
 
-#: ../lib/advene/gui/main.py:4342
-msgid "Format used to display timecodes"
-msgstr "Formato utilizado para mostrar códigos de tiempo"
+#: ../lib/advene/rules/elements.py:994
+msgid "Creation of a new query"
+msgstr "Creación de una nueva busqueda"
 
-#: ../lib/advene/gui/main.py:4356
-msgid "Default FPS"
-msgstr "FPS predeterminados"
+#: ../lib/advene/rules/elements.py:995
+msgid "Ending editing of a query"
+msgstr "Terminando de editar una busqueda"
 
-#: ../lib/advene/gui/main.py:4357
-msgid ""
-"Default FPS (frame-per-second) value, when entering or displaying timestamps "
-"with frame numbers."
-msgstr ""
-"Valor predeterminado FPS (cuadros por segundo), cuando se entra o se "
-"muestran las marcas de tiempo con números del marco."
+#: ../lib/advene/rules/elements.py:996
+msgid "Suppression of a query"
+msgstr "Supresion de una búsqueda"
 
-#: ../lib/advene/gui/main.py:4358
-msgid "Time increment"
-msgstr "Incremento del tiempo"
+#: ../lib/advene/rules/elements.py:997
+msgid "Creation of a new schema"
+msgstr "Creacion de un nuevo esquema"
 
-#: ../lib/advene/gui/main.py:4358
-msgid ""
-"Skip duration, when using control-left/right or forward/rewind buttons (in "
-"ms)."
-msgstr ""
-"Saltar duración, cuando se utiliza control-izquierda/derecha o avance / "
-"retroceso (en ms)."
+#: ../lib/advene/rules/elements.py:998
+msgid "Ending editing of a schema"
+msgstr "Terminando de editar un esquema"
 
-#: ../lib/advene/gui/main.py:4359
-msgid "Second time increment"
-msgstr "Incremento del segundo tiempo"
+#: ../lib/advene/rules/elements.py:999
+msgid "Suppression of a schema"
+msgstr "Supresion de un esquema"
 
-#: ../lib/advene/gui/main.py:4359
-msgid "Skip duration, when using control-shift-left/right (in ms)."
-msgstr ""
-"Saltar duración, cuando se utiliza control-shift-izquierda/derecha (en ms)."
+#: ../lib/advene/rules/elements.py:1001
+msgid "Ending editing an annotation type"
+msgstr "Terminando de editar un tipo de anotacion"
 
-#: ../lib/advene/gui/main.py:4360
-msgid "Third time increment"
-msgstr "Incremento del tercer tiempo"
+#: ../lib/advene/rules/elements.py:1002
+msgid "Suppression of an annotation type"
+msgstr "Supresión de un tipo de anotacion"
 
-#: ../lib/advene/gui/main.py:4360
-msgid "Skip duration, when using control-shift-up/down (in ms)."
-msgstr "Saltar duración, cuando se utiliza control-shift-arriba/abajo (en ms)."
+#: ../lib/advene/rules/elements.py:1003
+msgid "Creation of a new relation type"
+msgstr "Creación de un nuevo tipo de relacion"
 
-#: ../lib/advene/gui/main.py:4361
-msgid "Custom Up/Down"
-msgstr "Personalizar Arriba / Abajo"
+#: ../lib/advene/rules/elements.py:1004
+msgid "Ending editing a relation type"
+msgstr "Terminando de editar un tipo de relacion"
 
-#: ../lib/advene/gui/main.py:4361
-msgid ""
-"Use third time increment for up/down navigation without having to hold shift."
-msgstr ""
-"Utilizar incremento de  tercer tiempo para la navegación hacia arriba / "
-"abajo sin tener que sostener shift."
+#: ../lib/advene/rules/elements.py:1005
+msgid "Suppression of a relation type"
+msgstr "Suprimiendo un tipo de relacion"
 
-#: ../lib/advene/gui/main.py:4363
-msgid "Scroll increment"
-msgstr "Incremento del desplazamiento"
+#: ../lib/advene/rules/elements.py:1006
+msgid "Creation of a new resource"
+msgstr "Creación de un nuevo recurso"
 
-#: ../lib/advene/gui/main.py:4363
-msgid ""
-"On most annotations, control+scrollwheel will increment/decrement their "
-"bounds by this value (in ms)."
-msgstr ""
-"En la mayoría de las anotaciones, control + rueda de desplazamiento "
-"aumentará / disminuirá sus límites por este valor (en ms)."
+#: ../lib/advene/rules/elements.py:1007
+msgid "Ending editing of a resource"
+msgstr "Finalizando la edición de un recurso"
 
-#: ../lib/advene/gui/main.py:4364
-msgid "Second scroll increment"
-msgstr "Incremento del segundo desplazamiento"
+#: ../lib/advene/rules/elements.py:1008
+msgid "Suppression of a resource"
+msgstr "Supresión de un recurso"
 
-#: ../lib/advene/gui/main.py:4364
-msgid ""
-"On most annotations, control+shift+scrollwheel will increment/decrement "
-"their bounds by this value (in ms)."
-msgstr ""
-"En la mayoría de las anotaciones, control + shift + scroll aumentará / "
-"disminuirá sus límites por este valor (en ms)."
+#: ../lib/advene/rules/elements.py:1009
+msgid "Modification of the tag"
+msgstr "Modificación de la etiqueta"
 
-#: ../lib/advene/gui/main.py:4366
-msgid "Player sync"
-msgstr "Sincronizar reproductor"
+#: ../lib/advene/rules/elements.py:1010
+msgid "Activating a link"
+msgstr "Activando un link"
 
-#: ../lib/advene/gui/main.py:4366
-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 ""
-"Intervalo (en ms) por el cual vamos a sincronizar los reproductores "
-"esclavos. Establecer un valor demasiado bajo puede dejar la aplicación "
-"inutilizable. Utiliza 0 para deshabilitar la sincronización contínua."
+#: ../lib/advene/rules/elements.py:1011
+msgid "Player start"
+msgstr "Reproductor inicia"
 
-#: ../lib/advene/gui/main.py:4367
-msgid "Timeline parameters"
-msgstr "Parámetros de la línea del tiempo"
+#: ../lib/advene/rules/elements.py:1012
+msgid "Player stop"
+msgstr "Reproductor detiene"
 
-#: ../lib/advene/gui/main.py:4368
-msgid "Font size for annotation widgets"
-msgstr "Tamaño de la fuente para los widgets de anotación"
+#: ../lib/advene/rules/elements.py:1013
+msgid "Player pause"
+msgstr "Reproductor pausa"
 
-#: ../lib/advene/gui/main.py:4369
-msgid "Button height"
-msgstr "Altura de los botones"
+#: ../lib/advene/rules/elements.py:1014
+msgid "Player resume"
+msgstr "Reproductor continua"
 
-#: ../lib/advene/gui/main.py:4369
-msgid "Height of annotation widgets"
-msgstr "Altura de los widgets de anotación"
+#: ../lib/advene/rules/elements.py:1015
+msgid "Going to a given position"
+msgstr "Ir a una posición dada"
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Interline height"
-msgstr "Algura del interlineado"
+#: ../lib/advene/rules/elements.py:1016
+msgid "Loading a new package"
+msgstr "Cargando un nuevo paquete"
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Height of interlines"
-msgstr "Altura del interlineado"
+#: ../lib/advene/rules/elements.py:1017
+msgid "Activating a package"
+msgstr "Activando un paquete"
 
-#: ../lib/advene/gui/main.py:4372
-msgid "Text content"
-msgstr "Contenido de texto"
+#: ../lib/advene/rules/elements.py:1018
+msgid "Saving the package"
+msgstr "Guardando el paquete"
 
-#: ../lib/advene/gui/main.py:4373
-msgid "Completion mode"
-msgstr "Modo de terminación"
+#: ../lib/advene/rules/elements.py:1019
+msgid "Start of the dynamic view"
+msgstr "Estado de la vista dinamica"
 
-#: ../lib/advene/gui/main.py:4373
-msgid "Enable dynamic completion mode"
-msgstr "Habilitar modo de terminación dinámico"
+#: ../lib/advene/rules/elements.py:1020
+msgid "End of the dynamic view"
+msgstr "Fin de la vista dinámica"
 
-#: ../lib/advene/gui/main.py:4374
-msgid "Abbreviation mode"
-msgstr "Modo de abreviación"
+#: ../lib/advene/rules/elements.py:1021
+msgid "Start of the application"
+msgstr "Inicio de la aplicacion"
 
-#: ../lib/advene/gui/main.py:4374
-msgid "Enable abbreviation mode"
-msgstr "Habilitar modo de abreviación"
+#: ../lib/advene/rules/elements.py:1022
+msgid "End of the application"
+msgstr "Fin de la aplicacion"
 
-#: ../lib/advene/gui/main.py:4375
-msgid "Abbreviations"
-msgstr "Abreviaciones"
+#: ../lib/advene/rules/elements.py:1023
+msgid "User-defined event"
+msgstr "Eventos definidos por el usuario"
 
-#: ../lib/advene/gui/main.py:4375
-msgid ""
-"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
-"followed by its replacement."
-msgstr ""
-"Abreviaciones de texto. 1 entrada por línea. Cada línea consiste de la "
-"abreviación seguida de su reemplazo."
+#: ../lib/advene/rules/elements.py:1024
+msgid "Modification of the associated media"
+msgstr "Modificación del medio asociado"
 
-#: ../lib/advene/gui/main.py:4377
-msgid "Text-To-Speech"
-msgstr "Texto-a-voz"
+#: ../lib/advene/rules/elements.py:1025
+msgid "Highlight a bookmark"
+msgstr "Resaltar separador"
 
-#: ../lib/advene/gui/main.py:4378
-msgid "TTS language"
-msgstr "Lenguaje TTS"
+#: ../lib/advene/rules/elements.py:1026
+msgid "Unhighlight a bookmark"
+msgstr "Remover resaltado del separador"
 
-#: ../lib/advene/gui/main.py:4379
-msgid "What language settings should be used for text-to-speech"
-msgstr "Qué preferencias de lenguaje deben ser utilizadas para texto-a-voz"
+#: ../lib/advene/rules/elements.py:1027
+msgid "Updating duration of the movie"
+msgstr "Actualizando la duración de la película"
 
-#: ../lib/advene/gui/main.py:4380
-msgid "English"
-msgstr "Inglés"
+#: ../lib/advene/rules/elements.py:1028
+msgid "Displaying a popup"
+msgstr "Muestra una ventana flotante"
 
-#: ../lib/advene/gui/main.py:4381
-msgid "French"
-msgstr "Francés"
+#: ../lib/advene/rules/elements.py:1029
+msgid "Updating a snapshot"
+msgstr "Actualiza una captura"
 
-#: ../lib/advene/gui/main.py:4382
-msgid "Spanish"
-msgstr "Español"
+#: ../lib/advene/rules/elements.py:1067
+msgid "Player control"
+msgstr "Control del reproductor"
 
-#: ../lib/advene/gui/main.py:4384
-msgid "TTS Encoding"
-msgstr "Codificación TTS"
+#: ../lib/advene/rules/elements.py:1068
+msgid "Audio enrichment"
+msgstr "Enriquecer audio"
 
-#: ../lib/advene/gui/main.py:4385
-msgid "What encoding should be used to communicate with the TTS engine"
-msgstr ""
-"Qué codificación debe ser utilizada para comunicarse con la máquina TTS"
+#: ../lib/advene/rules/elements.py:1069
+msgid "Image enrichment"
+msgstr "Enriquecer imagen"
 
-#: ../lib/advene/gui/main.py:4386
-msgid "TTS Engine"
-msgstr "Máquina TTS"
+#: ../lib/advene/rules/elements.py:1070
+msgid "External display control"
+msgstr "Control de la pantalla externa"
 
-#: ../lib/advene/gui/main.py:4387
-msgid ""
-"Which TTS engine should be used (modification requires restarting Advene to "
-"take into account)"
-msgstr ""
-"Cuál máquina TTS debe ser utilizada (la modificación requiere reiniciar "
-"Advene para tomarlo en cuenta)"
+#: ../lib/advene/rules/elements.py:1071
+msgid "Popup"
+msgstr "Ventana flotante"
 
-#: ../lib/advene/gui/main.py:4388
-msgid "Automatic"
-msgstr "Automático"
+#: ../lib/advene/rules/elements.py:1073
+msgid "State"
+msgstr "Estado"
 
-#: ../lib/advene/gui/main.py:4389
-msgid "eSpeak"
-msgstr "eSpeak"
+#: ../lib/advene/rules/elements.py:1074
+msgid "GUI actions"
+msgstr "Acciones GUI"
 
-#: ../lib/advene/gui/main.py:4390
-msgid "Custom script with standard input"
-msgstr "Script personalizado con entrada estándar"
+#: ../lib/advene/rules/elements.py:1075
+msgid "Expert"
+msgstr "Acciones genéricas"
 
-#: ../lib/advene/gui/main.py:4391
-msgid "Custom script with arguments"
-msgstr "Script personalizado con argumentos"
+#: ../lib/advene/util/helper.py:403
+msgid "Annotation"
+msgstr "Anotacion"
 
-#: ../lib/advene/gui/main.py:4392
-msgid "SAPI"
-msgstr "SAPI"
+#: ../lib/advene/util/helper.py:404
+msgid "Relation"
+msgstr "Relacion"
 
-#: ../lib/advene/gui/main.py:4393
-msgid "MacOS X say"
-msgstr "MacOS X dice"
+#: ../lib/advene/util/helper.py:410
+msgid "Resource Folder"
+msgstr "Folder de recursos"
 
-#: ../lib/advene/gui/main.py:4394
-msgid "Generic (text output)"
-msgstr "Genérica (salida de texto)"
+#: ../lib/advene/util/helper.py:446
+msgid "---- Elements ----"
+msgstr "---- Elementos ----"
 
-#: ../lib/advene/gui/main.py:4438
-msgid "You should restart Advene to take some options into account."
-msgstr "Debes reiniciar Advene para tomar algunas opciones en cuenta. "
+#: ../lib/advene/util/helper.py:452
+msgid "---- Attributes ----"
+msgstr "---- Atributos ----"
+
+#: ../lib/advene/util/helper.py:455
+msgid "---- Methods ----"
+msgstr "---- Metodos ----"
 
-#: ../lib/advene/gui/main.py:4447
+#: ../lib/advene/util/helper.py:531
 #, python-format
-msgid "Imagecache saved to %s"
-msgstr "El cache de la imagen guardado en %s"
+msgid "Cannot read %(filename)s: %(error)s"
+msgstr "No se puede leer %(filename)s: %(error)s"
 
-#: ../lib/advene/gui/main.py:4460
-msgid "Restarting player..."
-msgstr "Reiniciando el reproductor..."
+#: ../lib/advene/util/helper.py:555
+#, python-format
+msgid ""
+"Error:\n"
+"%s"
+msgstr ""
+"Error:\n"
+"%s"
 
-#: ../lib/advene/gui/main.py:4512
-msgid "Advene log"
-msgstr "Bitácora de Advene"
+#: ../lib/advene/util/helper.py:637
+msgid "schema"
+msgstr "esquema"
 
-#: ../lib/advene/gui/main.py:4581
-msgid "Select the package to merge"
-msgstr "Selecciona el paquete a unir"
+#: ../lib/advene/util/helper.py:637
+msgid "schemas"
+msgstr "esquemas"
 
-#: ../lib/advene/gui/main.py:4602
-msgid "Saving workspace"
-msgstr "Guardando el espacio de trabajo"
+#: ../lib/advene/util/helper.py:638
+msgid "annotation"
+msgstr "anotacion"
 
-#: ../lib/advene/gui/main.py:4605
-msgid "Enter a view name to save the workspace"
-msgstr "Ingresar el nombre de una vista para guardar el espacio de trabajo"
+#: ../lib/advene/util/helper.py:638
+msgid "annotations"
+msgstr "anotaciones"
 
-#: ../lib/advene/gui/main.py:4606
-msgid "Default workspace"
-msgstr "Espacio de trabajo predeterminado"
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation type"
+msgstr "tipo de anotacion"
 
-#: ../lib/advene/gui/main.py:4607
-msgid "Open this workspace when opening the package"
-msgstr "Abrir este espacio de trabajo cuando se abra el paquete"
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation types"
+msgstr "tipos de anotaciones"
 
-#: ../lib/advene/gui/main.py:4641
-#, python-format
-msgid "Error: the view %s exists and is not a workspace view."
-msgstr "Error: La vista %s existe y no es un espacio de trabajo. "
+#: ../lib/advene/util/helper.py:641
+msgid "relation"
+msgstr "relacion"
 
-#: ../lib/advene/gui/main.py:4672
-#, python-format
-msgid "Cannot save default workspace: %s"
-msgstr "No se puede guardar el espacio de trabajo predeterminado: %s"
+#: ../lib/advene/util/helper.py:641
+msgid "relations"
+msgstr "relaciones"
 
-#: ../lib/advene/gui/main.py:4682
-msgid "Standard workspace has been saved"
-msgstr "El espacio de trabajo estándar ha sido guardado"
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation type"
+msgstr "tipos de relacion"
 
-#: ../lib/advene/gui/main.py:4689
-msgid "Website export"
-msgstr "Exportar a sitio web"
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation types"
+msgstr "tipos de relaciones"
 
-#: ../lib/advene/gui/main.py:4690
-msgid "Exporting views to a website"
-msgstr "Exportar vistas a un sitio web"
+#: ../lib/advene/util/helper.py:644
+msgid "query"
+msgstr "busqueda"
 
-#: ../lib/advene/gui/main.py:4693
-msgid "Output directory"
-msgstr "Directorio de salida"
+#: ../lib/advene/util/helper.py:644
+msgid "queries"
+msgstr "busquedas"
 
-#: ../lib/advene/gui/main.py:4702
-msgid "Specify the output directory"
-msgstr "Especifica el directorio de salida"
+#: ../lib/advene/util/helper.py:645
+msgid "view"
+msgstr "vista"
 
-#: ../lib/advene/gui/main.py:4711
-msgid "Maximum recursion depth"
-msgstr "Profundidad de recursión máxima"
+#: ../lib/advene/util/helper.py:645
+msgid "views"
+msgstr "vistas"
 
-#: ../lib/advene/gui/main.py:4718
-msgid "Video URL"
-msgstr "URL del video"
+#: ../lib/advene/util/helper.py:646
+msgid "package"
+msgstr "paquete"
 
-#: ../lib/advene/gui/main.py:4720
-msgid ""
-"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 del video, si está disponible en un sitio web para compartir (únicamente "
-"Youtube por el momento).\n"
-"También puede ser un archivo h264/ogg, el cual en este caso será manejado "
-"por el reproductor de video de HTML5."
+#: ../lib/advene/util/helper.py:646
+msgid "packages"
+msgstr "paquetes"
 
-#: ../lib/advene/gui/main.py:4770
-msgid "Could not export data: "
-msgstr "No se pueden exportar los datos:"
+#: ../lib/advene/util/helper.py:658
+#, python-format
+msgid "No %s"
+msgstr "No %s"
 
-#: ../lib/advene/gui/main.py:4772
+#: ../lib/advene/util/helper.py:660
 #, python-format
-msgid "Website export to %s completed"
-msgstr "Exportar sitio web a %s completado"
+msgid "1 %s"
+msgstr "1 %s"
 
-#: ../lib/advene/gui/main.py:4811
-msgid "This video player is not able to grab specific screenshots"
+#: ../lib/advene/util/helper.py:662
+#, python-format
+msgid "%(count)d %(plural)s"
+msgstr "%(count)d %(plural)s"
+
+#: ../lib/advene/util/website_export.py:61
+#, python-format
+msgid "%s exists but is not a directory. Cancelling website export"
 msgstr ""
-"Este reproductor de video no es capaz de obtener capturas de pantalla "
-"específicas"
+"%s existe pero no es un directorio. Cancelando la exportación a sitio web"
 
-#: ../lib/advene/gui/main.py:4821
+#: ../lib/advene/util/website_export.py:67
 #, python-format
-msgid "Updating %d snapshots"
-msgstr "Actualiza %d capturas"
+msgid "%s does not exist"
+msgstr "%s no existe"
 
-#: ../lib/advene/gui/main.py:4826
-msgid "No snapshot to update"
-msgstr "No hay capturas para actualizar"
+#: ../lib/advene/util/website_export.py:422
+msgid "Starting export"
+msgstr "Inicializando exportación"
 
-#: ../lib/advene/gui/main.py:4835 ../lib/advene/gui/main.py:4947
-msgid "You first must load a movie into Advene"
-msgstr "Primero debes de cargar un archivo de video en Advene"
+#: ../lib/advene/util/website_export.py:451
+#, python-format
+msgid "Depth %d"
+msgstr "Profundidad %d"
 
-#: ../lib/advene/gui/main.py:4838 ../lib/advene/gui/main.py:4950
+#: ../lib/advene/util/website_export.py:455
 #, python-format
-msgid "The movie %s does not seem to exist."
-msgstr "La película %s parece que no existe."
+msgid "Depth %(depth)d: processing %(url)s"
+msgstr "Profundidad %(depth)d: procesando %(url)s"
 
-#: ../lib/advene/gui/main.py:4895
-msgid "Generating screenshots"
-msgstr "Generando capturas de pantalla"
+#: ../lib/advene/util/website_export.py:477
+msgid "Finalizing"
+msgstr "Finalizando"
 
-#: ../lib/advene/gui/main.py:4900
+#: ../lib/advene/util/website_export.py:511
+#, python-format
 msgid ""
-"<b>Screenshot generation</b>\n"
-"\n"
-"Screenshots will be captured approximately every 500ms.\n"
-"\n"
-"If the movie was paused or playing, the capture will begin at the current "
-"position. Else, it will begin at the beginning of the movie.\n"
-"Note that the main interface will not be refreshed as long as this window is "
-"open."
+"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
+"strong></p>"
 msgstr ""
-"<b>Generación de captura de pantalla </b>\n"
-" \n"
-" Las capturas de pantalla se realizarán cada 500 ms. aproximadamente\n"
-" \n"
-"Si la película se pausa o se reproduce, la captura se iniciará en la "
-"posición actual. Si no, va a comenzar por el principio de la película.\n"
-"Ten en cuenta que la interfaz principal no se actualizará mientras esta "
-"ventana está abierta."
+"<p><strong>Deberías comenzar en<a href=\"%(href)s\">%(title)s</a>.</strong></"
+"p>"
+
+#: ../lib/advene/util/website_export.py:554
+msgid "Export complete"
+msgstr "Exportación completa"
+
+#: ../lib/advene/util/importer.py:138
+msgid "Generic importer"
+msgstr "Importador generico"
+
+#: ../lib/advene/util/importer.py:165
+msgid "Usage: %prog [options] source-file destination-file"
+msgstr "Uso: %prog [options] archivo-origen archivo-destino"
+
+#: ../lib/advene/util/importer.py:169
+msgid "Specify the offset in ms"
+msgstr "Especificar la compensacion en ms"
 
-#: ../lib/advene/gui/main.py:4941
+#: ../lib/advene/util/importer.py:229
 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."
+"Import filter error. The asynchronous API should be used, please report a "
+"bug."
 msgstr ""
-"La aplicación <b> shotdetect </ b> parece que no está instalada. Por favor, "
-"comprueba que está instalada y que su ruta (PATH) se ha especificado "
-"correctamente en las preferencias."
+"Error para importar filtro. El API asíncrono debería de ser utilizado, por "
+"favor reporta un bug."
 
-#: ../lib/advene/gui/main.py:4981
+#: ../lib/advene/util/importer.py:231
 msgid ""
-"Cannot import shotdetect output. Did you install the shotdetect software?"
+"Import filter error. No conversion method is defined,  please report a bug."
 msgstr ""
-"No se puede importar la salida de la detección de capturas. ¿Instalaste el "
-"software para la detección de capturas?"
+"Error para importar filtro. No está definido un método de conversión, por "
+"favor reporta un bug."
 
-#: ../lib/advene/gui/main.py:4998
-msgid "Incomplete shots"
-msgstr "Tomas incompletas"
+#: ../lib/advene/util/importer.py:488
+msgid "ExternalApp importer"
+msgstr "Importador de ExternalApp"
 
-#: ../lib/advene/gui/main.py:5001
+#: ../lib/advene/util/importer.py:502
 #, python-format
-msgid "Detected %s shots"
-msgstr "Detectadas %s tomas"
+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 ""
+"La aplicación <b>%s</b> parece no estar instalada. Por favor revisa que esté "
+"presente y que su ruta (path) esté especificada de manera correcta en las "
+"preferencias."
 
-#: ../lib/advene/gui/main.py:5103
+#: ../lib/advene/util/importer.py:504
 #, python-format
-msgid "Could not run shotdetect: %s"
-msgstr "No se pudo correr detección de capturas: %s"
+msgid "The file %s does not seem to exist."
+msgstr "El archivo %s parece no existir."
 
-#: ../lib/advene/gui/main.py:5107
+#: ../lib/advene/util/importer.py:526
 #, python-format
-msgid "Detecting shots from %s"
-msgstr "Detectando capturas de %s"
-
-#: ../lib/advene/gui/main.py:5160
-msgid "Shot detection"
-msgstr "Detección de tomas"
+msgid "Could not run %(appname)s: %(msg)s"
+msgstr "No se puede correr %(appname)s: %(msg)s"
 
-#: ../lib/advene/gui/main.py:5166
-msgid ""
-"<b>Shot detection</b>\n"
-"\n"
-"Advene will try to detect shots from the currently loaded movie. The "
-"threshold parameter is used to specify the sensitivity of the algorithm, and "
-"should typically be between 50 and 80. If too many shots are detected, try "
-"to augment its value."
-msgstr ""
-"<b>Detección de capturas</b>\n"
-"\n"
-"Advene intentará detectar capturas en la película cargada en ese momento. El "
-"parámetro de umbral se utiliza para especificar la sensibilidad del "
-"algoritmo, y normalmente debe ser de entre 50 y 80. Si se detectan "
-"demasiadas capturas, trata de aumentar su valor."
+#: ../lib/advene/util/importer.py:528
+#, python-format
+msgid "Processing %s"
+msgstr "Procesando  %s"
 
-#: ../lib/advene/gui/main.py:5182
-msgid "Sensitivity"
-msgstr "Sensibilidad"
+#: ../lib/advene/util/importer.py:532
+msgid "Cleaning up..."
+msgstr "Limpiando..."
 
-#: ../lib/advene/gui/popup.py:138
-msgid "Choose the file to insert"
-msgstr "Elige un archivo a insertar"
+#: ../lib/advene/util/importer.py:652
+msgid "Text importer"
+msgstr "Importador de texto"
 
-#: ../lib/advene/gui/popup.py:146
-msgid "Select a valid identifier"
-msgstr "Selecciona un identificador válido"
+#: ../lib/advene/util/importer.py:665 ../lib/advene/util/importer.py:1195
+msgid "Specify the encoding of the input file (latin1, utf8...)"
+msgstr "Especifica la codificación del archivo de entrada (latin1, utf8...)"
 
-#: ../lib/advene/gui/popup.py:147
-#, python-format
-msgid ""
-"The filename %s contains invalid characters\n"
-"that have been replaced.\n"
-"You can modify this identifier if necessary:"
+#: ../lib/advene/util/importer.py:668
+msgid "Should the timestamps be encoded relative to the first timestamp?"
 msgstr ""
-"El nombre de archivo %s contiene caracteres no válidos\n"
-"que han sido reemplazados.\n"
-"Puedes modificar este identificador si es necesario:"
-
-#: ../lib/advene/gui/popup.py:158
-msgid "Choose the soundclip to insert"
-msgstr "Elegir clip de audio para insertar"
-
-#: ../lib/advene/gui/popup.py:162
-msgid "Choose the directory to insert"
-msgstr "Elige un directorio para insertar"
 
-#: ../lib/advene/gui/popup.py:177
-msgid "Named-Entity extraction using NERD"
+#: ../lib/advene/util/importer.py:671
+msgid "Unit to consider for integers"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:181
+#: ../lib/advene/util/importer.py:674
 msgid ""
-"Give the offset to use\n"
-"on specified element.\n"
-"It is in ms and can be\n"
-"either positive or negative."
+"What timestamps are present in a line (only begin, both begin and end, or "
+"automatic recognition)"
 msgstr ""
-"Da la compensacion para usar\n"
-"en el elemento especificado.\n"
-"Esta en ms y puede ser\n"
-"tanto positiva como negativa."
-
-#: ../lib/advene/gui/popup.py:225
-#, python-format
-msgid "Replace content in %s"
-msgstr "Reemplazar contenido en %s"
-
-#: ../lib/advene/gui/popup.py:228
-#, python-format
-msgid "Replace content in annotations of type %s"
-msgstr "Reemplazar el contenido en las anotaciones de tipo %s"
-
-#: ../lib/advene/gui/popup.py:231
-msgid "Replace content in all annotations"
-msgstr "Reemplazar contenido en todas las anotaciones"
 
-#: ../lib/advene/gui/popup.py:324
-#, python-format
-msgid "Copy id %s"
-msgstr "Copiar id %s"
+#: ../lib/advene/util/importer.py:817
+msgid "lsdvd importer"
+msgstr "Importador lsdvd"
 
-#: ../lib/advene/gui/popup.py:358
-#, python-format
-msgid ""
-"<b>Statistics about %s</b>\n"
-"\n"
-msgstr ""
-"<b>Estadísticas acerca %s</b>\n"
-"\n"
+#: ../lib/advene/util/importer.py:844
+msgid "Processing data"
+msgstr "Procesando datos"
 
-#: ../lib/advene/gui/popup.py:364
-#, python-format
-msgid "Renumbering annotations of type %s"
-msgstr "Renumerando las anotaciones del tipo %s"
+#: ../lib/advene/util/importer.py:862 ../lib/advene/util/importer.py:922
+msgid "DVD Chapter"
+msgstr "Capitulo de DVD"
 
-#: ../lib/advene/gui/popup.py:371
-msgid ""
-"<b>Renumber all annotations according to their order.</b>\n"
-"\n"
-"<i>Note that this action cannot be undone.</i>\n"
-"Replace the first numeric value of the annotation content with the new "
-"annotation number.\n"
-"If no numeric value is found and the annotation is structured, it will "
-"insert the number.\n"
-"If no numeric value is found and the annotation is of type text/plain, it "
-"will overwrite the annotation content.\n"
-"The offset parameter allows you to renumber from a given annotation."
-msgstr ""
-"<b>Cambiar la numeración de todas las anotaciones de acuerdo a su orden.</"
-"b>\n"
-"\n"
-"<i>Esta acción no se puede deshacer.</i>\n"
-"Coloca el primer valor numérico del contenido de anotación con el nuevo "
-"número de anotación.\n"
-"Si no se encuentra ningún valor numérico y la anotación es estructurada, se "
-"insertará el número.\n"
-" Si no se encuentra ningún valor numérico y la anotación es de tipo text/"
-"plain, sobrescribirá el contenido de la anotación.\n"
-"El parámetro de desplazamiento le permite volver a numerar a partir de una "
-"anotación dada."
+#: ../lib/advene/util/importer.py:866
+msgid "Launching lsdvd..."
+msgstr "Lanzando lsdvd..."
 
-#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
-msgid "Offset"
-msgstr "Compensar"
+#: ../lib/advene/util/importer.py:878
+msgid "chaplin importer"
+msgstr "Importador chaplin"
 
-#: ../lib/advene/gui/popup.py:399
-#, python-format
-msgid "Renumbering %d annotations"
-msgstr "Volviendo a numerar %d anotaciones"
+#: ../lib/advene/util/importer.py:936
+msgid "Xi importer"
+msgstr "Importador Xi"
 
-#: ../lib/advene/gui/popup.py:408
-#, python-format
-msgid "Annotation #%d"
-msgstr "Anotación #%d"
+#: ../lib/advene/util/importer.py:1005
+msgid "ELAN importer"
+msgstr "Importador ELAN"
 
-#: ../lib/advene/gui/popup.py:445
+#: ../lib/advene/util/importer.py:1058
 #, python-format
-msgid ""
-"Exporting annotation %(title)s\n"
-"from %(begin)s to %(end)s\n"
-"to %%(filename)s"
-msgstr ""
-"Exportando anotación %(title)s\n"
-"de %(begin)s a %(end)s\n"
-"a %%(filename)s"
-
-#: ../lib/advene/gui/popup.py:458
-msgid "Browse"
-msgstr "Navegar"
+msgid "Converting tier %s"
+msgstr "Convirtiendo nivel %s"
 
-#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
-msgid "Open in web browser"
-msgstr "Abrir en un navegador web"
+#: ../lib/advene/util/importer.py:1159
+msgid "Processing time slots"
+msgstr "Procesando casillas de tiempo"
 
-#: ../lib/advene/gui/popup.py:479
-msgid "Search/replace content"
-msgstr "Buscar / reemplazar contenido "
+#: ../lib/advene/util/importer.py:1174
+msgid "Fixing forward references"
+msgstr "Corrigiendo referencias siguientes"
 
-#: ../lib/advene/gui/popup.py:497
-msgid "Desactivate"
-msgstr "Desactivar"
+#: ../lib/advene/util/importer.py:1176
+msgid "Creating relations"
+msgstr "Creando relaciones"
 
-#: ../lib/advene/gui/popup.py:514
-msgid "Loop"
-msgstr "Ciclo"
+#: ../lib/advene/util/importer.py:1188
+msgid "Subtitle (SRT) importer"
+msgstr "Importador de subtítulos (SRT)"
 
-#: ../lib/advene/gui/popup.py:515
-msgid "Duplicate"
-msgstr "Duplicar"
+#: ../lib/advene/util/importer.py:1257
+#, python-format
+msgid "Subtitles from %s"
+msgstr "Subtítulos de %s"
 
-#: ../lib/advene/gui/popup.py:519
-msgid "Save snapshot..."
-msgstr "Guardar captura..."
+#: ../lib/advene/util/importer.py:1270
+msgid "PRAAT importer"
+msgstr "Importador PRAAT"
 
-#: ../lib/advene/gui/popup.py:521
-msgid "Extract video fragment"
-msgstr "Extraer fragmento de video"
+#: ../lib/advene/util/importer.py:1360
+msgid "CMML importer"
+msgstr "Importar CMML"
 
-#: ../lib/advene/gui/popup.py:551
-msgid "Incoming"
-msgstr "Entrando "
+#: ../lib/advene/util/importer.py:1423
+msgid "Parsing clip information"
+msgstr "Analizando información de clip"
 
-#: ../lib/advene/gui/popup.py:567
-msgid "Outgoing"
-msgstr "Saliendo "
+#: ../lib/advene/util/importer.py:1523
+msgid "Creating CMML schema"
+msgstr "Creando esquema CMML"
 
-#: ../lib/advene/gui/popup.py:582
-msgid "Related annotations"
-msgstr "Anotaciones relacionadas"
+#: ../lib/advene/util/importer.py:1547
+msgid "Parsing stream information"
+msgstr "Analizando flujo de información"
 
-#: ../lib/advene/gui/popup.py:589
-msgid "Incoming relations"
-msgstr "Relaciones entrantes"
+#: ../lib/advene/util/importer.py:1581
+msgid "IRI importer"
+msgstr "Importar IRI"
 
-#: ../lib/advene/gui/popup.py:596
-msgid "Outgoing relations"
-msgstr "Relaciones salientes"
+#: ../lib/advene/util/importer.py:1590
+msgid "Generate one type per view"
+msgstr "Genera un tipo por vista"
 
-#: ../lib/advene/gui/popup.py:612
+#: ../lib/advene/util/importer.py:1610
 #, python-format
-msgid "Begin: %s"
-msgstr "Inicio: %s"
+msgid "Parsing ensemble %s"
+msgstr "Analizando ensamble %s"
 
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/util/importer.py:1621
 #, python-format
-msgid "End: %s"
-msgstr "Final: %s"
+msgid "Parsing decoupage %s"
+msgstr "Analizando desacoplaje %s"
 
-#: ../lib/advene/gui/popup.py:615
-#, python-format
-msgid "Duration: %s"
-msgstr "Duración: %s"
+#: ../lib/advene/util/importer.py:1657
+msgid "Parsing views"
+msgstr "Analizando vistas"
 
-#: ../lib/advene/gui/popup.py:622
-msgid "Members:"
-msgstr "Miembros:"
+#: ../lib/advene/util/importer.py:1705 ../lib/advene/util/importer.py:1794
+msgid "Initializing package"
+msgstr "Inicializando paquete"
 
-#: ../lib/advene/gui/popup.py:635
-msgid "Edit package properties..."
-msgstr "Editar propiedades de los paquetes..."
+#: ../lib/advene/util/importer.py:1743
+msgid "IRIData importer"
+msgstr "Importador IRIData"
 
-#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
-#, python-format
-msgid "%d annotations(s) - statistics"
-msgstr "%d anotaciones - estadísticas"
+#: ../lib/advene/util/importer.py:1757
+msgid "Parsing sound values"
+msgstr "Analizando valores de sonido"
 
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
-msgid "Create a new static view..."
-msgstr "Crear una nueva vista..."
+#: ../lib/advene/util/importer.py:1769
+msgid "Creating annotations"
+msgstr "Creando anotaciones"
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:865
-msgid "Create a new dynamic view..."
-msgstr "Crear una nueva vista dinámica..."
+#~ msgid "Detect shots"
+#~ msgstr "Detectar tomas"
 
-#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
-msgid "Create a new annotation..."
-msgstr "Crear una nueva anotacion"
+#~ msgid "Automatically detect shots"
+#~ msgstr "Detectar tomas automáticamente"
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
-msgid "Create a new schema..."
-msgstr "Crear un nuevo esquema..."
+#~ msgid "Tree view"
+#~ msgstr "Vista de arbol"
 
-#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
-msgid "Create a new query..."
-msgstr "Crear una nueva busqueda..."
+#~ msgid "Schema editor"
+#~ msgstr "Editor de esquema"
 
-#: ../lib/advene/gui/popup.py:651
-msgid "Create a new folder..."
-msgstr "Crear una nueva carpeta..."
+#~ msgid "Visualise the activity trace preview"
+#~ msgstr "Visualizar la vista previa de la actividad de rastreo"
 
-#: ../lib/advene/gui/popup.py:652
-msgid "Create a new resource file..."
-msgstr "Crear un nuevo archivo de recurso..."
+#~ msgid "Visualise the activity trace as a timeline"
+#~ msgstr "Visualizar la actividad de rastreo como línea de tiempo"
 
-#: ../lib/advene/gui/popup.py:653
-msgid "Insert a new resource file..."
-msgstr "Insertar un nuevo archivo de recurso..."
+#~ msgid ""
+#~ "Error: unable to find an edit popup for %(element)s:\n"
+#~ "%(error)s"
+#~ msgstr ""
+#~ "Error: no es posible encontrar una ventana flotante de edición para "
+#~ "%(element)s:\n"
+#~ "%(error)s"
 
-#: ../lib/advene/gui/popup.py:654
-msgid "Insert a new resource directory..."
-msgstr "Insertar un nuevo directorio de recursos..."
+#~ 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 ""
+#~ "La aplicación <b> shotdetect </ b> parece que no está instalada. Por "
+#~ "favor, comprueba que está instalada y que su ruta (PATH) se ha "
+#~ "especificado correctamente en las preferencias."
 
-#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
-msgid "Insert a soundclip..."
-msgstr "Insertar un clip de sonido..."
+#~ msgid ""
+#~ "Cannot import shotdetect output. Did you install the shotdetect software?"
+#~ msgstr ""
+#~ "No se puede importar la salida de la detección de capturas. ¿Instalaste "
+#~ "el software para la detección de capturas?"
 
-#: ../lib/advene/gui/popup.py:676
-msgid "Play sound"
-msgstr "Reproducir sonido"
+#~ msgid "Incomplete shots"
+#~ msgstr "Tomas incompletas"
 
-#: ../lib/advene/gui/popup.py:686
-msgid "Create a new annotation type..."
-msgstr "Crear un nuevo tipo de anotacion..."
+#~ msgid "Detected %s shots"
+#~ msgstr "Detectadas %s tomas"
 
-#: ../lib/advene/gui/popup.py:688
-msgid "Create a new relation type..."
-msgstr "Crear un nuevo tipo de relacion..."
+#~ msgid "Could not run shotdetect: %s"
+#~ msgstr "No se pudo correr detección de capturas: %s"
 
-#: ../lib/advene/gui/popup.py:699
-#, python-format
-msgid "A caption dynamic view for %s already seems to exist."
-msgstr "Un subtítulo dinámico para la vista %s parece que ya existe."
+#~ msgid "Detecting shots from %s"
+#~ msgstr "Detectando capturas de %s"
 
-#: ../lib/advene/gui/popup.py:708
-#, python-format
-msgid "Caption %s annotations"
-msgstr "Subtítulo %s anotaciones"
+#~ msgid "Shot detection"
+#~ msgstr "Detección de tomas"
 
-#: ../lib/advene/gui/popup.py:740
-msgid "Create a comment view"
-msgstr "Crear una vista de comentario"
+#~ msgid ""
+#~ "<b>Shot detection</b>\n"
+#~ "\n"
+#~ "Advene will try to detect shots from the currently loaded movie. The "
+#~ "threshold parameter is used to specify the sensitivity of the algorithm, "
+#~ "and should typically be between 50 and 80. If too many shots are "
+#~ "detected, try to augment its value."
+#~ msgstr ""
+#~ "<b>Detección de capturas</b>\n"
+#~ "\n"
+#~ "Advene intentará detectar capturas en la película cargada en ese momento. "
+#~ "El parámetro de umbral se utiliza para especificar la sensibilidad del "
+#~ "algoritmo, y normalmente debe ser de entre 50 y 80. Si se detectan "
+#~ "demasiadas capturas, trata de aumentar su valor."
 
-#: ../lib/advene/gui/popup.py:741
-msgid "Generate a caption dynamic view..."
-msgstr "Genera una vista dinámica de subtítulos"
+#~ msgid "Sensitivity"
+#~ msgstr "Sensibilidad"
 
-#: ../lib/advene/gui/popup.py:742
-msgid "Display as transcription"
-msgstr "Muestra como transcripcion"
+#, fuzzy
+#~ msgid "Min duration"
+#~ msgstr "2s duración"
 
-#: ../lib/advene/gui/popup.py:743
-msgid "Display annotations in table"
-msgstr "Muestra las anotaciones en una tabla"
+#, fuzzy
+#~ msgid "Max duration"
+#~ msgstr "2s duración"
 
-#: ../lib/advene/gui/popup.py:744
-msgid "Export to another format..."
-msgstr "Exportar a otro formato"
+#, fuzzy
+#~ msgid "Mean duration"
+#~ msgstr "2s duración"
 
-#: ../lib/advene/gui/popup.py:746
-msgid "Extract Named Entities..."
-msgstr ""
+#, fuzzy
+#~ msgid "Total duration"
+#~ msgstr "Duración total"
 
-#: ../lib/advene/gui/popup.py:752
-msgid "Delete all annotations"
-msgstr "Borrar todas las anotaciones"
+#~ msgid "Schema Editor"
+#~ msgstr "Editor de esquema"
 
-#: ../lib/advene/gui/popup.py:753
-msgid "Renumber annotations..."
-msgstr "Volviendo a numerar anotaciones"
+#~ msgid "Display"
+#~ msgstr "Mostrar"
 
-#: ../lib/advene/gui/popup.py:754
-#, fuzzy
-msgid "Shot validation view..."
-msgstr "Vista de validación de capturas"
+#~ msgid "Remove relation type"
+#~ msgstr "Remover tipo de relación"
 
-#: ../lib/advene/gui/popup.py:766
-#, python-format
-msgid "A follow dynamic view for %s already seems to exist."
-msgstr "Una siguiente vista dinámica para %s parece que ya existe."
+#~ msgid "Create HTML view"
+#~ msgstr "Crear una vista HTML"
 
-#: ../lib/advene/gui/popup.py:775
-#, python-format
-msgid "Follow %s relation-type"
-msgstr "Seguir %s tipos de relación"
+#~ msgid "Remove annotation type"
+#~ msgstr "Remover tipo de anotación"
 
-#: ../lib/advene/gui/popup.py:784
-msgid "Follow the relation"
-msgstr "Seguir la relación"
+#~ msgid "Create relation type between this one and..."
+#~ msgstr "Crea un tipo de relación entre este y..."
 
-#: ../lib/advene/gui/popup.py:804
-msgid "Delete all relations..."
-msgstr "Borrar todas las relaciones..."
+#~ msgid "New schema"
+#~ msgstr "Nuevo esquema"
 
-#: ../lib/advene/gui/popup.py:805
-msgid "Create montage from related annotations"
-msgstr " Crear un montaje de las anotaciones relacionadas"
+#~ msgid "New annotation type"
+#~ msgstr "Nuevo tipo de anotación"
 
-#: ../lib/advene/gui/popup.py:806
-msgid "Create dynamic view following relations"
-msgstr "Crear una vista dinámica siguiendo relaciones"
+#~ msgid "New relation type"
+#~ msgstr "Nuevo tipos de relación"
 
-#: ../lib/advene/gui/popup.py:824
-msgid "Apply query on..."
-msgstr "Aplica la consulta en..."
+#~ msgid "Hide this schema"
+#~ msgstr "Esconder este esquema"
 
-#: ../lib/advene/gui/popup.py:849
-msgid "Activate view"
-msgstr "Activar vista"
+#~ msgid "Export drawing to pdf"
+#~ msgstr "Exportar dibujo a pdf"
 
-#: ../lib/advene/gui/popup.py:851
-msgid "Open adhoc view"
-msgstr "Abrir vista adhoc"
+#~ msgid "Choose a filename to export the schema as PDF"
+#~ msgstr "Elige un nombre de archivo para exportar el esquema como PDF"
+
+#~ msgid "Cannot go back: first item in history"
+#~ msgstr "No se puede ir atrás: primer elemento en el historial"
+
+#~ msgid "No children in on_iter_children()!"
+#~ msgstr "No hay hijos en on_iter_children()!"
+
+#~ msgid "No children in on_iter_nth_child()"
+#~ msgstr "No hay hijos en on_iter_nth_child()"
+
+#~ msgid "Package View"
+#~ msgstr "VIsta de paquete"
+
+#, fuzzy
+#~ msgid ""
+#~ "GNU General Public License v. 2\n"
+#~ "See http://www.gnu.org/copyleft/gpl.html for more details"
+#~ msgstr ""
+#~ "GNU General Public License\n"
+#~ "Ver http://www.gnu.org/copyleft/gpl.html para más detalles"
 
 #~ msgid "Adjust annotation bounds..."
 #~ msgstr "Ajustar los límites de la anotación"
@@ -9866,9 +9884,6 @@ msgstr "Abrir vista adhoc"
 #~ msgid "Restore layout"
 #~ msgstr "Restaurar el volumen"
 
-#~ msgid "Error: unable to find an edit popup for %s"
-#~ msgstr "Error: incapaz de encontrar un edit popup para %s"
-
 #~ msgid "Should provide a package name"
 #~ msgstr "Debe proveer un nombre de paquete"
 
@@ -10431,9 +10446,6 @@ msgstr "Abrir vista adhoc"
 #~ msgid "URL Stack"
 #~ msgstr "Almacen de URL"
 
-#~ msgid "Import _Transcription"
-#~ msgstr "Importar_Transcripcion"
-
 #~ msgid "Currently edited annotation"
 #~ msgstr "Anotacion editada actual"
 
diff --git a/po/fr.po b/po/fr.po
index d1e65fd..c5c934b 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: 2014-07-09 17:25+0200\n"
-"PO-Revision-Date: 2014-07-09 17:29+0200\n"
+"POT-Creation-Date: 2017-05-09 11:32+0200\n"
+"PO-Revision-Date: 2017-05-09 11:32+0200\n"
 "Last-Translator: Olivier Aubert <olivier.aubert at liris.cnrs.fr>\n"
 "Language-Team: advene at liris.cnrs.fr\n"
 "Language: \n"
@@ -14,17 +14,6 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
-#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
-#, python-format
-msgid "File %s is not an Advene zip package."
-msgstr "Le fichier %s n'est pas un recueil Advene compressé."
-
-#: ../lib/advene/model/zippackage.py:243
-#, python-format
-msgid "Directory %s is not an extracted Advene zip package."
-msgstr "Le répertoire %s n'est pas un recueil Advene décompressé."
-
 #: ../lib/advene/model/bundle.py:296
 #, python-format
 msgid "%s not in bundle"
@@ -39,3340 +28,2874 @@ msgstr "List d'éléments non-typés"
 msgid "List of %s elements"
 msgstr "Liste d'éléments de type %s"
 
-#: ../lib/advene/core/controller.py:263 ../lib/advene/rules/actions.py:36
-#: ../lib/advene/gui/plugins/actions.py:40
-msgid "Display a message"
-msgstr "Affiche un message"
-
-#: ../lib/advene/core/controller.py:264
-#: ../lib/advene/gui/plugins/actions.py:41
-#: ../lib/advene/gui/plugins/actions.py:53
-#: ../lib/advene/gui/plugins/actions.py:71
-#: ../lib/advene/gui/plugins/actions.py:86
-#: ../lib/advene/gui/plugins/actions.py:102
-#: ../lib/advene/gui/plugins/actions.py:203
-msgid "String to display."
-msgstr "Chaîne de caractères à afficher"
+#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
+#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
+#, python-format
+msgid "File %s is not an Advene zip package."
+msgstr "Le fichier %s n'est pas un recueil Advene compressé."
 
-#: ../lib/advene/core/controller.py:362
-msgid "Exception (traceback in console):"
-msgstr "Exception (details dans la console)"
+#: ../lib/advene/model/zippackage.py:243
+#, python-format
+msgid "Directory %s is not an extracted Advene zip package."
+msgstr "Le répertoire %s n'est pas un recueil Advene décompressé."
 
-#: ../lib/advene/core/controller.py:393
-msgid "No available GUI"
-msgstr "Pas d'interface graphique disponible."
+#: ../lib/advene/gui/widget.py:293
+#, python-format
+msgid "Set of %s annotations"
+msgstr "Ensemble de %s annotations"
 
-#: ../lib/advene/core/controller.py:412
-msgid "No available event handler"
-msgstr "Pas de gestionnaire d'événements disponible."
+#: ../lib/advene/gui/widget.py:1017
+#: ../lib/advene/gui/views/transcription.py:472
+#: ../lib/advene/gui/edit/montage.py:60
+msgid "Play"
+msgstr "Lecture"
 
-#: ../lib/advene/core/controller.py:420
-msgid "No available gui"
-msgstr "Pas d'interface graphique disponible."
+#: ../lib/advene/gui/widget.py:1021 ../lib/advene/gui/edit/timeadjustment.py:77
+msgid "Refresh snapshot"
+msgstr "Rafraîchir la capture d'écran"
 
-#: ../lib/advene/core/controller.py:436
-#, python-format
-msgid "Warning: redefining an existing feature %s"
-msgstr "Avertissement: vous redéfinissez une fonctionnalité existante %s"
+#: ../lib/advene/gui/widget.py:1025
+msgid "Save as..."
+msgstr "Sauvegarder sous..."
 
-#: ../lib/advene/core/controller.py:568
-msgid "All annotations"
-msgstr "Toutes les annotations"
+#: ../lib/advene/gui/widget.py:1030
+msgid "Use current player position"
+msgstr "Utiliser la position courante du lecteur"
 
-#: ../lib/advene/core/controller.py:569 ../lib/advene/gui/edit/rules.py:358
-#, python-format
-msgid "Annotations of type %s"
-msgstr "Annotations de type %s"
+#: ../lib/advene/gui/widget.py:1036
+msgid "Adjust timestamp"
+msgstr "Ajuster le timecode"
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/imports.py:129
-#: ../lib/advene/gui/edit/imports.py:130
-msgid "Views"
-msgstr "Vues"
+#: ../lib/advene/gui/main.py:189 ../lib/advene/gui/main.py:298
+msgid "_Select player"
+msgstr "Sélection du lecteur"
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/elements.py:521
-msgid "Tags"
-msgstr "Tags"
+#: ../lib/advene/gui/main.py:191 ../lib/advene/gui/main.py:283
+msgid "_View"
+msgstr "_Vues"
 
-#: ../lib/advene/core/controller.py:570
-msgid "Ids"
-msgstr "Id"
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:300
+msgid "Packages"
+msgstr "Recueils"
 
-#: ../lib/advene/core/controller.py:747
-#, python-format
-msgid ""
-"Cannot start the webserver\n"
-"The following processes seem to use the %(port)s port: %(processes)s"
-msgstr ""
-"Impossible de démarrer le serveur web.\n"
-"Les processus suivants semblent utiliser le port %(port)s: %(processes)s"
+#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:242
+msgid "Open recent"
+msgstr "Recueils récents"
 
-#: ../lib/advene/core/controller.py:797 ../lib/advene/core/controller.py:808
-#, python-format
-msgid "Loaded %(uri)s as %(alias)s"
-msgstr "Chargé %(uri)s sous %(alias)s"
+#: ../lib/advene/gui/main.py:236
+msgid "Input from the keyboard (function keys)"
+msgstr "Entrée depuis le clavier (touches de fonction)"
 
-#: ../lib/advene/core/controller.py:799 ../lib/advene/core/controller.py:811
-#, python-format
-msgid "Cannot load package from file %(uri)s: %(error)s"
-msgstr "Impossible de charger le fichier %(uri)s : %(error)s"
+#: ../lib/advene/gui/main.py:239
+msgid "_File"
+msgstr "_Fichier"
 
-#: ../lib/advene/core/controller.py:850
-msgid "Deactivating web server"
-msgstr "Désactivation du serveur web"
+#: ../lib/advene/gui/main.py:240
+msgid "_New package"
+msgstr "_Nouveau recueil"
 
-#: ../lib/advene/core/controller.py:970
-#, python-format
-msgid "Cannot get audio volume: %s"
-msgstr "Impossible d'obtenir le volume: %s"
+#: ../lib/advene/gui/main.py:240
+msgid "Create a new package"
+msgstr "Créer un nouveau recueil"
 
-#: ../lib/advene/core/controller.py:1020
-#, 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/gui/main.py:241
+msgid "_Open package"
+msgstr "_Ouvrir recueil"
 
-#: ../lib/advene/core/controller.py:1128 ../lib/advene/gui/edit/merge.py:272
-msgid "None"
-msgstr "Aucun"
+#: ../lib/advene/gui/main.py:241
+msgid "Open a package"
+msgstr "Ouvrir un recueil"
 
-#: ../lib/advene/core/controller.py:1222
-#, python-format
-msgid "Found matching video file in moviepath: %s"
-msgstr "Trouvé fichier vidéo correspondant dans le chemin de recherche : %s"
+#: ../lib/advene/gui/main.py:242
+msgid "Show recently opened packages"
+msgstr "Recueils ouverts récemments"
 
-#: ../lib/advene/core/controller.py:1263 ../lib/advene/core/controller.py:1265
-msgid "Analysis of "
-msgstr "Analyse de "
+#: ../lib/advene/gui/main.py:243
+msgid "_Save package"
+msgstr "_Sauvegarder recueil"
 
-#: ../lib/advene/core/controller.py:1465
-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/gui/main.py:243
+msgid "Save the package"
+msgstr "Sauvegarder le recueil %s"
 
-#: ../lib/advene/core/controller.py:1630
-#, 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/gui/main.py:244
+msgid "Save package as..."
+msgstr "Sauvegarder sous..."
 
-#: ../lib/advene/core/controller.py:1672
-#, 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/gui/main.py:244
+msgid "Save the package as..."
+msgstr "Sauvegarder le recueil sous..."
 
-#: ../lib/advene/core/controller.py:1907
-msgid "Package URI has changed. Reloading package with new URI."
-msgstr "L'URI du recueil a changé. Rechargement du recueil."
+#: ../lib/advene/gui/main.py:245
+msgid "Close package"
+msgstr "Fermer recueil"
 
-#: ../lib/advene/core/controller.py:1925
-msgid ""
-"Cannot load package: the following annotations do not have Millisecond "
-"fragments:"
-msgstr ""
-"Impossible de charger le recueil: les annotations suivantes\n"
-"n'ont pas de fragment de type Milliseconde :"
+#: ../lib/advene/gui/main.py:245
+msgid "Close the package"
+msgstr "Fermer le recueil"
 
-#: ../lib/advene/core/controller.py:1952
-#, 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/gui/main.py:247
+msgid "Save session"
+msgstr "Sauver la session"
 
-#: ../lib/advene/core/controller.py:1954
-#, 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/gui/main.py:247
+msgid "Save the current session (list of opened packages)"
+msgstr "Sauvegarder la session en cours (liste des recueils ouverts)"
 
-#: ../lib/advene/core/controller.py:1994
-msgid "Standard summary"
-msgstr "Index standard"
+#: ../lib/advene/gui/main.py:248
+msgid "Save workspace"
+msgstr "Sauver l'environnement"
 
-#: ../lib/advene/core/controller.py:1999
-msgid "Default view"
-msgstr "Vue statique par défaut"
+#: ../lib/advene/gui/main.py:249
+msgid "...as package view"
+msgstr "...comme une vue du recueil"
 
-#: ../lib/advene/core/controller.py:2041
-#, python-format
-msgid ""
-"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
-msgstr ""
-"Boucle infinie dans la vue dynamique %(name)s : la vue %(imp)s est invoquée "
-"plusieurs fois."
+#: ../lib/advene/gui/main.py:250
+msgid "...as standard workspace"
+msgstr "... comme environnement standard"
 
-#: ../lib/advene/core/controller.py:2131
-#, python-format
-msgid "Got exception %s when stopping player."
-msgstr "Reçu l'exception %s à l'arrêt du lecteur"
+#: ../lib/advene/gui/main.py:250
+msgid "Use the current layout as standard workspace in the future"
+msgstr "Utiliser l'environnement courant comme environnement standard"
 
-#: ../lib/advene/core/controller.py:2214
-#, python-format
-msgid "Raised exception in update_status: %s"
-msgstr "Exception dans update_status: %s"
+#: ../lib/advene/gui/main.py:252
+msgid "Associate a video _File"
+msgstr "Associer un _Fichier vidéo"
 
-#: ../lib/advene/core/controller.py:2241
-msgid "Unable to start the player."
-msgstr "Impossible de lancer le lecteur."
+#: ../lib/advene/gui/main.py:252
+msgid "Associate a video file"
+msgstr "Associer un fichier vidéo"
 
-#: ../lib/advene/core/controller.py:2448
-#, python-format
-msgid "Comment on set of %d annotations"
-msgstr "Commentaire sur %d annotations"
+#: ../lib/advene/gui/main.py:253
+msgid "Associate a _DVD"
+msgstr "Associer un _DVD"
 
-#: ../lib/advene/core/controller.py:2450
-#, python-format
-msgid "Comment on %s"
-msgstr "Commentaire sur %s"
+#: ../lib/advene/gui/main.py:253
+msgid "Associate a chapter from a DVD"
+msgstr "Associer un chapitre de DVD"
 
-#: ../lib/advene/core/controller.py:2454
-#, python-format
-msgid ""
-"<h1>Comment on %(title)s</h1>\n"
-"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
-"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
-"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
-"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
-"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
-"\"%(imgurl)s\" ></img></a></span>"
-msgstr ""
-"<h1>Commentaire sur %(title)s</h1>\n"
-"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
-"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
-"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
-"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
-"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
-"\"%(imgurl)s\" ></img></a></span>"
+#: ../lib/advene/gui/main.py:254
+msgid "Associate a _Video stream"
+msgstr "Associer un flux _Vidéo"
 
-#: ../lib/advene/core/controller.py:2464
-#, python-format
-msgid "List of %s annotations"
-msgstr "Ensemble de %s annotations"
+#: ../lib/advene/gui/main.py:254
+msgid "Enter a video stream address"
+msgstr "Entrer une adresse de flux vidéo"
 
-#: ../lib/advene/core/controller.py:2499
-#, python-format
-msgid "Cannot export to %(filename)s: %(e)s"
-msgstr "Impossible d'exporter vers %(filename)s: %(e)s"
+#: ../lib/advene/gui/main.py:256
+msgid "_Import File"
+msgstr "_Importer un fichier"
 
-#: ../lib/advene/core/controller.py:2514 ../lib/advene/core/controller.py:2523
-#, python-format
-msgid "Error when exporting: %s"
-msgstr "Erreur lors de l'export de %s"
+#: ../lib/advene/gui/main.py:256
+msgid "Import data from an external source"
+msgstr "Importer des données depuis une source externe"
 
-#: ../lib/advene/core/controller.py:2525 ../lib/advene/gui/views/table.py:406
-#: ../lib/advene/gui/views/table.py:536
-#, python-format
-msgid "Data exported to %s"
-msgstr "Données exportées vers %s"
+#: ../lib/advene/gui/main.py:257
+msgid "_Process video"
+msgstr "_Traitement de la vidéo"
 
-#: ../lib/advene/core/webcherry.py:51
-msgid "The webserver requires version 3.0 of CherryPy at least."
-msgstr "Le serveur web exige CherryPy version 3.0 ou supérieure."
-
-#: ../lib/advene/core/webcherry.py:167
-#, python-format
-msgid ""
-"\n"
-"            <p>\n"
-"            <a href=\"/admin\">Server administration</a> |\n"
-"            <a href=\"/media\">Media control</a> |\n"
-"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
-"            </p>\n"
-"            Location: %(locationbar)s\n"
-"            <hr>\n"
-"            "
-msgstr ""
-"\n"
-"<p>\n"
-"<a href=\"/admin\">Administration du serveur</a> |\n"
-"<a href=\"/media\">Contrôle du lecteur</a> |\n"
-"<a href=\"%(path)s?mode=raw\">Vue brute</a>\n"
-"</p>\n"
-"Chemin courant : %(locationbar)s\n"
-"<hr>"
+#: ../lib/advene/gui/main.py:257
+msgid "Import data from video processing algorithms"
+msgstr "Extraire automatiquement des données depuis la vidéo"
 
-#: ../lib/advene/core/webcherry.py:227
-msgid "Unspecified Error"
-msgstr "Erreur non spécifiée"
+#: ../lib/advene/gui/main.py:259
+msgid "Merge package"
+msgstr "Fusionner un recueil"
 
-#: ../lib/advene/core/webcherry.py:228
-#, python-format
-msgid ""
-"\n"
-"        <h1>Error</h1>\n"
-"        <p>An error occurred:</p>\n"
-"        %s\n"
-"        "
-msgstr ""
-"\n"
-"        <h1>Erreur</h1>\n"
-"        <p>Une erreur est survenue :</p>\n"
-"        %s\n"
-"        "
+#: ../lib/advene/gui/main.py:259
+msgid "Merge elements from another package"
+msgstr "Fusionner les éléments d'un autres recueil"
 
-#: ../lib/advene/core/webcherry.py:261
-msgid "<h1>No available mediaplayer</h1>"
-msgstr "<h1>Aucune capture d'écran.</h1>"
+#: ../lib/advene/gui/main.py:260
+msgid "Import _DVD chapters"
+msgstr "Importer les chapitres du _DVD"
 
-#: ../lib/advene/core/webcherry.py:265
-#, python-format
-msgid ""
-"\n"
-"            <h1>Current STBV: %(currentstbv)s</h1>\n"
-"\n"
-"            <h1>Player status</h1>\n"
-"            <table border=\"1\">\n"
-"            <tr>\n"
-"            <td>Current position</td><td>%(position)s</td>\n"
-"            <td>Duration</td><td>%(duration)s</td>\n"
-"            <td>Player status</td><td>%(status)s</td>\n"
-"            </tr>\n"
-"            </table>\n"
-"            "
-msgstr ""
-"\n"
-"            <h1>Vue STBV courante: %(currentstbv)s</h1>\n"
-"\n"
-"            <h1>Statut du lecteur</h1>\n"
-"            <table border=\"1\">\n"
-"            <tr>\n"
-"            <td>Position</td><td>%(position)s</td>\n"
-"            <td>Durée</td><td>%(duration)s</td>\n"
-"            <td>Statut</td><td>%(status)s</td>\n"
-"            </tr>\n"
-"            </table>\n"
-"            "
+#: ../lib/advene/gui/main.py:260
+msgid "Create annotations based on DVD chapters"
+msgstr "Créer des annotations correspondant aux chapitres du DVD"
 
-#: ../lib/advene/core/webcherry.py:284
-msgid "<h1>No playlist</h1>"
-msgstr "<h1>Aucun film chargé</h1>"
+#: ../lib/advene/gui/main.py:262
+msgid "_Export..."
+msgstr "Exporter..."
 
-#: ../lib/advene/core/webcherry.py:286
-#, python-format
-msgid ""
-"<h1>Current playlist</h1>\n"
-"                <ul>%s</ul>"
-msgstr ""
-"<h1>Films chargés</h1>\n"
-"                <ul>%s</ul>"
+#: ../lib/advene/gui/main.py:262
+msgid "Export data to another format"
+msgstr "Exporter les données dans un autre format"
 
-#: ../lib/advene/core/webcherry.py:288
-msgid ""
-"\n"
-"                <form action=\"/media/play\" method=\"GET\">\n"
-"                Starting pos: <input type=\"text\" name=\"position\" value="
-"\"0\">\n"
-"                <input type=\"submit\" value=\"Play\">\n"
-"                </form>\n"
-"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
-"\">Pause</a><br>\n"
-"                "
-msgstr ""
-"\n"
-"                <form action=\"/media/play\" method=\"GET\">\n"
-"                Position de départ (en ms): <input type=\"text\" name=\"bc\" "
-"value=\"0\">\n"
-"                <input type=\"submit\" value=\"Démarrer\">\n"
-"                </form>\n"
-"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
-"\">Pause</a><br>\n"
-"                "
+#: ../lib/advene/gui/main.py:263
+msgid "_Website export..."
+msgstr "Exporter vers un site _Web..."
 
-#: ../lib/advene/core/webcherry.py:295
-msgid ""
-"<hr />\n"
-"            <form action=\"/media/load\" method=\"GET\">\n"
-"            Add a new file (<em>dvd</em> to play a DVD):\n"
-"            <input type=\"text\" name=\"filename\">\n"
-"            <input type=\"submit\" value=\"Add\">\n"
-"            </form>"
-msgstr ""
-"<hr />\n"
-"            <form action=\"/media/load\" method=\"GET\">\n"
-"            Ajouter un nouveau fichier (<em>dvd</em> pour un DVD):\n"
-"            <input type=\"text\" name=\"filename\">\n"
-"            <input type=\"submit\" value=\"Ajouter\">\n"
-"            </form>"
+#: ../lib/advene/gui/main.py:263
+msgid "Export views to a website"
+msgstr "Exporter les vues vers un site web"
 
-#: ../lib/advene/core/webcherry.py:301
-msgid ""
-"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
-msgstr "<h3><a href=\"/media/snapshot\">Accéder aux captures d'écran</h3>"
+#: ../lib/advene/gui/main.py:265
+msgid "_Quit"
+msgstr "_Quitter"
 
-#: ../lib/advene/core/webcherry.py:310
-#, python-format
-msgid "Unknown STBV identifier: %s"
-msgstr "Identificateur STBV inconnu : %s"
+#: ../lib/advene/gui/main.py:267
+msgid "_Edit"
+msgstr "Édition"
 
-#: ../lib/advene/core/webcherry.py:385
-msgid "Media information"
-msgstr "Information sur le média"
+#: ../lib/advene/gui/main.py:268
+msgid "_Undo"
+msgstr "_Undo"
 
-#: ../lib/advene/core/webcherry.py:398
-msgid "File added"
-msgstr "Fichier ajouté"
+#: ../lib/advene/gui/main.py:269
+msgid "_Find"
+msgstr "_Chercher"
 
-#: ../lib/advene/core/webcherry.py:399
-#, python-format
-msgid "<p><strong>%s has been added to the playlist</strong></p>"
-msgstr "<p><strong>%s a été ajouté à la liste</strong></p>"
+#: ../lib/advene/gui/main.py:270
+msgid "_Delete"
+msgstr "_Supprimer"
 
-#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
-msgid "Access to packages snapshots"
-msgstr "Accès aux catpures d'écran"
+#: ../lib/advene/gui/main.py:271
+msgid "Create"
+msgstr "Créer"
 
-#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
-msgid "Unknown package alias"
-msgstr "Alias du recueil inconnu"
+#: ../lib/advene/gui/main.py:272 ../lib/advene/gui/main.py:3309
+#: ../lib/advene/util/helper.py:405
+msgid "Schema"
+msgstr "Schéma"
 
-#: ../lib/advene/core/webcherry.py:426
-#, python-format
-msgid "Available snapshots for %s"
-msgstr "Captures d'écran disponibles pour le recueil %s"
+#: ../lib/advene/gui/main.py:273 ../lib/advene/gui/edit/rules.py:1091
+#: ../lib/advene/rules/actions.py:236 ../lib/advene/util/helper.py:408
+msgid "View"
+msgstr "Vue"
 
-#: ../lib/advene/core/webcherry.py:432
-#, python-format
-msgid ""
-"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
-"a></p>"
-msgstr ""
-"<p><a href=\"/media/snapshot/%s?mode=inline\">Afficher les vignettes</a></p>"
+#: ../lib/advene/gui/main.py:274 ../lib/advene/gui/popup.py:459
+#: ../lib/advene/util/helper.py:409
+msgid "Query"
+msgstr "Requête"
 
-#: ../lib/advene/core/webcherry.py:439
-msgid "Done"
-msgstr "Fait"
+#: ../lib/advene/gui/main.py:275 ../lib/advene/util/helper.py:406
+msgid "Annotation Type"
+msgstr "Type d'Annotation"
 
-#: ../lib/advene/core/webcherry.py:441
-msgid "Pending"
-msgstr "En attente"
+#: ../lib/advene/gui/main.py:276 ../lib/advene/util/helper.py:407
+msgid "Relation Type"
+msgstr "Type de Relation"
 
-#: ../lib/advene/core/webcherry.py:487
-#, python-format
-msgid "Unknown annotation id: %s"
-msgstr "Annotation inconnue: %s"
+#: ../lib/advene/gui/main.py:280
+msgid "P_ackage properties"
+msgstr "_Propriétés du recueil"
 
-#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
-#, python-format
-msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
-msgstr "Impossible d'écrire dans %(stbvid)s : %(error)s"
+#: ../lib/advene/gui/main.py:280
+msgid "Edit package properties"
+msgstr "Éditer les propriétés du recueil"
 
-#: ../lib/advene/core/webcherry.py:675
-msgid "<p>No GUI is available."
-msgstr "<p>Aucune interface n'est disponible."
+#: ../lib/advene/gui/main.py:281
+msgid "P_references"
+msgstr "P_références"
 
-#: ../lib/advene/core/webcherry.py:677
-#, python-format
-msgid "<p>Opened adhoc views: %s</p>"
-msgstr "<p>Vues ad-hoc ouvertes : %s</p>"
+#: ../lib/advene/gui/main.py:281
+msgid "Interface preferences"
+msgstr "Préférences de l'interface"
 
-#: ../lib/advene/core/webcherry.py:678
-msgid "<p>Available adhoc views:</p><ul>"
-msgstr "<p>Vues ad-hoc disponibles : %s</p>"
+#: ../lib/advene/gui/main.py:285
+msgid "_Start Web Browser"
+msgstr "Lancer le navigateur _Web"
 
-#: ../lib/advene/core/webcherry.py:699
-#, python-format
-msgid "<p>Current stbv: %s</p>"
-msgstr "<p>Vue STBV courante : %s</p>"
+#: ../lib/advene/gui/main.py:285
+msgid "Start the web browser"
+msgstr "Lancer le navigateur web"
 
-#: ../lib/advene/core/webcherry.py:700
-#, python-format
-msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
-msgstr "<p>Vous pouvez activer les STBV suivantes :</p><ul>%s</ul>"
+#: ../lib/advene/gui/main.py:287
+msgid "Simplify interface"
+msgstr "Simplifier l'interface"
 
-#: ../lib/advene/core/webcherry.py:702
-msgid "Activate and play"
-msgstr "Activer et jouer"
+#: ../lib/advene/gui/main.py:287
+msgid "Simplify the application interface (toggle)"
+msgstr "Simplifier l'interface (bascule)"
 
-#: ../lib/advene/core/webcherry.py:708
-msgid "Application information"
-msgstr "Informations sur l'application"
+#: ../lib/advene/gui/main.py:288
+msgid "Evaluator"
+msgstr "Évaluateur"
 
-#: ../lib/advene/core/webcherry.py:778
-msgid "Missing element id parameter"
-msgstr "Paramètre id manquant"
+#: ../lib/advene/gui/main.py:288
+msgid "Open python evaluator window"
+msgstr "Ouvrir l'évaluateur python"
 
-#: ../lib/advene/core/webcherry.py:782
-#, python-format
-msgid "No existing element with id %s"
-msgstr "Aucun élément existant avec l'id %s"
+#: ../lib/advene/gui/main.py:289 ../lib/advene/gui/main.py:4061
+msgid "Webserver log"
+msgstr "Statistiques du serveur web"
 
-#: ../lib/advene/core/webcherry.py:791
-#, python-format
-msgid "<p>The GUI view %s does not exist.</p>"
-msgstr "<p>La vue ad-hoc %s n'existe pas.</p>"
+#: ../lib/advene/gui/main.py:292
+msgid "_Player"
+msgstr "_Lecteur"
 
-#: ../lib/advene/core/webcherry.py:798
-msgid "Invalid request"
-msgstr "Requête invalide"
+#: ../lib/advene/gui/main.py:293
+msgid "Go to _Time"
+msgstr "Aller au _Temps"
 
-#: ../lib/advene/core/webcherry.py:803
-msgid "Invalid configuration variable name"
-msgstr "Nom de variable de configuration invalide"
+#: ../lib/advene/gui/main.py:293
+msgid "Goto a specified time code"
+msgstr "Aller à un timecode précis"
 
-#: ../lib/advene/core/webcherry.py:815
-msgid "Invalid value"
-msgstr "Valeur non valide"
+#: ../lib/advene/gui/main.py:294
+msgid "Save _ImageCache"
+msgstr "Sauvegarder le cache"
 
-#: ../lib/advene/core/webcherry.py:819
-#, python-format
-msgid "Unsupported method %s"
-msgstr "Méthode non supportée: %s"
+#: ../lib/advene/gui/main.py:294
+msgid "Save the contents of the ImageCache to disk"
+msgstr "Sauvegarder le contenu du cache d'images"
 
-#: ../lib/advene/core/webcherry.py:845
-#, python-format
-msgid ""
-"\n"
-"        <h1>Authorized hosts</h1>\n"
-"        <table border=\"1\">\n"
-"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
-"        %s\n"
-"        </table>\n"
-"        <form method=\"GET\">\n"
-"        Add a new hostname to the list :<br>\n"
-"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
-"\"Add\">\n"
-"        </form>\n"
-"        "
-msgstr ""
-"\n"
-"        <h1>Clients autorisés</h1>\n"
-"        <table border=\"1\">\n"
-"        <tr><th>Host</th><th>Adresse IP</th><th>Action</th></tr>\n"
-"        %s\n"
-"        </table>\n"
-"        <form method=\"GET\">\n"
-"        Ajouter une nouvelle adresse à la liste :<br>\n"
-"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
-"\"Ajouter\">\n"
-"        </form>\n"
-"        "
+#: ../lib/advene/gui/main.py:295
+msgid "Reset ImageCache"
+msgstr "Vider le cache d'images"
 
-#: ../lib/advene/core/webcherry.py:859
-msgid "Access control"
-msgstr "Contrôle d'accès"
+#: ../lib/advene/gui/main.py:295
+msgid "Reset the ImageCache"
+msgstr "Vider le cache d'images"
 
-#: ../lib/advene/core/webcherry.py:864
-msgid "Access control - add a hostname"
-msgstr "Contrôle d'accès - ajouter une adresse"
+#: ../lib/advene/gui/main.py:296
+msgid "_Restart player"
+msgstr "_Redémarrer le lecteur"
 
-#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
-#, python-format
-msgid "<strong>Error: %s is an invalid hostname.</strong>"
-msgstr "<strong>Erreur: %s n'est pas un nom de machine valide.</strong>"
+#: ../lib/advene/gui/main.py:296
+msgid "Restart the player"
+msgstr "Redémarrer le lecteur"
 
-#: ../lib/advene/core/webcherry.py:875
-#, python-format
-msgid "<p>Added %s to authorized hosts list.</p>"
-msgstr "<p>Ajouté %s à la liste des clients autorisés.</p>"
+#: ../lib/advene/gui/main.py:297
+msgid "Update annotation screenshots"
+msgstr "Captures d'écran pour les annotations"
 
-#: ../lib/advene/core/webcherry.py:881
-msgid "Access control - delete a hostname"
-msgstr "Contrôle d'accès - supprimer une adresse"
+#: ../lib/advene/gui/main.py:297
+msgid "Update screenshots for annotation bounds"
+msgstr "Générer des captures d'écran pour chaque borne d'annotation"
 
-#: ../lib/advene/core/webcherry.py:889
-msgid "<strong>Cannot remove the localhost access.</strong>"
-msgstr "<strong>Impossible de supprimer l'accès local.</strong>"
+#: ../lib/advene/gui/main.py:298
+msgid "Select the player plugin"
+msgstr "Sélectionner le lecteur vidéo"
 
-#: ../lib/advene/core/webcherry.py:894
-#, python-format
-msgid "<p>Removed %s from authorized hosts list.</p>"
-msgstr "<p>Supprimé %s de la liste des clients autorisés.</p>"
+#: ../lib/advene/gui/main.py:301
+msgid "No package"
+msgstr "Aucun recueil"
 
-#: ../lib/advene/core/webcherry.py:896
-#, python-format
-msgid "<p>%s is not in authorized hosts list.</p>"
-msgstr "<p>%s n'est pas dans la liste des clients autorisés.</p>"
+#: ../lib/advene/gui/main.py:303
+msgid "_Help"
+msgstr "_Aide"
 
-#: ../lib/advene/core/webcherry.py:945
-msgid "Server Administration"
-msgstr "Administration du serveur"
+#: ../lib/advene/gui/main.py:304
+msgid "Help"
+msgstr "Aide"
 
-#: ../lib/advene/core/webcherry.py:953
-#, python-format
-msgid ""
-"\n"
-"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
-"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
-"        <p><a href=\"/action\">List available actions</a></p>\n"
-"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
-"        <p><a href=\"/media\">Media control</a></p>\n"
-"        <p><a href=\"/application\">Display GUI status</a></p>\n"
-"        <p><a href=\"/admin/list\">List available files</a></p>\n"
-"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
-"p>\n"
-"        <p>Display mode : %(displaymode)s</p>\n"
-"        <hr>\n"
-"        <p>Load a package :\n"
-"        <form action=\"/admin/load\" method=\"GET\">\n"
-"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
-"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
-"        <input type=\"submit\" value=\"Load\" />\n"
-"        </form>\n"
-"        </body></html>\n"
-"        "
-msgstr ""
-"\n"
-"        <p><a href=\"/admin/access\">Régler le contrôle d'accès</a></p>\n"
-"        <p><a href=\"/admin/methods\">Afficher les méthodes TALES "
-"disponibles</a></p>\n"
-"        <p><a href=\"/action\">Afficher les actions disponibles</a></p>\n"
-"        <p><a href=\"/admin/reset\">Réinitialiser le serveur</a></p>\n"
-"        <p><a href=\"/media\">Contrôle du lecteur</a></p>\n"
-"        <p><a href=\"/application\">Afficher le statut de l'interface "
-"graphique</a></p>\n"
-"        <p><a href=\"/admin/list\">Afficher les fichiers disponibles</a></"
-"p>\n"
-"        <p><a href=\"/packages\">Afficher les recueils chargés</a> "
-"(%(packagelist)s)</p>\n"
-"        <p>Mode d'affichage : %(displaymode)s</p>\n"
-"        <hr>\n"
-"        <p>Charger un nouveau recueil :\n"
-"        <form action=\"/admin/load\" method=\"GET\">\n"
-"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
-"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
-"        <input type=\"submit\" value=\"Charger\" />\n"
-"        </form>\n"
-"        </body></html>\n"
-"        "
+#: ../lib/advene/gui/main.py:305
+msgid "Get support"
+msgstr "Obtenir de l'aide"
 
-#: ../lib/advene/core/webcherry.py:983
-msgid "Available files"
-msgstr "Fichiers disponibles"
+#: ../lib/advene/gui/main.py:306
+msgid "Check for updates"
+msgstr "Vérification de mise à jour"
 
-#: ../lib/advene/core/webcherry.py:1009
-msgid "You should specify an alias"
-msgstr "Vous devez spécifier un alias"
+#: ../lib/advene/gui/main.py:307
+msgid "Display shortcuts"
+msgstr "Afficher les raccourcis"
 
-#: ../lib/advene/core/webcherry.py:1014
-msgid "You should specify an uri"
-msgstr "Vous devez spécifier une URI"
+#: ../lib/advene/gui/main.py:308
+msgid "Display logfile"
+msgstr "Afficher les messages d'information"
 
-#: ../lib/advene/core/webcherry.py:1020
-#, python-format
-msgid "Package %s loaded"
-msgstr "Recueil %s chargé"
+#: ../lib/advene/gui/main.py:308
+msgid "Display log file"
+msgstr "Afficher les messages d'information"
 
-#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
-#, python-format
+#: ../lib/advene/gui/main.py:309
+msgid "Open logfile folder"
+msgstr "Ouvrir le dossier du rapport d'erreur"
+
+#: ../lib/advene/gui/main.py:309
 msgid ""
-"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
-"the <a href=\"/packages\">package list</a>."
+"Display logfile folder. It can help when sending the advene.log file by e-"
+"mail."
 msgstr ""
-"<p>Accéder au recueil <a href=\"/packages/%(alias)s\">%(alias)s</a>, ou à la "
-"<a href=\"/packages\">liste des recueils chargés</a>."
+"Afficher le dossier contenant le rapport d'erreurs advene.log, afin d'en "
+"faciliter l'envoi par courriel."
 
-#: ../lib/advene/core/webcherry.py:1024
-#, python-format
-msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
-msgstr "<p>Impossible de charger le recueil %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:310
+msgid "_About"
+msgstr "À _Propos"
 
-#: ../lib/advene/core/webcherry.py:1035
+#: ../lib/advene/gui/main.py:332 ../lib/advene/gui/main.py:3789
 #, python-format
-msgid "Package %s deleted"
-msgstr "Recueil %s supprimé"
-
-#: ../lib/advene/core/webcherry.py:1036
-msgid "<p>Go to the <a href=\"/packages\">package list</a>."
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
 msgstr ""
-"<p>Consulter la <a href=\"/packages\">liste des recueils disponibles</a>"
+"Impossible de charger le recueil %(filename)s :\n"
+"%(error)s"
 
-#: ../lib/advene/core/webcherry.py:1039
-#, python-format
-msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
-msgstr "<p>Impossible de supprimer le recueil %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:340
+msgid "Open a package file"
+msgstr "Ouvrir un recueil"
 
-#: ../lib/advene/core/webcherry.py:1056
-#, python-format
-msgid "Package %s saved"
-msgstr "Recueil %s sauvegardé"
+#: ../lib/advene/gui/main.py:341
+msgid "Save the current package"
+msgstr "Sauvegarder le recueil courant"
 
-#: ../lib/advene/core/webcherry.py:1060
-#, python-format
-msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
-msgstr "<p>Impossible de sauvegarder le recueil %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:342
+msgid "Save the package with a new name"
+msgstr "Sauvegarder le recueil sous un nouveau nom"
 
-#: ../lib/advene/core/webcherry.py:1070
-msgid "Server reset"
-msgstr "Serveur réinitialisé"
+#: ../lib/advene/gui/main.py:343
+msgid "Select movie file..."
+msgstr "Sélectionner un fichier vidéo"
 
-#: ../lib/advene/core/webcherry.py:1076
-msgid "Available TALES methods"
-msgstr "Méthodes TALES disponibles"
+#: ../lib/advene/gui/main.py:344
+msgid "Select DVD"
+msgstr "Sélectionner un DVD"
 
-#: ../lib/advene/core/webcherry.py:1117
-msgid "Loaded package(s)"
-msgstr "Recueil(s) chargé(s)"
+#: ../lib/advene/gui/main.py:346
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:808
+#: ../lib/advene/gui/edit/transcribe.py:1203
+msgid "Undo"
+msgstr "Undo"
 
-#: ../lib/advene/core/webcherry.py:1119
-msgid ""
-"\n"
-"        <h1>Loaded package(s)</h1>\n"
-"        <table border=\"1\" width=\"50%\">\n"
-"        <tr>\n"
-"        <th>Alias</th>\n"
-"        <th>Action</th>\n"
-"        <th>URI</th>\n"
-"        <th>Annotations</th>\n"
-"        </tr>\n"
-"        "
-msgstr ""
-"\n"
-"        <h1>Recueil(s) chargé(s)</h1>\n"
-"        <table border=\"1\" width=\"50%\">\n"
-"        <tr>\n"
-"        <th>Alias</th>\n"
-"        <th>Action</th>\n"
-"        <th>URI</th>\n"
-"        <th>Annotations</th>\n"
-"        </tr>\n"
-"        "
+#: ../lib/advene/gui/main.py:348
+msgid "Create a text annotation"
+msgstr "Créer une annotation textuelle"
 
-#: ../lib/advene/core/webcherry.py:1131
-#, python-format
-msgid ""
-"<tr>\n"
-"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
-"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
-"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
-"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
-"            <td>%(uri)s</td>\n"
-"            <td>%(size)d</td>\n"
-"            </tr>\n"
-"            "
-msgstr ""
-"<tr>\n"
-"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
-"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
-"%(uri)s\">Recharger</a>|<a href=\"/admin/delete?alias=%(alias)s\">Supprimer</"
-"a>|<a href=\"/admin/save?alias=%(alias)s\">Sauver</a></td>\n"
-"            <td>%(uri)s</td>\n"
-"            <td>%(size)d</td>\n"
-"            </tr>\n"
-"            "
+#: ../lib/advene/gui/main.py:349
+msgid "Create a graphical annotation"
+msgstr "Créer une annotation graphique"
 
-#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
-#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
-#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
-#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
-#: ../lib/advene/core/webcherry.py:2039
-msgid "Error"
-msgstr "Erreur"
+#: ../lib/advene/gui/main.py:355
+msgid "List recently opened packages"
+msgstr "Recueils récemment ouverts"
 
-#: ../lib/advene/core/webcherry.py:1205
+#: ../lib/advene/gui/main.py:385
+msgid "Snapshotter activity"
+msgstr "Activité de prise de capture d'écran"
+
+#: ../lib/advene/gui/main.py:387
 #, python-format
-msgid "The TALES expression %s is not valid."
-msgstr "L'expression TALES %s n'est pas valide."
+msgid "%d queued requests"
+msgstr "%d requêtes en attente"
 
-#: ../lib/advene/core/webcherry.py:1256
-msgid "Content mode not available on non-content data"
-msgstr ""
-"Le mode <em>Contenu</em> n'est pas applicable aux données qui ne sont pas "
-"des contenus."
+#: ../lib/advene/gui/main.py:388
+msgid "Cancel all requests"
+msgstr "Annuler toutes les requêtes"
 
-#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
-#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
-#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
-#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
-#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
-#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
-msgid "<h1>Error</h1>"
-msgstr "<h1>Erreur</h1>"
+#: ../lib/advene/gui/main.py:393
+msgid "No snapshotter"
+msgstr "Aucun composant de capture d'écran"
 
-#: ../lib/advene/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
-#, python-format
-msgid ""
-"<p>There was an error in the template code.</p>\n"
-"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"                <p>Error message: <em>%(message)s</em></p>"
-msgstr ""
-"<p>Il y a une erreur dans le modèle.</p>\n"
-"                <p>Balise: <strong>%(tagname)s</strong></p>\n"
-"                <p>Message d'erreur: <em>%(message)s</em></p>"
+#: ../lib/advene/gui/main.py:415
+msgid "No snapshotting activity"
+msgstr "Aucune requête de capture d'écran en cours"
 
-#: ../lib/advene/core/webcherry.py:1290
+#: ../lib/advene/gui/main.py:419
+msgid "Snapshotting"
+msgstr "En cours de capture d'écran"
+
+#: ../lib/advene/gui/main.py:436
+msgid "Display application log messages"
+msgstr "Afficher les messages d'information de l'application"
+
+#: ../lib/advene/gui/main.py:477
+msgid "Quicksearch lists"
+msgstr "Listes de recherche"
+
+#: ../lib/advene/gui/main.py:483
+msgid "Please specify the lists of elements to be searched."
+msgstr "Spécifiez les listes d'éléments à rechercher."
+
+#: ../lib/advene/gui/main.py:502
 #, python-format
 msgid ""
-"<p>An invalid character is in the Context:</p>\n"
-"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
-"pre>"
+"Searching on %s.\n"
+"Left click to launch the search, right-click to set the quicksearch options"
 msgstr ""
-"<p>Un caractère invalide est dans le Contexte :</p>\n"
-"                <p>Message d'erreur: <em>%(error)s</em></p><pre>%(message)s</"
-"pre>"
+"Recherche sur %s.\n"
+"Clic gauche pour lancer la recherche, click droit pour régler les options de "
+"recherche"
 
-#: ../lib/advene/core/webcherry.py:1298
+#: ../lib/advene/gui/main.py:503
 #, python-format
-msgid ""
-"<p>There was an error in the TALES expression.</p>\n"
-"                <pre>%s</pre>"
-msgstr ""
-"<p>Il y a une erreur dans l'expression TALES.</p>\n"
-"                <pre>%s</pre>"
+msgid "String to search in %s"
+msgstr "Chaîne à rechercher dans %s"
 
-#: ../lib/advene/core/webcherry.py:1318
+#: ../lib/advene/gui/main.py:516 ../lib/advene/gui/main.py:520
+msgid "Tracing : "
+msgstr "Trace : "
+
+#: ../lib/advene/gui/main.py:516
+msgid "off"
+msgstr "off"
+
+#: ../lib/advene/gui/main.py:520
+msgid "on"
+msgstr "on"
+
+#: ../lib/advene/gui/main.py:532
+#: ../lib/advene/gui/views/interactivequery.py:409
+msgid "String to search"
+msgstr "Chaîne à rechercher"
+
+#: ../lib/advene/gui/main.py:540
+msgid "Launch search"
+msgstr "Lancer la recherche"
+
+#: ../lib/advene/gui/main.py:545
+msgid "Ignore case"
+msgstr "Ignorer la casse"
+
+#: ../lib/advene/gui/main.py:550
+msgid "Searched elements"
+msgstr "Éléments recherchés"
+
+#: ../lib/advene/gui/main.py:634
+msgid "Playing"
+msgstr "Lecture"
+
+#: ../lib/advene/gui/main.py:635
+msgid "Pause"
+msgstr "Pause"
+
+#: ../lib/advene/gui/main.py:636
+msgid "Init"
+msgstr "Initialisation"
+
+#: ../lib/advene/gui/main.py:637 ../lib/advene/gui/views/table.py:308
+#: ../lib/advene/gui/edit/elements.py:1816
+msgid "End"
+msgstr "Fin"
+
+#: ../lib/advene/gui/main.py:638
+msgid "Undefined"
+msgstr "Indéfini"
+
+#: ../lib/advene/gui/main.py:660
 #, python-format
-msgid ""
-"<p>There was an error.</p>\n"
-"                <pre>%s</pre>"
-msgstr ""
-"<p>Une erreur est survenue.</p>\n"
-"                <pre>%s</pre>"
+msgid "Exception in update_annotation: %s."
+msgstr "Exception dans update_annotation: %s"
 
-#: ../lib/advene/core/webcherry.py:1342
+#: ../lib/advene/gui/main.py:691
 #, python-format
-msgid ""
-"\n"
-"            <hr>\n"
-"            <p>\n"
-"            Location: %(location)s<br>\n"
-"            <form name=\"navigation\" method=\"GET\">\n"
-"            <a href=\"%(levelup)s\">Up one level</a> |\n"
-"            Next level :\n"
-"            <select name=\"path\" onchange=\"submit()\">\n"
-"            "
-msgstr ""
-"\n"
-"        <hr>\n"
-"        <p>\n"
-"        Chemin courant : %(location)s<br>\n"
-"        <form name=\"navigation\" method=\"GET\">\n"
-"        <a href=\"%(levelup)s\">Remonter d'un niveau</a> |\n"
-"        Niveau suivant :\n"
-"        <select name=\"path\" onchange=\"submit()\">\n"
-"        "
+msgid "Exception in update_relation: %s."
+msgstr "Exception dans update_relation: %s"
 
-#: ../lib/advene/core/webcherry.py:1360
-msgid ""
-"\n"
-"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
-"            <option selected></option>\n"
-"            "
-msgstr ""
-"\n"
-"        </select> Vue : <select name=\"view\" onchange=\"submit()\">\n"
-"        <option selected></option>\n"
-"        "
+#: ../lib/advene/gui/main.py:716
+#, python-format
+msgid "Exception in update_view: %s."
+msgstr "Exception dans update_view: %s"
 
-#: ../lib/advene/core/webcherry.py:1378
+#: ../lib/advene/gui/main.py:747
 #, python-format
-msgid ""
-"<hr>\n"
-"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
-"package %(uri)s returns %(value)s</p>\n"
-"            "
-msgstr ""
-"<hr>\n"
-"        <p>L'évaluation de l'expression \"<strong>%(expression)s</strong>\" "
-"sur le recueil %(uri)s retourne %(value)s</p>\n"
-"        "
+msgid "Exception in update_query: %s."
+msgstr "Exception dans update_query: %s."
 
-#: ../lib/advene/core/webcherry.py:1414
+#: ../lib/advene/gui/main.py:770
 #, python-format
-msgid "<p>Package <strong>%s</strong> not loaded</p>"
-msgstr "<p>Le recueil <strong>%s</strong> n'est pas chargé</p>"
+msgid "Exception in update_resource: %s."
+msgstr "Exception dans update_resource: %s"
 
-#: ../lib/advene/core/webcherry.py:1456
+#: ../lib/advene/gui/main.py:793
 #, python-format
-msgid ""
-"<p>There was an error in the template code.</p>\n"
-"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"            <p>Error message: <em>%(message)s</em></p>"
-msgstr ""
-"<p>Il y a une erreur dans le modèle.</p>\n"
-"            <p>Balise: <strong>%(tagname)s</strong></p>\n"
-"            <p>Message d'erreur: <em>%(message)s</em></p>"
+msgid "Exception in update_schema: %s."
+msgstr "Exception dans update_schema: %s"
 
-#: ../lib/advene/core/webcherry.py:1464
+#: ../lib/advene/gui/main.py:816
 #, python-format
-msgid ""
-"<p>There was an error in the expression.</p>\n"
-"            <pre>%s</pre>"
-msgstr ""
-"<p>Il y a une erreur dans l'expression.</p>\n"
-"            <pre>%s</pre>"
+msgid "Exception in update_annotationtype: %s."
+msgstr "Exception dans update_annotationtype: %s"
 
-#: ../lib/advene/core/webcherry.py:1472
+#: ../lib/advene/gui/main.py:844
 #, python-format
-msgid ""
-"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
-"            %(type)s\n"
-"            %(value)s\n"
-"            %(traceback)s</pre>"
-msgstr ""
-"<p>Impossible d'interpéter l'expression TALES %(expr)s sur le recueil "
-"%(package)s<p><pre>\n"
-"                %(type)s\n"
-"                %(value)s\n"
-"                %(traceback)s</pre>"
+msgid "Exception in update_relationtype: %s."
+msgstr "Exception dans update_relationtype: %s"
 
-#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
-msgid "<p>Cannot set the value : invalid path</p>"
-msgstr "<p>Impossible de mettre à jour : chemin invalide</p>"
+#: ../lib/advene/gui/main.py:950
+msgid "Enter the new time value"
+msgstr "Entrez le nouveau temps"
 
-#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
+#: ../lib/advene/gui/main.py:974
 #, python-format
-msgid ""
-"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
-"%(folder)s could not be created.</p>"
-msgstr ""
-"<h1>Erreur</h1><p>Lors de la création de la ressource %(path)s, le "
-"répertoire %(folder)s n'a pas pu être créé.</p>"
+msgid "Replace content in %d elements"
+msgstr "Remplacer du texte dans %d elements"
 
-#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
-msgid "Resource successfuly created/updated"
-msgstr "Ressource mise à jour"
+#: ../lib/advene/gui/main.py:987
+msgid "Find word"
+msgstr "Trouver le mot"
 
-#: ../lib/advene/core/webcherry.py:1611
-msgid "Value successfuly updated"
-msgstr "Valeur mise à jour"
+#: ../lib/advene/gui/main.py:994
+msgid "Replace by"
+msgstr "Remplacer par"
 
-#: ../lib/advene/core/webcherry.py:1613
+#: ../lib/advene/gui/main.py:1022
 #, python-format
-msgid ""
-"Unable to update the attribute %(attribute)s for element %(element)s: "
-"%(error)s."
-msgstr ""
-"Impossible de mettre à jour l'attribut %(attribute)s de l'élément "
-"%(element)s: %(error)s."
+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/core/webcherry.py:1724
-msgid "<p>Invalid request</p>."
-msgstr "<p>Requête invalide</p>"
+#: ../lib/advene/gui/main.py:1031
+msgid "The video extracting feature is not available."
+msgstr "La fonctionnalité d'extraction de vidéo n'est pas disponible"
 
-#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
-msgid "Value updated"
-msgstr "Valeur mise à jour"
+#: ../lib/advene/gui/main.py:1034
+msgid "Video export"
+msgstr "Export vidéo"
 
-#: ../lib/advene/core/webcherry.py:1789
+#: ../lib/advene/gui/main.py:1036
 #, 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:1038
+msgid "Please choose a destination filename"
+msgstr "Choisissez le fichier destination"
+
+#: ../lib/advene/gui/main.py:1116
 msgid ""
-"\n"
-"                <h1>Value updated</h1>\n"
-"                The value of %(path)s has been updated to\n"
-"                <pre>\n"
-"                %(value)s\n"
-"                </pre>\n"
-"                "
+"No media association is defined in the package. Please use the 'File/"
+"Associate a video file' menu item to associate a media file."
 msgstr ""
-"\n"
-"                    <h1>Valeur mise à jour</h1>\n"
-"                    La valeur de %(path)s a été fixée à :\n"
-"                    <pre>\n"
-"                    %(value)s\n"
-"                    </pre>\n"
-"                    "
+"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/core/webcherry.py:1806
+#: ../lib/advene/gui/main.py:1118
 #, python-format
 msgid ""
-"\n"
-"                    <h1>Value updated</h1>\n"
-"                    The value of %(path)s has been updated to\n"
-"                    <pre>\n"
-"                    %(value)s\n"
-"                    </pre>\n"
-"                    "
+"The associated media %s could not be found. Please use the 'File/Associate a "
+"video file' menu item to associate a media file."
 msgstr ""
-"\n"
-"                    <h1>Contenu mis à jour</h1>\n"
-"                    Le contenu de %(path)s a été fixé à :\n"
-"                    <pre>\n"
-"                    %(value)s\n"
-"                    </pre>\n"
-"                    "
+"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/core/webcherry.py:1817
+#: ../lib/advene/gui/main.py:1120
 #, python-format
 msgid ""
-"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
+"You are now working with the following video:\n"
+"%s"
 msgstr ""
-"Requête invalide : impossible de mettre à jour la valeur de %(attribute)s "
-"dans %(tales)s."
+"Vous travaillez maintenant avec la vidéo suivante :\\n\n"
+"%s"
 
-#: ../lib/advene/core/webcherry.py:1860
-msgid "Cannot create an element in something else than a package."
-msgstr "Impossible de créer un élément dans autre chose qu'un recueil."
+#: ../lib/advene/gui/main.py:1237
+msgid "Open this view..."
+msgstr "Ouvrir cette vue..."
 
-#: ../lib/advene/core/webcherry.py:1877
-#, python-format
-msgid "The identifier %s already exists."
-msgstr "L'identificateur %s est déjà défini."
+#: ../lib/advene/gui/main.py:1238 ../lib/advene/gui/plugins/actions.py:286
+#: ../lib/advene/gui/views/viewbook.py:124
+msgid "...in its own window"
+msgstr "...dans sa propre fenêtre"
 
-#: ../lib/advene/core/webcherry.py:1889
-#, python-format
-msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
-msgstr "<p>Erreur lors de la création de la vue %(id)s</p><pre>%(error)s</pre>"
+#: ../lib/advene/gui/main.py:1239 ../lib/advene/gui/plugins/actions.py:287
+#: ../lib/advene/gui/views/viewbook.py:125
+#: ../lib/advene/gui/views/__init__.py:382
+msgid "...embedded east of the video"
+msgstr "...intégrée à l'est de la vidéo"
 
-#: ../lib/advene/core/webcherry.py:1895
-msgid "View created"
-msgstr "Vue créée"
+#: ../lib/advene/gui/main.py:1240 ../lib/advene/gui/plugins/actions.py:288
+#: ../lib/advene/gui/views/viewbook.py:126
+#: ../lib/advene/gui/views/__init__.py:383
+msgid "...embedded west of the video"
+msgstr "...intégrée à l'ouest de la vidéo"
 
-#: ../lib/advene/core/webcherry.py:1896
-#, python-format
-msgid ""
-"\n"
-"                 <h1>View <em>%(id)s</em> created</h1>\n"
-"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
-"created.</p>\n"
-"                 "
-msgstr ""
-"\n"
-"                     <h1>Vue <em>%(id)s</em> créée</h1>\n"
-"                     <p>La vue <a href=\"%(url)s\">%(id)s</a> a été "
-"correctement créée.</p>\n"
-"                     "
+#: ../lib/advene/gui/main.py:1241 ../lib/advene/gui/plugins/actions.py:289
+#: ../lib/advene/gui/views/viewbook.py:127
+#: ../lib/advene/gui/views/__init__.py:384
+msgid "...embedded south of the video"
+msgstr "...intégrée au sud de la vidéo"
 
-#: ../lib/advene/core/webcherry.py:1912
-#, python-format
-msgid "Missing %s parameter"
-msgstr "Paramètre %s manquant"
+#: ../lib/advene/gui/main.py:1242 ../lib/advene/gui/plugins/actions.py:290
+#: ../lib/advene/gui/views/viewbook.py:128
+#: ../lib/advene/gui/views/__init__.py:385
+msgid "...embedded at the right of the window"
+msgstr "...intégrée à droite de la vidéo"
 
-#: ../lib/advene/core/webcherry.py:1915
-#, python-format
-msgid "Relation type %s does not exist"
-msgstr "Le type de relation %s n'existe pas"
+#: ../lib/advene/gui/main.py:1254
+msgid "_All available views"
+msgstr "_Toutes les vues disponibles"
 
-#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
-#, python-format
-msgid "Annotation %s does not exist"
-msgstr "L'annotation %s n'existe pas"
+#: ../lib/advene/gui/main.py:1270 ../lib/advene/gui/views/timeline.py:126
+msgid "Timeline"
+msgstr "Ligne de Temps"
 
-#: ../lib/advene/core/webcherry.py:1928
-#, python-format
-msgid ""
-"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
-"p>"
-msgstr ""
-"<p>Impossible de créer une relation entre %(member1)s et %(member2)s : type "
-"invalide</p>"
+#: ../lib/advene/gui/main.py:1271 ../lib/advene/gui/views/finder.py:771
+msgid "Package finder"
+msgstr "Navigateur de recueil"
 
-#: ../lib/advene/core/webcherry.py:1940
-#, python-format
-msgid ""
-"<p>Error while creating relation between %(member1)s and %(member2)s :</"
-"p><pre>%(error)s</pre>"
-msgstr ""
-"<p>Erreur lors de la création de la relation entre %(member1)s et "
-"%(member2)s : </p><pre>%(error)s</pre>"
+#: ../lib/advene/gui/main.py:1272
+msgid "Transcription of annotations"
+msgstr "Transcription d'annotations"
 
-#: ../lib/advene/core/webcherry.py:1943
-msgid "Relation created"
-msgstr "Relation créée"
+#: ../lib/advene/gui/main.py:1273
+msgid "Annotation table"
+msgstr "Tableau d'annotations"
 
-#: ../lib/advene/core/webcherry.py:1944
-#, python-format
-msgid "<h1>Relation <em>%s</em> created</h1>"
-msgstr "<h1>Relation <em>%s</em> créée</h1>"
+#: ../lib/advene/gui/main.py:1276
+msgid "Note-taking editor"
+msgstr "Éditeur de prise de notes"
 
-#: ../lib/advene/core/webcherry.py:1954
-#, python-format
-msgid "Annotation type %s does not exist"
-msgstr "Le type d'annotation %s n'existe pas"
+#: ../lib/advene/gui/main.py:1277
+msgid "Active bookmarks"
+msgstr "Signets actifs"
 
-#: ../lib/advene/core/webcherry.py:1971
-#, python-format
+#: ../lib/advene/gui/main.py:1280 ../lib/advene/gui/views/tagbag.py:57
+msgid "Bag of tags"
+msgstr "Sac à tags"
+
+#: ../lib/advene/gui/main.py:1281
+msgid "TALES explorer"
+msgstr "Explorateur TALES"
+
+#: ../lib/advene/gui/main.py:1282
+msgid "Dynamic montage"
+msgstr "Montage dynamique"
+
+#: ../lib/advene/gui/main.py:1283 ../lib/advene/gui/plugins/videoplayer.py:37
+msgid "Video player"
+msgstr "Lecteur vidéo"
+
+#: ../lib/advene/gui/main.py:1286
+msgid "Open a comment view in the web browser"
+msgstr "Ouvrir une vue de commentaire dans le navigateur web"
+
+#: ../lib/advene/gui/main.py:1287
+msgid "Create or open a comment view"
+msgstr "Créer ou éditer une vue de commentaire"
+
+#: ../lib/advene/gui/main.py:1290
 msgid ""
-"<p>Error while creating annotation of type %(type)s :<pre>\n"
-"                    %(errortype)s\n"
-"                    %(value)s\n"
-"                    %(traceback)s</pre>"
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
 msgstr ""
-"<p>Erreur lors de la création d'une annotation du type %(type)s :<pre>\n"
-"                     %(errortype)s\n"
-"                     %(value)s\n"
-"                     %(traceback)s</pre>"
+"Emplacement de fenêtres d'édition (les fenêtres d'édition d'annotations et "
+"relations seront placées ici)"
 
-#: ../lib/advene/core/webcherry.py:1983
-#, python-format
-msgid "Annotation %s created"
-msgstr "Annotation %s créée"
+#: ../lib/advene/gui/main.py:1291
+msgid "Display edition history"
+msgstr "Afficher l'historique d'édition"
 
-#: ../lib/advene/core/webcherry.py:1985
-#, python-format
-msgid "Error: Cannot create an object of type %s."
-msgstr "Erreur: impossible de créer un objet de type %s."
+#: ../lib/advene/gui/main.py:1320
+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/core/webcherry.py:1988
+#: ../lib/advene/gui/main.py:1398
 #, python-format
 msgid ""
-"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
-"code></p>"
+"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
+"released</b> on %(date)s, but you are running version %(current)s.\n"
+"You can download the latest version from the Advene website: http://advene."
+"org/</span>"
 msgstr ""
-"Erreur: Impossible d'effectuer l'action <em>%(action)s</em> sur <code>"
-"%(object)s</code>"
-
-#: ../lib/advene/core/webcherry.py:2001
-msgid "Available actions"
-msgstr "Actions disponibles"
+"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s est "
+"disponible</b> depuis le %(date)s, mais vous utilisez la version "
+"%(current)s.\n"
+"Vous pouvez télécharger la dernière version depuis le site web d'Advene: "
+"http://www.advene.org/</span>"
 
-#: ../lib/advene/core/webcherry.py:2010
-#, python-format
-msgid "<li>%(name)s: %(value)s"
-msgstr "<li>%(name)s: %(value)s"
+#: ../lib/advene/gui/main.py:1403
+msgid "Go to the website"
+msgstr "Aller sur le site web"
 
-#: ../lib/advene/core/webcherry.py:2033
+#: ../lib/advene/gui/main.py:1409
+msgid "Advene release"
+msgstr "Nouvelle version d'Advene"
+
+#: ../lib/advene/gui/main.py:1415
 #, python-format
-msgid "<p>Unknown action</p><pre>Action: %s</pre>"
-msgstr "<p>Action inconnue</p><pre>Action : %s</pre>"
+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/core/webcherry.py:2040
-msgid "Missing parameter(s) :<ul>"
-msgstr "Paramètre(s) manquant(s) :<ul>"
+#: ../lib/advene/gui/main.py:1415
+msgid "Advene is up-to-date"
+msgstr "Advene est à jour"
 
-#: ../lib/advene/core/webcherry.py:2076
-msgid "Advene web resources"
-msgstr "Ressources web d'Advene"
+#: ../lib/advene/gui/main.py:1429
+msgid "Choose a color"
+msgstr "Choisissez une couleur"
 
-#: ../lib/advene/core/webcherry.py:2082
-msgid "Advene webserver"
-msgstr "Serveur web Advene"
+#: ../lib/advene/gui/main.py:1461
+msgid "Select an annotation to loop on it"
+msgstr "Sélectionnez l'annotation sur laquelle boucler"
 
-#: ../lib/advene/core/webcherry.py:2083
+#: ../lib/advene/gui/main.py:1463
 #, python-format
+msgid "Looping on %s"
+msgstr "Boucler sur %s"
+
+#: ../lib/advene/gui/main.py:1521 ../lib/advene/gui/main.py:2409
+msgid "No active dynamic view"
+msgstr "Aucune vue dynamique active"
+
+#: ../lib/advene/gui/main.py:1532
+msgid "Create a new dynamic view."
+msgstr "Créer une nouvelle vue dynamique."
+
+#: ../lib/advene/gui/main.py:1551
+msgid "Edit the current dynamic view."
+msgstr "Éditer la vue dynamique courante"
+
+#: ../lib/advene/gui/main.py:1563
+msgid "No dynamic view"
+msgstr "Pas de vue dynamique"
+
+#: ../lib/advene/gui/main.py:1594
+msgid "Playing rate"
+msgstr "Vitesse de lecture"
+
+#: ../lib/advene/gui/main.py:1742
+msgid "History"
+msgstr "Historique"
+
+#: ../lib/advene/gui/main.py:1749
+msgid "Popups"
+msgstr "Popups"
+
+#: ../lib/advene/gui/main.py:1753
 msgid ""
-"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
-"webserver run by %(userid)s on %(serveraddress)s.</p>"
+"You can drag and drop view icons (timeline, treeview, transcription...) in "
+"notebooks to embed various views."
 msgstr ""
-"<p>Bienvenue sur le serveur web <a href=\"http://liris.cnrs.fr/advene/"
-"\">Advene</a> exécuté par %(userid)s sur %(serveraddress)s.</p>"
+"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/core/webcherry.py:2090
-msgid ""
-" <p>No package is loaded. You can access the <a href=\"/admin\">server "
-"administration page</a>.<p>"
+#: ../lib/advene/gui/main.py:1753
+msgid "Information"
+msgstr "Information"
+
+#: ../lib/advene/gui/main.py:2046
+msgid "Cannot create annotation. There is no schema to put it in."
 msgstr ""
-" <p>Aucun recueil n'est chargé. Vous pouvez accéder aux <a href=\"/admin"
-"\">formulaires d'administration du serveur</a>.<p>"
+"Impossible de créer l'annotation : il n'y a pas de schéma pour la contenir."
 
-#: ../lib/advene/core/webcherry.py:2100
+#: ../lib/advene/gui/main.py:2055
+msgid "Default annotation type"
+msgstr "Type d'annotation par défaut"
+
+#: ../lib/advene/gui/main.py:2067
+msgid "Annotation created"
+msgstr "Annotation créée"
+
+#: ../lib/advene/gui/main.py:2099
+msgid "Play/Pause [Control-Tab / Control-Space]"
+msgstr "Lecture/Pause [Contrôle-Tab / Contrôle-Espace]"
+
+#: ../lib/advene/gui/main.py:2100
 #, python-format
-msgid ""
-"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
-"view</a>"
-msgstr ""
-"à la <a href=\"/packages/%(alias)s/view/%(view)s\">vue par défaut du "
-"recueil</a>"
+msgid "Rewind (%.02f s) [Control-Left]"
+msgstr "Reculer (%.02f s) [Contrôle-gauche]"
 
-#: ../lib/advene/core/webcherry.py:2102
+#: ../lib/advene/gui/main.py:2101
 #, python-format
-msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
-msgstr "aux <a href=\"/packages/%s\">données du recueil</a>"
+msgid "Forward (%.02f s) [Control-Right]"
+msgstr "Avancer (%.02f s) [Contrôle-droite]"
 
-#: ../lib/advene/core/webcherry.py:2104
-msgid "the <a href=\"/packages\">loaded packages' data</a>"
-msgstr "aux <a href=\"/packages\">recueils disponibles</a>"
+#: ../lib/advene/gui/main.py:2102
+msgid "Previous frame [Control-Down]"
+msgstr "Image précédente [Contrôle-bas]"
 
-#: ../lib/advene/core/webcherry.py:2105
+#: ../lib/advene/gui/main.py:2103
+msgid "Next frame [Control-Up]"
+msgstr "Image suivante [Contrôle-haut]"
+
+#: ../lib/advene/gui/main.py:2104
+msgid "Fullscreen"
+msgstr "Plein écran"
+
+#: ../lib/advene/gui/main.py:2256
 #, python-format
-msgid ""
-" <p>You can either access %s or the <a href=\"/admin\">server administration "
-"page</a>.<p>"
-msgstr ""
-" <p>Vous pouvez accéder soit %s, soit aux <a href=\"/admin\">formulaires "
-"d'administration du serveur</a>.<p>"
+msgid "Screenshot saved to %s"
+msgstr "Capture sauvegardée dans %s"
 
-#: ../lib/advene/core/webcherry.py:2107
+#: ../lib/advene/gui/main.py:2258
 #, python-format
 msgid ""
-"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
-"fr/advene/\">Advene</a> v. %s.</em></p>"
+"Screenshot saved in\n"
+" %s"
 msgstr ""
-"<hr><p align=\"right\"><em>Document généré par <a href=\"http://liris.cnrs."
-"fr/advene/\">Advene</a> v. %s.</em></p>"
+"Capture sauvegardée dans\n"
+" %s"
 
-#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
+#: ../lib/advene/gui/main.py:2260
 #, python-format
-msgid "Cannot start HTTP server: %s"
-msgstr "Impossible de lancer le serveur HTTP : %s"
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr ""
+"Impossible de sauvegarder la capture:\n"
+" %s"
 
-#: ../lib/advene/util/website_export.py:61
-#, python-format
-msgid "%s exists but is not a directory. Cancelling website export"
-msgstr "%s existe mais n'est pas un répertoire. Abandon de l'export."
+#: ../lib/advene/gui/main.py:2268
+msgid "Save screenshot to..."
+msgstr "Sauver la capture d'écran sous..."
 
-#: ../lib/advene/util/website_export.py:67
-#, python-format
-msgid "%s does not exist"
-msgstr "%s n'existe pas"
+#: ../lib/advene/gui/main.py:2286
+msgid "Could not take snapshot with enough precision"
+msgstr "Impossible de faire une capture avec suffisamment de précision"
 
-#: ../lib/advene/util/website_export.py:422
-msgid "Starting export"
-msgstr "Début de l'export"
+#: ../lib/advene/gui/main.py:2324
+msgid "Export package data"
+msgstr "Exporter les données du recueil"
 
-#: ../lib/advene/util/website_export.py:451
+#: ../lib/advene/gui/main.py:2326
 #, python-format
-msgid "Depth %d"
-msgstr "Profondeur %d"
+msgid "Export annotation type %s"
+msgstr "Exporter le type d'annotation %s"
 
-#: ../lib/advene/util/website_export.py:455
+#: ../lib/advene/gui/main.py:2328
 #, python-format
-msgid "Depth %(depth)d: processing %(url)s"
-msgstr "Profondeur %(depth)d: traitement de %(url)s"
+msgid "Export element %s"
+msgstr "Exporter l'élément %s"
 
-#: ../lib/advene/util/website_export.py:477
-msgid "Finalizing"
-msgstr "Finalisation"
+#: ../lib/advene/gui/main.py:2354
+msgid "Export format"
+msgstr "Format d'export"
 
-#: ../lib/advene/util/website_export.py:511
+#: ../lib/advene/gui/main.py:2391
+msgid " (modified)"
+msgstr " (modifié)"
+
+#: ../lib/advene/gui/main.py:2394
 #, python-format
-msgid ""
-"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
-"strong></p>"
-msgstr ""
-"<p><strong>Vous devriez probablement commencer à <a href=\"%(href)s\">"
-"%(title)s</a>.</strong></p>"
+msgid "Activate %s"
+msgstr "Activer %s"
 
-#: ../lib/advene/util/website_export.py:554
-msgid "Export complete"
-msgstr "Export terminé"
+#: ../lib/advene/gui/main.py:2564
+msgid "Saved workspace"
+msgstr "Environnement sauvegardé"
 
-#: ../lib/advene/util/importer.py:134
-msgid "Generic importer"
-msgstr "Importateur générique"
+#: ../lib/advene/gui/main.py:2616
+msgid "Restoring workspace..."
+msgstr "Restauration de l'environnement"
 
-#: ../lib/advene/util/importer.py:161
-msgid "Usage: %prog [options] source-file destination-file"
-msgstr "Usage: %prog [options] fichier-source fichier-destination"
+#: ../lib/advene/gui/main.py:2622
+#, python-format
+msgid "Do you wish to restore the %s workspace ?"
+msgstr "Voulez-vous restaurer l'environnement %s ?"
 
-#: ../lib/advene/util/importer.py:165
-msgid "Specify the offset in ms"
-msgstr "Précisez l'offset en ms"
+#: ../lib/advene/gui/main.py:2627
+msgid "Clear the current workspace"
+msgstr "Vider l'environnement courant"
 
-#: ../lib/advene/util/importer.py:210
-msgid ""
-"Import filter error. The asynchronous API should be used, please report a "
-"bug."
-msgstr ""
-"Erreur dans le filtre d'import. L'API asynchrone devrait être\n"
-"utilisée, faites un rapport de bug SVP."
+#: ../lib/advene/gui/main.py:2648
+#, python-format
+msgid "View %s is not an adhoc view"
+msgstr "La vue %s n'est pas une vue adhoc"
 
-#: ../lib/advene/util/importer.py:212
-msgid ""
-"Import filter error. No conversion method is defined,  please report a bug."
+#: ../lib/advene/gui/main.py:2659
+#, python-format
+msgid "Cannot identify the adhoc view %s"
+msgstr "Impossible de trouver la vue adhoc %s"
+
+#: ../lib/advene/gui/main.py:2673
+msgid "Choose the annotation type to display as transcription."
 msgstr ""
-"Erreur dans le filtre d'import. Aucune méthode de conversion définie, faites "
-"un rapport de bug SVP."
+"Choisissez le type d'annotation\n"
+"à afficher sous forme de transcription."
 
-#: ../lib/advene/util/importer.py:344
+#: ../lib/advene/gui/main.py:2708
 #, python-format
-msgid "Converted from %s"
-msgstr "Converti depuis %s"
-
-#: ../lib/advene/util/importer.py:469
-msgid "ExternalApp importer"
-msgstr "Importateur d'application externe"
+msgid "Error: unable to find an edit popup for %(element)s"
+msgstr "Erreur : impossible d'ouvrir une fenêtre d'édition pour %(element)s"
 
-#: ../lib/advene/util/importer.py:483
+#: ../lib/advene/gui/main.py:2715
 #, 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 ""
-"L'application <b>%s</b> ne semble pas installée. Merci de vérifier qu'elle "
-"est bien présente et que son chemin est correctement spécifié dans les "
-"préférences."
+msgid "Editing %s"
+msgstr "Édition de %s"
 
-#: ../lib/advene/util/importer.py:485
+#: ../lib/advene/gui/main.py:2727
 #, python-format
-msgid "The file %s does not seem to exist."
-msgstr "Le fichier %s semble ne pas exister."
+msgid "Comment view (%s)"
+msgstr "Vue de commentaire (%s)"
 
-#: ../lib/advene/util/importer.py:507
+#: ../lib/advene/gui/main.py:2794
 #, python-format
-msgid "Could not run %(appname)s: %(msg)s"
-msgstr "Impossible d'exécuter %(appname)s: %(msg)s"
+msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
+msgstr "Recueil %(uri)s sauvé. %(annotations)s et %(relations)s."
 
-# Traitement de %s
-#: ../lib/advene/util/importer.py:509
+#: ../lib/advene/gui/main.py:2805
 #, python-format
-msgid "Processing %s"
-msgstr "Traitement de %s"
+msgid "Activating package %s"
+msgstr "Activation du recueil %s"
 
-#: ../lib/advene/util/importer.py:513
-msgid "Cleaning up..."
-msgstr "Nettoyage..."
+#: ../lib/advene/gui/main.py:2833
+#, python-format
+msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
+msgstr "Recueil %(uri)s chargé. %(annotations)s et %(relations)s."
 
-#: ../lib/advene/util/importer.py:633
-msgid "Text importer"
-msgstr "Importateur texte"
+#: ../lib/advene/gui/main.py:2865
+msgid "Do you want to restore the saved workspace ?"
+msgstr "Voulez-vous restaurer l'environnement sauvegardé ?"
 
-#: ../lib/advene/util/importer.py:646 ../lib/advene/util/importer.py:1176
-msgid "Specify the encoding of the input file (latin1, utf8...)"
-msgstr "Spécifiez l'encodage du fichier d'entrée (latin, utf8...)"
+#: ../lib/advene/gui/main.py:2872
+msgid "Advene"
+msgstr "Advene"
 
-#: ../lib/advene/util/importer.py:649
-msgid "Should the timestamps be encoded relative to the first timestamp?"
-msgstr ""
-"Les timecodes doivent-ils être décalés en considérant le premier à zéro ?"
+#: ../lib/advene/gui/main.py:3077
+#, python-format
+msgid "Got exception %s. Trying to continue."
+msgstr "Reçu l'exception %s. On continue tout de même."
 
-#: ../lib/advene/util/importer.py:652
-msgid "Unit to consider for integers"
-msgstr "Unité à utiliser pour les entiers"
+#: ../lib/advene/gui/main.py:3101 ../lib/advene/gui/main.py:3122
+#: ../lib/advene/gui/main.py:4072
+msgid "Unknown"
+msgstr "Inconnu"
 
-#: ../lib/advene/util/importer.py:655
+#: ../lib/advene/gui/main.py:3192
+#, python-format
 msgid ""
-"What timestamps are present in a line (only begin, both begin and end, or "
-"automatic recognition)"
+"The package(s) %s are modified.\n"
+"Save them now?"
 msgstr ""
-"Quels timecodes sont présents sur une ligne : uniquement le début\n"
-"(begin), début et fin (both) ou reconnaissance automatique (auto)"
-
-#: ../lib/advene/util/importer.py:798
-msgid "lsdvd importer"
-msgstr "Importateur lsdvd"
+"Le(s) recueil(s) %s a été modifié mais pas sauvegardé.\n"
+"Sauvegarder maintenant ?"
 
-#: ../lib/advene/util/importer.py:825
-msgid "Processing data"
-msgstr "Traitement des données"
+#: ../lib/advene/gui/main.py:3224
+#: ../lib/advene/gui/views/interactivequery.py:375
+msgid "Empty quicksearch string"
+msgstr "Chaîne de recherche vide"
 
-#: ../lib/advene/util/importer.py:843 ../lib/advene/util/importer.py:903
-msgid "DVD Chapter"
-msgstr "Chapitre DVD"
+#: ../lib/advene/gui/main.py:3227
+#: ../lib/advene/gui/views/interactivequery.py:280
+#, python-format
+msgid "'%s'"
+msgstr "'%s'"
 
-#: ../lib/advene/util/importer.py:847
-msgid "Launching lsdvd..."
-msgstr "Lancement de lsdvd"
+#: ../lib/advene/gui/main.py:3242
+msgid "Choose an annotation type."
+msgstr "Choisissez un type d'annotation"
 
-#: ../lib/advene/util/importer.py:859
-msgid "chaplin importer"
-msgstr "Importateur chaplin"
+#: ../lib/advene/gui/main.py:3261 ../lib/advene/gui/views/timeline.py:3028
+#: ../lib/advene/gui/edit/transcribe.py:1019
+msgid "Create a new annotation type"
+msgstr "Créer un nouveau type d'annotation"
 
-#: ../lib/advene/util/importer.py:917
-msgid "Xi importer"
-msgstr "Importateur Xi"
+#: ../lib/advene/gui/main.py:3286
+msgid "No annotation type is defined."
+msgstr "Aucun type d'annotation n'est défini."
 
-#: ../lib/advene/util/importer.py:986
-msgid "ELAN importer"
-msgstr "Importateur ELAN"
+#: ../lib/advene/gui/main.py:3295
+msgid "Creating a new type."
+msgstr "Création d'un nouveau type."
 
-#: ../lib/advene/util/importer.py:1039
-#, python-format
-msgid "Converting tier %s"
-msgstr "Conversion du tier %s"
+#: ../lib/advene/gui/main.py:3299
+msgid "Title of the new type"
+msgstr "Titre du nouveau type"
 
-#: ../lib/advene/util/importer.py:1140
-msgid "Processing time slots"
-msgstr "Traitement des bornes temporelles"
+#: ../lib/advene/gui/main.py:3300
+msgid ""
+"Id of the new type. It is generated from the title, but you may change it if "
+"necessary."
+msgstr ""
+"Identifiant du nouveau type. Il est généré à partir du titre, mais vous "
+"pouvez le changer si nécessaire."
 
-#: ../lib/advene/util/importer.py:1155
-msgid "Fixing forward references"
-msgstr "Correction des références"
+#: ../lib/advene/gui/main.py:3304
+msgid "Specify the content-type for the annotation type"
+msgstr "Spécifiez le type de contenu pour le type d'annotation"
 
-#: ../lib/advene/util/importer.py:1157
-msgid "Creating relations"
-msgstr "Création des relations"
+#: ../lib/advene/gui/main.py:3306
+msgid "Content type"
+msgstr "Type de contenu"
 
-#: ../lib/advene/util/importer.py:1169
-msgid "Subtitle (SRT) importer"
-msgstr "Importateur sous-titres (SRT)"
+#: ../lib/advene/gui/main.py:3313 ../lib/advene/gui/main.py:3422
+msgid "Create a new schema"
+msgstr "Créer un nouveau schéma"
 
-#: ../lib/advene/util/importer.py:1238
-#, python-format
-msgid "Subtitles from %s"
-msgstr "Sous-titres de %s"
+#: ../lib/advene/gui/main.py:3326
+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/util/importer.py:1251
-msgid "PRAAT importer"
-msgstr "Importateur PRAAT"
+#: ../lib/advene/gui/main.py:3329 ../lib/advene/gui/main.py:3437
+msgid "Specify the schema title"
+msgstr "Spécifiez le titre du schéma"
 
-#: ../lib/advene/util/importer.py:1341
-msgid "CMML importer"
-msgstr "Importateur CMML"
+#: ../lib/advene/gui/main.py:3333
+msgid "Title of the new schema"
+msgstr "Titre du nouveau schéma"
 
-#: ../lib/advene/util/importer.py:1404
-msgid "Parsing clip information"
-msgstr "Traitement des informations de clip"
+#: ../lib/advene/gui/main.py:3334
+msgid ""
+"Id of the new schema. It is generated from the title, but you may change it "
+"if necessary."
+msgstr ""
+"Identifiant du nouveau schéma. Il est généré à partir du titre, mais vous "
+"pouvez le changer si nécessaire."
 
-#: ../lib/advene/util/importer.py:1501
-#: ../lib/advene/plugins/transcriber.py:254
-msgid "Creating package"
-msgstr "Création du recueil"
+#: ../lib/advene/gui/main.py:3357
+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/util/importer.py:1504
-msgid "Creating CMML schema"
-msgstr "Création du schéma CMML"
+#: ../lib/advene/gui/main.py:3375
+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/util/importer.py:1508
-#: ../lib/advene/plugins/transcriber.py:260
-msgid "Creating annotation types"
-msgstr "Création des types d'annotation"
+#: ../lib/advene/gui/main.py:3377
+msgid ""
+"You specified an existing identifier that does not reference a schema. "
+"Aborting."
+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/util/importer.py:1514
-#: ../lib/advene/plugins/transcriber.py:265
-msgid "Parsing header information"
-msgstr "Traitement de l'entête"
+#: ../lib/advene/gui/main.py:3404
+msgid "Choose a schema."
+msgstr "Choisissez un schéma"
 
-#: ../lib/advene/util/importer.py:1528
-msgid "Parsing stream information"
-msgstr "Traitement des informations sur le média"
+#: ../lib/advene/gui/main.py:3464
+msgid "You specified an existing identifier. Aborting."
+msgstr ""
+"Vous avez spécifié un identifiant déjà existant. Annulation de l'opération."
 
-#: ../lib/advene/util/importer.py:1562
-msgid "IRI importer"
-msgstr "Importateur IRI"
+#: ../lib/advene/gui/main.py:3484
+#, python-format
+msgid "Package %s modified"
+msgstr "Recueil %s modifié"
 
-#: ../lib/advene/util/importer.py:1571
-msgid "Generate one type per view"
-msgstr "Générer un type par vue"
+#: ../lib/advene/gui/main.py:3485
+#, python-format
+msgid ""
+"The package %s has been modified but not saved.\n"
+"Save it now?"
+msgstr ""
+"Le recueil %s a été modifié mais pas sauvegardé.\n"
+"Sauvegarder maintenant ?"
 
-#: ../lib/advene/util/importer.py:1591
+#: ../lib/advene/gui/main.py:3495
 #, python-format
-msgid "Parsing ensemble %s"
-msgstr "Traitement de l'ensemble %s"
+msgid "%s snapshots"
+msgstr "%s captures d'écran"
 
-#: ../lib/advene/util/importer.py:1602
+#: ../lib/advene/gui/main.py:3496
 #, python-format
-msgid "Parsing decoupage %s"
-msgstr "Traitement du découpage %s"
+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/util/importer.py:1638
-msgid "Parsing views"
-msgstr "Traitement des vues"
+#: ../lib/advene/gui/main.py:3503 ../lib/advene/gui/main.py:3512
+#: ../lib/advene/gui/main.py:4490
+#, python-format
+msgid "Cannot save imagecache for %(media)s: %(e)s"
+msgstr "Impossible de sauvegarder le cache pour %(media)s : %(e)s"
 
-#: ../lib/advene/util/importer.py:1686 ../lib/advene/util/importer.py:1775
-msgid "Initializing package"
-msgstr "Initialisation du recueil"
+#: ../lib/advene/gui/main.py:3526
+msgid "first frame"
+msgstr "première image"
 
-#: ../lib/advene/util/importer.py:1724
-msgid "IRIData importer"
-msgstr "Importateur IRIData"
+#: ../lib/advene/gui/main.py:3527
+msgid "last frame"
+msgstr "dernière image"
 
-#: ../lib/advene/util/importer.py:1738
-msgid "Parsing sound values"
-msgstr "Traitement des valeurs d'échantillons de son"
+#: ../lib/advene/gui/main.py:3535
+#, python-format
+msgid "Click on %(bound)s of %(annotation)s"
+msgstr "Cliquer sur %(bound)s de %(annotation)s"
 
-#: ../lib/advene/util/importer.py:1750
-msgid "Creating annotations"
-msgstr "Création des annotations"
+#: ../lib/advene/gui/main.py:3538
+#, python-format
+msgid "Update %(bound)s of %(annotation)s"
+msgstr "Éditer %(bound)s de %(annotation)s"
 
-#: ../lib/advene/util/helper.py:402
-msgid "Package"
-msgstr "Recueil"
+#: ../lib/advene/gui/main.py:3557
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr "Cliquez sur l'image correspondant au temps désiré"
 
-#: ../lib/advene/util/helper.py:403
-msgid "Annotation"
-msgstr "Annotation"
+#: ../lib/advene/gui/main.py:3559
+msgid "Set new timestamp value"
+msgstr "Fixer le nouveau timecode"
 
-#: ../lib/advene/util/helper.py:404
-msgid "Relation"
-msgstr "Relation"
+#: ../lib/advene/gui/main.py:3566
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr ""
+"<b>Statistiques d'annotations</b>\n"
+"\n"
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/edit/schemaeditor.py:111
-#: ../lib/advene/gui/main.py:276 ../lib/advene/gui/main.py:3270
-msgid "Schema"
-msgstr "Schéma"
+#: ../lib/advene/gui/main.py:3638
+msgid "Text annotation"
+msgstr "Annotation textuelle"
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:279
-msgid "Annotation Type"
-msgstr "Type d'Annotation"
+#: ../lib/advene/gui/main.py:3646 ../lib/advene/gui/main.py:3671
+msgid "Cannot find an appropriate annotation type"
+msgstr "Impossible de trouver un type d'annotation approprié"
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/main.py:280
-msgid "Relation Type"
-msgstr "Type de Relation"
+#: ../lib/advene/gui/main.py:3648 ../lib/advene/gui/views/bookmarks.py:296
+msgid "Comment here"
+msgstr "Commentez ici"
 
-#: ../lib/advene/util/helper.py:408 ../lib/advene/rules/actions.py:236
-#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/gui/main.py:277
-msgid "View"
-msgstr "Vue"
+#: ../lib/advene/gui/main.py:3664
+msgid "Graphical annotation"
+msgstr "Annotation graphique"
 
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/main.py:278
-#: ../lib/advene/gui/popup.py:459
-msgid "Query"
-msgstr "Requête"
+#: ../lib/advene/gui/main.py:3716
+msgid ""
+"An unsaved template package exists\n"
+"Save it first."
+msgstr ""
+"Un recueil modèle non sauvegardé existe.\n"
+"Sauvegardez-le avant d'essayer d'en créer un nouveau."
 
-#: ../lib/advene/util/helper.py:410
-msgid "Resource Folder"
-msgstr "Répertoire de ressources"
+#: ../lib/advene/gui/main.py:3725
+msgid "Package modified"
+msgstr "Recueil modifié"
 
-#: ../lib/advene/util/helper.py:411 ../lib/advene/gui/edit/create.py:122
-msgid "Resource File"
-msgstr "Fichier de ressource"
+#: ../lib/advene/gui/main.py:3726
+msgid ""
+"The package that you want to close has been modified but not saved.\n"
+"Save it now?"
+msgstr ""
+"Le recueil que vous souhaitez fermer a été modifié mais pas sauvegardé.\n"
+"Sauvegarder maintenant ?"
 
-#: ../lib/advene/util/helper.py:446
-msgid "---- Elements ----"
-msgstr "---- Éléments ----"
+#: ../lib/advene/gui/main.py:3757
+msgid "Load a package"
+msgstr "Charger un recueil"
 
-#: ../lib/advene/util/helper.py:452
-msgid "---- Attributes ----"
-msgstr "---- Attributs ----"
+#: ../lib/advene/gui/main.py:3766
+msgid ""
+"A video file was selected. Pretend that the user selected 'Select a video "
+"file'..."
+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/util/helper.py:455
-msgid "---- Methods ----"
-msgstr "---- Méthodes ----"
-
-#: ../lib/advene/util/helper.py:531
-#, python-format
-msgid "Cannot read %(filename)s: %(error)s"
-msgstr "Impossible de lire %(filename)s : %(error)s"
-
-#: ../lib/advene/util/helper.py:555
+#: ../lib/advene/gui/main.py:3771
 #, python-format
 msgid ""
-"Error:\n"
-"%s"
+"The file %s does not look like a valid Advene package. It should have a .azp "
+"or .xml extension. Try to open anyway?"
 msgstr ""
-"Erreur :\n"
-"%s"
+"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/util/helper.py:565
-#, python-format
+#: ../lib/advene/gui/main.py:3780
 msgid ""
-"Package %(title)s:\n"
-"%(schema)s\n"
-"%(annotation)s in %(annotation_type)s\n"
-"%(relation)s in %(relation_type)s\n"
-"%(query)s\n"
-"%(view)s\n"
-"\n"
-"Description:\n"
-"%(description)s\n"
+"You are trying to load a session file, but there are unsaved packages. "
+"Proceed anyway?"
 msgstr ""
-"Recueil %(title)s:\n"
-"%(schema)s\n"
-"%(annotation)s dans %(annotation_type)s\n"
-"%(relation)s dans %(relation_type)s\n"
-"%(query)s\n"
-"%(view)s\n"
-"\n"
-"Description:\n"
-"%(description)s\n"
-
-#: ../lib/advene/util/helper.py:592
-msgid "Min duration"
-msgstr "Durée min"
+"Vous essayez de charger un fichier de session, mais il existe des recueil "
+"non sauvegardés. Continuer tout de même ?"
 
-#: ../lib/advene/util/helper.py:593
-msgid "Max duration"
-msgstr "Durée max"
+#: ../lib/advene/gui/main.py:3808 ../lib/advene/gui/main.py:3864
+msgid "Do you want to save the current workspace ?"
+msgstr "Voulez-vous sauvegarder l'environnement en cours ?"
 
-#: ../lib/advene/util/helper.py:594
-msgid "Mean duration"
-msgstr "Durée moyenne"
+#: ../lib/advene/gui/main.py:3823 ../lib/advene/gui/main.py:3879
+#, python-format
+msgid "Could not save the package: %s"
+msgstr "Impossible de sauvegarder le recueil: %s"
 
-#: ../lib/advene/util/helper.py:595
-msgid "Total duration"
-msgstr "Durée totale"
+#: ../lib/advene/gui/main.py:3836
+#, python-format
+msgid "Save the package %s"
+msgstr "Sauvegarde du recueil %s"
 
-#: ../lib/advene/util/helper.py:601
-msgid "schema"
-msgstr "schéma"
+#: ../lib/advene/gui/main.py:3849
+msgid "Invalid file extension"
+msgstr "Extension de fichier invalide"
 
-#: ../lib/advene/util/helper.py:601
-msgid "schemas"
-msgstr "schémas"
+#: ../lib/advene/gui/main.py:3850
+#, python-format
+msgid ""
+"Your package contains resources,\n"
+"the filename (%s) should have a .azp extension.\n"
+"Should I put the correct extension?"
+msgstr ""
+"Votre recueil contient des ressources,\n"
+"le nom de fichier (%s) devrait avoir l'extension .azp.\n"
+"Corriger le nom de fichier ?"
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotation"
-msgstr "annotation"
+#: ../lib/advene/gui/main.py:3854
+msgid "OK, the resources will be lost."
+msgstr "OK, les ressources seront perdues."
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotations"
-msgstr "annotations"
+#: ../lib/advene/gui/main.py:3856
+msgid "Aborting package saving"
+msgstr "Abandon de la sauvegarde"
 
-#: ../lib/advene/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation type"
-msgstr "type d'annotation"
+#: ../lib/advene/gui/main.py:3890
+msgid "Save the session in..."
+msgstr "Sauver la session dans..."
 
-#: ../lib/advene/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation types"
-msgstr "types d'annotation"
+#: ../lib/advene/gui/main.py:3901
+#, python-format
+msgid "Session saved in %s"
+msgstr "Session sauvegardée dans %s"
 
-#: ../lib/advene/util/helper.py:605
-msgid "relation"
-msgstr "relation"
+#: ../lib/advene/gui/main.py:3910
+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/util/helper.py:605
-msgid "relations"
-msgstr "relations"
+#: ../lib/advene/gui/main.py:3916
+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/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation type"
-msgstr "type de relation"
+#: ../lib/advene/gui/main.py:3924
+msgid "The associated media is not a DVD."
+msgstr "Le média associé n'est pas un DVD."
 
-#: ../lib/advene/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation types"
-msgstr "types de relation"
+# Traitement de %s
+#: ../lib/advene/gui/main.py:3935
+#, python-format
+msgid "Processing %s video"
+msgstr "Traitement de la vidéo %s"
 
-#: ../lib/advene/util/helper.py:608
-msgid "query"
-msgstr "requête"
+#: ../lib/advene/gui/main.py:3938
+msgid "No associated video file"
+msgstr "Aucun fichier vidéo associé"
 
-#: ../lib/advene/util/helper.py:608
-msgid "queries"
-msgstr "requêtes"
+#: ../lib/advene/gui/main.py:3965
+msgid "Standard RuleSet"
+msgstr "Ensemble de règles standard"
 
-#: ../lib/advene/util/helper.py:609
-msgid "view"
-msgstr "vue"
+#: ../lib/advene/gui/main.py:4081
+#, 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/util/helper.py:609
-msgid "views"
-msgstr "vues"
+#: ../lib/advene/gui/main.py:4096
+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/util/helper.py:610
-msgid "package"
-msgstr "recueil"
+#: ../lib/advene/gui/main.py:4129 ../lib/advene/gui/main.py:4217
+msgid "Select a movie file"
+msgstr "Choisissez un fichier vidéo"
 
-#: ../lib/advene/util/helper.py:610
-msgid "packages"
-msgstr "recueils"
+#: ../lib/advene/gui/main.py:4141
+msgid "Title/Chapter selection"
+msgstr "Sélection du titre/chapître"
 
-#: ../lib/advene/util/helper.py:622
-#, python-format
-msgid "No %s"
-msgstr "Pas de %s"
+#: ../lib/advene/gui/main.py:4183
+msgid "Select a video stream"
+msgstr "Choisir un flux vidéo"
 
-#: ../lib/advene/util/helper.py:624
-#, python-format
-msgid "1 %s"
-msgstr "1 %s"
+#: ../lib/advene/gui/main.py:4184
+msgid "Enter the address of a video stream"
+msgstr "Entrer l'adresse d'un flux vidéo"
 
-#: ../lib/advene/util/helper.py:626
+#: ../lib/advene/gui/main.py:4188
 #, python-format
-msgid "%(count)d %(plural)s"
-msgstr "%(count)d %(plural)s"
-
-#: ../lib/advene/plugins/cinelab.py:76
-msgid "Cinelab importer"
-msgstr "Importateur Cinelab"
+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/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
-#, python-format
-msgid "File %s is not an Advene2 zip package."
-msgstr "Le fichier %s n'est pas un recueil Advene2 compressé."
+#: ../lib/advene/gui/main.py:4213
+msgid "Package properties"
+msgstr "Proprietes du recueil"
 
-#: ../lib/advene/plugins/cinelab.py:176
-msgid "Converting annotation types"
-msgstr "Conversion des types d'annotation"
+#: ../lib/advene/gui/main.py:4214 ../lib/advene/gui/edit/elements.py:514
+#: ../lib/advene/gui/edit/elements.py:563
+#: ../lib/advene/gui/edit/elements.py:650
+#: ../lib/advene/gui/edit/elements.py:730
+#: ../lib/advene/gui/edit/elements.py:787
+#: ../lib/advene/gui/edit/elements.py:879
+#: ../lib/advene/gui/edit/elements.py:948
+#: ../lib/advene/gui/edit/elements.py:1060
+#: ../lib/advene/gui/edit/elements.py:1122
+msgid "Author"
+msgstr "Auteur"
 
-#: ../lib/advene/plugins/cinelab.py:217
-msgid "Converting views"
-msgstr "Conversion des vues"
+#: ../lib/advene/gui/main.py:4214
+msgid "Author name"
+msgstr "Auteur"
 
-#: ../lib/advene/plugins/cinelab.py:249
-#: ../lib/advene/plugins/youtubeannotations.py:72
-msgid "Importing annotations"
-msgstr "Import des annotations"
+#: ../lib/advene/gui/main.py:4215 ../lib/advene/gui/edit/elements.py:515
+#: ../lib/advene/gui/edit/elements.py:564
+#: ../lib/advene/gui/edit/elements.py:651
+#: ../lib/advene/gui/edit/elements.py:731
+#: ../lib/advene/gui/edit/elements.py:788
+#: ../lib/advene/gui/edit/elements.py:880
+#: ../lib/advene/gui/edit/elements.py:949
+#: ../lib/advene/gui/edit/elements.py:1061
+#: ../lib/advene/gui/edit/elements.py:1123
+msgid "Date"
+msgstr "Date"
 
-#: ../lib/advene/plugins/shotdetectapp.py:41
-msgid "ShotdetectApp importer"
-msgstr "Importateur ShotdetectApp"
+#: ../lib/advene/gui/main.py:4215
+msgid "Package creation date"
+msgstr "Date de création du recueil"
 
-#: ../lib/advene/plugins/shotdetectapp.py:52
-msgid ""
-"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
-"too many shots are detected, try to increase its value."
-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/gui/main.py:4216 ../lib/advene/gui/views/table.py:674
+#: ../lib/advene/gui/util/dialog.py:386 ../lib/advene/gui/edit/imports.py:331
+#: ../lib/advene/gui/edit/dvdselect.py:95
+#: ../lib/advene/gui/edit/transcribe.py:1047
+msgid "Title"
+msgstr "Titre"
 
-#: ../lib/advene/plugins/shotdetectapp.py:80
-#: ../lib/advene/plugins/goodshotdetector.py:78
-msgid "Detected shots"
-msgstr "Plans détectés"
+#: ../lib/advene/gui/main.py:4216
+msgid "Package title"
+msgstr "Titre du recueil"
 
-#: ../lib/advene/plugins/shotdetectapp.py:140 ../lib/advene/gui/main.py:5130
-#, python-format
-msgid "Detected shot #%(num)d at %(pos)s "
-msgstr "Plan #%(num)d détecté à %(pos)s "
+#: ../lib/advene/gui/main.py:4217
+msgid "Associated media"
+msgstr "Media associe"
 
-#: ../lib/advene/plugins/youtubeannotations.py:33
-msgid "Youtube XML annotations importer"
-msgstr "Importateur d'annotations Youtube"
+#: ../lib/advene/gui/main.py:4218 ../lib/advene/gui/views/table.py:309
+msgid "Duration"
+msgstr "Durée"
 
-#: ../lib/advene/plugins/brltty.py:62
-msgid "Input from the braille table."
-msgstr "Entrée depuis la plage Braille"
+#: ../lib/advene/gui/main.py:4218
+msgid "Media duration in ms"
+msgstr "Durée du média en ms"
 
-#: ../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."
+#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/plugins/eventaccumulator.py:143
+msgid "Reset"
+msgstr "Reset"
 
-#: ../lib/advene/plugins/brltty.py:78
-msgid "Could not initialize BrlTTY. No braille support."
-msgstr "Impossible d'initialiser BrlTTY. Il n'y aura pas de support Braille."
+#: ../lib/advene/gui/main.py:4275 ../lib/advene/gui/views/timeline.py:3496
+#: ../lib/advene/gui/views/timeline.py:3647
+#: ../lib/advene/gui/views/tagbag.py:64 ../lib/advene/gui/edit/properties.py:51
+#: ../lib/advene/gui/edit/transcribe.py:147
+#: ../lib/advene/gui/edit/transcribe.py:1187
+msgid "Preferences"
+msgstr "Préférences"
 
-#: ../lib/advene/plugins/brltty.py:84
-msgid "Display a message in Braille"
-msgstr "Afficher un message en Braille"
+#: ../lib/advene/gui/main.py:4277
+msgid "Paths"
+msgstr "Chemins"
 
-#: ../lib/advene/plugins/brltty.py:85
-msgid "Message to display."
-msgstr "Message à afficher"
+#: ../lib/advene/gui/main.py:4279
+msgid "Data"
+msgstr "Contenu"
 
-#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
-#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
-#: ../lib/advene/rules/actions.py:123 ../lib/advene/gui/plugins/actions.py:44
-#: ../lib/advene/gui/plugins/actions.py:58
-#: ../lib/advene/gui/plugins/actions.py:110
-#: ../lib/advene/gui/plugins/actions.py:399
-#: ../lib/advene/gui/plugins/actions.py:527
-#: ../lib/advene/gui/edit/rules.py:766
-msgid "The annotation content"
-msgstr "Le contenu de l'annotation"
+#: ../lib/advene/gui/main.py:4279
+msgid "Standard directory for data files"
+msgstr "Répertoire standard pour les fichiers de données"
 
-#: ../lib/advene/plugins/brltty.py:240 ../lib/advene/plugins/tts.py:110
-#: ../lib/advene/gui/plugins/actions.py:234
-msgid "Unknown rule"
-msgstr "Règle inconnue"
+#: ../lib/advene/gui/main.py:4280
+msgid "Movie path"
+msgstr "Chemin de recherche pour les fichiers vidéo"
 
-#: ../lib/advene/plugins/brltty.py:241 ../lib/advene/plugins/tts.py:111
-#: ../lib/advene/gui/plugins/actions.py:235
+#: ../lib/advene/gui/main.py:4280
 #, python-format
 msgid ""
-"Rule %(rulename)s: Error in the evaluation of the parameter "
-"%(parametername)s:"
+"List of directories (separated by %s) to search for movie files (_ means "
+"package directory)"
 msgstr ""
-"Règle %(rulename)s: erreur dans l'évaluation du paramètre %(parametername)s:"
+"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/plugins/brltty.py:256
-#, python-format
-msgid "BrlTTY connection error: %s"
-msgstr "BrlTTY - erreur de connexion: %s"
+#: ../lib/advene/gui/main.py:4281
+msgid "Imagecache"
+msgstr "Cache d'images"
 
-#: ../lib/advene/plugins/brltty.py:273
-msgid "Braille display: "
-msgstr "Affichage braille :"
+#: ../lib/advene/gui/main.py:4281
+msgid "Directory for storing the snapshot cache"
+msgstr "Répertoire où sauvegarder le cache de captures d'écran"
 
-#: ../lib/advene/plugins/brltty.py:279
-msgid "No message"
-msgstr "Pas de message"
+#: ../lib/advene/gui/main.py:4282
+msgid "Player"
+msgstr "Lecteur"
 
-#: ../lib/advene/plugins/goodshotdetector.py:45
-msgid "Shot detection (Delakis version)"
-msgstr "Détection de plans (version Delakis)"
+#: ../lib/advene/gui/main.py:4282
+msgid "Directory of the video player"
+msgstr "Répertoire du lecteur vidéo"
 
-#: ../lib/advene/plugins/goodshotdetector.py:60
-msgid "Cache histogram alongside video files."
-msgstr "Stocker l'histogramme à côté du fichier vidéo"
+#: ../lib/advene/gui/main.py:4283
+msgid "Shotdetect"
+msgstr "Détection de plans"
 
-#: ../lib/advene/plugins/goodshotdetector.py:63
+#: ../lib/advene/gui/main.py:4283
+msgid "Shotdetect application"
+msgstr "Application de détection de plans"
+
+# Interface
+#: ../lib/advene/gui/main.py:4285
+msgid "GUI"
+msgstr "Interface"
+
+#: ../lib/advene/gui/main.py:4286
+msgid "Interface language (after restart)"
+msgstr "Langage de l'interface (après redémarrage)"
+
+#: ../lib/advene/gui/main.py:4286
 msgid ""
-"Parameter profile: safe will detect less cuts, aggressive will detect more "
-"cuts (but more false ones too). default is a compromise."
+"Language used for the interface (necessitates to restart the application)"
 msgstr ""
-"Profil de configuration: \"safe\" détectera moins de coupures,\n"
-"\"aggressive\" en détectera plus (mais plus d'incorrects\n"
-"également). \"default\" est un compromis."
+"Langage utilisé pour l'interface (nécessite de redémarrer l'application)"
 
-#: ../lib/advene/plugins/goodshotdetector.py:77
-#, python-format
-msgid "Shot (%s profile)"
-msgstr "Plan (profil %s)"
+#: ../lib/advene/gui/main.py:4287 ../lib/advene/gui/util/initialconfig.py:88
+msgid "System default"
+msgstr "La valeur du système"
 
-#: ../lib/advene/plugins/goodshotdetector.py:83
-msgid "Loading histogram"
-msgstr "Chargement de l'histogramme"
+#: ../lib/advene/gui/main.py:4292
+msgid "Record activity trace"
+msgstr "Enregistrer la trace d'activité"
 
-#: ../lib/advene/plugins/goodshotdetector.py:146
-msgid "Computing hdiff"
-msgstr "Calcul du hdiff"
+#: ../lib/advene/gui/main.py:4293
+msgid "Expert mode"
+msgstr "Mode expert"
 
-#: ../lib/advene/plugins/goodshotdetector.py:153
-msgid "Detecting cuts"
-msgstr "Détection des plans"
+#: ../lib/advene/gui/main.py:4293
+msgid "Offer advanced possibilities"
+msgstr "Afficher les fonctionnalités avancées"
 
-#: ../lib/advene/plugins/goodshotdetector.py:180
-msgid "Detecting dissolves"
-msgstr "Détection des fondus"
+#: ../lib/advene/gui/main.py:4294
+msgid "Prefer WYSIWYG"
+msgstr "WYSIWYG préféré"
 
-#: ../lib/advene/plugins/goodshotdetector.py:265
-msgid "Extracting histogram"
-msgstr "Extraction de l'histogramme"
+#: ../lib/advene/gui/main.py:4294
+msgid "Use WYSIWYG editors when possible (HTML, SVG)"
+msgstr "Utiliser un éditeur WYSIWYG quand c'est possible (HTML, SVG)"
 
-#: ../lib/advene/plugins/anvil.py:35
-msgid "Anvil importer"
-msgstr "Importateur Anvil"
+#: ../lib/advene/gui/main.py:4295
+msgid "Player control in edit popups"
+msgstr "Contrôle du lecteur dans les fenêtres d'édition"
 
-#: ../lib/advene/plugins/annotationgraph.py:40
-msgid "AnnotationGraph importer"
-msgstr "Importateur AnnotationGraph"
+#: ../lib/advene/gui/main.py:4295
+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 ""
+"Activer les raccourcis globaux de contrôle du lecteur dans les\n"
+"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/plugins/fcp.py:33
-msgid "Final Cut Pro XML importer"
-msgstr "Importateur Final Cut Pro XML"
+#: ../lib/advene/gui/main.py:4297
+msgid "Open popups"
+msgstr "Ouvrir les vues"
 
-#: ../lib/advene/plugins/fcp.py:55
-msgid "FCP clipitem"
-msgstr "FCP clipitem"
+#: ../lib/advene/gui/main.py:4298
+msgid "Where should we open adhoc views?"
+msgstr "Où doit-on ouvrir les vues adhoc ?"
 
-#: ../lib/advene/plugins/fcp.py:75
-msgid "Importing subtitles"
-msgstr "Import des sous-titres"
+#: ../lib/advene/gui/main.py:4299
+msgid "as a popup window"
+msgstr "dans des fenêtres indépendantes"
 
-#: ../lib/advene/plugins/fcp.py:90
-msgid "Importing clips"
-msgstr "Import des clips"
+#: ../lib/advene/gui/main.py:4300
+msgid "embedded east of the video"
+msgstr "intégrée à l'est de la vidéo"
 
-#: ../lib/advene/plugins/fcp.py:93
-msgid "No clip"
-msgstr "Pas de clip"
+#: ../lib/advene/gui/main.py:4301
+msgid "embedded west of the video"
+msgstr "intégrée à l'ouest de la vidéo"
 
-#: ../lib/advene/plugins/tracebuilder.py:219
-#, python-format
-msgid "Cannot export to %(fname)s: %(e)s"
-msgstr "Impossible d'exporter vers %(fname)s: %(e)s"
+#: ../lib/advene/gui/main.py:4302
+msgid "embedded south of the video"
+msgstr "intégrée au sud de la vidéo"
 
-#: ../lib/advene/plugins/tracebuilder.py:1129
-#: ../lib/advene/plugins/tracebuilder.py:1168
-#, python-format
-msgid "Cannot export to %(host)s:%(port)s %(error)s"
-msgstr "Impossible d'exporter vers %(host)s:%(port)s %(error)s"
+#: ../lib/advene/gui/main.py:4303
+msgid "embedded at the right of the window"
+msgstr "intégrée à droite de la fenêtre"
 
-#: ../lib/advene/plugins/tracebuilder.py:1143
-#, python-format
-msgid "Cannot send data to %(host)s:%(port)s %(error)s"
-msgstr "Impossible d'envoyer des données vers %(host)s:%(port)s %(error)s"
+#: ../lib/advene/gui/main.py:4306
+msgid "History size"
+msgstr "Taille de l'historique"
 
-#: ../lib/advene/plugins/tracebuilder.py:1191
-#, python-format
-msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
-msgstr ""
-"Impossible d'envoyer l'événement %(nb)s vers %(host)s:%(port)s %(error)s"
+#: ../lib/advene/gui/main.py:4306
+msgid "History filelist size limit"
+msgstr "Taille limite de la liste des fichiers"
 
-#: ../lib/advene/plugins/tracebuilder.py:1197
-#, python-format
-msgid "%(nb)s events sent to %(host)s:%(port)s during session."
-msgstr "%(nb)s événements envoyés à  %(host)s:%(port)s pendant la session."
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember window size"
+msgstr "Mémoriser les tailles des fenêtres"
 
-#: ../lib/advene/plugins/dcp.py:65
-msgid "DCP importer"
-msgstr "Importateur DCP"
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember the size of opened windows"
+msgstr "Mémoriser la taille des fenêtres"
 
-#: ../lib/advene/plugins/dcp.py:120
-#, python-format
-msgid "Converting #%(num)d / %(count)d"
-msgstr "Conversion #%(num)d / %(count)d"
+#: ../lib/advene/gui/main.py:4309
+msgid "Bookmark snapshot width"
+msgstr "Largeur des copies d'écran de signets"
 
-#: ../lib/advene/plugins/ttl.py:41
-msgid "TurTLe (RDF) importer"
-msgstr "Importateur TurTLe (RDF)"
+#: ../lib/advene/gui/main.py:4309
+msgid "Width of the snapshots representing bookmarks"
+msgstr "Largeur des captures d'écran représentant les signets"
 
-#: ../lib/advene/plugins/aeidon_import.py:48
-msgid "Aeidon (subtitles) importer"
-msgstr "Importateur sous-titres (Aeidon)"
+#: ../lib/advene/gui/main.py:4310
+msgid "Bookmark snapshot precision"
+msgstr "Précision des captures d'écran pour les signets"
 
-#: ../lib/advene/plugins/soundenveloppe.py:47
-#: ../lib/advene/plugins/soundenveloppe.py:143
-#: ../lib/advene/plugins/soundenveloppe.py:145
-msgid "Sound enveloppe"
-msgstr "Enveloppe sonore"
+#: ../lib/advene/gui/main.py:4310
+msgid "Precision (in ms) of the displayed bookmark snapshots."
+msgstr "Précision (en ms) des captures d'écran pour les signets."
 
-#: ../lib/advene/plugins/soundenveloppe.py:60
-msgid "Interval (in ms) at which to take samples."
-msgstr "Intervalle d'échantillonage (en ms)"
+#: ../lib/advene/gui/main.py:4312
+msgid "General"
+msgstr "Générales"
 
-#: ../lib/advene/plugins/soundenveloppe.py:63
-msgid "Maximum number of samples per annotation."
-msgstr "Nombre maximum d'échantillons par annotation"
+#: ../lib/advene/gui/main.py:4313
+msgid "Weekly update check"
+msgstr "Vérification hebdomadaire des mises à jour"
 
-#: ../lib/advene/plugins/soundenveloppe.py:66
-#: ../lib/advene/plugins/cutter.py:56
-msgid "Channel selection."
-msgstr "Choix du canal"
+#: ../lib/advene/gui/main.py:4313 ../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/plugins/soundenveloppe.py:90
-#: ../lib/advene/plugins/pocketsphinx.py:119
-#: ../lib/advene/plugins/barcode.py:58
-msgid "Generating annotations"
-msgstr "Création des annotations"
+#: ../lib/advene/gui/main.py:4314
+msgid "On exit,"
+msgstr "À la fin, "
 
-#: ../lib/advene/plugins/soundenveloppe.py:115
-#, python-format
-msgid "At %s"
-msgstr "À %s"
+#: ../lib/advene/gui/main.py:4315
+msgid "How to handle screenshots on exit"
+msgstr "Comment gérer les captures d'écran à la fin de l'application"
 
-#: ../lib/advene/plugins/soundenveloppe.py:162
-msgid "Extracting sound enveloppe"
-msgstr "Extraction de l'enveloppe sonore"
+#: ../lib/advene/gui/main.py:4316
+msgid "never save screenshots"
+msgstr "ne jamais sauvegarder les captures d'écran"
 
-#: ../lib/advene/plugins/cutter.py:39
-msgid "Audio segmentation"
-msgstr "Segmentation audio"
+#: ../lib/advene/gui/main.py:4317
+msgid "always save screenshots"
+msgstr "toujours sauvegarder les captures d'écran"
 
-#: ../lib/advene/plugins/cutter.py:53
-msgid "Volume threshold (in dB, can be negative) before trigger."
-msgstr "Seuil de détection de silence (en dB, peut être négatif)"
+#: ../lib/advene/gui/main.py:4318
+msgid "ask before saving screenshots"
+msgstr "demander avant de sauvegarder les captures d'écran"
 
-#: ../lib/advene/plugins/cutter.py:101
-#, python-format
-msgid "Detected %(count)d segments until %(time)s"
-msgstr "Détecté %(count)d segments jusqu'à %(time)s"
+#: ../lib/advene/gui/main.py:4320
+msgid "Auto-save"
+msgstr "La sauvegarde automatique"
 
-# Segment audio
-#: ../lib/advene/plugins/cutter.py:119
-msgid "Sound segment"
-msgstr "Segment audio"
+#: ../lib/advene/gui/main.py:4321
+msgid "Data auto-save functionality"
+msgstr "Sauvegarde automatique des recueils"
 
-#: ../lib/advene/plugins/cutter.py:120
-#, python-format
-msgid ""
-"Sound segmentation with a threshold of %(threshold)d dB - channel: "
-"%(channel)s"
-msgstr ""
-"Segmentation sonore avec un seuil de %(threshold)d dB - canal : %(channel)s"
+#: ../lib/advene/gui/main.py:4322
+msgid "is desactivated"
+msgstr "est désactivée"
 
-#: ../lib/advene/plugins/cutter.py:138
-msgid "Starting silence detection"
-msgstr "Démarrage de la détection audio"
+#: ../lib/advene/gui/main.py:4323
+msgid "is done automatically"
+msgstr "est activée"
 
-#: ../lib/advene/plugins/montagerenderer.py:43
-msgid "Cannot register montage renderer: Gnonlin plugins are not present."
-msgstr ""
-"Impossible d'initialiser le rendu de montage: les plugins Gnonlin ne sont "
-"pas présents"
+#: ../lib/advene/gui/main.py:4324
+msgid "is done after confirmation"
+msgstr "est activée avec confirmation"
 
-#: ../lib/advene/plugins/mpeg7.py:54
-msgid "MPEG7 importer"
-msgstr "Importateur MPEG7"
+#: ../lib/advene/gui/main.py:4326
+msgid "Auto-save interval (in s)"
+msgstr "Intervalle de sauvegarde automatique (en s)"
 
-#: ../lib/advene/plugins/transcriber.py:40
-msgid "Transcriber importer"
-msgstr "Importateur Transcriber"
+#: ../lib/advene/gui/main.py:4326
+msgid "Interval (in seconds) between package auto-saves"
+msgstr "Durée (en secondes) entre deux sauvegardes automatiques"
 
-#: ../lib/advene/plugins/transcriber.py:86
-msgid "Parsing section information"
-msgstr "Traitement des informations de section"
+#: ../lib/advene/gui/main.py:4328
+msgid "Workspace"
+msgstr "Environnement"
 
-#: ../lib/advene/plugins/transcriber.py:276
-msgid "Parsing topic and speaker tables information"
-msgstr "Traitement des tables de sujet et orateur"
+#: ../lib/advene/gui/main.py:4330
+msgid "On package saving,"
+msgstr "Lors de la sauvegarde du recueil,"
 
-#: ../lib/advene/plugins/featuredetect.py:42
-msgid "Feature detection (face...)"
-msgstr "Reconnaissance de formes"
+#: ../lib/advene/gui/main.py:4331
+msgid "Do you wish to save the default workspace with the package?"
+msgstr "Voulez-vous sauvegarder l'environnement avec le recueil ?"
 
-#: ../lib/advene/plugins/featuredetect.py:57
-msgid "Sensitivity level."
-msgstr "Niveau de sensibilité"
+#: ../lib/advene/gui/main.py:4332
+msgid "never save the current workspace"
+msgstr "ne jamais sauvegarder l'environnement courant"
 
-#: ../lib/advene/plugins/featuredetect.py:60
-msgid ""
-"Scale. Original image size will be divided by this factor, in order to speed "
-"up detection."
-msgstr ""
-"La taille d'image sera divisée par ce facteur d'échelle, afin\n"
-"d'accélérer le traitement."
+#: ../lib/advene/gui/main.py:4333
+msgid "always save the current workspace"
+msgstr "toujours sauvegarder l'environnement courant"
 
-#: ../lib/advene/plugins/featuredetect.py:63
-msgid "Classifier"
-msgstr "Classificateur"
+#: ../lib/advene/gui/main.py:4334
+msgid "ask before saving the current workspace"
+msgstr "demander avant de sauvegarder l'environnement courant"
 
-#: ../lib/advene/plugins/featuredetect.py:77
-#, python-format
-msgid "Feature %s"
-msgstr "Forme %s"
+#: ../lib/advene/gui/main.py:4336
+msgid "Auto-validation of edited elements"
+msgstr "Validation automatique des éléments"
 
-#: ../lib/advene/plugins/featuredetect.py:79
-#, python-format
-msgid "Detected %s"
-msgstr "%s détecté"
+#: ../lib/advene/gui/main.py:4336
+msgid "Automatically validate modified elements when saving the package."
+msgstr "Valider automatiquement les éléments modifiés lors de la sauvegarde."
 
-#: ../lib/advene/plugins/featuredetect.py:81
-msgid "Detection started"
-msgstr "Détection commencée"
+#: ../lib/advene/gui/main.py:4338
+msgid "On package load,"
+msgstr "Lors du chargement du recueil,"
 
-#: ../lib/advene/plugins/featuredetect.py:171
-#, python-format
-msgid "Detected %(count)d feature(s) until %(time)s"
-msgstr "%(count)d objet(s) détectés jusqu'à %(time)s"
+#: ../lib/advene/gui/main.py:4339
+msgid "Do you wish to load the workspace saved with the package?"
+msgstr "Voulez-vous restaurer l'environnement sauvegardé avec le recueil ?"
 
-#: ../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/gui/main.py:4340
+msgid "never load the saved workspace"
+msgstr "ne jamais restaurer l'environnement sauvegardé"
 
-#: ../lib/advene/plugins/pocketsphinx.py:41
-msgid "Speech recognition (PocketSphinx)"
-msgstr "Reconnaissance vocale (PocketSphinx)"
+#: ../lib/advene/gui/main.py:4341
+msgid "always load the saved workspace"
+msgstr "toujours restaurer l'environnement sauvegardé"
 
-#: ../lib/advene/plugins/pocketsphinx.py:61
-msgid "Filtering noise level [0..1]."
-msgstr "Niveau de filtrage du bruit [0..1]"
+#: ../lib/advene/gui/main.py:4342
+msgid "ask before loading the saved workspace"
+msgstr "demander avant de restaurer l'environnement sauvegardé"
 
-#: ../lib/advene/plugins/pocketsphinx.py:65
+#: ../lib/advene/gui/main.py:4345
+msgid "Video Player"
+msgstr "Lecteur Vidéo"
+
+#: ../lib/advene/gui/main.py:4346
+msgid "Autostart"
+msgstr "Démarrage automatique"
+
+#: ../lib/advene/gui/main.py:4346
 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."
+"Automatically start the player when loading a media file (either directly or "
+"through a package)"
 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."
+"Lancer automatiquement le lecteur lors du chargement d'une vidéo (soit "
+"directement, soit via un recueil)"
 
-#: ../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/gui/main.py:4347
+msgid "Fulscreen timestamp"
+msgstr "Timestamp plein-écran"
 
-#: ../lib/advene/plugins/pocketsphinx.py:73
-msgid "Acoustic model (directory)"
-msgstr "Modèle acoustique (répertoire)"
+#: ../lib/advene/gui/main.py:4347
+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/plugins/pocketsphinx.py:77
-msgid "Phonetic dictionary (.dic file)"
-msgstr "Dictionnaire phonétique (fichier .dic)"
+#: ../lib/advene/gui/main.py:4348
+msgid "Enable captions"
+msgstr "Activer le sous-titrage externe"
 
-#: ../lib/advene/plugins/pocketsphinx.py:81
-msgid "Language model (.DMP file)"
-msgstr "Modèle de langage (fichier .dmp)"
+#: ../lib/advene/gui/main.py:4348
+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/plugins/pocketsphinx.py:144
-#: ../lib/advene/plugins/barcode.py:83
-#, python-format
-msgid "%(count)d utterances until %(time)s"
-msgstr "%(count)d paroles jusqu'à %(time)s"
+#: ../lib/advene/gui/main.py:4349
+msgid "Caption font"
+msgstr "Police de sous-titrage"
 
-#: ../lib/advene/plugins/pocketsphinx.py:153
-msgid "Speech"
-msgstr "Parole"
+#: ../lib/advene/gui/main.py:4349
+msgid "TrueType font for captions"
+msgstr "Police TrueType pour les sous-titres"
 
-#: ../lib/advene/plugins/pocketsphinx.py:155
-msgid "Recognized speech"
-msgstr "Parole reconnue"
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG"
+msgstr "Activer le SVG"
 
-#: ../lib/advene/plugins/pocketsphinx.py:191
-msgid "Recognizing speech"
-msgstr "Reconnaissance en cours"
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG captions over the video"
+msgstr "Activer l'affichage de graphiques SVG sur la vidéo"
 
-#: ../lib/advene/plugins/barcode.py:36
-msgid "Cannot register barcode extraction: zbar plugin not found."
-msgstr "Impossible d'initialiser l'extraction de qrcode"
+#: ../lib/advene/gui/main.py:4352
+msgid "Enable snapshots"
+msgstr "Activer les copies d'écran"
 
-#: ../lib/advene/plugins/barcode.py:40
-msgid "Barcode (qr-code) extraction"
-msgstr "Extraction de QR Code"
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width"
+msgstr "Largeur des copies d'écran"
 
-#: ../lib/advene/plugins/barcode.py:95
-msgid "Barcode"
-msgstr "Barcode"
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width in pixels."
+msgstr "Largeur (en pixels) des copies d'écran"
 
-#: ../lib/advene/plugins/barcode.py:97
-msgid "Extracted barcode information"
-msgstr "Information qrcode"
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity"
+msgstr "Verbosité"
 
-#: ../lib/advene/plugins/barcode.py:115
-msgid "Extraction barcodes"
-msgstr "Extraction des codes"
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity level. -1 for no messages."
+msgstr "Niveau de verbosité. -1 pour pas de messages."
 
-#: ../lib/advene/plugins/nerd_plugin.py:47
-msgid "NERD (Named Entity Recognition and Disambiguation)"
-msgstr "NERD (Named Entity Recognition and Disambiguation)"
+#: ../lib/advene/gui/main.py:4357
+msgid "Devices"
+msgstr "Périphériques"
 
-#: ../lib/advene/plugins/nerd_plugin.py:68
-msgid "NERD API key"
-msgstr "NERD API key"
+#: ../lib/advene/gui/main.py:4359
+msgid "Standard"
+msgstr "Standard"
 
-#: ../lib/advene/plugins/nerd_plugin.py:82
-msgid "NER service to use"
-msgstr "Service NER à utiliser"
+#: ../lib/advene/gui/main.py:4361
+msgid "DVD drive"
+msgstr "Lecteur DVD"
 
-#: ../lib/advene/plugins/nerd_plugin.py:88
-msgid "Type of annotation to analyze"
-msgstr "Type d'annotation à analyser"
+#: ../lib/advene/gui/main.py:4361
+msgid "Drive letter for the DVD"
+msgstr "Lettre du lecteur DVD"
 
-#: ../lib/advene/plugins/nerd_plugin.py:93
-msgid "Language to analyze"
-msgstr "Langage à analyser"
+#: ../lib/advene/gui/main.py:4362
+msgid "GDI"
+msgstr "GDI"
 
-#: ../lib/advene/plugins/nerd_plugin.py:98
-msgid "Minimum confidence level (between 0.0 and 1.0)"
-msgstr "Niveau de confiance minimum (entre 0.0 et 1.0)"
+#: ../lib/advene/gui/main.py:4363
+msgid "Direct X"
+msgstr "Direct X"
 
-#: ../lib/advene/plugins/nerd_plugin.py:103
-msgid "Interpolate position of annotations"
-msgstr "Interpoler la position des annotations"
+#: ../lib/advene/gui/main.py:4365
+msgid "DVD device"
+msgstr "Périphérique DVD"
 
-#: ../lib/advene/plugins/nerd_plugin.py:108
-msgid "Split by entity type"
-msgstr "Diviser par type d'entité"
+#: ../lib/advene/gui/main.py:4365
+msgid "Device for the DVD"
+msgstr "Device du DVD"
 
-#: ../lib/advene/plugins/nerd_plugin.py:113
-msgid "Store results as markup in the annotation text"
-msgstr "Stocker les résultats comme marquage dans le texte de l'annotation"
+#: ../lib/advene/gui/main.py:4366
+msgid "X11"
+msgstr "X11"
 
-#: ../lib/advene/plugins/nerd_plugin.py:118
-msgid "Create relations between the original annotations and the new ones"
-msgstr "Créer des relations entre les annotations originales et les nouvelles"
+#: ../lib/advene/gui/main.py:4367
+msgid "XVideo"
+msgstr "XVideo"
 
-#: ../lib/advene/plugins/nerd_plugin.py:150
-#, python-format
-msgid "NERD applied to %s"
-msgstr "NERD appliqué à %s"
+#: ../lib/advene/gui/main.py:4368
+msgid "GL"
+msgstr "GL"
 
-#: ../lib/advene/plugins/nerd_plugin.py:208
-#, python-format
-msgid "NERD %s"
-msgstr "NERD %s"
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output"
+msgstr "Sortie vidéo"
 
-#: ../lib/advene/plugins/ted.py:39
-msgid "TED importer"
-msgstr "Importateur TED"
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output module"
+msgstr "Module de sortie vidéo"
 
-#: ../lib/advene/plugins/shotdetect.py:35
-msgid "Shotdetect importer"
-msgstr "Importateur Shotdetect"
+#: ../lib/advene/gui/main.py:4372
+msgid "Recorder options"
+msgstr "Options d'enregistrement"
 
-#: ../lib/advene/plugins/shotdetect.py:79
-msgid "No shots"
-msgstr "Pas de plans"
+#: ../lib/advene/gui/main.py:4373
+msgid "Audio input"
+msgstr "Entrée audio"
 
-#: ../lib/advene/plugins/tts.py:77
-msgid "Pronounce a text"
-msgstr "Prononcer un texte"
+#: ../lib/advene/gui/main.py:4373
+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/plugins/tts.py:78
-msgid "String to pronounce."
-msgstr "Chaîne à prononcer"
+#: ../lib/advene/gui/main.py:4374
+msgid "Record video"
+msgstr "Enregistrement vidéo"
 
-#: ../lib/advene/plugins/tts.py:131 ../lib/advene/gui/plugins/actions.py:259
-#: ../lib/advene/gui/plugins/actions.py:340
-#: ../lib/advene/gui/plugins/actions.py:358
-msgid "No message..."
-msgstr "Pas de message"
+#: ../lib/advene/gui/main.py:4374
+msgid "Record both video and audio"
+msgstr "Enregistrer audio et vidéo"
 
-#: ../lib/advene/plugins/tts.py:156
-msgid "TTS disabled. Cannot find the application 'festival' in PATH"
-msgstr ""
-"Synthèse vocale désactivée. Impossible de trouver l'application 'festival'"
+#: ../lib/advene/gui/main.py:4377
+msgid "<i>Experimental</i>"
+msgstr "Expérimental"
 
-#: ../lib/advene/plugins/tts.py:158
-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/gui/main.py:4378 ../lib/advene/gui/views/scroller.py:29
+msgid "Scroller"
+msgstr "Défileur"
 
-#: ../lib/advene/player/gstreamer.py:434
-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/gui/main.py:4378
+msgid "Embed the caption scroller below the video"
+msgstr "Intégrer le dérouleur sous la vidéo"
 
-#: ../lib/advene/rules/importer.py:29
-msgid "Event history importer"
-msgstr "Importateur d'historique d'événements"
+#: ../lib/advene/gui/main.py:4379 ../lib/advene/gui/views/caption.py:29
+msgid "Caption"
+msgstr "Sous-titreur"
 
-#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
-#: ../lib/advene/rules/actions.py:120
-msgid "Message to display"
-msgstr "Message à afficher"
+#: ../lib/advene/gui/main.py:4379
+msgid "Embed the caption view below the video"
+msgstr "Intégrer la visuablisation de sous-titres sous la vidéo"
 
-#: ../lib/advene/rules/actions.py:48
-msgid "Start the player"
-msgstr "Démarrer le lecteur"
+#: ../lib/advene/gui/main.py:4381
+msgid "Time-related"
+msgstr "Relatives au temps"
 
-#: ../lib/advene/rules/actions.py:49
-msgid "Start position (in ms)"
-msgstr "Position de début (en ms)"
+#: ../lib/advene/gui/main.py:4382
+msgid "Time format"
+msgstr "Format des temps"
 
-#: ../lib/advene/rules/actions.py:52 ../lib/advene/rules/actions.py:384
-msgid "The movie start"
-msgstr "Le début du film"
+#: ../lib/advene/gui/main.py:4382
+msgid "Format used to display timecodes"
+msgstr "Format utilisé pour afficher les timecodes"
 
-#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
-msgid "The annotation begin"
-msgstr "Le début de l'annotation"
+#: ../lib/advene/gui/main.py:4396
+msgid "Default FPS"
+msgstr "FPS par défaut"
 
-#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
-msgid "The annotation end"
-msgstr "La fin de l'annotation"
+#: ../lib/advene/gui/main.py:4397
+msgid ""
+"Default FPS (frame-per-second) value, when entering or displaying timestamps "
+"with frame numbers."
+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/rules/actions.py:63 ../lib/advene/gui/views/logwindow.py:129
-msgid "Go to the given position"
-msgstr "Déplacement à une position donnée"
+#: ../lib/advene/gui/main.py:4398
+msgid "Time increment"
+msgstr "Durée pour navigation"
 
-#: ../lib/advene/rules/actions.py:64
-msgid "Goto position (in ms)"
-msgstr "Position (en ms)"
+#: ../lib/advene/gui/main.py:4398
+msgid ""
+"Skip duration, when using control-left/right or forward/rewind buttons (in "
+"ms)."
+msgstr ""
+"Réglage de la durée (en ms) utilisée avec contrôle-flèche ou les boutons "
+"avance/retour rapide"
 
-#: ../lib/advene/rules/actions.py:73
-msgid "Stop the player"
-msgstr "Arrêter le lecteur"
+#: ../lib/advene/gui/main.py:4399
+msgid "Second time increment"
+msgstr "Seconde durée pour navigation"
 
-#: ../lib/advene/rules/actions.py:80
-msgid "Pause the player"
-msgstr "Mettre le lecteur en pause"
+#: ../lib/advene/gui/main.py:4399
+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/rules/actions.py:87
-msgid "Resume the player"
-msgstr "Relancer le lecteur"
+#: ../lib/advene/gui/main.py:4400
+msgid "Third time increment"
+msgstr "Troisième durée pour navigation"
 
-#: ../lib/advene/rules/actions.py:94
-msgid "Take a snapshot"
-msgstr "Prendre une capture d'écran"
+#: ../lib/advene/gui/main.py:4400
+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/rules/actions.py:101
-msgid "Display a caption"
-msgstr "Afficher un sous-titre"
+#: ../lib/advene/gui/main.py:4401
+msgid "Custom Up/Down"
+msgstr "Haut/Bas personnalisés"
 
-#: ../lib/advene/rules/actions.py:103
-msgid "Duration of the caption"
-msgstr "Durée du sous-titre"
+#: ../lib/advene/gui/main.py:4401
+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/rules/actions.py:110 ../lib/advene/rules/actions.py:172
-#: ../lib/advene/gui/plugins/actions.py:61
-#: ../lib/advene/gui/plugins/actions.py:121
-#: ../lib/advene/gui/plugins/actions.py:403
-#: ../lib/advene/gui/plugins/actions.py:538
-msgid "1 second"
-msgstr "1 seconde"
+#: ../lib/advene/gui/main.py:4403
+msgid "Scroll increment"
+msgstr "Incrément de temps"
 
-#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
-#: ../lib/advene/gui/plugins/actions.py:62
-#: ../lib/advene/gui/plugins/actions.py:122
-#: ../lib/advene/gui/plugins/actions.py:404
-#: ../lib/advene/gui/plugins/actions.py:539
-#: ../lib/advene/gui/edit/rules.py:773
-msgid "The annotation duration"
-msgstr "La durée de l'annotation"
+#: ../lib/advene/gui/main.py:4403
+msgid ""
+"On most annotations, control+scrollwheel will increment/decrement their "
+"bounds by this value (in ms)."
+msgstr ""
+"Sur les annotations, contrôle + molette permet d'incrémenter/décrémenter "
+"leurs bornes de cette valeur (en ms)."
 
-#: ../lib/advene/rules/actions.py:119 ../lib/advene/gui/popup.py:718
-msgid "Caption the annotation"
-msgstr "Sous-titrer l'annotation"
+#: ../lib/advene/gui/main.py:4404
+msgid "Second scroll increment"
+msgstr "Second incrément de scroll"
 
-#: ../lib/advene/rules/actions.py:131
-msgid "Display a graphical shape"
-msgstr "Afficher une forme graphique"
+#: ../lib/advene/gui/main.py:4404
+msgid ""
+"On most annotations, control+shift+scrollwheel will increment/decrement "
+"their bounds by this value (in ms)."
+msgstr ""
+"Sur les annotations, contrôle + shift + molette permet d'incrémenter/"
+"décrémenter leurs bornes de cette valeur (en ms)."
 
-#: ../lib/advene/rules/actions.py:132
-msgid "Shape (square, circle, triangle)"
-msgstr "Forme (square, circle, triangle)"
+#: ../lib/advene/gui/main.py:4406
+msgid "Player sync"
+msgstr "Synchro des lecteurs"
 
-#: ../lib/advene/rules/actions.py:133
-#: ../lib/advene/gui/edit/shapewidget.py:342
-#: ../lib/advene/gui/edit/elements.py:891
-#: ../lib/advene/gui/edit/elements.py:971
-#: ../lib/advene/gui/edit/elements.py:1085
-#: ../lib/advene/gui/views/tagbag.py:138
-msgid "Color"
-msgstr "Couleur"
+#: ../lib/advene/gui/main.py:4406
+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 ""
+"Intervalle (en ms) avec lequel on synchronise les lecteurs esclaves. Une "
+"valeur trop basse peut rendre l'application inutilisable. Entrez 0 pour "
+"désactiver la synchronisation continue."
 
-#: ../lib/advene/rules/actions.py:134
-msgid "x-position (percentage of screen)"
-msgstr "Abscisse (pourcentage de l'écran)"
+#: ../lib/advene/gui/main.py:4407
+msgid "Timeline parameters"
+msgstr "Paramètres de la ligne de temps"
 
-#: ../lib/advene/rules/actions.py:135
-msgid "y-position (percentage of screen)"
-msgstr "Ordonnée (pourcentage de l'écran)"
+#: ../lib/advene/gui/main.py:4408 ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size"
+msgstr "Taille de la police"
 
-#: ../lib/advene/rules/actions.py:136
-msgid "Size (arbitrary units)"
-msgstr "Taille (unité arbitraire)"
+#: ../lib/advene/gui/main.py:4408
+msgid "Font size for annotation widgets"
+msgstr "Taille de la police pour les représentations d'annotations"
 
-#: ../lib/advene/rules/actions.py:137
-msgid "Duration of the display in ms"
-msgstr "Durée de l'affichage en ms"
+#: ../lib/advene/gui/main.py:4409
+msgid "Button height"
+msgstr "Hauteur des boutons"
 
-#: ../lib/advene/rules/actions.py:145
-msgid "A square"
-msgstr "Un carré"
+#: ../lib/advene/gui/main.py:4409
+msgid "Height of annotation widgets"
+msgstr "Hauteur des représentations d'annotations"
 
-#: ../lib/advene/rules/actions.py:146
-msgid "A circle"
-msgstr "Un cercle"
+#: ../lib/advene/gui/main.py:4410
+msgid "Interline height"
+msgstr "Taille des interlignes"
 
-#: ../lib/advene/rules/actions.py:147
-msgid "A triangle"
-msgstr "Un triangle"
+#: ../lib/advene/gui/main.py:4410
+msgid "Height of interlines"
+msgstr "Taille des interlignes"
 
-#: ../lib/advene/rules/actions.py:150
-msgid "White"
-msgstr "Blanc"
+#: ../lib/advene/gui/main.py:4412
+msgid "Text content"
+msgstr "Contenu textuel"
 
-# Retour rapide
-#: ../lib/advene/rules/actions.py:151
-msgid "Black"
-msgstr "Noir"
+#: ../lib/advene/gui/main.py:4413
+msgid "Completion mode"
+msgstr "Mode de complétion"
 
-#: ../lib/advene/rules/actions.py:152
-msgid "Red"
-msgstr "Rouge"
-
-#: ../lib/advene/rules/actions.py:153
-msgid "Green"
-msgstr "Vert"
-
-#: ../lib/advene/rules/actions.py:154
-msgid "Blue"
-msgstr "Bleu"
+#: ../lib/advene/gui/main.py:4413
+msgid "Enable dynamic completion mode"
+msgstr "Activer la complétion dynamique"
 
-#: ../lib/advene/rules/actions.py:155
-msgid "Yellow"
-msgstr "Jaune"
+#: ../lib/advene/gui/main.py:4414
+msgid "Predefined terms only"
+msgstr "Uniquement les termes prédéfinis"
 
-#: ../lib/advene/rules/actions.py:158
-msgid "At the top of the screen"
-msgstr "En haut de l'écran"
+#: ../lib/advene/gui/main.py:4414
+msgid "If completion is enabled, complete only with predefined terms."
+msgstr ""
+"Si la complétion est active, compléter uniquement avec les termes prédéfinis."
 
-#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
-msgid "In the middle of the screen"
-msgstr "Au milieu de l'écran"
+#: ../lib/advene/gui/main.py:4415
+msgid "Abbreviation mode"
+msgstr "Mode abbréviation"
 
-#: ../lib/advene/rules/actions.py:160
-msgid "At the bottom of the screen"
-msgstr "En bas de l'écran"
+#: ../lib/advene/gui/main.py:4415
+msgid "Enable abbreviation mode"
+msgstr "Activer l'expansion des abbréviations"
 
-#: ../lib/advene/rules/actions.py:163
-msgid "At the left of the screen"
-msgstr "À gauche de l'écran"
+#: ../lib/advene/gui/main.py:4416
+msgid "Abbreviations"
+msgstr "Abbréviations"
 
-#: ../lib/advene/rules/actions.py:167
-#: ../lib/advene/gui/edit/transcribe.py:1164
-#: ../lib/advene/gui/views/activebookmarks.py:547
-msgid "Small"
-msgstr "Petit"
+#: ../lib/advene/gui/main.py:4416
+msgid ""
+"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
+"followed by its replacement."
+msgstr ""
+"Abbréviations textuelles. Une entrée par ligne. Chaque ligne contient "
+"l'abbréviation suivie par son remplacement."
 
-#: ../lib/advene/rules/actions.py:168
-#: ../lib/advene/gui/edit/transcribe.py:1165
-#: ../lib/advene/gui/views/activebookmarks.py:548
-msgid "Normal"
-msgstr "Normal"
+#: ../lib/advene/gui/main.py:4418
+msgid "Text-To-Speech"
+msgstr "Synthèse vocale"
 
-#: ../lib/advene/rules/actions.py:169
-#: ../lib/advene/gui/edit/transcribe.py:1166
-#: ../lib/advene/gui/views/activebookmarks.py:549
-msgid "Large"
-msgstr "Grand"
+#: ../lib/advene/gui/main.py:4419
+msgid "TTS language"
+msgstr "Langue de la synthèse vocale"
 
-#: ../lib/advene/rules/actions.py:181
-msgid "Zero the volume during the annotation"
-msgstr "Couper le son durant l'annotation"
+#: ../lib/advene/gui/main.py:4420
+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/rules/actions.py:188
-msgid "Zero the volume"
-msgstr "Couper le son"
+#: ../lib/advene/gui/main.py:4421
+msgid "English"
+msgstr "Anglais"
 
-#: ../lib/advene/rules/actions.py:195
-msgid "Restore the volume"
-msgstr "Restaurer le son"
+#: ../lib/advene/gui/main.py:4422
+msgid "French"
+msgstr "Français"
 
-#: ../lib/advene/rules/actions.py:203
-msgid "Activate a STBV"
-msgstr "Activer une vue dynamique"
+#: ../lib/advene/gui/main.py:4423
+msgid "Spanish"
+msgstr "Espagnol"
 
-#: ../lib/advene/rules/actions.py:204
-msgid "STBV id"
-msgstr "Identificateur de la vue dynamique"
+#: ../lib/advene/gui/main.py:4425
+msgid "TTS Encoding"
+msgstr "Encodage TTS"
 
-#: ../lib/advene/rules/actions.py:213
-msgid "Send a user event"
-msgstr "Envoyer un événement utilisateur"
+#: ../lib/advene/gui/main.py:4426
+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/rules/actions.py:214
-msgid "Identifier"
-msgstr "Identificateur"
+#: ../lib/advene/gui/main.py:4427
+msgid "TTS Engine"
+msgstr "Moteur de synthèse vocale"
 
-#: ../lib/advene/rules/actions.py:215
-msgid "Delay in ms before sending the event."
-msgstr "Délai en ms avant l'envoi de l'événement."
+#: ../lib/advene/gui/main.py:4428
+msgid ""
+"Which TTS engine should be used (modification requires restarting Advene to "
+"take into account)"
+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/rules/actions.py:225
-msgid "Open a URL in the web browser"
-msgstr "Ouvrir une URL dans le navigateur web"
+#: ../lib/advene/gui/main.py:4429
+msgid "Automatic"
+msgstr "Automatique"
 
-#: ../lib/advene/rules/actions.py:226 ../lib/advene/gui/plugins/actions.py:103
-#: ../lib/advene/gui/views/logwindow.py:159
-msgid "URL"
-msgstr "URL"
+#: ../lib/advene/gui/main.py:4430
+msgid "eSpeak"
+msgstr "eSpeak"
 
-#: ../lib/advene/rules/actions.py:235
-msgid "Open a static view"
-msgstr "Ouvrir une vue statique"
+#: ../lib/advene/gui/main.py:4431
+msgid "Custom script with standard input"
+msgstr "Script personnel via l'entrée standard"
 
-#: ../lib/advene/rules/actions.py:246
-msgid "Set the audio volume"
-msgstr "Fixer le volume"
+#: ../lib/advene/gui/main.py:4432
+msgid "Custom script with arguments"
+msgstr "Script personnel via les arguments"
 
-#: ../lib/advene/rules/actions.py:247
-msgid "Volume level (from 0 to 100)"
-msgstr "Niveau de volume (0 à 100)"
+#: ../lib/advene/gui/main.py:4433
+msgid "SAPI"
+msgstr "SAPI"
 
-#: ../lib/advene/rules/actions.py:256
-msgid "Set the playing rate"
-msgstr "Fixer la vitesse"
+#: ../lib/advene/gui/main.py:4434
+msgid "MacOS X say"
+msgstr "Commande \"say\" de MacOS X"
 
-#: ../lib/advene/rules/actions.py:257
-msgid "Rate (100: normal rate, 200: twice slower)"
-msgstr "Vitesse (100: vitesse normale, 200: deux fois plus lent)"
+#: ../lib/advene/gui/main.py:4435
+msgid "Generic (text output)"
+msgstr "Générique (affichage du texte)"
 
-#: ../lib/advene/rules/actions.py:266
-msgid "Play a sound resource"
-msgstr "Jouer une ressource son"
+#: ../lib/advene/gui/main.py:4479
+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/rules/actions.py:267
-msgid "Clip id"
-msgstr "Clip id"
+#: ../lib/advene/gui/main.py:4488
+#, python-format
+msgid "Imagecache saved to %s"
+msgstr "Cache d'image sauvé dans %s"
 
-#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
-msgid "Volume (0..100)"
-msgstr "Volume (0 à 100)"
+#: ../lib/advene/gui/main.py:4501
+msgid "Restarting player..."
+msgstr "Redémarrage du lecteur multimédia..."
 
-#: ../lib/advene/rules/actions.py:269 ../lib/advene/rules/actions.py:283
-msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
-msgstr "Balance droite-gauche : -1 -> gauche, 0 -> centre, 1 -> droite"
+#: ../lib/advene/gui/main.py:4561
+msgid "Advene log"
+msgstr "Advene log"
 
-#: ../lib/advene/rules/actions.py:280
-msgid "Play a sound file"
-msgstr "Jouer un fichier son externe"
+#: ../lib/advene/gui/main.py:4604 ../lib/advene/gui/views/timeline.py:1045
+#: ../lib/advene/rules/elements.py:1000
+msgid "Creation of a new annotation type"
+msgstr "Création d'un nouveau type d'annotation"
 
-#: ../lib/advene/rules/actions.py:281
-msgid "Sound filename"
-msgstr "Nom du fichier son"
+#: ../lib/advene/gui/main.py:4612 ../lib/advene/gui/views/timeline.py:1074
+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/rules/actions.py:293
-msgid "Set a state variable"
-msgstr "Définir une variable d'état"
+#: ../lib/advene/gui/main.py:4630
+msgid "Select the package to merge"
+msgstr "Sélectionnez le recueil à fusionner"
 
-#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
-msgid "State variable name"
-msgstr "Nom de la variable d'état"
+#: ../lib/advene/gui/main.py:4651
+msgid "Saving workspace"
+msgstr "Sauvegarde de l'environnement"
 
-#: ../lib/advene/rules/actions.py:295
-msgid "State value"
-msgstr "Valeu"
+#: ../lib/advene/gui/main.py:4654
+msgid "Enter a view name to save the workspace"
+msgstr "Entrez un nom de vue pour sauvegarder cet environnement"
 
-#: ../lib/advene/rules/actions.py:305
-msgid "Increment a state variable"
-msgstr "Incrémenter une variable d'état"
+#: ../lib/advene/gui/main.py:4655
+msgid "Default workspace"
+msgstr "Environnement standard"
 
-#: ../lib/advene/rules/actions.py:315
-msgid "Clear all state variables"
-msgstr "Effacer toutes les variables d'état"
+#: ../lib/advene/gui/main.py:4656
+msgid "Open this workspace when opening the package"
+msgstr "Ouvrir cet environnement lors du chargement du recueil"
 
-#: ../lib/advene/rules/actions.py:330
+#: ../lib/advene/gui/main.py:4679 ../lib/advene/gui/views/__init__.py:289
 #, python-format
-msgid "Error in the evaluation of the parameter %s:"
-msgstr "Erreur dans l'évaluation du paramètre %s :"
+msgid "Error: the identifier %s contains invalid characters."
+msgstr "Erreur : l'identifiant %s contient des caractères non valides."
 
-#: ../lib/advene/rules/actions.py:389 ../lib/advene/gui/plugins/actions.py:247
+#: ../lib/advene/gui/main.py:4690
 #, python-format
-msgid "The %s-related outgoing annotation"
-msgstr "L'annotation liée par une relation sortante de type %s"
+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/rules/actions.py:391 ../lib/advene/gui/plugins/actions.py:249
+#: ../lib/advene/gui/main.py:4721
 #, python-format
-msgid "The %s-related incoming annotation"
-msgstr "L'annotation liée par une relation entrante de type %s"
+msgid "Cannot save default workspace: %s"
+msgstr "Impossible de sauvegarder l'environnement par défaut : %s"
 
-#: ../lib/advene/rules/actions.py:551
-#, python-format
-msgid "Cannot find the stbv %s"
-msgstr "Impossible de trouver la vue dynamique %s"
+#: ../lib/advene/gui/main.py:4731
+msgid "Standard workspace has been saved"
+msgstr "L'environnement standard a été sauvé"
 
-#: ../lib/advene/rules/actions.py:615 ../lib/advene/gui/views/viewbook.py:263
-#, python-format
-msgid "Cannot find the view %s"
-msgstr "Impossible de trouver la vue  %s"
+#: ../lib/advene/gui/main.py:4738
+msgid "Website export"
+msgstr "Export de site web"
 
-#: ../lib/advene/rules/actions.py:647
-msgid "The set_rate method is unavailable."
-msgstr "La méthode set_rate n'est pas disponible"
+#: ../lib/advene/gui/main.py:4739
+msgid "Exporting views to a website"
+msgstr "Exporter les vues vers un site web"
 
-#: ../lib/advene/rules/actions.py:657
-msgid "No 'soundclips' resource folder in the package"
-msgstr "Pas de ressource 'soundclips' dans ce recueil"
+#: ../lib/advene/gui/main.py:4742
+msgid "Output directory"
+msgstr "Répertoire destination"
 
-#: ../lib/advene/rules/actions.py:683
-msgid "Full volume"
-msgstr "Volume maximum"
+#: ../lib/advene/gui/main.py:4751
+msgid "Specify the output directory"
+msgstr "Précisez le répertoire de destination"
 
-#: ../lib/advene/rules/actions.py:684
-msgid "Left"
-msgstr "Gauche"
+#: ../lib/advene/gui/main.py:4760
+msgid "Maximum recursion depth"
+msgstr "Niveau maximal de récursivité"
 
-#: ../lib/advene/rules/actions.py:685
-#: ../lib/advene/gui/edit/transcribe.py:1196
-msgid "Center"
-msgstr "Centrer"
+#: ../lib/advene/gui/main.py:4767
+msgid "Video URL"
+msgstr "URL de la vidéo"
 
-#: ../lib/advene/rules/actions.py:686
-msgid "Right"
-msgstr "À droite"
+#: ../lib/advene/gui/main.py:4769
+msgid ""
+"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 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/rules/elements.py:141
-msgid "is equal to"
-msgstr "est égal à"
+#: ../lib/advene/gui/main.py:4819
+msgid "Could not export data: "
+msgstr "Impossible d'exporter les données : "
 
-#: ../lib/advene/rules/elements.py:142
-msgid "is different from"
-msgstr "est différent de"
+#: ../lib/advene/gui/main.py:4821
+#, python-format
+msgid "Website export to %s completed"
+msgstr "Export de site web vers %s terminé"
 
-#: ../lib/advene/rules/elements.py:143
-msgid "contains"
-msgstr "contient"
+#: ../lib/advene/gui/main.py:4860
+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/rules/elements.py:144
-msgid "is greater than"
-msgstr "est supérieur à"
+#: ../lib/advene/gui/main.py:4870
+#, python-format
+msgid "Updating %d snapshots"
+msgstr "Mise-à-jour de %d vignette(s)"
 
-#: ../lib/advene/rules/elements.py:145
-msgid "is lower than"
-msgstr "est inférieur à"
+#: ../lib/advene/gui/main.py:4875
+msgid "No snapshot to update"
+msgstr "Aucune capture d'écran à mettre à jour"
 
-#: ../lib/advene/rules/elements.py:146
-msgid "matches the regexp"
-msgstr "correspond à l'expression"
+#: ../lib/advene/gui/main.py:4884
+msgid "You first must load a movie into Advene"
+msgstr "Vous devez d'abord charger un fichier vidéo dans Advene"
 
-#: ../lib/advene/rules/elements.py:147
-msgid "is before"
-msgstr "précède"
+#: ../lib/advene/gui/main.py:4887
+#, python-format
+msgid "The movie %s does not seem to exist."
+msgstr "Le fichier vidéo %s ne semble pas exister."
 
-#: ../lib/advene/rules/elements.py:148
-msgid "meets"
-msgstr "touch"
+#: ../lib/advene/gui/main.py:4943
+msgid "Generating screenshots"
+msgstr "Génération des vignettes"
 
-#: ../lib/advene/rules/elements.py:149
-msgid "overlaps"
-msgstr "intersecte"
+#: ../lib/advene/gui/main.py:4948
+msgid ""
+"<b>Screenshot generation</b>\n"
+"\n"
+"Screenshots will be captured approximately every 500ms.\n"
+"\n"
+"If the movie was paused or playing, the capture will begin at the current "
+"position. Else, it will begin at the beginning of the movie.\n"
+"Note that the main interface will not be refreshed as long as this window is "
+"open."
+msgstr ""
+"<b>Génération des vignettes</b>\n"
+"\n"
+"Des vignettes seront capturées environ toutes les 500ms.\n"
+"\n"
+"Si le film est en pause ou en train de jouer, la capture commencera à la "
+"position en cours. Sinon, elle commencera au début du film.\n"
+"Notez que l'interface d'Advene ne sera pas mise à jour tant que cette "
+"fenêtre est ouverte."
 
-#: ../lib/advene/rules/elements.py:150
-msgid "during"
-msgstr "est contenue dans"
+#: ../lib/advene/gui/plugins/shotvalidation.py:33
+msgid "Shot validation view"
+msgstr "Vue de validation de plans"
 
-#: ../lib/advene/rules/elements.py:151
-msgid "starts"
-msgstr "commence avec"
+#: ../lib/advene/gui/plugins/shotvalidation.py:35
+msgid "Display shot validation interface"
+msgstr "Afficher l'interface de validation de plans"
 
-#: ../lib/advene/rules/elements.py:152
-msgid "finishes"
-msgstr "termine avec"
+#: ../lib/advene/gui/plugins/shotvalidation.py:112
+#, python-format
+msgid "Merged #%(first)d-#%(second)d into #%(first)d"
+msgstr "Fusionné #%(first)d-#%(second)d dans #%(first)d"
 
-#: ../lib/advene/rules/elements.py:157
-msgid "is not true"
-msgstr "n'est pas vrai"
+#: ../lib/advene/gui/plugins/shotvalidation.py:137
+msgid "Last action undone"
+msgstr "Annulé la dernière action"
 
-#: ../lib/advene/rules/elements.py:158
-msgid "is true"
-msgstr "est vrai"
+#: ../lib/advene/gui/plugins/shotvalidation.py:155
+#, 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/rules/elements.py:162
-msgid "Basic conditions"
-msgstr "Conditions élémenaires"
+#: ../lib/advene/gui/plugins/shotvalidation.py:160
+#, 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/rules/elements.py:163
-msgid "Allen relations"
-msgstr "Relations de Allen"
+#: ../lib/advene/gui/plugins/shotvalidation.py:180
+#, python-format
+msgid "Changed cut between #%(first)d and %(second)d"
+msgstr "Changé le cut entre #%(first)d et %(second)d"
 
-#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
-msgid "Unknown type for overlaps comparison"
-msgstr "Type inconnu pour comparaison de recouvrement"
+#: ../lib/advene/gui/plugins/shotvalidation.py:183
+msgid "Changed begin time for first annotation"
+msgstr "Changé la borne de début pour la première annotation"
 
-#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
-msgid "Unknown type for during comparison"
-msgstr "Type inconnu pour comparaison"
+#: ../lib/advene/gui/plugins/shotvalidation.py:189
+msgid "No annotations to adjust"
+msgstr "Aucune annotation à ajuster"
 
-#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
-#, python-format
-msgid "Unknown action %s"
-msgstr "Action inconnue %s"
+#: ../lib/advene/gui/plugins/shotvalidation.py:196
+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 ""
+"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/rules/elements.py:522
+#: ../lib/advene/gui/plugins/shotvalidation.py:204
 #, python-format
-msgid "Unknown parameter %s"
-msgstr "Paramètre inconnu %s"
-
-#: ../lib/advene/rules/elements.py:527
-msgid "Unknown actions"
-msgstr "Actions inconnues"
+msgid "Begin of #%(index)d (title: %(content)s)"
+msgstr "Début de #%(index)d (titre: %(content)s)"
 
-#: ../lib/advene/rules/elements.py:972
-msgid "Start of the editing of an element"
-msgstr "Début de l'édition d'un élément"
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
+msgid "< Previous cut"
+msgstr "< Cut précédent"
 
-#: ../lib/advene/rules/elements.py:973
-msgid "Cancel of the editing of an element"
-msgstr "Abandon de l'édition d'un élément"
+#: ../lib/advene/gui/plugins/shotvalidation.py:219
+msgid "Display previous cut"
+msgstr "Afficher le cut précédent"
 
-#: ../lib/advene/rules/elements.py:974
-msgid "Destruction of the edit window of an element"
-msgstr "Destruction de la fenêtre d'édition d'un élément"
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
+msgid "Next cut >"
+msgstr "Cut suivant >"
 
-#: ../lib/advene/rules/elements.py:975
-msgid "Validation of the editing of an element"
-msgstr "Validation de l'édition d'un élément"
+#: ../lib/advene/gui/plugins/shotvalidation.py:227
+msgid "Display next cut"
+msgstr "Afficher le cut suivant"
 
-#: ../lib/advene/rules/elements.py:976
-msgid "Ending editing of a package"
-msgstr "Fin de l'édition d'un recueil"
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
+#: ../lib/advene/gui/views/annotationdisplay.py:92
+#: ../lib/advene/gui/views/timeline.py:86
+msgid "Current time"
+msgstr "Temps courant"
 
-#: ../lib/advene/rules/elements.py:977
-msgid "Beginning of an annotation"
-msgstr "Début d'une annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:253
+msgid "Go to annotation containing current player time."
+msgstr "Aller à l'annotation contenant le temps courant du lecteur"
 
-#: ../lib/advene/rules/elements.py:978
-msgid "End of an annotation"
-msgstr "Fin d'une annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
+#: ../lib/advene/gui/edit/frameselector.py:197
+msgid "Refresh snapshots"
+msgstr "Rafraîchir les captures d'écran"
 
-#: ../lib/advene/rules/elements.py:979
-msgid "Creation of a new annotation"
-msgstr "Création d'une nouvelle annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:258
+#: ../lib/advene/gui/edit/frameselector.py:198
+msgid "Refresh missing snapshots"
+msgstr "Rafraîchir les captures d'écran"
 
-#: ../lib/advene/rules/elements.py:980
-msgid "Ending editing of an annotation"
-msgstr "Fin de l'édition d'une annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:263
+msgid "Undo last modification"
+msgstr "Annuler la dernière modification"
 
-#: ../lib/advene/rules/elements.py:981
-msgid "Suppression of an annotation"
-msgstr "Suppression d'une annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
+msgid "Merge with previous"
+msgstr "Fusionner avec la précédente"
 
-#: ../lib/advene/rules/elements.py:982
-msgid "Activation of an annotation"
-msgstr "Activation d'une annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:270
+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/rules/elements.py:983
-msgid "Deactivation of an annotation"
-msgstr "Désactivation d'une annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:275
+msgid "Close view."
+msgstr "Fermer la vue"
 
-#: ../lib/advene/rules/elements.py:984
-msgid "Merging of two annotations"
-msgstr "Fusion de deux annotations"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:44
+msgid "Activity trace"
+msgstr "Trace d'activité"
 
-#: ../lib/advene/rules/elements.py:985
-msgid "Moving an annotation"
-msgstr "Déplacement d'une annotation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:74
+#: ../lib/advene/gui/plugins/eventaccumulator.py:75
+#: ../lib/advene/gui/plugins/tracetimeline.py:65
+#: ../lib/advene/gui/plugins/tracetimeline.py:66
+#: ../lib/advene/gui/plugins/tracepreview.py:73
+#: ../lib/advene/gui/plugins/tracepreview.py:74
+msgid "Beginning edition"
+msgstr "Début de l'édition"
 
-#: ../lib/advene/rules/elements.py:986
-msgid "Activation of a relation"
-msgstr "Activation d'une relation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:76
+#: ../lib/advene/gui/plugins/eventaccumulator.py:77
+#: ../lib/advene/gui/plugins/eventaccumulator.py:78
+#: ../lib/advene/gui/plugins/tracetimeline.py:67
+#: ../lib/advene/gui/plugins/tracetimeline.py:68
+#: ../lib/advene/gui/plugins/tracetimeline.py:69
+#: ../lib/advene/gui/plugins/tracepreview.py:75
+#: ../lib/advene/gui/plugins/tracepreview.py:76
+#: ../lib/advene/gui/plugins/tracepreview.py:77
+msgid "Canceling edition"
+msgstr "Abandon de l'édition"
 
-#: ../lib/advene/rules/elements.py:987
-msgid "Deactivation of a relation"
-msgstr "Désactivation d'une relation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:79
+#: ../lib/advene/gui/plugins/tracetimeline.py:70
+#: ../lib/advene/gui/plugins/tracepreview.py:78
+msgid "Ending edition"
+msgstr "Fin de l'édition"
 
-#: ../lib/advene/rules/elements.py:988
-msgid "Creation of a new relation"
-msgstr "Création d'une nouvelle relation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:135
+msgid " Trace : "
+msgstr "Trace : "
 
-#: ../lib/advene/rules/elements.py:989
-msgid "Ending editing of a relation"
-msgstr "Fin de l'édition d'une relation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:139
+msgid " Filters"
+msgstr "Filtres"
 
-#: ../lib/advene/rules/elements.py:990
-msgid "Suppression of a relation"
-msgstr "Suppression d'une relation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:168
+msgid " Time : "
+msgstr " Temps : "
 
-#: ../lib/advene/rules/elements.py:991
-msgid "Creation of a new view"
-msgstr "Création d'une nouvelle vue"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:178
+msgid " Max. : "
+msgstr " Max. : "
 
-#: ../lib/advene/rules/elements.py:992
-msgid "Ending editing of a view"
-msgstr "Fin de l'édition d'une Vue"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:187
+msgid "Export"
+msgstr "Export"
 
-#: ../lib/advene/rules/elements.py:993
-msgid "Suppression of a view"
-msgstr "Suppression d'une vue"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:203
+#: ../lib/advene/gui/plugins/tracetimeline.py:665
+msgid "Exporting traces"
+msgstr "Export des traces"
 
-#: ../lib/advene/rules/elements.py:994
-msgid "Creation of a new query"
-msgstr "Création d'une nouvelle requête"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:208
+#: ../lib/advene/gui/plugins/tracetimeline.py:670
+#, python-format
+msgid ""
+"Export done to\n"
+"%s"
+msgstr ""
+"Export effectué vers\n"
+"%s"
 
-#: ../lib/advene/rules/elements.py:995
-msgid "Ending editing of a query"
-msgstr "Fin de l'édition d'une requête"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:254
+msgid "Defining Filters"
+msgstr "Définition de filtres"
 
-#: ../lib/advene/rules/elements.py:996
-msgid "Suppression of a query"
-msgstr "Suppression d'une requête"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:560
+#: ../lib/advene/gui/plugins/eventaccumulator.py:615
+#: ../lib/advene/gui/plugins/tracepreview.py:215
+#, python-format
+msgid "of an annotation (%s)"
+msgstr "d'une annotation (%s)"
 
-#: ../lib/advene/rules/elements.py:997
-msgid "Creation of a new schema"
-msgstr "Création d'un nouveau schéma"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:562
+#: ../lib/advene/gui/plugins/eventaccumulator.py:617
+#: ../lib/advene/gui/plugins/tracepreview.py:217
+#, python-format
+msgid "of a relation (%s)"
+msgstr "d'une relation (%s)"
 
-#: ../lib/advene/rules/elements.py:998
-msgid "Ending editing of a schema"
-msgstr "Fin de l'édition d'un schéma"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:564
+#: ../lib/advene/gui/plugins/eventaccumulator.py:619
+#: ../lib/advene/gui/plugins/tracepreview.py:219
+#, python-format
+msgid "of an annotation type (%s)"
+msgstr "d'un type d'annotation (%s)"
 
-#: ../lib/advene/rules/elements.py:999
-msgid "Suppression of a schema"
-msgstr "Suppression d'un schéma"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:566
+#: ../lib/advene/gui/plugins/eventaccumulator.py:621
+#: ../lib/advene/gui/plugins/tracepreview.py:221
+#, python-format
+msgid "of a relation type (%s)"
+msgstr "d'un type de relation (%s)"
 
-#: ../lib/advene/rules/elements.py:1000
-#: ../lib/advene/gui/views/timeline.py:1029 ../lib/advene/gui/main.py:4555
-msgid "Creation of a new annotation type"
-msgstr "Création d'un nouveau type d'annotation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:568
+#: ../lib/advene/gui/plugins/eventaccumulator.py:623
+#: ../lib/advene/gui/plugins/tracepreview.py:223
+#, python-format
+msgid "of a schema (%s)"
+msgstr "d'un schéma (%s)"
 
-#: ../lib/advene/rules/elements.py:1001
-msgid "Ending editing an annotation type"
-msgstr "Fin de l'édition d'un type d'annotation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:570
+#: ../lib/advene/gui/plugins/eventaccumulator.py:625
+#: ../lib/advene/gui/plugins/tracepreview.py:225
+#, python-format
+msgid "of a view (%s)"
+msgstr "d'une vue (%s)"
 
-#: ../lib/advene/rules/elements.py:1002
-msgid "Suppression of an annotation type"
-msgstr "Suppression d'un type d'annotation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:572
+#: ../lib/advene/gui/plugins/eventaccumulator.py:627
+#: ../lib/advene/gui/plugins/tracepreview.py:227
+#, python-format
+msgid "of a package (%s)"
+msgstr "d'un recueil (%s)"
 
-#: ../lib/advene/rules/elements.py:1003
-msgid "Creation of a new relation type"
-msgstr "Création d'un nouveau type de relation"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:574
+#: ../lib/advene/gui/plugins/eventaccumulator.py:629
+#: ../lib/advene/gui/plugins/tracepreview.py:229
+#, python-format
+msgid "of an unknown item (%s)"
+msgstr "d'un élément inconnu (%s)"
 
-#: ../lib/advene/rules/elements.py:1004
-msgid "Ending editing a relation type"
-msgstr "Fin de l'édition d'un type de relation"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:380
+#, python-format
+msgid "Rendering type %(type)s as %(presentation)s"
+msgstr "Rendu du type %(type)s sous forme de %(presentation)s"
 
-#: ../lib/advene/rules/elements.py:1005
-msgid "Suppression of a relation type"
-msgstr "Suppression d'un type de relation"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
+msgid "Snapshot only"
+msgstr "Vignette seulement"
 
-#: ../lib/advene/rules/elements.py:1006
-msgid "Creation of a new resource"
-msgstr "Création d'une nouvelle ressource"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
+msgid "Overlayed snapshot only"
+msgstr "Vignette enrichiee seulement"
 
-#: ../lib/advene/rules/elements.py:1007
-msgid "Ending editing of a resource"
-msgstr "Fin de l'édition d'une ressource"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
+msgid "Timestamp only"
+msgstr "Temps seulement"
 
-#: ../lib/advene/rules/elements.py:1008
-msgid "Suppression of a resource"
-msgstr "Suppression d'une ressource"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:528
+msgid "Snapshot+timestamp"
+msgstr "Vignette+temps"
 
-#: ../lib/advene/rules/elements.py:1009
-msgid "Modification of the tag"
-msgstr "Modification du tag"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:529
+msgid "Annotation content"
+msgstr "Le contenu de l'annotation"
 
-#: ../lib/advene/rules/elements.py:1010
-msgid "Activating a link"
-msgstr "Activation d'un lien"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:544
+msgid "as a list"
+msgstr "comme une liste"
 
-#: ../lib/advene/rules/elements.py:1011
-msgid "Player start"
-msgstr "Lecture"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:545
+msgid "as a grid"
+msgstr "comme une grille"
 
-#: ../lib/advene/rules/elements.py:1012
-msgid "Player stop"
-msgstr "Stop"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:546
+msgid "as a table"
+msgstr "comme une table"
 
-#: ../lib/advene/rules/elements.py:1013
-msgid "Player pause"
-msgstr "Pause"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:547
+#: ../lib/advene/gui/views/viewbook.py:379
+msgid "as a transcription"
+msgstr "comme une transcription"
 
-#: ../lib/advene/rules/elements.py:1014
-msgid "Player resume"
-msgstr "Relance"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/views/transcription.py:461
+#, python-format
+msgid "Annotation %s"
+msgstr "Annotation %s"
 
-#: ../lib/advene/rules/elements.py:1015
-msgid "Going to a given position"
-msgstr "Déplacement à une position donnée"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:685
+msgid "Play video"
+msgstr "Jouer la vidéo"
 
-#: ../lib/advene/rules/elements.py:1016
-msgid "Loading a new package"
-msgstr "Chargement d'un nouveau recueil"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
+msgid "Show timestamp only"
+msgstr "Temps seulement"
 
-#: ../lib/advene/rules/elements.py:1017
-msgid "Activating a package"
-msgstr "Activation d'un recueil"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
+msgid "Show content only"
+msgstr "Contenu seulement"
 
-#: ../lib/advene/rules/elements.py:1018
-msgid "Saving the package"
-msgstr "Sauvegarde du recueil"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:669
+msgid "Show snapshot only"
+msgstr "Vignette seulement"
 
-#: ../lib/advene/rules/elements.py:1019
-msgid "Start of the dynamic view"
-msgstr "Activation d'une vue dynamique"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
+msgid "Show overlayed timestamp"
+msgstr "Vignette + timecode surimprimé"
 
-#: ../lib/advene/rules/elements.py:1020
-msgid "End of the dynamic view"
-msgstr "Fin d'une vue dynamique"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+msgid "Show overlayed content"
+msgstr "Vignette + contenu surimprimé"
 
-#: ../lib/advene/rules/elements.py:1021
-msgid "Start of the application"
-msgstr "Début de l'application"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#, python-format
+msgid "Annotation type %s"
+msgstr "Type d'annotations %s"
 
-#: ../lib/advene/rules/elements.py:1022
-msgid "End of the application"
-msgstr "Fin de l'application"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:675
+msgid "display as list"
+msgstr "afficher comme une liste"
 
-#: ../lib/advene/rules/elements.py:1023
-msgid "User-defined event"
-msgstr "Événement utilisateur"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:676
+msgid "display as grid"
+msgstr "afficher comme une grille"
 
-#: ../lib/advene/rules/elements.py:1024
-msgid "Modification of the associated media"
-msgstr "Modification du média associé"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:677
+msgid "display as table"
+msgstr "afficher comme une table"
 
-#: ../lib/advene/rules/elements.py:1025
-msgid "Highlight a bookmark"
-msgstr "Surligner un signet"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:678
+msgid "display as transcription"
+msgstr "afficher comme une transcription"
 
-#: ../lib/advene/rules/elements.py:1026
-msgid "Unhighlight a bookmark"
-msgstr "Désurligner un signet"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:687
+msgid "Open link"
+msgstr "Ouvrir le lien"
 
-#: ../lib/advene/rules/elements.py:1027
-msgid "Updating duration of the movie"
-msgstr "Modification de la durée du film"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:743
+#, python-format
+msgid "HTML editor: cannot parse content (%s)"
+msgstr "Éditeur HTML: impossible de traiter le contenu (%s)"
 
-#: ../lib/advene/rules/elements.py:1028
-msgid "Displaying a popup"
-msgstr "Affichage d'une popup"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#, python-format
+msgid "Heading %d"
+msgstr "Titre %d"
 
-#: ../lib/advene/rules/elements.py:1029
-msgid "Updating a snapshot"
-msgstr "Mise-à-jour d'une vignette"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
+msgid "Bold"
+msgstr "Gras"
 
-#: ../lib/advene/rules/elements.py:1067
-msgid "Player control"
-msgstr "Contrôle du lecteur"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:786
+msgid "Italic"
+msgstr "Italique"
 
-#: ../lib/advene/rules/elements.py:1068
-msgid "Audio enrichment"
-msgstr "Enrichissement audio"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
+msgid "Header"
+msgstr "Titre"
 
-#: ../lib/advene/rules/elements.py:1069
-msgid "Image enrichment"
-msgstr "Enrichissement image"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+msgid "Copy"
+msgstr "Copier"
 
-#: ../lib/advene/rules/elements.py:1070
-msgid "External display control"
-msgstr "Contrôle d'un affichage extérieur"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:790
+msgid "Cut"
+msgstr "Couper"
 
-#: ../lib/advene/rules/elements.py:1071
-msgid "Popup"
-msgstr "Popup"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
+msgid "Paste"
+msgstr "Coller"
 
-#: ../lib/advene/rules/elements.py:1073
-msgid "State"
-msgstr "Statut "
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:793
+#: ../lib/advene/gui/views/timeline.py:139
+msgid "Refresh"
+msgstr "Rafraîchir"
 
-#: ../lib/advene/rules/elements.py:1074
-msgid "GUI actions"
-msgstr "Actions sur l'interface"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:849
+msgid "WYSIWYG editor"
+msgstr "Éditeur WYSIWYG"
 
-#: ../lib/advene/rules/elements.py:1075
-msgid "Expert"
-msgstr "Expert"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:859
+msgid "Edit HTML source"
+msgstr "Éditer le source HTML"
 
-#: ../lib/advene/gui/util/initialconfig.py:82
-msgid "Initial Advene configuration"
-msgstr "Configuration initiale d'Advene"
+#: ../lib/advene/gui/plugins/tracetimeline.py:71
+#: ../lib/advene/gui/plugins/tracepreview.py:79
+msgid "Moving to"
+msgstr "Déplacement à"
 
-#: ../lib/advene/gui/util/initialconfig.py:83
-msgid ""
-"<span size='large'><b>Welcome in Advene</b>\n"
-"This is the first time that you run Advene. Please answer some basic "
-"configuration questions. You will be able to modify these choices from the "
-"Advene interface, in the Edit/Preferences menu.</span>"
-msgstr ""
-"<span size='large'><b>Bienvenue dans Advene</b>\n"
-"C'est la première fois que vous utilisez Advene. Vous pouvez maintenant "
-"fixer certaines options de configuration essentielles. Vous pourrez modifier "
-"plus tard ces choix depuis l'interface d'Advene, dans le menu Edit/"
-"Préférences.</span>"
+#: ../lib/advene/gui/plugins/tracetimeline.py:87
+msgid "Traces"
+msgstr "Traces"
 
-#: ../lib/advene/gui/util/initialconfig.py:84
-msgid "Interface language"
-msgstr "Langue de l'interface"
+#: ../lib/advene/gui/plugins/tracetimeline.py:213
+#, python-format
+msgid "%(name)s (%(index)d)"
+msgstr "%(name)s (%(index)d)"
 
-#: ../lib/advene/gui/util/initialconfig.py:84
-msgid "Language used for the interface"
-msgstr "Langue utilisée pour l'interface"
+#: ../lib/advene/gui/plugins/tracetimeline.py:241
+msgid "Search"
+msgstr "Chercher"
 
-#: ../lib/advene/gui/util/initialconfig.py:88 ../lib/advene/gui/main.py:4247
-msgid "System default"
-msgstr "La valeur du système"
+#: ../lib/advene/gui/plugins/tracetimeline.py:254
+#: ../lib/advene/gui/plugins/tracetimeline.py:1219
+#, python-format
+msgid "%(name)s (%(index)s)"
+msgstr "%(name)s (%(index)s)"
 
-#: ../lib/advene/gui/util/initialconfig.py:90
-msgid "Weekly check for Advene updates on the Advene website"
-msgstr "Vérification hebdomadaire des mises à jour depuis le site web d'Advene"
+#: ../lib/advene/gui/plugins/tracetimeline.py:426
+#: ../lib/advene/gui/views/timeline.py:3457
+#: ../lib/advene/gui/edit/montage.py:446
+msgid "Zoom out"
+msgstr "Dézoomer"
 
-#: ../lib/advene/gui/util/initialconfig.py:90 ../lib/advene/gui/main.py:4273
-msgid "Weekly check for updates on the Advene website"
-msgstr ""
-"Vérifier hebdomadairement si des mises à jour d'Advene sont disponibles"
+#: ../lib/advene/gui/plugins/tracetimeline.py:431
+#: ../lib/advene/gui/views/timeline.py:3462
+#: ../lib/advene/gui/edit/montage.py:451
+msgid "Zoom in"
+msgstr "Zoomer"
 
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for data files"
-msgstr "Répertoire préféré pour les fichiers de données"
+#: ../lib/advene/gui/plugins/tracetimeline.py:436
+msgid "Zoom 100%"
+msgstr "Zoom 100%"
 
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for storing data files (Advene packages)"
-msgstr ""
-"Répertoire préféré pour stocker les fichiers de données (recueils Advene)"
+#: ../lib/advene/gui/plugins/tracetimeline.py:440
+msgid "Toggle links lock"
+msgstr "Modifier le verrou des liens"
 
-#: ../lib/advene/gui/util/initialconfig.py:94
-msgid "Directories to search for movies"
-msgstr "Répertoires où chercher les films référencés"
+#: ../lib/advene/gui/plugins/tracetimeline.py:448
+msgid "Toggle link mode"
+msgstr "Modifier le mode verrou"
 
-#: ../lib/advene/gui/util/initialconfig.py:94
-#, python-format
-msgid ""
-"List of directories (separated by %(pathsep)s) to search for movie files."
-msgstr "Liste de répertoires (séparés par %(pathsep)s) où chercher les vidéos."
+#: ../lib/advene/gui/plugins/tracetimeline.py:455
+msgid "Open a trace file"
+msgstr "Ouvrir un fichier de trace"
 
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid "First look for movie file in the same directory as the package"
-msgstr ""
-"Chercher d'abord le fichier vidéo dans le même répertoire que le recueil"
+#: ../lib/advene/gui/plugins/tracetimeline.py:470
+msgid "Toggle auto refresh"
+msgstr "Changer le rafraîchissement automatique"
 
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid ""
-"If checked, the movie file will be searched for in the same directory as the "
-"referencing package."
-msgstr ""
-"Si cette case est cochée, les fichiers vidéos seront recherchés d'abord dans "
-"le même répertoire que le recueil qui les référence."
+#: ../lib/advene/gui/plugins/tracetimeline.py:481
+msgid "Open an existing trace"
+msgstr "Ouvrir une trace existante"
 
-#: ../lib/advene/gui/util/__init__.py:39
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
-#: ../lib/advene/gui/edit/create.py:106
-msgid "Plain text content"
-msgstr "Contenu textuel"
+#: ../lib/advene/gui/plugins/tracetimeline.py:487
+msgid "Save trace"
+msgstr "Sauver la trace"
 
-#: ../lib/advene/gui/util/__init__.py:40
-msgid "HTML content"
-msgstr "Contenu HTML"
+#: ../lib/advene/gui/plugins/tracetimeline.py:492
+msgid "Configuration"
+msgstr "Configuration"
 
-#: ../lib/advene/gui/util/__init__.py:41
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
-#: ../lib/advene/gui/edit/create.py:107
-msgid "Simple-structured content"
-msgstr "Contenu simplement structuré"
+#: ../lib/advene/gui/plugins/tracetimeline.py:946
+msgid "Zoom and center on linked items"
+msgstr "Zoomer et centrer sur les items liés"
 
-#: ../lib/advene/gui/util/__init__.py:42
-msgid "List of numeric values"
-msgstr "Liste de valeurs numériques"
+#: ../lib/advene/gui/plugins/tracetimeline.py:955
+msgid "Edit item"
+msgstr "Éditer l'élément"
 
-#: ../lib/advene/gui/util/__init__.py:43
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
-#: ../lib/advene/gui/edit/create.py:108
-msgid "SVG graphics content"
-msgstr "Contenu graphique SVG"
+#: ../lib/advene/gui/plugins/tracetimeline.py:959
+msgid "Recreate item"
+msgstr "Recréer l'élément"
 
-#: ../lib/advene/gui/util/__init__.py:459
-#, python-format
-msgid ""
-"Annotation Type %(title)s:\n"
-"%(count)s"
-msgstr ""
-"Type d'annotation %(title)s:\n"
-"%(count)s"
+#: ../lib/advene/gui/plugins/tracetimeline.py:975
+#: ../lib/advene/gui/plugins/tracetimeline.py:996
+#: ../lib/advene/gui/views/timeline.py:2584 ../lib/advene/gui/popup.py:513
+#: ../lib/advene/gui/edit/transcribe.py:500
+msgid "Go to..."
+msgstr "Aller à..."
 
-#: ../lib/advene/gui/util/__init__.py:465
-#, python-format
-msgid ""
-"Relation Type %(title)s:\n"
-"%(count)s"
-msgstr ""
-"Type de relation %(title)s:\n"
-"%(count)s"
+#: ../lib/advene/gui/plugins/tracetimeline.py:979
+msgid "Zoom on action"
+msgstr "Zoom sur l'action"
 
-#: ../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
-#: ../lib/advene/gui/views/table.py:557 ../lib/advene/gui/main.py:4176
-msgid "Title"
-msgstr "Titre"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2023
+#: ../lib/advene/gui/views/timeline.py:3331
+#: ../lib/advene/gui/edit/montage.py:541
+msgid "Inspector"
+msgstr "Inspecteur"
 
-#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/rules.py:1092
-#: ../lib/advene/gui/edit/imports.py:325
-#: ../lib/advene/gui/edit/elements.py:507
-#: ../lib/advene/gui/edit/elements.py:556
-#: ../lib/advene/gui/edit/elements.py:644
-#: ../lib/advene/gui/edit/elements.py:724
-#: ../lib/advene/gui/edit/elements.py:873
-#: ../lib/advene/gui/edit/elements.py:942
-#: ../lib/advene/gui/edit/elements.py:1054
-#: ../lib/advene/gui/edit/elements.py:1115
-#: ../lib/advene/gui/views/table.py:255 ../lib/advene/gui/views/table.py:559
-msgid "Id"
-msgstr "Id"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2028
+msgid "Item Id"
+msgstr "Id de l'élément"
 
-#: ../lib/advene/gui/util/dialog.py:404 ../lib/advene/gui/util/dialog.py:443
-msgid "Name the element"
-msgstr "Nommer l'élément"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2031
+msgid "Item name or class"
+msgstr "Nom ou classe de l'élément"
 
-#: ../lib/advene/gui/util/dialog.py:407 ../lib/advene/gui/util/dialog.py:444
-msgid "Choose a name for the element"
-msgstr "Choisissez un nom pour l'élément"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
+msgid "Type or schema"
+msgstr "Type ou schéma"
 
-#: ../lib/advene/gui/util/dialog.py:482
-msgid "Open a file"
-msgstr "Ouvrir un fichier"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
+msgid "Operations"
+msgstr "Opérations"
 
-#: ../lib/advene/gui/util/dialog.py:507 ../lib/advene/gui/util/dialog.py:543
-msgid "N/C"
-msgstr "N/C"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2081
+msgid "Comment"
+msgstr "Commentaire"
 
-#: ../lib/advene/gui/util/dialog.py:512
-msgid "Alias"
-msgstr "Alias"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2113
+#: ../lib/advene/gui/edit/merge.py:191
+msgid "Action"
+msgstr "Action"
 
-#: ../lib/advene/gui/util/dialog.py:532
-msgid ""
-"Press to\n"
-"display\n"
-"information"
-msgstr ""
-"Cliquez pour\n"
-"afficher\n"
-"des informations"
+#: ../lib/advene/gui/plugins/logmessages.py:35
+msgid "Log Messages"
+msgstr "Messages d'information"
 
-#: ../lib/advene/gui/util/dialog.py:551
-msgid "Wait..."
-msgstr "Patientez..."
+#: ../lib/advene/gui/plugins/actions.py:40 ../lib/advene/core/controller.py:277
+#: ../lib/advene/rules/actions.py:36
+msgid "Display a message"
+msgstr "Affiche un message"
 
-#: ../lib/advene/gui/util/dialog.py:555
-#, python-format
-msgid "Error: %s"
-msgstr "Erreur : %s"
+#: ../lib/advene/gui/plugins/actions.py:41
+#: ../lib/advene/gui/plugins/actions.py:53
+#: ../lib/advene/gui/plugins/actions.py:71
+#: ../lib/advene/gui/plugins/actions.py:86
+#: ../lib/advene/gui/plugins/actions.py:102
+#: ../lib/advene/gui/plugins/actions.py:203
+#: ../lib/advene/core/controller.py:278
+msgid "String to display."
+msgstr "Chaîne de caractères à afficher"
 
-#: ../lib/advene/gui/util/dialog.py:575
-msgid "Any type of file"
-msgstr "Tout type de fichier"
+#: ../lib/advene/gui/plugins/actions.py:44
+#: ../lib/advene/gui/plugins/actions.py:58
+#: ../lib/advene/gui/plugins/actions.py:110
+#: ../lib/advene/gui/plugins/actions.py:399
+#: ../lib/advene/gui/plugins/actions.py:527 ../lib/advene/gui/edit/rules.py:770
+#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
+#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
+#: ../lib/advene/rules/actions.py:123
+msgid "The annotation content"
+msgstr "Le contenu de l'annotation"
 
-#: ../lib/advene/gui/util/dialog.py:577
-msgid "Advene files (.xml, .azp, .apl)"
-msgstr "Fichiers advene (.xml, .azp, .apl)"
+#: ../lib/advene/gui/plugins/actions.py:52
+msgid "Display a popup"
+msgstr "Afficher une popup"
 
-#: ../lib/advene/gui/util/dialog.py:579
-msgid "Advene session (.apl)"
-msgstr "Session Advene (.apl)"
+#: ../lib/advene/gui/plugins/actions.py:54
+#: ../lib/advene/gui/plugins/actions.py:73
+#: ../lib/advene/gui/plugins/actions.py:88
+#: ../lib/advene/gui/plugins/actions.py:104
+#: ../lib/advene/gui/plugins/actions.py:160
+#: ../lib/advene/gui/plugins/actions.py:184
+msgid "Display duration in ms. Ignored if empty."
+msgstr "Durée de l'affichage en ms. Ignoré si vide."
 
-#: ../lib/advene/gui/util/dialog.py:580
-msgid "Audio files"
-msgstr "Fichiers audio"
+#: ../lib/advene/gui/plugins/actions.py:61
+#: ../lib/advene/gui/plugins/actions.py:121
+#: ../lib/advene/gui/plugins/actions.py:403
+#: ../lib/advene/gui/plugins/actions.py:538 ../lib/advene/rules/actions.py:110
+#: ../lib/advene/rules/actions.py:172
+msgid "1 second"
+msgstr "1 seconde"
 
-#: ../lib/advene/gui/util/dialog.py:581
-msgid "Video files"
-msgstr "Fichiers vidéo"
+#: ../lib/advene/gui/plugins/actions.py:62
+#: ../lib/advene/gui/plugins/actions.py:122
+#: ../lib/advene/gui/plugins/actions.py:404
+#: ../lib/advene/gui/plugins/actions.py:539 ../lib/advene/gui/edit/rules.py:777
+#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
+msgid "The annotation duration"
+msgstr "La durée de l'annotation"
 
-#: ../lib/advene/gui/util/dialog.py:626
-#: ../lib/advene/gui/edit/properties.py:418
-msgid "Choose a directory"
-msgstr "Choisissez un répertoire"
+#: ../lib/advene/gui/plugins/actions.py:70
+msgid "Popup an entry box"
+msgstr "Affiche une fenêtre proposant d'entrer du texte"
 
-#: ../lib/advene/gui/util/dialog.py:679
-msgid "Select an element"
-msgstr "Choisissez un élément"
+#: ../lib/advene/gui/plugins/actions.py:72
+msgid "Object where to store the answer (should have a content)"
+msgstr "Objet où stocker la réponse (doit posséder un attribut content)"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:32
-msgid "Shot validation view"
-msgstr "Vue de validation de plans"
+#: ../lib/advene/gui/plugins/actions.py:84
+msgid "Display a popup to go to another position"
+msgstr "Affiche une fenêtre proposant d'aller à une nouvelle position"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:34
-msgid "Display shot validation interface"
-msgstr "Afficher l'interface de validation de plans"
+#: ../lib/advene/gui/plugins/actions.py:85
+#: ../lib/advene/gui/plugins/actions.py:101
+#: ../lib/advene/gui/plugins/actions.py:155
+#: ../lib/advene/gui/plugins/actions.py:177
+msgid "General description"
+msgstr "Description générale"
 
-#: ../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/actions.py:87
+msgid "New position"
+msgstr "Nouvelle position"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:136
-msgid "Last action undone"
-msgstr "Annulé la dernière action"
-
-#: ../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: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: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: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:188
-msgid "No annotations to adjust"
-msgstr "Aucune annotation à ajuster"
-
-#: ../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 ""
-"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: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:217
-msgid "< Previous cut"
-msgstr "< Cut précédent"
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:218
-msgid "Display previous cut"
-msgstr "Afficher le cut précédent"
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:225
-msgid "Next cut >"
-msgstr "Cut suivant >"
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:226
-msgid "Display next cut"
-msgstr "Afficher le cut suivant"
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:251
-#: ../lib/advene/gui/views/timeline.py:81
-#: ../lib/advene/gui/views/annotationdisplay.py:90
-msgid "Current time"
-msgstr "Temps courant"
-
-#: ../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:256
-#: ../lib/advene/gui/edit/frameselector.py:193
-msgid "Refresh snapshots"
-msgstr "Rafraîchir les captures d'écran"
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:257
-#: ../lib/advene/gui/edit/frameselector.py:194
-msgid "Refresh missing snapshots"
-msgstr "Rafraîchir les captures d'écran"
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:261
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:806
-#: ../lib/advene/gui/edit/transcribe.py:1211 ../lib/advene/gui/main.py:350
-msgid "Undo"
-msgstr "Undo"
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:262
-msgid "Undo last modification"
-msgstr "Annuler la dernière modification"
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:268
-msgid "Merge with previous"
-msgstr "Fusionner avec la précédente"
-
-#: ../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:274
-msgid "Close view."
-msgstr "Fermer la vue"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:60
-#: ../lib/advene/gui/plugins/tracetimeline.py:61
-#: ../lib/advene/gui/plugins/eventaccumulator.py:73
-#: ../lib/advene/gui/plugins/eventaccumulator.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:72
-#: ../lib/advene/gui/plugins/tracepreview.py:73
-msgid "Beginning edition"
-msgstr "Début de l'édition"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:62
-#: ../lib/advene/gui/plugins/tracetimeline.py:63
-#: ../lib/advene/gui/plugins/tracetimeline.py:64
-#: ../lib/advene/gui/plugins/eventaccumulator.py:75
-#: ../lib/advene/gui/plugins/eventaccumulator.py:76
-#: ../lib/advene/gui/plugins/eventaccumulator.py:77
-#: ../lib/advene/gui/plugins/tracepreview.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:75
-#: ../lib/advene/gui/plugins/tracepreview.py:76
-msgid "Canceling edition"
-msgstr "Abandon de l'édition"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:65
-#: ../lib/advene/gui/plugins/eventaccumulator.py:78
-#: ../lib/advene/gui/plugins/tracepreview.py:77
-msgid "Ending edition"
-msgstr "Fin de l'édition"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:66
-#: ../lib/advene/gui/plugins/tracepreview.py:78
-msgid "Moving to"
-msgstr "Déplacement à"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:82
-msgid "Traces"
-msgstr "Traces"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:208
-#, python-format
-msgid "%(name)s (%(index)d)"
-msgstr "%(name)s (%(index)d)"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:236
-msgid "Search"
-msgstr "Chercher"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1224
-#, python-format
-msgid "%(name)s (%(index)s)"
-msgstr "%(name)s (%(index)s)"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:421
-#: ../lib/advene/gui/edit/montage.py:439
-#: ../lib/advene/gui/views/timeline.py:3444
-msgid "Zoom out"
-msgstr "Dézoomer"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:426
-#: ../lib/advene/gui/edit/montage.py:444
-#: ../lib/advene/gui/views/timeline.py:3449
-msgid "Zoom in"
-msgstr "Zoomer"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:431
-msgid "Zoom 100%"
-msgstr "Zoom 100%"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:435
-msgid "Toggle links lock"
-msgstr "Modifier le verrou des liens"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:443
-msgid "Toggle link mode"
-msgstr "Modifier le mode verrou"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:450
-msgid "Open a trace file"
-msgstr "Ouvrir un fichier de trace"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:465
-msgid "Toggle auto refresh"
-msgstr "Changer le rafraîchissement automatique"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:476
-msgid "Open an existing trace"
-msgstr "Ouvrir une trace existante"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:482
-msgid "Save trace"
-msgstr "Sauver la trace"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:487
-msgid "Configuration"
-msgstr "Configuration"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:668
-#: ../lib/advene/gui/plugins/eventaccumulator.py:202
-msgid "Exporting traces"
-msgstr "Export des traces"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:673
-#: ../lib/advene/gui/plugins/eventaccumulator.py:207
-#, python-format
-msgid ""
-"Export done to\n"
-"%s"
-msgstr ""
-"Export effectué vers\n"
-"%s"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:951
-msgid "Zoom and center on linked items"
-msgstr "Zoomer et centrer sur les items liés"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:960
-msgid "Edit item"
-msgstr "Éditer l'élément"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:964
-msgid "Recreate item"
-msgstr "Recréer l'élément"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:980
-#: ../lib/advene/gui/plugins/tracetimeline.py:1001
-#: ../lib/advene/gui/edit/transcribe.py:502
-#: ../lib/advene/gui/views/timeline.py:2556 ../lib/advene/gui/popup.py:513
-msgid "Go to..."
-msgstr "Aller à..."
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:984
-msgid "Zoom on action"
-msgstr "Zoom sur l'action"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
-#: ../lib/advene/gui/edit/montage.py:535
-#: ../lib/advene/gui/views/timeline.py:3318
-msgid "Inspector"
-msgstr "Inspecteur"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2035
-msgid "Item Id"
-msgstr "Id de l'élément"
-
-#: ../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:2042
-msgid "Type or schema"
-msgstr "Type ou schéma"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2045
-msgid "Operations"
-msgstr "Opérations"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2087
-msgid "Comment"
-msgstr "Commentaire"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2119
-#: ../lib/advene/gui/edit/merge.py:191
-msgid "Action"
-msgstr "Action"
-
-#: ../lib/advene/gui/plugins/kinect.py:41
-msgid "Kinect Controller"
-msgstr "Contrôleur Kinect"
-
-#: ../lib/advene/gui/plugins/kinect.py:43
-msgid "Kinect control interface"
-msgstr "Interface de contrôle Kinect"
-
-#: ../lib/advene/gui/plugins/actions.py:52
-msgid "Display a popup"
-msgstr "Afficher une popup"
-
-#: ../lib/advene/gui/plugins/actions.py:54
-#: ../lib/advene/gui/plugins/actions.py:73
-#: ../lib/advene/gui/plugins/actions.py:88
-#: ../lib/advene/gui/plugins/actions.py:104
-#: ../lib/advene/gui/plugins/actions.py:160
-#: ../lib/advene/gui/plugins/actions.py:184
-msgid "Display duration in ms. Ignored if empty."
-msgstr "Durée de l'affichage en ms. Ignoré si vide."
-
-#: ../lib/advene/gui/plugins/actions.py:70
-msgid "Popup an entry box"
-msgstr "Affiche une fenêtre proposant d'entrer du texte"
-
-#: ../lib/advene/gui/plugins/actions.py:72
-msgid "Object where to store the answer (should have a content)"
-msgstr "Objet où stocker la réponse (doit posséder un attribut content)"
-
-#: ../lib/advene/gui/plugins/actions.py:84
-msgid "Display a popup to go to another position"
-msgstr "Affiche une fenêtre proposant d'aller à une nouvelle position"
-
-#: ../lib/advene/gui/plugins/actions.py:85
-#: ../lib/advene/gui/plugins/actions.py:101
-#: ../lib/advene/gui/plugins/actions.py:155
-#: ../lib/advene/gui/plugins/actions.py:177
-msgid "General description"
-msgstr "Description générale"
-
-#: ../lib/advene/gui/plugins/actions.py:87
-msgid "New position"
-msgstr "Nouvelle position"
-
-#: ../lib/advene/gui/plugins/actions.py:90
-#: ../lib/advene/gui/plugins/actions.py:191
-msgid "Go to related annotation"
-msgstr "Aller à l'annotation liée"
+#: ../lib/advene/gui/plugins/actions.py:90
+#: ../lib/advene/gui/plugins/actions.py:191
+msgid "Go to related annotation"
+msgstr "Aller à l'annotation liée"
 
 #: ../lib/advene/gui/plugins/actions.py:100
 msgid "Display a popup linking to an URL"
 msgstr "Affiche une fenêtre proposant une URL"
 
+#: ../lib/advene/gui/plugins/actions.py:103
+#: ../lib/advene/gui/views/logwindow.py:159 ../lib/advene/rules/actions.py:226
+msgid "URL"
+msgstr "URL"
+
 #: ../lib/advene/gui/plugins/actions.py:106
 msgid "string:Display annotation in web browser"
 msgstr "string:Affiche l'annotation dans un navigateur web"
@@ -3414,7 +2937,7 @@ msgid "Destination: popup, south, east"
 msgstr "Destination: popup, south, east"
 
 #: ../lib/advene/gui/plugins/actions.py:144
-#: ../lib/advene/gui/views/viewbook.py:308
+#: ../lib/advene/gui/views/viewbook.py:307
 msgid "Open a saved view"
 msgstr "Ouvrir une vue sauvegardée"
 
@@ -3494,39 +3017,40 @@ msgstr "Contenu du signet"
 msgid "Bookmark"
 msgstr "Signet"
 
-#: ../lib/advene/gui/plugins/actions.py:276
-#, python-format
-msgid "Error: undefined GUI view %s"
-msgstr "Erreur : la vue d'interface %s n'est pas définie"
-
-#: ../lib/advene/gui/plugins/actions.py:286
-#: ../lib/advene/gui/views/viewbook.py:124 ../lib/advene/gui/main.py:1189
-msgid "...in its own window"
-msgstr "...dans sa propre fenêtre"
+#: ../lib/advene/gui/plugins/actions.py:234 ../lib/advene/plugins/brltty.py:240
+#: ../lib/advene/plugins/tts.py:110
+msgid "Unknown rule"
+msgstr "Règle inconnue"
 
-#: ../lib/advene/gui/plugins/actions.py:287
-#: ../lib/advene/gui/views/viewbook.py:125
-#: ../lib/advene/gui/views/__init__.py:381 ../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/plugins/actions.py:235 ../lib/advene/plugins/brltty.py:241
+#: ../lib/advene/plugins/tts.py:111
+#, python-format
+msgid ""
+"Rule %(rulename)s: Error in the evaluation of the parameter "
+"%(parametername)s:"
+msgstr ""
+"Règle %(rulename)s: erreur dans l'évaluation du paramètre %(parametername)s:"
 
-#: ../lib/advene/gui/plugins/actions.py:288
-#: ../lib/advene/gui/views/viewbook.py:126
-#: ../lib/advene/gui/views/__init__.py:382 ../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/plugins/actions.py:247 ../lib/advene/rules/actions.py:389
+#, python-format
+msgid "The %s-related outgoing annotation"
+msgstr "L'annotation liée par une relation sortante de type %s"
 
-#: ../lib/advene/gui/plugins/actions.py:289
-#: ../lib/advene/gui/views/viewbook.py:127
-#: ../lib/advene/gui/views/__init__.py:383 ../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/plugins/actions.py:249 ../lib/advene/rules/actions.py:391
+#, python-format
+msgid "The %s-related incoming annotation"
+msgstr "L'annotation liée par une relation entrante de type %s"
 
-#: ../lib/advene/gui/plugins/actions.py:290
-#: ../lib/advene/gui/views/viewbook.py:128
-#: ../lib/advene/gui/views/__init__.py:384 ../lib/advene/gui/main.py:1193
-msgid "...embedded at the right of the window"
-msgstr "...intégrée à droite de la vidéo"
+#: ../lib/advene/gui/plugins/actions.py:259
+#: ../lib/advene/gui/plugins/actions.py:340
+#: ../lib/advene/gui/plugins/actions.py:358 ../lib/advene/plugins/tts.py:131
+msgid "No message..."
+msgstr "Pas de message"
+
+#: ../lib/advene/gui/plugins/actions.py:276
+#, python-format
+msgid "Error: undefined GUI view %s"
+msgstr "Erreur : la vue d'interface %s n'est pas définie"
 
 #: ../lib/advene/gui/plugins/actions.py:322
 #, python-format
@@ -3616,100 +3140,19 @@ msgstr "Navigation de relation"
 msgid "New bookmark"
 msgstr "Nouveau signet"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:43
-msgid "Activity trace"
-msgstr "Trace d'activité"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:134
-msgid " Trace : "
-msgstr "Trace : "
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:138
-msgid " Filters"
-msgstr "Filtres"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4178
-msgid "Reset"
-msgstr "Reset"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:167
-msgid " Time : "
-msgstr " Temps : "
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:177
-msgid " Max. : "
-msgstr " Max. : "
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:186
-msgid "Export"
-msgstr "Export"
-
-#: ../lib/advene/gui/plugins/eventaccumulator.py:253
-msgid "Defining Filters"
-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: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: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: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: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: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: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:226
-#, python-format
-msgid "of a package (%s)"
-msgstr "d'un recueil (%s)"
+#: ../lib/advene/gui/plugins/kinect.py:41
+msgid "Kinect Controller"
+msgstr "Contrôleur Kinect"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:573
-#: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:228
-#, python-format
-msgid "of an unknown item (%s)"
-msgstr "d'un élément inconnu (%s)"
+#: ../lib/advene/gui/plugins/kinect.py:43
+msgid "Kinect control interface"
+msgstr "Interface de contrôle Kinect"
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:122
+#: ../lib/advene/gui/plugins/contenthandlers.py:123
 msgid "Label"
 msgstr "Label"
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:172
+#: ../lib/advene/gui/plugins/contenthandlers.py:173
 #, python-format
 msgid ""
 "Error while parsing SVG content:\n"
@@ -3720,21 +3163,21 @@ msgstr ""
 "\n"
 "%s"
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:247
+#: ../lib/advene/gui/plugins/contenthandlers.py:248
 msgid " created from "
 msgstr " créé depuis "
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:315
+#: ../lib/advene/gui/plugins/contenthandlers.py:314
 msgid "Graphical editor"
 msgstr "Éditeur graphique"
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:326
+#: ../lib/advene/gui/plugins/contenthandlers.py:325
 msgid "Edit XML"
 msgstr "Éditer le XML"
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:378
-#: ../lib/advene/gui/plugins/contenthandlers.py:434
-#: ../lib/advene/gui/edit/rules.py:186
+#: ../lib/advene/gui/plugins/contenthandlers.py:377
+#: ../lib/advene/gui/plugins/contenthandlers.py:433
+#: ../lib/advene/gui/edit/rules.py:190
 #, python-format
 msgid ""
 "The following items seem to be\n"
@@ -3747,5728 +3190,6298 @@ msgstr ""
 "\n"
 "%s"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
-msgid "Video player"
-msgstr "Lecteur vidéo"
+#: ../lib/advene/gui/plugins/tracepreview.py:62
+msgid "Trace preview"
+msgstr "Prévisualisation de trace"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:38
+#: ../lib/advene/gui/plugins/tracepreview.py:100
+msgid "Full trace"
+msgstr "Trace entière"
+
+#: ../lib/advene/gui/plugins/tracepreview.py:101
+msgid "Open the trace timeline view fareast"
+msgstr "Ouvrir la vue timeline de trace"
+
+#: ../lib/advene/gui/plugins/videoplayer.py:39
 msgid "Complementary video player"
 msgstr "Lecteur vidéo supplémentaire"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:44
-#: ../lib/advene/gui/edit/montage.py:54
-#: ../lib/advene/gui/edit/transcribe.py:85
-#: ../lib/advene/gui/views/transcription.py:56
-#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/views/bookmarks.py:249
+#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/timeline.py:140 ../lib/advene/gui/edit/montage.py:58
+#: ../lib/advene/gui/edit/transcribe.py:86
 msgid "Save view"
 msgstr "Sauvegarder la vue"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
-#: ../lib/advene/gui/edit/transcribe.py:86
-#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/plugins/videoplayer.py:46
+#: ../lib/advene/gui/views/transcription.py:58
+#: ../lib/advene/gui/views/timeline.py:141 ../lib/advene/gui/views/tagbag.py:65
 #: ../lib/advene/gui/views/interactivequery.py:60
-#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/edit/transcribe.py:87
 msgid "Save default options"
 msgstr "Sauver les options par défaut"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:46
+#: ../lib/advene/gui/plugins/videoplayer.py:47
 msgid "Select video file"
 msgstr "Choisir un fichier vidéo"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:127
+#: ../lib/advene/gui/plugins/videoplayer.py:128
 msgid "Select a video file"
 msgstr "Choisir un fichier vidéo"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:250
+#: ../lib/advene/gui/plugins/videoplayer.py:251
 msgid "Synchronize"
 msgstr "Synchroniser"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:266
+#: ../lib/advene/gui/plugins/videoplayer.py:269
 msgid "Offset in ms"
 msgstr "Offset en ms"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:274
+#: ../lib/advene/gui/plugins/videoplayer.py:277
 msgid "Drag and drop to get player time"
 msgstr "Glisser/déposer pour obtenir le temps du lecteur"
 
-#: ../lib/advene/gui/plugins/tracepreview.py:61
-msgid "Trace preview"
-msgstr "Prévisualisation de trace"
+#: ../lib/advene/gui/views/singletonpopup.py:32
+msgid "SingletonPopup"
+msgstr "Fenêtre singleton"
 
-#: ../lib/advene/gui/plugins/tracepreview.py:99
-msgid "Full trace"
-msgstr "Trace entière"
+#: ../lib/advene/gui/views/caption.py:31
+msgid "Display a text caption below the video output"
+msgstr "Composant dédié à l'affichage des sous-titres sous la vidéo"
 
-#: ../lib/advene/gui/plugins/tracepreview.py:100
-msgid "Open the trace timeline view fareast"
-msgstr "Ouvrir la vue timeline de trace"
+#: ../lib/advene/gui/views/html.py:88
+#, python-format
+msgid "%s%% loaded"
+msgstr "%s%% chargé"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:376
+#: ../lib/advene/gui/views/html.py:91
 #, python-format
-msgid "Rendering type %(type)s as %(presentation)s"
-msgstr "Rendu du type %(type)s sous forme de %(presentation)s"
+msgid "Title %s"
+msgstr "Titre %s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:521
-msgid "Snapshot only"
-msgstr "Vignette seulement"
+#: ../lib/advene/gui/views/html.py:155
+msgid "HTML Viewer"
+msgstr "Visualiseur HTML"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:522
-msgid "Overlayed snapshot only"
-msgstr "Vignette enrichiee seulement"
+#: ../lib/advene/gui/views/html.py:157
+msgid "Embedded HTML widget"
+msgstr "Composant de visualisation HTML"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:523
-msgid "Timestamp only"
-msgstr "Temps seulement"
+#: ../lib/advene/gui/views/html.py:185
+msgid "No available HTML rendering component"
+msgstr "Aucun moteur de rendu HTML n'est disponible"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:524
-msgid "Snapshot+timestamp"
-msgstr "Vignette+temps"
+#: ../lib/advene/gui/views/annotationdisplay.py:43
+msgid "AnnotationDisplay"
+msgstr "AfficheAnnotation"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
-msgid "Annotation content"
-msgstr "Le contenu de l'annotation"
+#: ../lib/advene/gui/views/annotationdisplay.py:45
+msgid "Display the contents of an annotation"
+msgstr "Affiche le contenu d'une annotation"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:540
-msgid "as a list"
-msgstr "comme une liste"
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/util/helper.py:606
+msgid "No annotation"
+msgstr "Pas d'annotation"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:541
-msgid "as a grid"
-msgstr "comme une grille"
+#: ../lib/advene/gui/views/annotationdisplay.py:112
+#, python-format
+msgid ""
+"Schema %(schema)s (id %(id)s)\n"
+"%(description)s\n"
+"%(stats)s"
+msgstr ""
+"Schéma %(schema)s\n"
+"%(description)s\n"
+"%(total)s\n"
+"Id: %(id)s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:542
-msgid "as a table"
-msgstr "comme une table"
+#: ../lib/advene/gui/views/annotationdisplay.py:233
+msgid "Screenshot"
+msgstr "Aperçu"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:543
-#: ../lib/advene/gui/views/viewbook.py:380
-msgid "as a transcription"
-msgstr "comme une transcription"
+#: ../lib/advene/gui/views/annotationdisplay.py:255
+#: ../lib/advene/gui/views/relationdisplay.py:104
+msgid "Contents"
+msgstr "Contenu"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:661
-#: ../lib/advene/gui/views/transcription.py:461
-#, python-format
-msgid "Annotation %s"
-msgstr "Annotation %s"
+#: ../lib/advene/gui/views/annotationdisplay.py:258
+#: ../lib/advene/gui/views/editaccumulator.py:73
+msgid "Validate"
+msgstr "Valider"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:681
-msgid "Play video"
-msgstr "Jouer la vidéo"
+#: ../lib/advene/gui/views/relationdisplay.py:34
+msgid "RelationDisplay"
+msgstr "AfficheRelation"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
-msgid "Show timestamp only"
-msgstr "Temps seulement"
+#: ../lib/advene/gui/views/relationdisplay.py:36
+msgid "Display the contents of a relation"
+msgstr "Affiche le contenu d'une relation"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
-msgid "Show content only"
-msgstr "Contenu seulement"
+#: ../lib/advene/gui/views/relationdisplay.py:79
+msgid "No relation"
+msgstr "Pas de relation"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
-msgid "Show snapshot only"
-msgstr "Vignette seulement"
+#: ../lib/advene/gui/views/relationdisplay.py:113
+#: ../lib/advene/gui/edit/elements.py:586
+#: ../lib/advene/gui/edit/elements.py:1069
+msgid "Members"
+msgstr "Membres"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
-msgid "Show overlayed timestamp"
-msgstr "Vignette + timecode surimprimé"
+#: ../lib/advene/gui/views/viewplugin.py:60
+msgid "Generic view plugin"
+msgstr "Plugin de vue générique"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
-msgid "Show overlayed content"
-msgstr "Vignette + contenu surimprimé"
+#: ../lib/advene/gui/views/viewplugin.py:62
+msgid "You should not ever see this tooltip..."
+msgstr "Vous ne devriez pas voir cette information..."
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:670
-#, python-format
-msgid "Annotation type %s"
-msgstr "Type d'annotations %s"
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr "Vérificateur"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
-msgid "display as list"
-msgstr "afficher comme une liste"
+#: ../lib/advene/gui/views/checker.py:39
+msgid "Check various package properties"
+msgstr "Vérifier diverses propriétés du recueil"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
-msgid "display as grid"
-msgstr "afficher comme une grille"
+#: ../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/plugins/htmlcontenhandler.py:673
-msgid "display as table"
-msgstr "afficher comme une table"
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr "Recouvrement"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
-msgid "display as transcription"
-msgstr "afficher comme une transcription"
+#: ../lib/advene/gui/views/table.py:60
+msgid "Annotation table view"
+msgstr "Tableau d'annotations"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:683
-msgid "Open link"
-msgstr "Ouvrir le lien"
+#: ../lib/advene/gui/views/table.py:62
+msgid "Display annotations in a table"
+msgstr "Affiche les annotations dans un tableau"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:739
-#, python-format
-msgid "HTML editor: cannot parse content (%s)"
-msgstr "Éditeur HTML: impossible de traiter le contenu (%s)"
+#: ../lib/advene/gui/views/table.py:73
+msgid "Export as CSV"
+msgstr "Exporter en CSV"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
+#: ../lib/advene/gui/views/table.py:90 ../lib/advene/gui/views/table.py:578
+#: ../lib/advene/gui/views/transcription.py:147
 #, python-format
-msgid "Heading %d"
-msgstr "Titre %d"
+msgid "Error in source evaluation %(source)s: %(error)s"
+msgstr "Erreur dans l'évaluation de l'expression %(source)s: %(error)s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:783
-msgid "Bold"
-msgstr "Gras"
+#: ../lib/advene/gui/views/table.py:267 ../lib/advene/gui/views/table.py:544
+msgid "Snapshot"
+msgstr "Copie d'écran"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:784
-msgid "Italic"
-msgstr "Italique"
+#: ../lib/advene/gui/views/table.py:280
+#: ../lib/advene/gui/views/timeline.py:1667
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr "Impossible de l'annotation, sa représentation est trop complexe."
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
-msgid "Header"
-msgstr "Titre"
+#: ../lib/advene/gui/views/table.py:305 ../lib/advene/gui/edit/elements.py:604
+#: ../lib/advene/gui/edit/elements.py:681
+#: ../lib/advene/gui/edit/elements.py:741
+#: ../lib/advene/gui/edit/elements.py:1132
+msgid "Content"
+msgstr "Contenu"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
-msgid "Copy"
-msgstr "Copier"
+#: ../lib/advene/gui/views/table.py:306 ../lib/advene/gui/views/table.py:675
+#: ../lib/advene/gui/views/browser.py:363 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/edit/elements.py:512
+#: ../lib/advene/gui/edit/elements.py:561
+#: ../lib/advene/gui/edit/elements.py:663
+msgid "Type"
+msgstr "Type"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:788
-msgid "Cut"
-msgstr "Couper"
+#: ../lib/advene/gui/views/table.py:307 ../lib/advene/gui/edit/elements.py:1807
+msgid "Begin"
+msgstr "Début"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
-msgid "Paste"
-msgstr "Coller"
+#: ../lib/advene/gui/views/table.py:310 ../lib/advene/gui/views/table.py:676
+#: ../lib/advene/gui/util/dialog.py:395 ../lib/advene/gui/edit/rules.py:1096
+#: ../lib/advene/gui/edit/imports.py:325 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/edit/elements.py:560
+#: ../lib/advene/gui/edit/elements.py:648
+#: ../lib/advene/gui/edit/elements.py:728
+#: ../lib/advene/gui/edit/elements.py:877
+#: ../lib/advene/gui/edit/elements.py:946
+#: ../lib/advene/gui/edit/elements.py:1058
+#: ../lib/advene/gui/edit/elements.py:1119
+msgid "Id"
+msgstr "Id"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
-#: ../lib/advene/gui/edit/schemaeditor.py:64
-#: ../lib/advene/gui/views/timeline.py:134 ../lib/advene/gui/views/tree.py:428
-msgid "Refresh"
-msgstr "Rafraîchir"
+#: ../lib/advene/gui/views/table.py:449 ../lib/advene/gui/views/table.py:628
+msgid "Export data to file..."
+msgstr "Exporter les données vers le fichier..."
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:847
-msgid "WYSIWYG editor"
-msgstr "Éditeur WYSIWYG"
+#: ../lib/advene/gui/views/table.py:458 ../lib/advene/gui/views/table.py:637
+#, python-format
+msgid "Error while exporting data to %(filename)s: %(error)s"
+msgstr "Impossible d'exporter dans %(filename)s : %(error)s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:857
-msgid "Edit HTML source"
-msgstr "Éditer le source HTML"
+#: ../lib/advene/gui/views/table.py:469
+msgid "id"
+msgstr "id"
 
-#: ../lib/advene/gui/plugins/logmessages.py:35
-msgid "Log Messages"
-msgstr "Messages d'information"
+#: ../lib/advene/gui/views/table.py:469
+msgid "type"
+msgstr "type"
 
-#: ../lib/advene/gui/edit/dvdselect.py:73
-#: ../lib/advene/gui/edit/importer.py:143
-msgid "Stop"
-msgstr "Stop"
+#: ../lib/advene/gui/views/table.py:469
+msgid "begin"
+msgstr "début"
 
-#: ../lib/advene/gui/edit/dvdselect.py:82
-#: ../lib/advene/gui/edit/dvdselect.py:112
-msgid "Preview"
-msgstr "Prévisualisation"
+#: ../lib/advene/gui/views/table.py:469
+msgid "end"
+msgstr "fin"
 
-#: ../lib/advene/gui/edit/dvdselect.py:91
-msgid ""
-"Select the correct\n"
-"title and chapter\n"
-"of the DVD"
-msgstr ""
-"Sélectionnez le\n"
-"titre et chapitre\n"
-"adéquats du DVD"
+#: ../lib/advene/gui/views/table.py:469
+msgid "content"
+msgstr "contenu"
 
-#: ../lib/advene/gui/edit/dvdselect.py:104
-msgid "Chapter"
-msgstr "Chapître"
+#: ../lib/advene/gui/views/table.py:473 ../lib/advene/gui/views/table.py:653
+#: ../lib/advene/core/controller.py:2555
+#, python-format
+msgid "Data exported to %s"
+msgstr "Données exportées vers %s"
 
-#: ../lib/advene/gui/edit/merge.py:33
-msgid "Create element"
-msgstr "Créer un élément"
+#: ../lib/advene/gui/views/table.py:493
+#, python-format
+msgid "Set %(attr)s time to %(time)s"
+msgstr "Fixer le temps de $(attr)s à %(time)s"
 
-#: ../lib/advene/gui/edit/merge.py:34
-msgid "Create annotation (duplicate id)"
-msgstr "Créer une annotation (id dupliquée)"
+#: ../lib/advene/gui/views/table.py:552
+msgid "Generic table view"
+msgstr "Tableau d'éléments"
 
-#: ../lib/advene/gui/edit/merge.py:35
-msgid "Create relation (duplicate id)"
-msgstr "Créer une relation (id dupliquée)"
+#: ../lib/advene/gui/views/table.py:554
+msgid "Display Advene elements in a table."
+msgstr "Affiche des éléments Advene dans un tableau"
 
-#: ../lib/advene/gui/edit/merge.py:36
-msgid "Update the color"
-msgstr "Modifier la couleur"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element title"
+msgstr "Titre de l'élément"
 
-#: ../lib/advene/gui/edit/merge.py:37
-msgid "Update the representation"
-msgstr "Modifier la représentation"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element type"
+msgstr "Type de l'élément"
 
-#: ../lib/advene/gui/edit/merge.py:38
-msgid "Update the description"
-msgstr "Modifier la description"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element id"
+msgstr "Identificateur de l'élément"
 
-#: ../lib/advene/gui/edit/merge.py:39
-msgid "Update the title"
-msgstr "Modifier le titre"
+#: ../lib/advene/gui/views/accumulatorpopup.py:49
+msgid "PopupAccumulator"
+msgstr "Accumulateur de popups"
 
-#: ../lib/advene/gui/edit/merge.py:40
-msgid "Update the mimetype"
-msgstr "Modifier le type MIME"
+#: ../lib/advene/gui/views/bookmarks.py:51
+msgid "Bookmarks importer"
+msgstr "Importateur de signets"
 
-#: ../lib/advene/gui/edit/merge.py:41
-msgid "Update the begin time"
-msgstr "Modifier le temps de début"
+#: ../lib/advene/gui/views/bookmarks.py:72
+msgid "Bookmarks"
+msgstr "Signets"
 
-#: ../lib/advene/gui/edit/merge.py:42
-msgid "Update the end time"
-msgstr "Modifier le temps de fin"
+#: ../lib/advene/gui/views/bookmarks.py:74
+msgid "Bookmark timecodes with their corresponding screenshots"
+msgstr "Mémorise les temps avec les captures d'écran correspondantes"
 
-#: ../lib/advene/gui/edit/merge.py:43
-msgid "Update the content"
-msgstr "Modifier le contenu"
+#: ../lib/advene/gui/views/bookmarks.py:80 ../lib/advene/gui/views/tagbag.py:63
+#: ../lib/advene/gui/views/activebookmarks.py:62
+#: ../lib/advene/gui/views/logwindow.py:50 ../lib/advene/gui/edit/montage.py:59
+msgid "Clear"
+msgstr "Effacer"
 
-#: ../lib/advene/gui/edit/merge.py:44
-msgid "Update the matchFilter"
-msgstr "Modifier le filtre de vue"
+#: ../lib/advene/gui/views/bookmarks.py:145
+msgid "Select the annotation type to generate"
+msgstr "Choisissez le type d'annotation à générer"
 
-#: ../lib/advene/gui/edit/merge.py:45
-msgid "Update the member types"
-msgstr "Mettre à jour les types des membres"
+#: ../lib/advene/gui/views/bookmarks.py:150
+msgid "Choose a duration"
+msgstr "Choisissez une durée"
 
-#: ../lib/advene/gui/edit/merge.py:46
-msgid "Update tags"
-msgstr "Mettre à jour les tags"
+#: ../lib/advene/gui/views/bookmarks.py:151
+msgid "Enter the standard duration (in ms) of created annotations."
+msgstr "Entrez la durée standard (en ms) des annotations créées"
 
-#: ../lib/advene/gui/edit/merge.py:90
-msgid "Difference between original and merged elements"
-msgstr "Différence entre l'élément original et l'élément à fusionner"
+#: ../lib/advene/gui/views/bookmarks.py:168
+msgid "Converted from bookmarks"
+msgstr "Converti depuis les signets"
 
-#: ../lib/advene/gui/edit/merge.py:136
-msgid "Current element"
-msgstr "Élément courant"
+#: ../lib/advene/gui/views/bookmarks.py:172
+#: ../lib/advene/gui/edit/transcribe.py:1139
+#, python-format
+msgid ""
+"Conversion completed.\n"
+"%s annotations generated."
+msgstr ""
+"Conversion terminée.\n"
+"%s annotations générées."
 
-#: ../lib/advene/gui/edit/merge.py:141
-msgid "Updated element"
-msgstr "Élément mis à jour"
+#: ../lib/advene/gui/views/bookmarks.py:226
+msgid "Drop a position here to remove it from the list"
+msgstr "Déposez une position ici pour l'enlever de la liste"
 
-#: ../lib/advene/gui/edit/merge.py:147
-msgid "Show diff"
-msgstr "Montrer les différences"
+#: ../lib/advene/gui/views/bookmarks.py:247
+#: ../lib/advene/gui/views/activebookmarks.py:522
+msgid "Insert a bookmark for the current video time"
+msgstr "Insérer un signet pour la position courante"
 
-#: ../lib/advene/gui/edit/merge.py:180
-msgid "Merge?"
-msgstr "Fusionner?"
+#: ../lib/advene/gui/views/bookmarks.py:248
+msgid "Convert bookmarks to annotations"
+msgstr "Convertir les signets en annotations"
 
-#: ../lib/advene/gui/edit/merge.py:197
-msgid "Element"
-msgstr "Élément"
+#: ../lib/advene/gui/views/viewbook.py:37
+msgid "ViewBook"
+msgstr "Collection de vues"
 
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
-#, python-format
-msgid "Package %s"
-msgstr "Recueil %s"
+#: ../lib/advene/gui/views/viewbook.py:58
+#: ../lib/advene/gui/views/viewbook.py:65
+msgid "Cannot remove this widget, it is essential."
+msgstr "Impossible de supprimer ce composant, il est essentiel."
 
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
-msgid "No title"
-msgstr "Pas de titre"
+#: ../lib/advene/gui/views/viewbook.py:135
+msgid "Detach"
+msgstr "Détacher"
 
-#: ../lib/advene/gui/edit/merge.py:267
-msgid "All"
-msgstr "Tout"
+#: ../lib/advene/gui/views/viewbook.py:139
+#: ../lib/advene/gui/views/editaccumulator.py:79
+msgid "Close"
+msgstr "Fermer"
 
-#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1588
-msgid "Properties"
-msgstr "Propriétés"
+#: ../lib/advene/gui/views/viewbook.py:156
+msgid "Rename the view"
+msgstr "Renommer la vue"
 
-#: ../lib/advene/gui/edit/properties.py:46
-#: ../lib/advene/gui/edit/transcribe.py:147
-#: ../lib/advene/gui/edit/transcribe.py:1195
-#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3483
-#: ../lib/advene/gui/views/timeline.py:3624 ../lib/advene/gui/main.py:4235
-msgid "Preferences"
-msgstr "Préférences"
+#: ../lib/advene/gui/views/viewbook.py:157
+msgid "Please enter the new name of the view"
+msgstr "Entrez le nouveau nom de la vue"
 
-#: ../lib/advene/gui/edit/properties.py:371
-msgid "Choose a file"
-msgstr "Choisissez un fichier"
+#: ../lib/advene/gui/views/viewbook.py:196
+msgid "Detach view in its own window, or drag-and-drop to another zone"
+msgstr ""
+"Détacher la vue dans sa propre fenêtre, ou glisser-déposer vers une autre "
+"zone"
 
-#: ../lib/advene/gui/edit/importer.py:45
-msgid "Importer"
-msgstr "Importateur"
+#: ../lib/advene/gui/views/viewbook.py:210
+msgid "Close view"
+msgstr "Fermer la vue"
 
-#: ../lib/advene/gui/edit/importer.py:101
-#: ../lib/advene/gui/edit/importer.py:111
-msgid "Advene package importer"
-msgstr "Importateur de recueil Advene"
+#: ../lib/advene/gui/views/viewbook.py:233
+#: ../lib/advene/gui/views/viewbook.py:239
+#: ../lib/advene/gui/edit/elements.py:335
+#, python-format
+msgid "Edit %s"
+msgstr "Éditer %s"
 
-#: ../lib/advene/gui/edit/importer.py:115
-msgid "Not likely"
-msgstr "Non-pertinents"
+#: ../lib/advene/gui/views/viewbook.py:262 ../lib/advene/rules/actions.py:615
+#, python-format
+msgid "Cannot find the view %s"
+msgstr "Impossible de trouver la vue  %s"
 
-#: ../lib/advene/gui/edit/importer.py:137
+#: ../lib/advene/gui/views/viewbook.py:285
 #, python-format
-msgid "Completed conversion: %(statistics)s"
-msgstr "Conversion terminée : %(statistics)s"
+msgid "Open a new %s for..."
+msgstr "Ouvrir une nouvelle vue %s pour..."
 
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Choose the file to import"
-msgstr "Choisissez le fichier à importer"
+#: ../lib/advene/gui/views/viewbook.py:297
+msgid "Create a new comment view"
+msgstr "Créer une nouvelle vue commentaire"
 
-#: ../lib/advene/gui/edit/importer.py:272
-msgid "Filter"
-msgstr "Filtre"
+#: ../lib/advene/gui/views/viewbook.py:299
+msgid "Open a new view"
+msgstr "Ouvrir une nouvelle vue"
 
-#: ../lib/advene/gui/edit/importer.py:276
-msgid "Options"
-msgstr "Options"
+#: ../lib/advene/gui/views/viewbook.py:373
+#, python-format
+msgid "Use annotation-type %s :"
+msgstr "Utiliser le type d'annotation %s :"
 
-#: ../lib/advene/gui/edit/importer.py:287
-msgid "Start"
-msgstr "Lancer"
+#: ../lib/advene/gui/views/viewbook.py:377
+#: ../lib/advene/gui/views/viewbook.py:403
+msgid "to edit it"
+msgstr "pour l'éditer"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:57
-msgid "Schema Editor"
-msgstr "Éditeur de schéma"
+#: ../lib/advene/gui/views/viewbook.py:378
+#: ../lib/advene/gui/views/viewbook.py:404
+#: ../lib/advene/gui/views/viewbook.py:436
+msgid "to create a new static view"
+msgstr "pour créer une nouvelle vue statique"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:132
-msgid "Display"
-msgstr "Afficher"
+#: ../lib/advene/gui/views/viewbook.py:380
+msgid "in a timeline"
+msgstr "dans une ligne de temps"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:155
-#: ../lib/advene/gui/edit/shapewidget.py:1587 ../lib/advene/gui/popup.py:472
-#: ../lib/advene/gui/popup.py:476
-msgid "Delete"
-msgstr "Supprimer"
-
-#: ../lib/advene/gui/edit/schemaeditor.py:762
-msgid "Remove relation type"
-msgstr "Supprimer le type de relation"
-
-#: ../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:831
-msgid "Remove annotation type"
-msgstr "Supprimer le type d'annotation"
-
-#: ../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/views/viewbook.py:381
+msgid "as a montage"
+msgstr "comme un montage"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:969
-msgid "New schema"
-msgstr "Nouveau schéma"
+#: ../lib/advene/gui/views/viewbook.py:382
+#: ../lib/advene/gui/views/viewbook.py:435
+msgid "in a table"
+msgstr "dans une table"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:985 ../lib/advene/gui/popup.py:690
-#: ../lib/advene/gui/popup.py:750 ../lib/advene/gui/popup.py:803
-msgid "Select a color"
-msgstr "Choisissez une couleur"
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
+msgid "in a query"
+msgstr "dans une requête"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:988
-msgid "New annotation type"
-msgstr "Nouveau type d'annotation"
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
+#, python-format
+msgid "Query %s"
+msgstr "Requête %s"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:991
-msgid "New relation type"
-msgstr "Nouveau type de relation"
+#: ../lib/advene/gui/views/viewbook.py:384
+#: ../lib/advene/gui/views/viewbook.py:406
+msgid "in the TALES browser"
+msgstr "dans l'explorateur TALES"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:994
-msgid "Hide this schema"
-msgstr "Cacher ce schéma"
+#: ../lib/advene/gui/views/viewbook.py:384
+#, python-format
+msgid "Browsing %s"
+msgstr "Explore %s"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1000
-msgid "Export drawing to pdf"
-msgstr "Exporter le schéma en pdf"
+#: ../lib/advene/gui/views/viewbook.py:400
+#, python-format
+msgid "Use annotation %s :"
+msgstr "Utiliser l'annotation %s :"
 
-#: ../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"
+#: ../lib/advene/gui/views/viewbook.py:406
+#, python-format
+msgid "Browse %s"
+msgstr "Explore %s"
 
-#: ../lib/advene/gui/edit/rules.py:84 ../lib/advene/gui/edit/rules.py:86
-#: ../lib/advene/gui/edit/create.py:252
-msgid "Rule"
-msgstr "Règle"
+#: ../lib/advene/gui/views/viewbook.py:407
+msgid "to display its contents"
+msgstr "pour afficher son contenu"
 
-#: ../lib/advene/gui/edit/rules.py:95 ../lib/advene/gui/edit/create.py:242
-msgid "Subviews"
-msgstr "Vues associées"
+#: ../lib/advene/gui/views/viewbook.py:407
+#, python-format
+msgid "%s"
+msgstr "%s"
 
-#: ../lib/advene/gui/edit/rules.py:122
-msgid "Add a new rule"
-msgstr "Ajouter une nouvelle règle"
+#: ../lib/advene/gui/views/viewbook.py:408
+msgid "as a bookmark"
+msgstr "comme un signet"
 
-#: ../lib/advene/gui/edit/rules.py:126
-msgid "Subview"
-msgstr "Vues associées"
+#: ../lib/advene/gui/views/viewbook.py:426
+msgid "as the context for the query..."
+msgstr "comme context pour la requête..."
 
-#: ../lib/advene/gui/edit/rules.py:129
-msgid "Add a subview list"
-msgstr "Ajouter une nouvelle liste de sous-vuews"
+#: ../lib/advene/gui/views/viewbook.py:430
+msgid "Set of annotations"
+msgstr "Ensemble d'annotations"
 
-#: ../lib/advene/gui/edit/rules.py:135
-msgid "Remove the current rule"
-msgstr "Supprimer la règle en cours"
+#: ../lib/advene/gui/views/viewbook.py:431
+msgid "Use annotations:"
+msgstr "Utiliser les annotations :"
 
-#: ../lib/advene/gui/edit/rules.py:275
-msgid "Source expression"
-msgstr "Expression source"
+#: ../lib/advene/gui/views/viewbook.py:434
+msgid "to edit them"
+msgstr "pour les éditer"
 
-#: ../lib/advene/gui/edit/rules.py:277
-msgid "Return expression"
-msgstr "Expression de retour"
+#: ../lib/advene/gui/views/viewbook.py:437
+msgid "as bookmarks"
+msgstr "comme des signets"
 
-#: ../lib/advene/gui/edit/rules.py:351
-msgid "For all elements in "
-msgstr "Pour tous les éléments de "
+#: ../lib/advene/gui/views/transcription.py:49
+msgid "Transcription"
+msgstr "Transcription"
 
-#: ../lib/advene/gui/edit/rules.py:352
-msgid "All annotations of the package"
-msgstr "Toutes les annotations du recueil"
+#: ../lib/advene/gui/views/transcription.py:51
+msgid "Display annotations as a text transcription"
+msgstr "Afficher les annotations sous forme de transcription"
 
-#: ../lib/advene/gui/edit/rules.py:353
-msgid "All views of the package"
-msgstr "Toutes les vues du recueil"
+#: ../lib/advene/gui/views/transcription.py:164
+msgid "Transcription options"
+msgstr "Options de transcription"
 
-#: ../lib/advene/gui/edit/rules.py:354 ../lib/advene/gui/edit/rules.py:798
-msgid "The context annotations"
-msgstr "Les annotations du contexte"
+#: ../lib/advene/gui/views/transcription.py:165
+msgid "Default representation"
+msgstr "Représentation par défaut"
 
-#: ../lib/advene/gui/edit/rules.py:355 ../lib/advene/gui/edit/rules.py:799
-msgid "The annotations of the context type"
-msgstr "Les annotations du type du contexte"
+#: ../lib/advene/gui/views/transcription.py:165
+msgid "Use the default representation for annotations"
+msgstr "Utiliser la représentation par défaut des annotations"
 
-#: ../lib/advene/gui/edit/rules.py:370
-msgid "Return "
-msgstr "Retourne "
+#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/edit/elements.py:986
+msgid "Representation"
+msgstr "Représentation"
 
-#: ../lib/advene/gui/edit/rules.py:372 ../lib/advene/gui/edit/rules.py:787
-msgid "The element"
-msgstr "L'élément"
+#: ../lib/advene/gui/views/transcription.py:166
+msgid ""
+"If default representation is unchecked,\n"
+"this TALES expression that will be used to format the annotations."
+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/edit/rules.py:373 ../lib/advene/gui/edit/rules.py:788
-msgid "The element's content"
-msgstr "Le contenu de l'élément"
+#: ../lib/advene/gui/views/transcription.py:167
+msgid "Separator"
+msgstr "Séparateur"
 
-#: ../lib/advene/gui/edit/rules.py:388
-msgid "If the element matches "
-msgstr "Si l'élément correspond à "
+#: ../lib/advene/gui/views/transcription.py:168
+msgid "This separator will be inserted between the annotations."
+msgstr "Ce séparateur sera inséré entre les annotations."
 
-#: ../lib/advene/gui/edit/rules.py:390
-msgid "Return the element if it matches "
-msgstr "Renvoie l'élément s'il correspond à "
+#: ../lib/advene/gui/views/transcription.py:169
+msgid "Whitespace"
+msgstr "Espace"
 
-#: ../lib/advene/gui/edit/rules.py:408 ../lib/advene/gui/edit/rules.py:617
-msgid "All conditions must be met"
-msgstr "Toutes les conditions doivent être remplies"
+#: ../lib/advene/gui/views/transcription.py:170
+msgid "Newline"
+msgstr "Retour à la ligne"
 
-#: ../lib/advene/gui/edit/rules.py:409 ../lib/advene/gui/edit/rules.py:618
-msgid "Any condition can be met"
-msgstr "Une des conditions doit être remplie"
+#: ../lib/advene/gui/views/transcription.py:171
+msgid "Tabulation"
+msgstr "Tabulation"
 
-#: ../lib/advene/gui/edit/rules.py:493 ../lib/advene/gui/edit/rules.py:563
-#, python-format
-msgid "Rule <b>%s</b>"
-msgstr "Règle <b>%s</b>"
+#: ../lib/advene/gui/views/transcription.py:172
+msgid "Dash"
+msgstr "Tiret"
 
-#: ../lib/advene/gui/edit/rules.py:574
-msgid "Rule name"
-msgstr "Nom de la règle"
+#: ../lib/advene/gui/views/transcription.py:173
+msgid "User defined"
+msgstr "Défini par l'utilisateur"
 
-#: ../lib/advene/gui/edit/rules.py:591
-msgid "Event"
-msgstr "Événement"
+#: ../lib/advene/gui/views/transcription.py:175
+msgid "User-defined separator"
+msgstr "Séparateur défini par l'utilisateur"
 
-#: ../lib/advene/gui/edit/rules.py:599
-msgid "If"
-msgstr "Si"
+#: ../lib/advene/gui/views/transcription.py:175
+msgid ""
+"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
+"a tabulation."
+msgstr ""
+"Séparateur défini par l'utilisateur.\n"
+"Utilisez \\\\n pour un retour à la ligne et \\\\t pour une tabulation."
 
-#: ../lib/advene/gui/edit/rules.py:638
-msgid "Then"
-msgstr "Alors"
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Display timestamps"
+msgstr "Afficher les marques de temps"
 
-#: ../lib/advene/gui/edit/rules.py:683
-msgid "When the "
-msgstr "Quand le/la"
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Insert timestsamp values"
+msgstr "Insérer les marques de temps"
 
-#: ../lib/advene/gui/edit/rules.py:696
-msgid " occurs,"
-msgstr " intervient,"
+#: ../lib/advene/gui/views/transcription.py:177
+msgid "Display annotation bounds"
+msgstr "Afficher les bornes des annotations"
 
-#: ../lib/advene/gui/edit/rules.py:723 ../lib/advene/gui/edit/rules.py:726
+#: ../lib/advene/gui/views/transcription.py:237
 #, python-format
-msgid "Condition expression: %s"
-msgstr "Expression de condition : %s"
-
-#: ../lib/advene/gui/edit/rules.py:765
-msgid "The annotation type"
-msgstr "Le type d'annotation"
+msgid ""
+"Cannot convert the following annotations,\n"
+"the representation pattern is too complex.\n"
+"%s"
+msgstr ""
+"Impossible de convertir les annotations suivantes,\n"
+"L'expression de représentation est trop complexe.\n"
+"%s"
 
-#: ../lib/advene/gui/edit/rules.py:768
-#, python-format
-msgid "The value of the %s attribute"
-msgstr "La valeur de l'attribut %s"
+#: ../lib/advene/gui/views/transcription.py:248
+msgid ""
+"Cannot validate the update.\n"
+"The representation pattern is too complex."
+msgstr ""
+"Impossible de valider la mise à jour.\n"
+"L'expression de représentation est trop complexe."
 
-#: ../lib/advene/gui/edit/rules.py:770
-msgid "The annotation fragment"
-msgstr "Le fragment de l'annotation"
+#: ../lib/advene/gui/views/transcription.py:274
+msgid "Save transcription to a text file"
+msgstr "Sauvegarder la transcription dans un fichier texte"
 
-#: ../lib/advene/gui/edit/rules.py:771
-msgid "The annotation begin time"
-msgstr "Le temps de début de l'annotation"
+#: ../lib/advene/gui/views/transcription.py:275
+msgid "Apply the modifications"
+msgstr "Valider les modifications"
 
-#: ../lib/advene/gui/edit/rules.py:772
-msgid "The annotation end time"
-msgstr "Le temps de fin de l'annotation"
+#: ../lib/advene/gui/views/transcription.py:276
+msgid "Find text"
+msgstr "Chercher dans le texte"
 
-#: ../lib/advene/gui/edit/rules.py:774
-msgid "The annotation MIME-type"
-msgstr "Le type MIME de l'annotation"
+#: ../lib/advene/gui/views/transcription.py:277
+msgid "Quickly switch display options"
+msgstr "Modification rapide des options d'affichage"
 
-#: ../lib/advene/gui/edit/rules.py:775
-msgid "The annotation's incoming relations"
-msgstr "Les relations entrantes de l'annotation"
+#: ../lib/advene/gui/views/transcription.py:278
+msgid "Refresh the transcription"
+msgstr "Rafraîchir la transcription"
 
-#: ../lib/advene/gui/edit/rules.py:776
-msgid "The annotation's outgoing relations"
-msgstr "Les relations sortantes de l'annotation"
+#: ../lib/advene/gui/views/transcription.py:279
+msgid "Edit preferences"
+msgstr "Éditer les préférences"
 
-#: ../lib/advene/gui/edit/rules.py:779
+#: ../lib/advene/gui/views/transcription.py:697
 #, python-format
-msgid "The %s-related incoming annotations"
-msgstr "Les annotations liées une relation entrante de type %s"
+msgid "Cannot write to %(filename)s: %(error)s:"
+msgstr "Impossible d'écrire dans %(filename)s : %(error)s"
 
-#: ../lib/advene/gui/edit/rules.py:783
+#: ../lib/advene/gui/views/transcription.py:703
+#: ../lib/advene/gui/edit/transcribe.py:882
 #, python-format
-msgid "The %s-related outgoing annotations"
-msgstr "Les annotations liées une relation sortante de type %s"
+msgid "Transcription saved to %s"
+msgstr "Transcription sauvegardée dans %s"
 
-#: ../lib/advene/gui/edit/rules.py:789
-msgid "The element fragment"
-msgstr "Le fragment de l'élément"
+#: ../lib/advene/gui/views/browser.py:164
+#: ../lib/advene/gui/views/browser.py:166
+msgid "TALES browser"
+msgstr "Explorateur TALES"
 
-#: ../lib/advene/gui/edit/rules.py:790
-msgid "The element begin time"
-msgstr "Le temps de début de l'élément"
+#: ../lib/advene/gui/views/browser.py:171
+msgid "Display result in table"
+msgstr "Afficher le résultat dans un tableau"
 
-#: ../lib/advene/gui/edit/rules.py:791
-msgid "The element end time"
-msgstr "Le temps de fin de l'élément"
-
-#: ../lib/advene/gui/edit/rules.py:792
-msgid "The element duration"
-msgstr "La durée de l'élément"
+#: ../lib/advene/gui/views/browser.py:194
+msgid "Insert path"
+msgstr "Insérer le chemin TALES"
 
-#: ../lib/advene/gui/edit/rules.py:793
-msgid "The element type"
-msgstr "Le type d'élément"
+#: ../lib/advene/gui/views/browser.py:195
+msgid "Insert value"
+msgstr "Insérer la valeur"
 
-#: ../lib/advene/gui/edit/rules.py:794
-msgid "The element's incoming relations"
-msgstr "Les relations entrantes de l'élément"
+#: ../lib/advene/gui/views/browser.py:250
+msgid "Expression returned None (there was an exception)"
+msgstr "L'expression a renvoyé None (il y a eu une exception)"
 
-#: ../lib/advene/gui/edit/rules.py:795
-msgid "The element's outgoing relations"
-msgstr "Les relations sortantes de l'élément"
+#: ../lib/advene/gui/views/browser.py:303
+msgid "Result is not a list"
+msgstr "Le résultat n'est pas une liste"
 
-#: ../lib/advene/gui/edit/rules.py:796
-msgid "The context"
-msgstr "Le contexte"
+#: ../lib/advene/gui/views/browser.py:360
+#: ../lib/advene/gui/edit/shapewidget.py:942
+msgid "Path"
+msgstr "Chemin"
 
-#: ../lib/advene/gui/edit/rules.py:797
-msgid "The context fragment"
-msgstr "Le fragment du contexte"
+#: ../lib/advene/gui/views/browser.py:367
+#: ../lib/advene/gui/edit/elements.py:2173
+msgid "Value"
+msgstr "Valeur"
 
-#: ../lib/advene/gui/edit/rules.py:809
-#, python-format
-msgid "annotation-type %s"
-msgstr "Type d'annotation %s"
+#: ../lib/advene/gui/views/timeline.py:128
+msgid "Display annotations on a timeline"
+msgstr "Vue en ligne de temps"
 
-#: ../lib/advene/gui/edit/rules.py:812
-#, python-format
-msgid "relation-type %s"
-msgstr "type de relation %s"
+#: ../lib/advene/gui/views/timeline.py:142
+msgid "Limit display to current area"
+msgstr "Limiter l'affichage à la zone courante"
 
-#: ../lib/advene/gui/edit/rules.py:834
-msgid "Select a condition"
-msgstr "Sélectionnez une condition"
+#: ../lib/advene/gui/views/timeline.py:143
+#: ../lib/advene/gui/views/timeline.py:3276
+msgid "Display whole movie"
+msgstr "Afficher tout le film"
 
-#: ../lib/advene/gui/edit/rules.py:878
+#: ../lib/advene/gui/views/timeline.py:173
 #, python-format
-msgid "Parameter %s"
-msgstr "Paramètre %s"
+msgid "Cannot find annotation type %s"
+msgstr "Impossible de trouver le type d'annotation %s"
 
-#: ../lib/advene/gui/edit/rules.py:992
-msgid "Select an action"
-msgstr "Sélectionnez une action"
+#: ../lib/advene/gui/views/timeline.py:222
+msgid "No scrolling"
+msgstr "Pas de défilement"
 
-#: ../lib/advene/gui/edit/rules.py:1083
-msgid "Activate?"
-msgstr "Activer?"
+#: ../lib/advene/gui/views/timeline.py:223
+msgid "Continuous scrolling"
+msgstr "Défilement continu"
 
-#: ../lib/advene/gui/edit/shapewidget.py:83
-msgid "Generic shape"
-msgstr "Forme générique"
+#: ../lib/advene/gui/views/timeline.py:224
+msgid "Discrete scrolling"
+msgstr "Défilement discret"
+
+#: ../lib/advene/gui/views/timeline.py:225
+msgid "Annotation scrolling"
+msgstr "Défilement sur annotation"
 
-#: ../lib/advene/gui/edit/shapewidget.py:234
-#: ../lib/advene/gui/edit/shapewidget.py:741
+#: ../lib/advene/gui/views/timeline.py:501
 #, python-format
-msgid "Link to %s"
-msgstr "Lier à  %s"
+msgid "%d annotations"
+msgstr "%d annotations"
 
-#: ../lib/advene/gui/edit/shapewidget.py:321
-#: ../lib/advene/gui/views/tagbag.py:132
-msgid "Name"
-msgstr "Nom"
+#: ../lib/advene/gui/views/timeline.py:504
+msgid "Display all types"
+msgstr "Afficher tous les types"
 
-#: ../lib/advene/gui/edit/shapewidget.py:326
-#: ../lib/advene/gui/edit/shapewidget.py:1299
-msgid "Link"
-msgstr "Lien"
+#: ../lib/advene/gui/views/timeline.py:506
+#, python-format
+msgid ""
+"There are %d annotations.\n"
+"The current timeline may take a long time to display them, so only the first "
+"two annotation types are displayed. Use the annotation type selector (second "
+"button in the timeline) to select other annotations types to display, or "
+"click on the 'Display all types' button below."
+msgstr ""
+"Il y a %d annotations.\n"
+"La timeline actuelle peut prendre beaucoup de temps pour les afficher, donc "
+"seuls les deux premiers types d'annotations sont affichés. Utilisez le "
+"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/edit/shapewidget.py:331
-msgid "Link label"
-msgstr "Label du lien"
+#: ../lib/advene/gui/views/timeline.py:979
+msgid "Split at current player position"
+msgstr "Couper à la valeur de la position courante"
 
-#: ../lib/advene/gui/edit/shapewidget.py:349
-msgid "Linewidth"
-msgstr "Largeur de trait"
+#: ../lib/advene/gui/views/timeline.py:983
+msgid "Center and zoom"
+msgstr "Centrer et zoomer"
 
-#: ../lib/advene/gui/edit/shapewidget.py:354
-msgid "Filled"
-msgstr "Rempli"
+#: ../lib/advene/gui/views/timeline.py:1087
+msgid "Create a relation"
+msgstr "Créer une relation"
 
-#: ../lib/advene/gui/edit/shapewidget.py:362
-msgid "Opacity"
-msgstr "Opacité"
+#: ../lib/advene/gui/views/timeline.py:1097
+msgid "Create a new relation-type."
+msgstr "Créer un nouveau type de relation"
 
-#: ../lib/advene/gui/edit/shapewidget.py:404
-#, python-format
-msgid "Properties of %s"
-msgstr "Propriétés de %s"
+#: ../lib/advene/gui/views/timeline.py:1123
+msgid "Merge with this annotation"
+msgstr "Fusionner avec cette annotation"
 
-#: ../lib/advene/gui/edit/shapewidget.py:451
-msgid "Rectangle"
-msgstr "Rectangle"
+#: ../lib/advene/gui/views/timeline.py:1132
+msgid "Align both begin times"
+msgstr "Aligner les temps de début"
 
-#: ../lib/advene/gui/edit/shapewidget.py:532
-#: ../lib/advene/gui/edit/shapewidget.py:652
-msgid "Text"
-msgstr "Texte"
+#: ../lib/advene/gui/views/timeline.py:1133
+msgid "Align both end times"
+msgstr "Aligner les temps de fin"
 
-#: ../lib/advene/gui/edit/shapewidget.py:663
-msgid "Textsize"
-msgstr "Taille du texte"
+#: ../lib/advene/gui/views/timeline.py:1134
+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/edit/shapewidget.py:677
-msgid "Image"
-msgstr "Image"
+#: ../lib/advene/gui/views/timeline.py:1135
+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/edit/shapewidget.py:761
-msgid "Href"
-msgstr "Href"
+#: ../lib/advene/gui/views/timeline.py:1136
+msgid "Align all times"
+msgstr "Aligner tous les temps"
 
-#: ../lib/advene/gui/edit/shapewidget.py:771
-msgid "Line"
-msgstr "Ligne"
+#: ../lib/advene/gui/views/timeline.py:1174
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
+"Impossible de supprimer l'annotation :\n"
+"elle fait partie de relations."
 
-#: ../lib/advene/gui/edit/shapewidget.py:872
-msgid "Draw an arrow"
-msgstr "Dessiner une flêche"
+#: ../lib/advene/gui/views/timeline.py:1249
+msgid "Select the appropriate relation type"
+msgstr "Sélectionnez le type de relation"
 
-#: ../lib/advene/gui/edit/shapewidget.py:883
-msgid "Arrow size"
-msgstr "Taille de la flêche"
+#: ../lib/advene/gui/views/timeline.py:1268
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr "Dupliquer la sélection vers le type %s"
 
-#: ../lib/advene/gui/edit/shapewidget.py:935
-#: ../lib/advene/gui/views/browser.py:359
-msgid "Path"
-msgstr "Chemin"
+#: ../lib/advene/gui/views/timeline.py:1271
+#, python-format
+msgid "Move selection to type %s"
+msgstr "Déplacer la sélection vers le type %s"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1102
-msgid "Close path"
-msgstr "Fermer le chemin"
+#: ../lib/advene/gui/views/timeline.py:1280
+#, python-format
+msgid "Duplicate annotation to type %s"
+msgstr "Dupliquer l'annotation vers le type %s"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1181
-msgid "Circle"
-msgstr "Cercle"
+#: ../lib/advene/gui/views/timeline.py:1284
+#, python-format
+msgid "Move annotation to type %s"
+msgstr "Déplacer l'annotation vers le type %s"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1239
-msgid "Ellipse"
-msgstr "Ellipse"
+#: ../lib/advene/gui/views/timeline.py:1291
+#, python-format
+msgid "Duplicate to type %(type)s at %(position)s"
+msgstr "Dupliquer vers le type %(type)s à %(position)s"
 
-#: ../lib/advene/gui/edit/shapewidget.py:1589
-msgid "SVG"
-msgstr "SVG"
+#: ../lib/advene/gui/views/timeline.py:1297
+#, python-format
+msgid "Move to type %(type)s at %(position)s"
+msgstr "Déplacer vers le type %(type)s à %(position)s"
 
-#: ../lib/advene/gui/edit/shapewidget.py:2172
-msgid "Load SVG"
-msgstr "Charger un fichier SVG"
+#: ../lib/advene/gui/views/timeline.py:1307
+msgid "Duplicate and create a relation"
+msgstr "Dupliquer et créer une relation"
 
-#: ../lib/advene/gui/edit/shapewidget.py:2178
-msgid "Save SVG"
-msgstr "Sauver le SVG"
+#: ../lib/advene/gui/views/timeline.py:1318
+#, python-format
+msgid "Duplicate at %s and create a relation"
+msgstr "Dupliquer vers %s et créer une relation"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:74
-#: ../lib/advene/gui/widget.py:1063
-msgid "Refresh snapshot"
-msgstr "Rafraîchir la capture d'écran"
+#: ../lib/advene/gui/views/timeline.py:1349
+msgid "Annotation filter"
+msgstr "Filtre d'annotations "
+
+#: ../lib/advene/gui/views/timeline.py:1350
+msgid "Enter the searched string"
+msgstr "Entrez la chaîne recherchée"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/views/timeline.py:1458
 #, python-format
-msgid "Decrement value by %.2f s"
-msgstr "Décrémenter la valeur de %.2f s"
+msgid "Duplicate all annotations to type %s"
+msgstr "Dupliquer toutes les annotations vers le type %s"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:104
+#: ../lib/advene/gui/views/timeline.py:1460
 #, python-format
-msgid "Increment value by %.2f s"
-msgstr "Incrémenter la valeur de %.2f s"
+msgid "Move all annotations to type %s"
+msgstr "Déplacer toutes les annotations vers le type %s"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:130
-msgid ""
-"Click to play\n"
-"Control+click to set to current time\n"
-"Scroll to modify value (with control/shift)\n"
-"Right-click to invalidate screenshot"
+#: ../lib/advene/gui/views/timeline.py:1462
+#, python-format
+msgid "Duplicate all annotations matching a string to type %s"
 msgstr ""
-"Cliquer pour jouer\n"
-"Contrôle+clic pour fixer au temps actuel\n"
-"Scroll pour modifier la valeur (avec Contrôle/Shift)\n"
-"Clic droit pour invalider la capture d'écran"
+"Dupliquer toutes les annotations contenant une chaîne de caractères vers le "
+"type %s"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:145
-msgid ""
-"Enter a timecode.\n"
-"An integer value will be considered as milliseconds.\n"
-"A float value (12.2) will be considered as seconds.\n"
-"HH:MM:SS.sss values are possible."
+#: ../lib/advene/gui/views/timeline.py:1464
+#, python-format
+msgid "Move all annotations matching a string to type %s"
 msgstr ""
-"Entrez un timecode.\n"
-"Une valeur entière sera considérée comme des millisecondes.\n"
-"Une valeur flottant (12.2) sera considérée comme des secondes.\n"
-"Il est possible d'utiliser le format HH:MM:SS.sss"
+"Déplacer toutes les annotations contenant une chaîne de caractères vers le "
+"type %s"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:159
-msgid "Set to current player position"
-msgstr "Fixer à la valeur de la position courante"
+#: ../lib/advene/gui/views/timeline.py:1466
+#, 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/edit/create.py:81
+#: ../lib/advene/gui/views/timeline.py:1468
 #, python-format
-msgid "%s creation"
-msgstr "Création de %s"
+msgid "Align all annotation contents using %s as reference"
+msgstr "Copier les contenus pour toutes annotations sur la base de %s"
 
-#: ../lib/advene/gui/edit/create.py:82
+#: ../lib/advene/gui/views/timeline.py:1960
+#: ../lib/advene/gui/views/timeline.py:1989
 #, python-format
-msgid ""
-"To create a new element of type %s,\n"
-"you must give the following information."
-msgstr ""
-"Pour créer un nouvel élément de type %s\\n\n"
-"vous devez fournir les informations suivantes."
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Affichage de %(count)d / %(total)d annotations..."
 
-#: ../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:659
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:251
-#: ../lib/advene/gui/views/table.py:558
-msgid "Type"
-msgstr "Type"
+#: ../lib/advene/gui/views/timeline.py:1971
+msgid "Displaying done."
+msgstr "Affichage terminé."
 
-#: ../lib/advene/gui/edit/create.py:111
-msgid "Dynamic view"
-msgstr "Vue dynamique"
+#: ../lib/advene/gui/views/timeline.py:2463
+msgid "Create a new annotation"
+msgstr "Créer une nouvelle annotation"
 
-#: ../lib/advene/gui/edit/create.py:112
-msgid "HTML template"
-msgstr "Modèle HTML"
+#: ../lib/advene/gui/views/timeline.py:2464
+msgid "Zoom on region"
+msgstr "Zoom sur la zone"
 
-#: ../lib/advene/gui/edit/create.py:113
-msgid "Plain XML"
-msgstr "Modèle XML"
+#: ../lib/advene/gui/views/timeline.py:2465
+msgid "Restrict display to region"
+msgstr "Limiter l'affichage à la zone sélectionnée"
 
-#: ../lib/advene/gui/edit/create.py:114
-msgid "SVG template"
-msgstr "Modèle SVG"
+#: ../lib/advene/gui/views/timeline.py:2578
+#: ../lib/advene/gui/edit/transcribe.py:494
+#, python-format
+msgid "Position %s"
+msgstr "Position %s"
 
-#: ../lib/advene/gui/edit/create.py:115
-msgid "Plain text template"
-msgstr "Modèle de texte simple"
+#: ../lib/advene/gui/views/timeline.py:2588
+msgid "New annotation at player time"
+msgstr "Nouvelle annotation au temps du lecteur"
 
-#: ../lib/advene/gui/edit/create.py:118
-msgid "Simple query"
-msgstr "Requête simple"
+#: ../lib/advene/gui/views/timeline.py:2592
+msgid "New annotation at mouse position"
+msgstr "Nouvelle annotation à la position de la souris"
 
-#: ../lib/advene/gui/edit/create.py:120
-msgid "Directory"
-msgstr "Répertoire"
+#: ../lib/advene/gui/views/timeline.py:2596
+msgid "Selection"
+msgstr "Sélection"
 
-#: ../lib/advene/gui/edit/create.py:128
-msgid "No available type."
-msgstr "Pas de type disponible."
+#: ../lib/advene/gui/views/timeline.py:2718
+msgid "Cannot zoom more"
+msgstr "Impossible de zoomer plus"
 
-#: ../lib/advene/gui/edit/create.py:172
+#: ../lib/advene/gui/views/timeline.py:2933
 #, python-format
+msgid "From schema %s"
+msgstr "Schéma %s"
+
+#: ../lib/advene/gui/views/timeline.py:2996
+msgid "Restrict playing to this annotation-type"
+msgstr "Restreindre le jeu à ce type d'annotation"
+
+#: ../lib/advene/gui/views/timeline.py:3003
+msgid "Goto previous annotation"
+msgstr "Aller à l'annotation précédente"
+
+#: ../lib/advene/gui/views/timeline.py:3014
+msgid "Goto next annotation"
+msgstr "Aller à l'annotation suivante"
+
+#: ../lib/advene/gui/views/timeline.py:3025
+msgid "+"
+msgstr "+"
+
+#: ../lib/advene/gui/views/timeline.py:3084
+msgid "Open an annotation display view"
+msgstr "Ouvrir une vue d'affichage de l'annotation"
+
+#: ../lib/advene/gui/views/timeline.py:3091
+msgid "Open a slave montage view (coordinated zoom level)"
+msgstr "Ouvrir une vue montage escale (avec zoom coordonné)"
+
+#: ../lib/advene/gui/views/timeline.py:3126
 msgid ""
-"The identifier %s is not valid.\n"
-"It must be composed of non-accentuated alphabetic characters\n"
-"Underscore is allowed."
+"<b>Statistics about current selection</b>\n"
+"\n"
 msgstr ""
-"L'identifcateur %s n'est pas valide.\n"
-"Il doit être composé de caractères alphabétiques non-accentués.\n"
-"Le souligné (_) est autorisé."
+"<b>Statistiques sur la sélection</b>\n"
+"\n"
 
-#: ../lib/advene/gui/edit/create.py:177
-#, python-format
-msgid "The identifier %s is already defined."
-msgstr "L'identificateur %s est déjà défini."
+#: ../lib/advene/gui/views/timeline.py:3133
+msgid "No selected annotation"
+msgstr "Pas d'annotation sélectionnée"
 
-#: ../lib/advene/gui/edit/create.py:310
-msgid "New resource data"
-msgstr "Nouvelle ressource"
+#: ../lib/advene/gui/views/timeline.py:3137
+#, python-format
+msgid "%d selected annotation(s)"
+msgstr "%d annotation(s) sélectionnée(s)"
 
-#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
-msgid "Schemas"
-msgstr "Schémas"
+#: ../lib/advene/gui/views/timeline.py:3144
+msgid "Unselect all annotations"
+msgstr "Déselectionner toutes les annotations"
 
-#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
-#: ../lib/advene/gui/views/interactivequery.py:464
-msgid "Annotations"
-msgstr "Annotations"
+#: ../lib/advene/gui/views/timeline.py:3145
+msgid "Create a static view"
+msgstr "Créer une vue statique"
 
-#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
-#: ../lib/advene/gui/edit/elements.py:517
-msgid "Relations"
-msgstr "Relations"
+#: ../lib/advene/gui/views/timeline.py:3146
+msgid "Highlight selection in other views"
+msgstr "Signaler les annotations actives dans les autres vues"
 
-#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
-msgid "Queries"
-msgstr "Requêtes"
+#: ../lib/advene/gui/views/timeline.py:3147
+#: ../lib/advene/gui/views/timeline.py:3736
+msgid "Tag selection"
+msgstr "Taguer la sélection"
 
-#: ../lib/advene/gui/edit/imports.py:320
-msgid "Imported?"
-msgstr "Importé ?"
+#: ../lib/advene/gui/views/timeline.py:3148
+msgid "Delete selected annotations"
+msgstr "Supprimer les annotations sélectionnées"
 
-#: ../lib/advene/gui/edit/imports.py:337
-#: ../lib/advene/gui/edit/elements.py:509
-#: ../lib/advene/gui/edit/elements.py:558
-#: ../lib/advene/gui/edit/elements.py:645
-#: ../lib/advene/gui/edit/elements.py:725
-#: ../lib/advene/gui/edit/elements.py:782
-#: ../lib/advene/gui/edit/elements.py:874
-#: ../lib/advene/gui/edit/elements.py:943
-#: ../lib/advene/gui/edit/elements.py:1055
-#: ../lib/advene/gui/edit/elements.py:1117
-msgid "URI"
-msgstr "URI"
+#: ../lib/advene/gui/views/timeline.py:3149
+msgid "Display selection in a table"
+msgstr "Affiche la sélection dans un tableau"
 
-#: ../lib/advene/gui/edit/imports.py:359
-msgid "Choose the package to import, and its alias"
-msgstr "Choisissez le recueil à importer, et son alias"
+#: ../lib/advene/gui/views/timeline.py:3150
+msgid "Center and zoom on selection"
+msgstr "Centrer et zoomer sur la sélection"
 
-#: ../lib/advene/gui/edit/montage.py:47
-msgid "Montage"
-msgstr "Montage"
+#: ../lib/advene/gui/views/timeline.py:3151
+msgid "Edit selected annotations"
+msgstr "Éditer les annotations sélectionnées"
 
-#: ../lib/advene/gui/edit/montage.py:49
-msgid "Dynamic montage of annotations"
-msgstr "Montage dynamique d'annotations"
+#: ../lib/advene/gui/views/timeline.py:3152
+msgid "Merge annotations"
+msgstr "Fusionner les annotations"
 
-#: ../lib/advene/gui/edit/montage.py:55
-#: ../lib/advene/gui/views/logwindow.py:50
-#: ../lib/advene/gui/views/tagbag.py:60
-#: ../lib/advene/gui/views/activebookmarks.py:59
-#: ../lib/advene/gui/views/bookmarks.py:77
-msgid "Clear"
-msgstr "Effacer"
+#: ../lib/advene/gui/views/timeline.py:3153
+msgid "Display statistics"
+msgstr "Afficher les statistiques"
 
-#: ../lib/advene/gui/edit/montage.py:56
-#: ../lib/advene/gui/views/transcription.py:472
-#: ../lib/advene/gui/widget.py:1059
-msgid "Play"
-msgstr "Lecture"
+#: ../lib/advene/gui/views/timeline.py:3269
+msgid "Goto previous page"
+msgstr "Aller à la page précédente"
 
-#: ../lib/advene/gui/edit/montage.py:57
-msgid "Render"
-msgstr "Exporter en vidéo"
+#: ../lib/advene/gui/views/timeline.py:3281
+msgid "Goto next page"
+msgstr "Aller à la page suivante"
 
-#: ../lib/advene/gui/edit/montage.py:171
-msgid "Remove from montage"
-msgstr "Supprimer du montage"
+#: ../lib/advene/gui/views/timeline.py:3337
+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/edit/montage.py:303 ../lib/advene/gui/popup.py:444
-#, python-format
-msgid "Extracting %s"
-msgstr "Extraction de %s"
+#: ../lib/advene/gui/views/timeline.py:3365
+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/edit/montage.py:304
-#, python-format
+#: ../lib/advene/gui/views/timeline.py:3387
 msgid ""
-"Exporting montage %(title)s\n"
-"to %%(filename)s"
+"Drag an annotation type here to remove it from display.\n"
+"Click to edit all displayed types"
 msgstr ""
-"Export du montage %(title)s\n"
-"vers %%(filename)s"
+"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/edit/montage.py:396
-msgid "Drop an annotation here to remove it from the list"
-msgstr "Déposez une annotation ici pour l'enlever de la liste"
+#: ../lib/advene/gui/views/timeline.py:3399
+msgid "Selection actions"
+msgstr "Actions sur la sélection"
 
-#: ../lib/advene/gui/edit/montage.py:407
-msgid "Play the montage"
-msgstr "Jouer le montage"
+#: ../lib/advene/gui/views/timeline.py:3414
+msgid "Display relations"
+msgstr "Afficher les relations"
 
-#: ../lib/advene/gui/edit/montage.py:412
-msgid "Save the view in the package"
-msgstr "Sauvegarder la vue dans le recueil"
+#: ../lib/advene/gui/views/timeline.py:3420
+msgid "Display all relations"
+msgstr "Afficher toutes les relations"
 
-#: ../lib/advene/gui/edit/montage.py:460
-msgid "Set zoom level"
-msgstr "Fixer le niveau de zoom"
+#: ../lib/advene/gui/views/timeline.py:3497
+msgid "Center on current player position."
+msgstr "Centrer sur la position courante"
 
-#: ../lib/advene/gui/edit/montage.py:465
-msgid "Set 100% zoom"
-msgstr "Zoom à 100%"
+#: ../lib/advene/gui/views/timeline.py:3513
+msgid "Automatically activate loop when clicking on an annotation"
+msgstr "Activer la boucle automatiquement lors du clic sur une annotation"
 
-#: ../lib/advene/gui/edit/montage.py:471
-#: ../lib/advene/gui/views/interactivequery.py:439
-msgid "Unhighlight annotations"
-msgstr "Désactiver les annotations"
+#: ../lib/advene/gui/views/timeline.py:3537
+msgid "Displayed"
+msgstr "Affichés"
 
-#: ../lib/advene/gui/edit/montage.py:475 ../lib/advene/gui/edit/montage.py:484
-#: ../lib/advene/gui/views/interactivequery.py:443
-#: ../lib/advene/gui/views/interactivequery.py:480
-msgid "Highlight annotations"
-msgstr "Activer les annotations"
+#: ../lib/advene/gui/views/timeline.py:3545
+msgid "Not displayed"
+msgstr "Pas affichés"
 
-#: ../lib/advene/gui/edit/montage.py:545
-msgid "Total duration:"
-msgstr "Durée totale :"
+#: ../lib/advene/gui/views/timeline.py:3594
+msgid "< All <"
+msgstr "< Tout <"
 
-#: ../lib/advene/gui/edit/frameselector.py:43
-msgid "Click on a frame to select its time."
-msgstr "Cliquer sur une image pour sélectionner son temps."
+#: ../lib/advene/gui/views/timeline.py:3598
+msgid "> All >"
+msgstr "> Tout >"
 
-#: ../lib/advene/gui/edit/frameselector.py:177
-msgid "Select the appropriate snapshot"
-msgstr "Sélectionnez l'image appropriée"
+#: ../lib/advene/gui/views/timeline.py:3622
+msgid "Displayed annotation types"
+msgstr "Types d'annotations affichés"
 
-#: ../lib/advene/gui/edit/frameselector.py:230
-#: ../lib/advene/gui/edit/frameselector.py:283
-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/views/timeline.py:3648
+msgid "Relation type"
+msgstr "Type de relation"
 
-#: ../lib/advene/gui/edit/transcribe.py:67
-msgid "Transcription importer"
-msgstr "Importateur de transcription"
+#: ../lib/advene/gui/views/timeline.py:3648
+msgid "Display relation types"
+msgstr "Afficher les types de relation"
 
-#: ../lib/advene/gui/edit/transcribe.py:78
-msgid "Note taking"
-msgstr "Prise de notes"
+#: ../lib/advene/gui/views/timeline.py:3649
+msgid "Relation content"
+msgstr "Contenu de relation"
 
-#: ../lib/advene/gui/edit/transcribe.py:80
-msgid "Take notes on the fly as a timestamped transcription"
-msgstr "Prendre des notes au vol sous forme de transcription temporalisée"
+#: ../lib/advene/gui/views/timeline.py:3649
+msgid "Display relation content"
+msgstr "Afficher le contenu des relations"
 
-#: ../lib/advene/gui/edit/transcribe.py:87
-#: ../lib/advene/gui/views/activebookmarks.py:60
-msgid "Export as static view"
-msgstr "Exporter en tant que vue statique"
+#: ../lib/advene/gui/views/timeline.py:3650 ../lib/advene/gui/popup.py:516
+msgid "Highlight"
+msgstr "Mise en valeur"
 
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Timestamp"
-msgstr "Temps"
+#: ../lib/advene/gui/views/timeline.py:3650
+msgid "Highlight active annotations"
+msgstr "Signaler les annotations actives"
 
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Click inserts timestamp marks"
-msgstr "Cliquer insére les marques de temps"
+#: ../lib/advene/gui/views/timeline.py:3737
+msgid "Enter the tag for the selection"
+msgstr "Entrez le tag pour la sélection"
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "Insert on single-click"
-msgstr "Insérer sur simple-clic"
+#: ../lib/advene/gui/views/timeline.py:3743
+#: ../lib/advene/gui/views/tagbag.py:165
+msgid "The tag contains invalid characters"
+msgstr "Ce tag contient des caractères non valides."
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "A single click will insert the mark (else a double click is needed)"
-msgstr ""
-"Un simple-clic insérera une marque de temps (sinon, un double-clic est "
-"nécessaire)"
+#: ../lib/advene/gui/views/relation.py:71
+msgid "Relations view"
+msgstr "Vue des relations"
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play on scroll"
-msgstr "Jouer après modification"
+#: ../lib/advene/gui/views/editionhistory.py:40
+msgid "Edition History"
+msgstr "Historique d'édition"
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play the new position upon timestamp modification"
-msgstr "Joue la nouvelle position après la modification de la marque de temps"
+#: ../lib/advene/gui/views/editionhistory.py:42
+msgid "Access last edited/created elements"
+msgstr "Éléments récemment édités/créés"
 
-#: ../lib/advene/gui/edit/transcribe.py:151
-msgid "Generate empty annotations"
-msgstr "Contenus vides"
+#: ../lib/advene/gui/views/editionhistory.py:102
+msgid "Created"
+msgstr "Créés"
 
-#: ../lib/advene/gui/edit/transcribe.py:151
-msgid "If checked, generate annotations for empty text"
-msgstr "Si coché, des annotations seront générées pour les contenus vides"
+#: ../lib/advene/gui/views/editionhistory.py:103
+msgid "Edited"
+msgstr "Édités"
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid "Reaction time"
-msgstr "Temps de réaction"
+#: ../lib/advene/gui/views/tagbag.py:55
+msgid "Tag Bag"
+msgstr "Sac à tags"
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid ""
-"Reaction time (substracted from current player time, except when paused.)"
-msgstr "Temps de réaction (soustrait du temps de la vidéo, sauf en pause)"
+#: ../lib/advene/gui/views/tagbag.py:62
+msgid "New tag"
+msgstr "Nouveau tag"
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Auto-insert"
-msgstr "Insertion automatique"
+#: ../lib/advene/gui/views/tagbag.py:125
+msgid "New tag name"
+msgstr "Nouveau tag"
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Automatic timestamp mark insertion"
-msgstr "Insertion automatique des marques de temps"
+#: ../lib/advene/gui/views/tagbag.py:131
+msgid "Enter a new tag name and select its color."
+msgstr "Entrez un nouveau tag et sélectionnez sa couleur."
 
-#: ../lib/advene/gui/edit/transcribe.py:154
-msgid "Automatic insertion delay"
-msgstr "Délai d'insertion automatique"
+#: ../lib/advene/gui/views/tagbag.py:135
+#: ../lib/advene/gui/edit/shapewidget.py:341
+msgid "Name"
+msgstr "Nom"
 
-#: ../lib/advene/gui/edit/transcribe.py:154
-msgid ""
-"If autoinsert is active, timestamp marks will be automatically inserted when "
-"text is entered after no interaction since this delay (in ms).\n"
-"1000 is typically a good value."
-msgstr ""
-"Si l'insertion automatique est enclenchée, des marques de temps sont "
-"automatiquement insérées quand du texte est entré après aucune interaction "
-"depuis ce délai (en ms)\n"
-"1000 est une bonne valeur pour commencer."
+#: ../lib/advene/gui/views/tagbag.py:141
+#: ../lib/advene/gui/edit/shapewidget.py:362
+#: ../lib/advene/gui/edit/elements.py:895
+#: ../lib/advene/gui/edit/elements.py:975
+#: ../lib/advene/gui/edit/elements.py:1089 ../lib/advene/rules/actions.py:133
+msgid "Color"
+msgstr "Couleur"
 
-#: ../lib/advene/gui/edit/transcribe.py:155 ../lib/advene/gui/main.py:4368
-msgid "Font size"
-msgstr "Taille de la police"
+#: ../lib/advene/gui/views/tagbag.py:178
+msgid "Tag bag options"
+msgstr "Options du sac à tags"
 
-#: ../lib/advene/gui/edit/transcribe.py:155
-msgid "Font size for text (0 for standard size)"
-msgstr "Taille de la police pour le texte (0 pour la police standard)"
+#: ../lib/advene/gui/views/tagbag.py:179
+msgid "Update with new tags"
+msgstr "Afficher les nouveaux tags"
 
-#: ../lib/advene/gui/edit/transcribe.py:215
-#: ../lib/advene/gui/edit/transcribe.py:219
-#: ../lib/advene/gui/edit/transcribe.py:379
-#: ../lib/advene/gui/edit/transcribe.py:383
-msgid "Invalid timestamp mark"
-msgstr "Marque de temps non valide"
+#: ../lib/advene/gui/views/tagbag.py:179
+msgid "Automatically display new defined tags"
+msgstr "Afficher automatiquement les nouveaux tags"
 
-#: ../lib/advene/gui/edit/transcribe.py:496
-#: ../lib/advene/gui/views/timeline.py:2550
+#: ../lib/advene/gui/views/tagbag.py:228
 #, python-format
-msgid "Position %s"
-msgstr "Position %s"
-
-#: ../lib/advene/gui/edit/transcribe.py:506 ../lib/advene/gui/popup.py:456
-msgid "Edit"
-msgstr "Éditer"
-
-#: ../lib/advene/gui/edit/transcribe.py:510
-msgid "Ignore the following text (toggle)"
-msgstr "Ignorer le texte qui suit (bascule)"
-
-#: ../lib/advene/gui/edit/transcribe.py:514
-msgid "Remove mark"
-msgstr "Supprimer la marque"
-
-#: ../lib/advene/gui/edit/transcribe.py:518
-msgid "Reaction-time offset"
-msgstr "Décalage du temps de réaction"
+msgid "Choose the color for tag %s"
+msgstr "Choisissez la couleur du tag %s"
 
-#: ../lib/advene/gui/edit/transcribe.py:522
-msgid "-1 sec"
-msgstr "-1 sec"
+#: ../lib/advene/gui/views/tagbag.py:252
+msgid "Set color"
+msgstr "Choix de couleur"
 
-#: ../lib/advene/gui/edit/transcribe.py:525
-msgid "-0.5 sec"
-msgstr "-0.5 sec"
+#: ../lib/advene/gui/views/tagbag.py:253
+msgid "Remove"
+msgstr "Supprimer"
 
-#: ../lib/advene/gui/edit/transcribe.py:528
-msgid "-0.1 sec"
-msgstr "-0.1 sec"
+#: ../lib/advene/gui/views/tagbag.py:326
+msgid "Drop a tag here to remove it from the list"
+msgstr "Déposez un tag ici pour le supprimer de la liste."
 
-#: ../lib/advene/gui/edit/transcribe.py:532
-msgid "+1 sec"
-msgstr "+1 sec"
+#: ../lib/advene/gui/views/tagbag.py:336
+msgid "Save as adhoc view"
+msgstr "Sauvegarder comme vue adhoc"
 
-#: ../lib/advene/gui/edit/transcribe.py:535
-msgid "+0.5 sec"
-msgstr "+0.5 sec"
+#: ../lib/advene/gui/views/tagbag.py:337
+msgid "Add a new tag"
+msgstr "Ajouter un nouveau tag"
 
-#: ../lib/advene/gui/edit/transcribe.py:538
-msgid "+0.1 sec"
-msgstr "+0.1 sec"
+#: ../lib/advene/gui/views/tagbag.py:338
+msgid "Display all defined tags"
+msgstr "Afficher tous les tags"
 
-#: ../lib/advene/gui/edit/transcribe.py:629
-msgid "Invalid timestamp"
-msgstr "Marque de temps invalide"
+#: ../lib/advene/gui/views/__init__.py:194
+msgid "Invalid view id"
+msgstr "Identificateur de vue invalide"
 
-#: ../lib/advene/gui/edit/transcribe.py:762
+#: ../lib/advene/gui/views/__init__.py:240
 #, python-format
-msgid "Invalid timestamp mark in conversion: %s"
-msgstr "Marque de temps non valide lors de la conversion: %s"
+msgid "Cannot save default options: %s"
+msgstr "Impossible de sauvegarder les options par défaut : %s"
 
-#: ../lib/advene/gui/edit/transcribe.py:879
+#: ../lib/advene/gui/views/__init__.py:251
 #, python-format
-msgid "Cannot save the file: %s"
-msgstr "Impossible de sauvegarder le fichier : %s"
+msgid "Default options saved for view %s"
+msgstr "Options par défaut sauvées pour la vue %s"
 
-#: ../lib/advene/gui/edit/transcribe.py:884
-#: ../lib/advene/gui/views/transcription.py:703
+#: ../lib/advene/gui/views/__init__.py:283
 #, python-format
-msgid "Transcription saved to %s"
-msgstr "Transcription sauvegardée dans %s"
-
-#: ../lib/advene/gui/edit/transcribe.py:890
-#: ../lib/advene/gui/edit/transcribe.py:980
-msgid "This will overwrite the current textual content. Are you sure?"
-msgstr "Ceci va écraser le contenu actuel. Êtes-vous sûr ?"
+msgid "Saving %s"
+msgstr "Sauver %s"
 
-#: ../lib/advene/gui/edit/transcribe.py:893
-msgid "Select transcription file to load"
-msgstr "Sélectionnez le fichier de transcription"
+#: ../lib/advene/gui/views/__init__.py:286
+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/edit/transcribe.py:910
+#: ../lib/advene/gui/views/__init__.py:304
 #, python-format
-msgid "Cannot open %(filename)s: %(error)s"
-msgstr "Impossible de lire %(filename)s : %(error)s"
+msgid "Error: the view %s is not an adhoc view."
+msgstr "Erreur : la vue %s n'est pas une vue ad-hoc"
 
-#: ../lib/advene/gui/edit/transcribe.py:965
-msgid "Cannot import annotations: no existing interface"
-msgstr "Impossible d'importer des annotations : aucune interface disponible"
+#: ../lib/advene/gui/views/__init__.py:329
+msgid "HTML export"
+msgstr "Export HTML"
 
-#: ../lib/advene/gui/edit/transcribe.py:967
-msgid "Select the annotation type to import"
-msgstr "Sélectionnez le type d'annotation à importer"
+#: ../lib/advene/gui/views/__init__.py:330
+msgid "Specify a name for the export view"
+msgstr "Choisissez un nom pour l'export de la vue."
 
-#: ../lib/advene/gui/edit/transcribe.py:976
+#: ../lib/advene/gui/views/__init__.py:349
 #, python-format
-msgid "There are no annotations of type %s"
-msgstr "Il n'y a pas d'annotation de type %s"
+msgid ""
+"View successfully exported as %s.\n"
+"Open it in the web browser ?"
+msgstr ""
+"Vue exportée sous le nom %s.\n"
+"Souhaitez-vous l'ouvrir dans le navigateur web ?"
 
-#: ../lib/advene/gui/edit/transcribe.py:1005
-msgid "Cannot convert the data: no associated package"
-msgstr "Impossible de convertir les données : aucun recueil associé"
+#: ../lib/advene/gui/views/__init__.py:428
+msgid "Actions"
+msgstr "Actions"
 
-#: ../lib/advene/gui/edit/transcribe.py:1008
-msgid "Converting transcription"
-msgstr "Conversion de la transcription"
+#: ../lib/advene/gui/views/__init__.py:453
+msgid "Click or drag-and-drop to reattach view"
+msgstr "Cliquer ou glisser-déposer pour réattacher la vue"
 
-#: ../lib/advene/gui/edit/transcribe.py:1014
-msgid "Choose the annotation-type where to create annotations.\n"
-msgstr "Choisissez le type d'annotation où les annotations seront créées.\n"
+#: ../lib/advene/gui/views/finder.py:105 ../lib/advene/util/helper.py:402
+msgid "Package"
+msgstr "Recueil"
 
-#: ../lib/advene/gui/edit/transcribe.py:1022
-msgid "Delete existing annotations in this type"
-msgstr "Supprimer les annotations existantes de ce type"
+#: ../lib/advene/gui/views/finder.py:106
+msgid "List of views"
+msgstr "Liste des vues"
 
-#: ../lib/advene/gui/edit/transcribe.py:1027
-#: ../lib/advene/gui/views/timeline.py:3009 ../lib/advene/gui/main.py:3222
-msgid "Create a new annotation type"
-msgstr "Créer un nouveau type d'annotation"
+#: ../lib/advene/gui/views/finder.py:107
+msgid "Static views"
+msgstr "Vues statiques"
 
-#: ../lib/advene/gui/edit/transcribe.py:1045
-msgid "Select type"
-msgstr "Sélection du type"
+#: ../lib/advene/gui/views/finder.py:108
+msgid "Dynamic views"
+msgstr "Vues dynamiques"
 
-#: ../lib/advene/gui/edit/transcribe.py:1049
-msgid "You want to create a new type. Please specify its schema and title."
-msgstr "Vous voulez créer un nouveau type. Spécifiez son titre et son schéma."
+#: ../lib/advene/gui/views/finder.py:109
+msgid "Admin views"
+msgstr "Vues administratives"
 
-#: ../lib/advene/gui/edit/transcribe.py:1061
-msgid "Containing schema"
-msgstr "Schéma"
+#: ../lib/advene/gui/views/finder.py:110
+msgid "Adhoc views"
+msgstr "Vues adhoc"
 
-#: ../lib/advene/gui/edit/transcribe.py:1074
-msgid "Export options"
-msgstr "Options d'export"
+#: ../lib/advene/gui/views/finder.py:515
+#, python-format
+msgid ""
+"View <b>%(title)s</b>\n"
+"Id: %(id)s"
+msgstr ""
+"Vue <b>%(title)s</b>\n"
+"Id: %(id)s"
 
-#: ../lib/advene/gui/edit/transcribe.py:1079
-msgid "Generate annotations for empty contents"
-msgstr "Générer des annotations pour les contenus vides"
+#: ../lib/advene/gui/views/finder.py:522
+msgid "Open in webbrowser"
+msgstr "Afficher dans un navigateur web"
 
-#: ../lib/advene/gui/edit/transcribe.py:1104
+#: ../lib/advene/gui/views/finder.py:523
 #, python-format
-msgid "The %s identifier already exists. Choose another one."
-msgstr "L'identificateur %s est déjà défini. Choisissez-en un autre."
+msgid "View applied to %s\n"
+msgstr "Vue appliquée sur %s\n"
 
-#: ../lib/advene/gui/edit/transcribe.py:1143
-msgid "Notes converted"
-msgstr "Notes converties"
+#: ../lib/advene/gui/views/finder.py:528 ../lib/advene/gui/popup.py:496
+msgid "Activate"
+msgstr "Activer"
+
+#: ../lib/advene/gui/views/finder.py:531
+msgid "Open in GUI"
+msgstr "Ouvrir dans l'interface"
+
+#: ../lib/advene/gui/views/finder.py:533
+msgid "Unknown type of view??"
+msgstr "Type de vue inconnu??"
+
+#: ../lib/advene/gui/views/finder.py:558
+msgid "Edit view"
+msgstr "Éditer la vue"
+
+#: ../lib/advene/gui/views/finder.py:567
+msgid "Open view"
+msgstr "Ouvrir la vue"
 
-#: ../lib/advene/gui/edit/transcribe.py:1147
-#: ../lib/advene/gui/views/bookmarks.py:169
+#: ../lib/advene/gui/views/finder.py:607 ../lib/advene/gui/views/finder.py:673
 #, python-format
 msgid ""
-"Conversion completed.\n"
-"%s annotations generated."
+"%(type)s <b>%(title)s</b>\n"
+"Id: %(id)s"
 msgstr ""
-"Conversion terminée.\n"
-"%s annotations générées."
+"%(type)s <b>%(title)s</b>\n"
+"Id: %(id)s"
 
-#: ../lib/advene/gui/edit/transcribe.py:1163
-#: ../lib/advene/gui/views/activebookmarks.py:546
-msgid "Smallish"
-msgstr "Tout petit"
+#: ../lib/advene/gui/views/finder.py:622
+#: ../lib/advene/gui/views/interactivequery.py:400
+msgid "Edit query"
+msgstr "Éditer la requête"
 
-#: ../lib/advene/gui/edit/transcribe.py:1167
-#: ../lib/advene/gui/views/activebookmarks.py:550
-msgid "Larger"
-msgstr "Plus grand"
+#: ../lib/advene/gui/views/finder.py:630
+msgid "Try to apply the query on..."
+msgstr "Essayer d'appliquer la requête sur..."
 
-#: ../lib/advene/gui/edit/transcribe.py:1168
-#: ../lib/advene/gui/views/activebookmarks.py:551
-msgid "Huge"
-msgstr "Énorme"
+#: ../lib/advene/gui/views/finder.py:650 ../lib/advene/gui/popup.py:829
+msgid "the package"
+msgstr "le recueil"
 
-#: ../lib/advene/gui/edit/transcribe.py:1190
-msgid "Open"
-msgstr "Ouvrir"
+#: ../lib/advene/gui/views/finder.py:651 ../lib/advene/gui/popup.py:830
+msgid "all annotations of the package"
+msgstr "toutes les annotations du recueil"
 
-#: ../lib/advene/gui/edit/transcribe.py:1191
-msgid "Save"
-msgstr "Sauver"
+#: ../lib/advene/gui/views/finder.py:652 ../lib/advene/gui/popup.py:831
+msgid "the first annotation of the package"
+msgstr "la première annotation du recueil"
 
-#: ../lib/advene/gui/edit/transcribe.py:1192
-msgid "Save As"
-msgstr "Sauver sous"
+#: ../lib/advene/gui/views/finder.py:697
+msgid "Edit resource"
+msgstr "Éditer la ressource"
 
-#: ../lib/advene/gui/edit/transcribe.py:1193
-msgid "Import"
-msgstr "Importer"
+#: ../lib/advene/gui/views/finder.py:732 ../lib/advene/util/helper.py:565
+#, python-format
+msgid ""
+"Package %(title)s:\n"
+"%(schema)s\n"
+"%(annotation)s in %(annotation_type)s\n"
+"%(relation)s in %(relation_type)s\n"
+"%(query)s\n"
+"%(view)s\n"
+"\n"
+"Description:\n"
+"%(description)s\n"
+msgstr ""
+"Recueil %(title)s:\n"
+"%(schema)s\n"
+"%(annotation)s dans %(annotation_type)s\n"
+"%(relation)s dans %(relation_type)s\n"
+"%(query)s\n"
+"%(view)s\n"
+"\n"
+"Description:\n"
+"%(description)s\n"
 
-#: ../lib/advene/gui/edit/transcribe.py:1193
-msgid "Import from annotations"
-msgstr "Importer des annotations"
+#: ../lib/advene/gui/views/finder.py:753
+#, python-format
+msgid "%(type)s %(title)s"
+msgstr "%(type)s %(title)s"
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
-msgid "Convert"
-msgstr "Convertir"
+#: ../lib/advene/gui/views/finder.py:756 ../lib/advene/gui/edit/elements.py:517
+#: ../lib/advene/gui/edit/elements.py:566
+#: ../lib/advene/gui/edit/elements.py:653
+#: ../lib/advene/gui/edit/elements.py:733
+#: ../lib/advene/gui/edit/elements.py:791
+#: ../lib/advene/gui/edit/elements.py:882
+#: ../lib/advene/gui/edit/elements.py:952
+#: ../lib/advene/gui/edit/elements.py:1064
+msgid "Metadata"
+msgstr "Métadonnées"
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
-msgid "Convert to annotations"
-msgstr "Convertir en annotations"
+#: ../lib/advene/gui/views/finder.py:773
+msgid "Column-based package finder"
+msgstr "Afficher un navigateur en colonnes du recueil"
 
-#: ../lib/advene/gui/edit/transcribe.py:1196
-msgid "Center on the current mark"
-msgstr "Centrer sur la marque courante"
+#: ../lib/advene/gui/views/editaccumulator.py:45
+msgid "EditAccumulator"
+msgstr "Accumulateur d'édition"
 
-#: ../lib/advene/gui/edit/transcribe.py:1197
-msgid "Find"
-msgstr "Chercher"
+#: ../lib/advene/gui/views/activebookmarks.py:55
+#: ../lib/advene/gui/views/activebookmarks.py:57
+msgid "ActiveBookmarks"
+msgstr "Signets Actifs"
 
-#: ../lib/advene/gui/edit/transcribe.py:1197
-msgid "Search a string"
-msgstr "Rechercher un mot"
+#: ../lib/advene/gui/views/activebookmarks.py:63
+#: ../lib/advene/gui/edit/transcribe.py:88
+msgid "Export as static view"
+msgstr "Exporter en tant que vue statique"
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-msgid "Scale"
-msgstr "Échelle"
+#: ../lib/advene/gui/views/activebookmarks.py:443
+msgid "Chronological order"
+msgstr "Ordre chronologique"
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-#: ../lib/advene/gui/views/activebookmarks.py:564
-msgid "Set the size of snaphots"
-msgstr "Fixer la taille des vignettes"
+#: ../lib/advene/gui/views/activebookmarks.py:444
+msgid "Completeness and chronological order"
+msgstr "Complétude et ordre chronologique"
 
-#: ../lib/advene/gui/edit/transcribe.py:1221
-msgid "Automatically scroll to the mark position when playing"
-msgstr "Défiler automatiquement lors du jeu de la vidéo"
+#: ../lib/advene/gui/views/activebookmarks.py:460
+msgid "Bookmark duration"
+msgstr "Durée du signet."
 
-#: ../lib/advene/gui/edit/transcribe.py:1223
-msgid "Autoscroll"
-msgstr "Défilement automatique"
+#: ../lib/advene/gui/views/activebookmarks.py:461
+msgid "Enter the duration (in ms) to convert bookmarks into annotations"
+msgstr ""
+"Entrez la durée standard (en ms) pour convertir les signets en annotations."
 
-#: ../lib/advene/gui/edit/transcribe.py:1230
-msgid "Autoinsert"
-msgstr "Insertion automatique"
+#: ../lib/advene/gui/views/activebookmarks.py:483
+msgid "User-specified duration"
+msgstr "Durée définie par l'utilisateur"
 
-#: ../lib/advene/gui/edit/transcribe.py:1232
-msgid "Automatically insert marks"
-msgstr "Insérer des marques de temps automatiquement"
+#: ../lib/advene/gui/views/activebookmarks.py:484
+msgid "2s duration"
+msgstr "Durée de 2s"
 
-#: ../lib/advene/gui/edit/elements.py:74
-#, python-format
-msgid "No edit popup available for element %s"
-msgstr "Pas de fenêtre d'édition disponible pour l'élément %s"
+#: ../lib/advene/gui/views/activebookmarks.py:485
+msgid "Complete coverage"
+msgstr "Couverture complète"
 
-#: ../lib/advene/gui/edit/elements.py:95
-msgid "Edit Window"
-msgstr "Fenêtre d'édition"
+#: ../lib/advene/gui/views/activebookmarks.py:503
+msgid "Drop a bookmark here to remove it from the list"
+msgstr "Déposez un signet ici pour le supprimer de la liste."
 
-#: ../lib/advene/gui/edit/elements.py:134
-msgid "Apply changes and close the edit window"
-msgstr "Appliquer les modifications et fermer la fenêtre"
+#: ../lib/advene/gui/views/activebookmarks.py:530
+msgid "Type of the annotations that will be created"
+msgstr "Type d'annotation où les annotations seront créées."
 
-#: ../lib/advene/gui/edit/elements.py:139
-msgid "Apply changes"
-msgstr "Appliquer les modifications"
+#: ../lib/advene/gui/views/activebookmarks.py:548
+#: ../lib/advene/gui/edit/transcribe.py:1155
+msgid "Smallish"
+msgstr "Tout petit"
 
-#: ../lib/advene/gui/edit/elements.py:273
-msgid "Content has been modified. Close anyway and lose data?"
-msgstr ""
-"Le contenu a été modifié. Souhaitez-vous fermer de toute façon et perdre les "
-"données ?"
+#: ../lib/advene/gui/views/activebookmarks.py:549
+#: ../lib/advene/gui/edit/transcribe.py:1156 ../lib/advene/rules/actions.py:167
+msgid "Small"
+msgstr "Petit"
 
-#: ../lib/advene/gui/edit/elements.py:331
-#: ../lib/advene/gui/views/viewbook.py:234
-#: ../lib/advene/gui/views/viewbook.py:240
-#, python-format
-msgid "Edit %s"
-msgstr "Éditer %s"
+#: ../lib/advene/gui/views/activebookmarks.py:550
+#: ../lib/advene/gui/edit/transcribe.py:1157 ../lib/advene/rules/actions.py:168
+msgid "Normal"
+msgstr "Normal"
 
-#: ../lib/advene/gui/edit/elements.py:333
-#, python-format
-msgid "View %s (read-only)"
-msgstr "Visualiser %s (lecture seule)"
+#: ../lib/advene/gui/views/activebookmarks.py:551
+#: ../lib/advene/gui/edit/transcribe.py:1158 ../lib/advene/rules/actions.py:169
+msgid "Large"
+msgstr "Grand"
 
-#: ../lib/advene/gui/edit/elements.py:369
-#, python-format
-msgid "Display %s"
-msgstr "Afficher %s"
+#: ../lib/advene/gui/views/activebookmarks.py:552
+#: ../lib/advene/gui/edit/transcribe.py:1159
+msgid "Larger"
+msgstr "Plus grand"
 
-#: ../lib/advene/gui/edit/elements.py:453
-msgid "Apply changes and edit previous annotation of same type"
-msgstr ""
-"Valider les modifications et éditer l'annotation précédente du même type"
+#: ../lib/advene/gui/views/activebookmarks.py:553
+#: ../lib/advene/gui/edit/transcribe.py:1160
+msgid "Huge"
+msgstr "Énorme"
 
-#: ../lib/advene/gui/edit/elements.py:457
-msgid "Apply changes and edit next annotation of same type"
-msgstr "Valider les modifications et éditer l'annotation suivante du même type"
+#: ../lib/advene/gui/views/activebookmarks.py:563
+msgid "Reorder active bookmarks"
+msgstr "Réordonner les signets actifs"
 
-#: ../lib/advene/gui/edit/elements.py:463
-msgid "Unhighlight annotation"
-msgstr "Désactiver les annotations"
+#: ../lib/advene/gui/views/activebookmarks.py:564
+msgid "Complete bookmarks into annotations"
+msgstr "Compléter les signets en annotations"
 
-#: ../lib/advene/gui/edit/elements.py:467
-msgid "Highlight annotation"
-msgstr "Activer les annotations"
+#: ../lib/advene/gui/views/activebookmarks.py:565
+msgid "Save the current state"
+msgstr "Sauvegarder l'état courant"
 
-#: ../lib/advene/gui/edit/elements.py:498
-msgid "Fragment"
-msgstr "Fragment"
+#: ../lib/advene/gui/views/activebookmarks.py:566
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Set the size of snaphots"
+msgstr "Fixer la taille des vignettes"
 
-#: ../lib/advene/gui/edit/elements.py:510
-#: ../lib/advene/gui/edit/elements.py:559
-#: ../lib/advene/gui/edit/elements.py:646
-#: ../lib/advene/gui/edit/elements.py:726
-#: ../lib/advene/gui/edit/elements.py:783
-#: ../lib/advene/gui/edit/elements.py:875
-#: ../lib/advene/gui/edit/elements.py:944
-#: ../lib/advene/gui/edit/elements.py:1056
-#: ../lib/advene/gui/edit/elements.py:1118 ../lib/advene/gui/main.py:4174
-msgid "Author"
-msgstr "Auteur"
+#: ../lib/advene/gui/views/activebookmarks.py:833
+msgid "Remove end timestamp"
+msgstr "Supprimer la marque de temps de fin"
 
-#: ../lib/advene/gui/edit/elements.py:511
-#: ../lib/advene/gui/edit/elements.py:560
-#: ../lib/advene/gui/edit/elements.py:647
-#: ../lib/advene/gui/edit/elements.py:727
-#: ../lib/advene/gui/edit/elements.py:784
-#: ../lib/advene/gui/edit/elements.py:876
-#: ../lib/advene/gui/edit/elements.py:945
-#: ../lib/advene/gui/edit/elements.py:1057
-#: ../lib/advene/gui/edit/elements.py:1119 ../lib/advene/gui/main.py:4175
-msgid "Date"
-msgstr "Date"
+#: ../lib/advene/gui/views/activebookmarks.py:1041
+msgid ""
+"Error: cannot find an appropriate schema to create the Active-bookmark type."
+msgstr ""
+"Erreur: impossible de trouver un schéma approprié pour créer le type Active-"
+"bookmark"
 
-#: ../lib/advene/gui/edit/elements.py:513
-#: ../lib/advene/gui/edit/elements.py:562
-#: ../lib/advene/gui/edit/elements.py:649
-#: ../lib/advene/gui/edit/elements.py:729
-#: ../lib/advene/gui/edit/elements.py:787
-#: ../lib/advene/gui/edit/elements.py:878
-#: ../lib/advene/gui/edit/elements.py:948
-#: ../lib/advene/gui/edit/elements.py:1060
-msgid "Metadata"
-msgstr "Métadonnées"
+#: ../lib/advene/gui/views/activebookmarks.py:1046
+msgid "Active bookmark"
+msgstr "Signet actif"
 
-#: ../lib/advene/gui/edit/elements.py:582
-#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/views/relationdisplay.py:113
-msgid "Members"
-msgstr "Membres"
+#: ../lib/advene/gui/views/activebookmarks.py:1084
+msgid "Validate the annotation"
+msgstr "Valider l'annotation"
 
-#: ../lib/advene/gui/edit/elements.py:600
-#: ../lib/advene/gui/edit/elements.py:677
-#: ../lib/advene/gui/edit/elements.py:737
-#: ../lib/advene/gui/edit/elements.py:1128
-#: ../lib/advene/gui/views/table.py:250
-msgid "Content"
-msgstr "Contenu"
+#: ../lib/advene/gui/views/activebookmarks.py:1228
+msgid "Duplicate bookmark"
+msgstr "Dupliquer le signet"
 
-#: ../lib/advene/gui/edit/elements.py:617
-msgid "Apply changes and visualise in web browser"
-msgstr "Appliquer les modifications et visualiser dans le navigateur"
+#: ../lib/advene/gui/views/activebookmarks.py:1229
+msgid "Remove bookmark"
+msgstr "Supprimer le signet"
 
-#: ../lib/advene/gui/edit/elements.py:622
-msgid "Apply changes and activate the view"
-msgstr "Appliquer les modifications et activer la vue"
+#: ../lib/advene/gui/views/activebookmarks.py:1238
+msgid "Remove begin timestamp"
+msgstr "Supprimer le temps de début"
 
-#: ../lib/advene/gui/edit/elements.py:630
-#: ../lib/advene/gui/edit/elements.py:711
-#: ../lib/advene/gui/edit/elements.py:768
-#: ../lib/advene/gui/edit/elements.py:859
-#: ../lib/advene/gui/edit/elements.py:928
-#: ../lib/advene/gui/edit/elements.py:1030
-msgid "Title (name)"
-msgstr "Titre (nom)"
+#: ../lib/advene/gui/views/activebookmarks.py:1245
+msgid "Complete bookmark"
+msgstr "Compléter le signet"
 
-#: ../lib/advene/gui/edit/elements.py:634
-msgid "Name of the view"
-msgstr "Nom de la vue"
+#: ../lib/advene/gui/views/activebookmarks.py:1249
+msgid "Change type to"
+msgstr "Changer le type en"
 
-#: ../lib/advene/gui/edit/elements.py:658
-msgid "Class"
-msgstr "Classe"
+#: ../lib/advene/gui/views/logwindow.py:43
+msgid "Links"
+msgstr "Liens"
 
-#: ../lib/advene/gui/edit/elements.py:661
-msgid "Match Filter"
-msgstr "Masque de filtrage"
+#: ../lib/advene/gui/views/logwindow.py:45
+msgid "URL stack"
+msgstr "Pile d'URL"
 
-#: ../lib/advene/gui/edit/elements.py:699 ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/views/logwindow.py:123
 #, python-format
-msgid "Exception in query: %s"
-msgstr "Exception dans la requête : %s"
+msgid "Go to %s"
+msgstr "Aller à %s"
 
-#: ../lib/advene/gui/edit/elements.py:704
-msgid "Validate and run query on package"
-msgstr "Valider et lancer la requête sur le recueil"
+#: ../lib/advene/gui/views/logwindow.py:129 ../lib/advene/rules/actions.py:63
+msgid "Go to the given position"
+msgstr "Déplacement à une position donnée"
 
-#: ../lib/advene/gui/edit/elements.py:715
-msgid "Name of the query"
-msgstr "Nom de la requête"
+#: ../lib/advene/gui/views/logwindow.py:157
+msgid "Push a URL on the stack"
+msgstr "Ajouter une URL à la pile"
 
-#: ../lib/advene/gui/edit/elements.py:772
-msgid "Name of the package"
-msgstr "Nom du recueil"
+#: ../lib/advene/gui/views/logwindow.py:158
+msgid "Description of the URL"
+msgstr "Description de l'URL"
 
-#: ../lib/advene/gui/edit/elements.py:790
-#: ../lib/advene/gui/edit/elements.py:881
-#: ../lib/advene/gui/edit/elements.py:960
-#: ../lib/advene/gui/edit/elements.py:1074
-msgid "Description"
-msgstr "Description"
+#: ../lib/advene/gui/views/interactivequery.py:51
+#: ../lib/advene/gui/views/interactivequery.py:99
+msgid "Interactive query"
+msgstr "Requête interactive"
 
-#: ../lib/advene/gui/edit/elements.py:794
-#: ../lib/advene/gui/edit/elements.py:885
-#: ../lib/advene/gui/edit/elements.py:964
-#: ../lib/advene/gui/edit/elements.py:1078
-msgid "Textual description of the package"
-msgstr "Description textuelle du recueil"
+#: ../lib/advene/gui/views/interactivequery.py:53
+msgid "Interactive query dialog"
+msgstr "Fenêtre de requête interactive"
 
-#: ../lib/advene/gui/edit/elements.py:799
-msgid "Default dynamic view"
-msgstr "Vue dynamique par défaut"
+#: ../lib/advene/gui/views/interactivequery.py:59
+#: ../lib/advene/gui/views/interactivequery.py:256
+msgid "Save query"
+msgstr "Sauver la requête"
 
-#: ../lib/advene/gui/edit/elements.py:803
-msgid "Dynamic view to activate on package load"
-msgstr "Vue dynamique à activer au chargement du recueil"
+#: ../lib/advene/gui/views/interactivequery.py:122
+#: ../lib/advene/gui/views/interactivequery.py:172
+#, python-format
+msgid ""
+"Invalid query.\n"
+"The following fields have an invalid value:\n"
+"%s"
+msgstr ""
+"Requête invalide.\n"
+"Les champs suivants ne sont pas valides:\n"
+"%s"
 
-#: ../lib/advene/gui/edit/elements.py:808
-msgid "Default static view"
-msgstr "Vue statique par défaut"
-
-#: ../lib/advene/gui/edit/elements.py:812
-msgid "Static view to open on package load"
-msgstr "Vue statique à ouvrir au chargement du recueil"
-
-#: ../lib/advene/gui/edit/elements.py:817
-msgid "Default adhoc view"
-msgstr "Vue adhoc par défaut"
-
-#: ../lib/advene/gui/edit/elements.py:821
-msgid "Adhoc view to open on package load"
-msgstr "Vue adhoc à ouvrir au chargement du recueil"
-
-#: ../lib/advene/gui/edit/elements.py:826
-msgid "Cached duration"
-msgstr "Durée mémorisée"
-
-#: ../lib/advene/gui/edit/elements.py:830
-msgid "Cached duration in ms"
-msgstr "Durée mémorisée du média en ms"
-
-#: ../lib/advene/gui/edit/elements.py:835
-msgid "Mediafile"
-msgstr "Fichier vidéo"
-
-#: ../lib/advene/gui/edit/elements.py:839
-msgid "Location of associated media file"
-msgstr "Emplacement du fichier vidéo associé"
-
-#: ../lib/advene/gui/edit/elements.py:863
-msgid "Name of the schema"
-msgstr "Nom du schéma"
+#: ../lib/advene/gui/views/interactivequery.py:136
+#: ../lib/advene/gui/views/interactivequery.py:296
+msgid "Saving the query..."
+msgstr "Sauvegarde de la requête"
 
-#: ../lib/advene/gui/edit/elements.py:895
-#: ../lib/advene/gui/edit/elements.py:975
-msgid "TALES expression returning a color for the element"
-msgstr "Expression TALES spécifiant une couleur pour l'élément"
+#: ../lib/advene/gui/views/interactivequery.py:137
+#: ../lib/advene/gui/views/interactivequery.py:297
+msgid "Give a title and identifier for saving the query"
+msgstr "Donnez un titre à la requête"
 
-#: ../lib/advene/gui/edit/elements.py:902
-#: ../lib/advene/gui/edit/elements.py:993
-msgid "Item color"
-msgstr "Couleur de l'item"
+#: ../lib/advene/gui/views/interactivequery.py:180
+msgid "Expert search"
+msgstr "Mode expert"
 
-#: ../lib/advene/gui/edit/elements.py:906
-#: ../lib/advene/gui/edit/elements.py:997
+#: ../lib/advene/gui/views/interactivequery.py:186
+#, python-format
 msgid ""
-"TALES expression returning a color for the items contained by the element"
+"TALES error in interactive expression:\n"
+"%s"
 msgstr ""
-"Expression TALES retournant une couleur pour les items contenus dans "
-"l'élément"
-
-#: ../lib/advene/gui/edit/elements.py:932
-#: ../lib/advene/gui/edit/elements.py:1034
-msgid "Name of the type"
-msgstr "Nom du type"
+"Erreur TALES dans l'expression interactive :<\n"
+"%s"
 
-#: ../lib/advene/gui/edit/elements.py:950
-#: ../lib/advene/gui/edit/elements.py:1039
-#: ../lib/advene/gui/edit/elements.py:1308
-msgid "MIME Type"
-msgstr "Type MIME"
+#: ../lib/advene/gui/views/interactivequery.py:247
+msgid "Interactive result"
+msgstr "Résultat de requête interactive"
 
-#: ../lib/advene/gui/edit/elements.py:954
-#: ../lib/advene/gui/edit/elements.py:1043
-msgid "MIMEType of the content"
-msgstr "Type MIME du contenu"
+#: ../lib/advene/gui/views/interactivequery.py:249
+msgid "Interactive result display"
+msgstr "Résultat de requête interactive"
 
-#: ../lib/advene/gui/edit/elements.py:982
-#: ../lib/advene/gui/views/transcription.py:165
-msgid "Representation"
-msgstr "Représentation"
+#: ../lib/advene/gui/views/interactivequery.py:274
+msgid "Result of interactive query"
+msgstr "Résultats de la requête interactive"
 
-#: ../lib/advene/gui/edit/elements.py:986
-msgid ""
-"TALES expression used to get a compact representation of the annotations"
-msgstr ""
-"Expression TALES fournissant une représentation compacte des annotations"
+#: ../lib/advene/gui/views/interactivequery.py:278
+msgid "Result of a query"
+msgstr "Résultat d'une requête"
 
-#: ../lib/advene/gui/edit/elements.py:987
+#: ../lib/advene/gui/views/interactivequery.py:333
 #, python-format
-msgid "Display %s key"
-msgstr "Afficher la clé %s"
+msgid "Comment on annotations containing %s"
+msgstr "Commentaire sur les annotations contenant %s"
 
-#: ../lib/advene/gui/edit/elements.py:1003
-msgid "Completions"
-msgstr "Complétions"
+#: ../lib/advene/gui/views/interactivequery.py:352
+msgid "Choose the annotation type where annotations will be created."
+msgstr "Choisissez le type d'annotation où les annotations seront créées."
 
-#: ../lib/advene/gui/edit/elements.py:1007
-msgid "Space-separated list of words used for content completion"
-msgstr "Liste de mots, séparés par des espaces, utilisés pour la complétion."
+#: ../lib/advene/gui/views/interactivequery.py:356
+#, python-format
+msgid "Copied result of the '%s' query"
+msgstr "Copie du résultat de la requête '%s'"
 
-#: ../lib/advene/gui/edit/elements.py:1013
-msgid "Advanced"
-msgstr "Avancées"
+#: ../lib/advene/gui/views/interactivequery.py:368
+#, python-format
+msgid "Search/replace content in %d elements"
+msgstr "Rechercher/remplacer dans %d éléments"
 
-#: ../lib/advene/gui/edit/elements.py:1063
-msgid "Any annotation type"
-msgstr "Tout type d'annotation"
+#: ../lib/advene/gui/views/interactivequery.py:396
+msgid "Edit query again"
+msgstr "Rééditer la requête"
 
-#: ../lib/advene/gui/edit/elements.py:1089
-msgid "TALES expression specifying a color"
-msgstr "Expression TALES spécifiant une couleur"
+#: ../lib/advene/gui/views/interactivequery.py:410
+msgid "Search again"
+msgstr "Relancer la recherche"
 
-#: ../lib/advene/gui/edit/elements.py:1116
-msgid "MIMEType"
-msgstr "Type MIME"
+#: ../lib/advene/gui/views/interactivequery.py:416
+msgid "Empty result"
+msgstr "Résultat vide"
 
-#: ../lib/advene/gui/edit/elements.py:1341
+#: ../lib/advene/gui/views/interactivequery.py:425
 #, python-format
-msgid "Error: cannot find a content handler for %s"
-msgstr "Erreur : impossible d'ouvrir une fenêtre d'édition pour %s"
+msgid "Result is a list of %d annotations."
+msgstr "Le résultat est une liste de %d annotation(s)."
 
-#: ../lib/advene/gui/edit/elements.py:1457
-#: ../lib/advene/gui/edit/elements.py:1682
+#: ../lib/advene/gui/views/interactivequery.py:427
 #, python-format
-msgid ""
-"Cannot read the data:\n"
-"%s"
-msgstr ""
-"Impossible de lire les données :\n"
-"%s"
+msgid "Result is a list of  %(number)d elements with %(elements)s."
+msgstr "Le résultat est une liste de %(number)d elements avec %(elements)s."
 
-#: ../lib/advene/gui/edit/elements.py:1481
-#: ../lib/advene/gui/edit/elements.py:1707
-msgid "Save content to..."
-msgstr "Sauver le contenu..."
+#: ../lib/advene/gui/views/interactivequery.py:439
+#: ../lib/advene/gui/edit/montage.py:478
+msgid "Unhighlight annotations"
+msgstr "Désactiver les annotations"
 
-#: ../lib/advene/gui/edit/elements.py:1492
-#: ../lib/advene/gui/edit/elements.py:1720
-#, python-format
-msgid ""
-"Cannot save the data:\n"
-"%s"
-msgstr ""
-"Impossible de sauvegarder les données :\n"
-"%s"
+#: ../lib/advene/gui/views/interactivequery.py:443
+#: ../lib/advene/gui/views/interactivequery.py:480
+#: ../lib/advene/gui/edit/montage.py:482 ../lib/advene/gui/edit/montage.py:491
+msgid "Highlight annotations"
+msgstr "Activer les annotations"
 
-#: ../lib/advene/gui/edit/elements.py:1511
-#: ../lib/advene/gui/edit/elements.py:1734
-msgid "Open a file (C-o)"
-msgstr "Ouvrir un fichier (C-o)"
+#: ../lib/advene/gui/views/interactivequery.py:464
+#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
+msgid "Annotations"
+msgstr "Annotations"
 
-#: ../lib/advene/gui/edit/elements.py:1516
-#: ../lib/advene/gui/edit/elements.py:1739
-msgid "Save to a file (C-s)"
-msgstr "Sauvegarder dans un fichier (C-s)"
+#: ../lib/advene/gui/views/interactivequery.py:470
+msgid "Other elements"
+msgstr "Autres éléments"
 
-#: ../lib/advene/gui/edit/elements.py:1521
-#: ../lib/advene/gui/edit/elements.py:1744
-msgid "Reload the file (C-r)"
-msgstr "Recharger le fichier (C-r)"
+#: ../lib/advene/gui/views/interactivequery.py:474
+msgid "Display annotations in timeline"
+msgstr "Afficher les annotations dans une ligne de temps"
 
-#: ../lib/advene/gui/edit/elements.py:1527
-msgid "Insert a value from the browser (C-i)"
-msgstr "Insérer une valeur depuis le browser (C-i)"
+#: ../lib/advene/gui/views/interactivequery.py:475
+msgid "Display annotations as transcription"
+msgstr "Afficher les annotations sous forme de transcription"
 
-#: ../lib/advene/gui/edit/elements.py:1773
-msgid "Begin time is greater than end time"
-msgstr "Le moment de début est plus grand que celui de fin"
+#: ../lib/advene/gui/views/interactivequery.py:481
+#: ../lib/advene/gui/views/interactivequery.py:503
+msgid "Export table"
+msgstr "Exporter le tableau"
 
-#: ../lib/advene/gui/edit/elements.py:1803
-#: ../lib/advene/gui/views/table.py:252
-msgid "Begin"
-msgstr "Début"
+#: ../lib/advene/gui/views/interactivequery.py:482
+msgid "Create annotations from the result"
+msgstr "Créer des annotations à partir du résultat"
 
-#: ../lib/advene/gui/edit/elements.py:1812
-#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/main.py:628
-msgid "End"
-msgstr "Fin"
+#: ../lib/advene/gui/views/interactivequery.py:483
+msgid "Define a montage with the result"
+msgstr "Définir un montage avec le résultat"
 
-#: ../lib/advene/gui/edit/elements.py:2044
-msgid "Expecting an integer."
-msgstr "Un entier est attendu."
+#: ../lib/advene/gui/views/interactivequery.py:484
+msgid "Create a comment view with the result"
+msgstr "Créer un commentaire avec le résultat"
 
-#: ../lib/advene/gui/edit/elements.py:2076
-#, python-format
-msgid ""
-"The %(attribute)s attribute could not be updated:\n"
-"\n"
-"%(error)s\n"
-"\n"
-"Resetting to the original value."
-msgstr ""
-"L'attribut %(attribute)s ne peut pas être mis à jour:\n"
-"\n"
-"%(error)s\n"
-"\n"
-"Il est remis à son ancienne valeur."
+#: ../lib/advene/gui/views/interactivequery.py:485
+msgid "Search and replace strings in the annotations content"
+msgstr "Cherche et remplace du texte dans le contenu des annotations"
 
-#: ../lib/advene/gui/edit/elements.py:2103
-#, python-format
-msgid ""
-"The following attributes cannot be updated:\n"
-"\n"
-"%s"
-msgstr ""
-"Les attributs suivants sont invalides :\n"
-"\n"
-"%s"
+#: ../lib/advene/gui/views/interactivequery.py:510
+msgid "Edit elements"
+msgstr "Éditer les éléments"
+
+#: ../lib/advene/gui/views/interactivequery.py:516
+msgid "Open in python evaluator"
+msgstr "Afficher dans l'évaluateur python"
 
-#: ../lib/advene/gui/edit/elements.py:2143
+#: ../lib/advene/gui/views/interactivequery.py:519
 #, python-format
 msgid ""
-"The following attributes could not be updated:\n"
-"\n"
+"Result:\n"
 "%s"
 msgstr ""
-"Les attributs suivants n'ont pas été mis à jour :\n"
-"\n"
+"Résultat:\n"
 "%s"
 
-#: ../lib/advene/gui/edit/elements.py:2160
-msgid "Attribute"
-msgstr "Attribut"
-
-#: ../lib/advene/gui/edit/elements.py:2168
-#: ../lib/advene/gui/views/browser.py:366
-msgid "Value"
-msgstr "Valeur"
+#: ../lib/advene/gui/views/interactivequery.py:561
+msgid "Results of _interactive query"
+msgstr "Résultats de la requête _interactive"
 
-#: ../lib/advene/gui/edit/elements.py:2259
-msgid "Insert an element"
-msgstr "Insérer un élément"
+#: ../lib/advene/gui/popup.py:138
+msgid "Choose the file to insert"
+msgstr "Choisissez le fichier à insérer"
 
-#: ../lib/advene/gui/edit/elements.py:2260
-msgid "Choose the element to insert."
-msgstr "Choisissez l'élément à insérer."
+#: ../lib/advene/gui/popup.py:146
+msgid "Select a valid identifier"
+msgstr "Sélectionnez un identificateur valide."
 
-#: ../lib/advene/gui/edit/elements.py:2330
-#: ../lib/advene/gui/edit/elements.py:2373
+#: ../lib/advene/gui/popup.py:147
 #, python-format
-msgid "Some tags contain invalid characters: %s"
-msgstr "Certains tags contiennent des caractères non-valides: %s"
+msgid ""
+"The filename %s contains invalid characters\n"
+"that have been replaced.\n"
+"You can modify this identifier if necessary:"
+msgstr ""
+"Le nom de fichier %s contient des caractères\n"
+"invalides qui ont été remplacés.\n"
+"Vous pouvez modifier cet identificateur si nécessaire."
 
-#: ../lib/advene/gui/edit/elements.py:2353
-msgid "Tags:"
-msgstr "Tags :"
+#: ../lib/advene/gui/popup.py:158
+msgid "Choose the soundclip to insert"
+msgstr "Choisissez le fichier son à insérer"
 
-#: ../lib/advene/gui/views/browser.py:163
-#: ../lib/advene/gui/views/browser.py:165
-msgid "TALES browser"
-msgstr "Explorateur TALES"
+#: ../lib/advene/gui/popup.py:162
+msgid "Choose the directory to insert"
+msgstr "Choisissez le répertoire à insérer."
 
-#: ../lib/advene/gui/views/browser.py:170
-msgid "Display result in table"
-msgstr "Afficher le résultat dans un tableau"
+#: ../lib/advene/gui/popup.py:177
+msgid "Named-Entity extraction using NERD"
+msgstr "Reconnaissance d'Entités Nommées avec NERD"
 
-#: ../lib/advene/gui/views/browser.py:193
-msgid "Insert path"
-msgstr "Insérer le chemin TALES"
+#: ../lib/advene/gui/popup.py:181
+msgid ""
+"Give the offset to use\n"
+"on specified element.\n"
+"It is in ms and can be\n"
+"either positive or negative."
+msgstr ""
+"Indiquez l'offset à ajouter\n"
+"sur l'élément spécifié.\n"
+"La valeur est en ms\n"
+"et peut être positive\n"
+"ou négative."
 
-#: ../lib/advene/gui/views/browser.py:194
-msgid "Insert value"
-msgstr "Insérer la valeur"
+#: ../lib/advene/gui/popup.py:225
+#, python-format
+msgid "Replace content in %s"
+msgstr "Remplacer du texte dans %s"
 
-#: ../lib/advene/gui/views/browser.py:249
-msgid "Expression returned None (there was an exception)"
-msgstr "L'expression a renvoyé None (il y a eu une exception)"
+#: ../lib/advene/gui/popup.py:228
+#, python-format
+msgid "Replace content in annotations of type %s"
+msgstr "Remplacer du texte dans les annotations de type %s"
 
-#: ../lib/advene/gui/views/browser.py:302
-msgid "Result is not a list"
-msgstr "Le résultat n'est pas une liste"
+#: ../lib/advene/gui/popup.py:231
+msgid "Replace content in all annotations"
+msgstr "Remplacer du texte dans toutes les annotations"
 
-#: ../lib/advene/gui/views/accumulatorpopup.py:49
-msgid "PopupAccumulator"
-msgstr "Accumulateur de popups"
+#: ../lib/advene/gui/popup.py:324
+#, python-format
+msgid "Copy id %s"
+msgstr "Copier l'id %s"
 
-#: ../lib/advene/gui/views/editionhistory.py:40
-msgid "Edition History"
-msgstr "Historique d'édition"
+#: ../lib/advene/gui/popup.py:358
+#, python-format
+msgid ""
+"<b>Statistics about %s</b>\n"
+"\n"
+msgstr ""
+"<b>Statistiques sur %s</b>\n"
+"\n"
 
-#: ../lib/advene/gui/views/editionhistory.py:42
-msgid "Access last edited/created elements"
-msgstr "Éléments récemment édités/créés"
+#: ../lib/advene/gui/popup.py:364
+#, python-format
+msgid "Renumbering annotations of type %s"
+msgstr "Renumérotation des annotations de type %s"
 
-#: ../lib/advene/gui/views/editionhistory.py:102
-msgid "Created"
-msgstr "Créés"
+#: ../lib/advene/gui/popup.py:371
+msgid ""
+"<b>Renumber all annotations according to their order.</b>\n"
+"\n"
+"<i>Note that this action cannot be undone.</i>\n"
+"Replace the first numeric value of the annotation content with the new "
+"annotation number.\n"
+"If no numeric value is found and the annotation is structured, it will "
+"insert the number.\n"
+"If no numeric value is found and the annotation is of type text/plain, it "
+"will overwrite the annotation content.\n"
+"The offset parameter allows you to renumber from a given annotation."
+msgstr ""
+"<b>Renumérotation des annotations suivant leur ordre.</b>\n"
+"\n"
+"<i>Attention, cette action ne peut pas être annulée.</i>\n"
+"Cette action va remplacer la première valeur numérique de l'annotation par "
+"son numéro d'ordre.\n"
+"Si aucune valeur numérique n'est présente et que l'annotation est "
+"structurée, le numéro sera inséré.\n"
+"Si aucune valeur numérique n'est trouvée et que le type est text/plain, le "
+"contenu de l'annotation sera écrasé.\n"
+"Le paramètre offset permet de commencer la numérotation à partir de "
+"l'annotation offset."
 
-#: ../lib/advene/gui/views/editionhistory.py:103
-msgid "Edited"
-msgstr "Édités"
+#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
+msgid "Offset"
+msgstr "Offset"
 
-#: ../lib/advene/gui/views/logwindow.py:43
-msgid "Links"
-msgstr "Liens"
+#: ../lib/advene/gui/popup.py:399
+#, python-format
+msgid "Renumbering %d annotations"
+msgstr "Renumérotation de %d annotations"
 
-#: ../lib/advene/gui/views/logwindow.py:45
-msgid "URL stack"
-msgstr "Pile d'URL"
+#: ../lib/advene/gui/popup.py:408
+#, python-format
+msgid "Annotation #%d"
+msgstr "Annotation #%d"
 
-#: ../lib/advene/gui/views/logwindow.py:123
+#: ../lib/advene/gui/popup.py:444 ../lib/advene/gui/edit/montage.py:309
 #, python-format
-msgid "Go to %s"
-msgstr "Aller à %s"
+msgid "Extracting %s"
+msgstr "Extraction de %s"
 
-#: ../lib/advene/gui/views/logwindow.py:157
-msgid "Push a URL on the stack"
-msgstr "Ajouter une URL à la pile"
+#: ../lib/advene/gui/popup.py:445
+#, python-format
+msgid ""
+"Exporting annotation %(title)s\n"
+"from %(begin)s to %(end)s\n"
+"to %%(filename)s"
+msgstr ""
+"Export de l'annotation %(title)s\n"
+"depuis %(begin)s à %(end)s\n"
+"to %%(filename)s"
 
-#: ../lib/advene/gui/views/logwindow.py:158
-msgid "Description of the URL"
-msgstr "Description de l'URL"
+#: ../lib/advene/gui/popup.py:456 ../lib/advene/gui/edit/transcribe.py:504
+msgid "Edit"
+msgstr "Éditer"
 
-#: ../lib/advene/gui/views/checker.py:37
-msgid "Checker"
-msgstr "Vérificateur"
+#: ../lib/advene/gui/popup.py:458
+msgid "Browse"
+msgstr "Explorateur TALES"
 
-#: ../lib/advene/gui/views/checker.py:39
-msgid "Check various package properties"
-msgstr "Vérifier diverses propriétés du recueil"
+#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
+msgid "Open in web browser"
+msgstr "Afficher dans un navigateur web"
 
-#: ../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/popup.py:472 ../lib/advene/gui/popup.py:476
+#: ../lib/advene/gui/edit/shapewidget.py:1598
+msgid "Delete"
+msgstr "Supprimer"
 
-#: ../lib/advene/gui/views/checker.py:108
-msgid "Overlapping"
-msgstr "Recouvrement"
+#: ../lib/advene/gui/popup.py:479
+msgid "Search/replace content"
+msgstr "Rechercher/remplacer"
 
-#: ../lib/advene/gui/views/tagbag.py:52
-msgid "Tag Bag"
-msgstr "Sac à tags"
+#: ../lib/advene/gui/popup.py:497
+msgid "Desactivate"
+msgstr "Désactiver"
 
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
-msgid "Bag of tags"
-msgstr "Sac à tags"
+#: ../lib/advene/gui/popup.py:514
+msgid "Loop"
+msgstr "Boucler"
 
-#: ../lib/advene/gui/views/tagbag.py:59
-msgid "New tag"
-msgstr "Nouveau tag"
+#: ../lib/advene/gui/popup.py:515
+msgid "Duplicate"
+msgstr "Dupliquer"
 
-#: ../lib/advene/gui/views/tagbag.py:122
-msgid "New tag name"
-msgstr "Nouveau tag"
+#: ../lib/advene/gui/popup.py:519
+msgid "Save snapshot..."
+msgstr "Prendre une capture d'écran"
 
-#: ../lib/advene/gui/views/tagbag.py:128
-msgid "Enter a new tag name and select its color."
-msgstr "Entrez un nouveau tag et sélectionnez sa couleur."
+#: ../lib/advene/gui/popup.py:521
+msgid "Extract video fragment"
+msgstr "Extraire un fragment vidéo"
 
-#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3720
-msgid "The tag contains invalid characters"
-msgstr "Ce tag contient des caractères non valides."
+#: ../lib/advene/gui/popup.py:551
+msgid "Incoming"
+msgstr "Entrantes"
 
-#: ../lib/advene/gui/views/tagbag.py:175
-msgid "Tag bag options"
-msgstr "Options du sac à tags"
+#: ../lib/advene/gui/popup.py:567
+msgid "Outgoing"
+msgstr "Sortantes"
 
-#: ../lib/advene/gui/views/tagbag.py:176
-msgid "Update with new tags"
-msgstr "Afficher les nouveaux tags"
+#: ../lib/advene/gui/popup.py:582
+msgid "Related annotations"
+msgstr "Annotations liées"
 
-#: ../lib/advene/gui/views/tagbag.py:176
-msgid "Automatically display new defined tags"
-msgstr "Afficher automatiquement les nouveaux tags"
+#: ../lib/advene/gui/popup.py:589
+msgid "Incoming relations"
+msgstr "Relations entrantes"
 
-#: ../lib/advene/gui/views/tagbag.py:225
-#, python-format
-msgid "Choose the color for tag %s"
-msgstr "Choisissez la couleur du tag %s"
+#: ../lib/advene/gui/popup.py:596
+msgid "Outgoing relations"
+msgstr "Relations sortantes"
 
-#: ../lib/advene/gui/views/tagbag.py:249
-msgid "Set color"
-msgstr "Choix de couleur"
+#: ../lib/advene/gui/popup.py:612
+#, python-format
+msgid "Begin: %s"
+msgstr "Début : %s"
 
-#: ../lib/advene/gui/views/tagbag.py:250
-msgid "Remove"
-msgstr "Supprimer"
+#: ../lib/advene/gui/popup.py:614
+#, python-format
+msgid "End: %s"
+msgstr "Fin : %s"
 
-#: ../lib/advene/gui/views/tagbag.py:324
-msgid "Drop a tag here to remove it from the list"
-msgstr "Déposez un tag ici pour le supprimer de la liste."
+#: ../lib/advene/gui/popup.py:615
+#, python-format
+msgid "Duration: %s"
+msgstr "Durée : %s"
 
-#: ../lib/advene/gui/views/tagbag.py:333
-msgid "Save as adhoc view"
-msgstr "Sauvegarder comme vue adhoc"
+#: ../lib/advene/gui/popup.py:622
+msgid "Members:"
+msgstr "Membres:"
 
-#: ../lib/advene/gui/views/tagbag.py:334
-msgid "Add a new tag"
-msgstr "Ajouter un nouveau tag"
+#: ../lib/advene/gui/popup.py:635
+msgid "Edit package properties..."
+msgstr "Éditer les propriétés du recueil..."
 
-#: ../lib/advene/gui/views/tagbag.py:335
-msgid "Display all defined tags"
-msgstr "Afficher tous les tags"
-
-#: ../lib/advene/gui/views/transcription.py:48
-msgid "Transcription"
-msgstr "Transcription"
-
-#: ../lib/advene/gui/views/transcription.py:50
-msgid "Display annotations as a text transcription"
-msgstr "Afficher les annotations sous forme de transcription"
-
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
 #, 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
-msgid "Transcription options"
-msgstr "Options de transcription"
-
-#: ../lib/advene/gui/views/transcription.py:164
-msgid "Default representation"
-msgstr "Représentation par défaut"
+msgid "%d annotations(s) - statistics"
+msgstr "%d annotation(s) - statistiques"
 
-#: ../lib/advene/gui/views/transcription.py:164
-msgid "Use the default representation for annotations"
-msgstr "Utiliser la représentation par défaut des annotations"
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
+msgid "Create a new static view..."
+msgstr "Créer une nouvelle vue statique..."
 
-#: ../lib/advene/gui/views/transcription.py:165
-msgid ""
-"If default representation is unchecked,\n"
-"this TALES expression that will be used to format the annotations."
-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/popup.py:639 ../lib/advene/gui/popup.py:865
+msgid "Create a new dynamic view..."
+msgstr "Créer une nouvelle vue dynamique..."
 
-#: ../lib/advene/gui/views/transcription.py:166
-msgid "Separator"
-msgstr "Séparateur"
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
+msgid "Create a new annotation..."
+msgstr "Créer une nouvelle annotation..."
 
-#: ../lib/advene/gui/views/transcription.py:167
-msgid "This separator will be inserted between the annotations."
-msgstr "Ce séparateur sera inséré entre les annotations."
+#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
+msgid "Create a new schema..."
+msgstr "Créer un nouveau schéma"
 
-#: ../lib/advene/gui/views/transcription.py:168
-msgid "Whitespace"
-msgstr "Espace"
+#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
+msgid "Create a new query..."
+msgstr "Créer une nouvelle requête"
 
-#: ../lib/advene/gui/views/transcription.py:169
-msgid "Newline"
-msgstr "Retour à la ligne"
+#: ../lib/advene/gui/popup.py:651
+msgid "Create a new folder..."
+msgstr "Créer un nouveau répertoire..."
 
-#: ../lib/advene/gui/views/transcription.py:170
-msgid "Tabulation"
-msgstr "Tabulation"
+#: ../lib/advene/gui/popup.py:652
+msgid "Create a new resource file..."
+msgstr "Créer une nouvelle ressource"
 
-#: ../lib/advene/gui/views/transcription.py:171
-msgid "Dash"
-msgstr "Tiret"
+#: ../lib/advene/gui/popup.py:653
+msgid "Insert a new resource file..."
+msgstr "Insérer un nouveau fichier ressource..."
 
-#: ../lib/advene/gui/views/transcription.py:172
-msgid "User defined"
-msgstr "Défini par l'utilisateur"
+#: ../lib/advene/gui/popup.py:654
+msgid "Insert a new resource directory..."
+msgstr "Insérer un nouveau répertoire ressource..."
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid "User-defined separator"
-msgstr "Séparateur défini par l'utilisateur"
+#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
+msgid "Insert a soundclip..."
+msgstr "Insérer un fichier son..."
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid ""
-"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
-"a tabulation."
-msgstr ""
-"Séparateur défini par l'utilisateur.\n"
-"Utilisez \\\\n pour un retour à la ligne et \\\\t pour une tabulation."
+#: ../lib/advene/gui/popup.py:676
+msgid "Play sound"
+msgstr "Jouer un son"
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Display timestamps"
-msgstr "Afficher les marques de temps"
+#: ../lib/advene/gui/popup.py:686
+msgid "Create a new annotation type..."
+msgstr "Créer un nouveau type d'annotation..."
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Insert timestsamp values"
-msgstr "Insérer les marques de temps"
+#: ../lib/advene/gui/popup.py:688
+msgid "Create a new relation type..."
+msgstr "Créer un nouveau type de relation..."
 
-#: ../lib/advene/gui/views/transcription.py:176
-msgid "Display annotation bounds"
-msgstr "Afficher les bornes des annotations"
+#: ../lib/advene/gui/popup.py:690 ../lib/advene/gui/popup.py:750
+#: ../lib/advene/gui/popup.py:803
+msgid "Select a color"
+msgstr "Choisissez une couleur"
 
-#: ../lib/advene/gui/views/transcription.py:236
+#: ../lib/advene/gui/popup.py:699
 #, python-format
-msgid ""
-"Cannot convert the following annotations,\n"
-"the representation pattern is too complex.\n"
-"%s"
-msgstr ""
-"Impossible de convertir les annotations suivantes,\n"
-"L'expression de représentation est trop complexe.\n"
-"%s"
-
-#: ../lib/advene/gui/views/transcription.py:247
-msgid ""
-"Cannot validate the update.\n"
-"The representation pattern is too complex."
-msgstr ""
-"Impossible de valider la mise à jour.\n"
-"L'expression de représentation est trop complexe."
+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/views/transcription.py:273
-msgid "Save transcription to a text file"
-msgstr "Sauvegarder la transcription dans un fichier texte"
+#: ../lib/advene/gui/popup.py:708
+#, python-format
+msgid "Caption %s annotations"
+msgstr "Sous-titrer les annotations de type %s"
 
-#: ../lib/advene/gui/views/transcription.py:274
-msgid "Apply the modifications"
-msgstr "Valider les modifications"
+#: ../lib/advene/gui/popup.py:718 ../lib/advene/rules/actions.py:119
+msgid "Caption the annotation"
+msgstr "Sous-titrer l'annotation"
 
-#: ../lib/advene/gui/views/transcription.py:275
-msgid "Find text"
-msgstr "Chercher dans le texte"
+#: ../lib/advene/gui/popup.py:740
+msgid "Create a comment view"
+msgstr "Créer une nouvelle vue commentaire"
 
-#: ../lib/advene/gui/views/transcription.py:276
-msgid "Quickly switch display options"
-msgstr "Modification rapide des options d'affichage"
+#: ../lib/advene/gui/popup.py:741
+msgid "Generate a caption dynamic view..."
+msgstr "Créer une vue dynamique de sous-titrage..."
 
-#: ../lib/advene/gui/views/transcription.py:277
-msgid "Refresh the transcription"
-msgstr "Rafraîchir la transcription"
+#: ../lib/advene/gui/popup.py:742
+msgid "Display as transcription"
+msgstr "Afficher en transcription"
 
-#: ../lib/advene/gui/views/transcription.py:278
-msgid "Edit preferences"
-msgstr "Éditer les préférences"
+#: ../lib/advene/gui/popup.py:743
+msgid "Display annotations in table"
+msgstr "Afficher les annotations dans un tableau"
 
-#: ../lib/advene/gui/views/transcription.py:697
-#, python-format
-msgid "Cannot write to %(filename)s: %(error)s:"
-msgstr "Impossible d'écrire dans %(filename)s : %(error)s"
+#: ../lib/advene/gui/popup.py:744
+msgid "Export to another format..."
+msgstr "Exporter dans un autre format..."
 
-#: ../lib/advene/gui/views/activebookmarks.py:52
-#: ../lib/advene/gui/views/activebookmarks.py:54
-msgid "ActiveBookmarks"
-msgstr "Signets Actifs"
+#: ../lib/advene/gui/popup.py:746
+msgid "Extract Named Entities..."
+msgstr "Extraire les entités nommées..."
 
-#: ../lib/advene/gui/views/activebookmarks.py:441
-msgid "Chronological order"
-msgstr "Ordre chronologique"
+#: ../lib/advene/gui/popup.py:752
+msgid "Delete all annotations"
+msgstr "Supprimer toutes les annotations"
 
-#: ../lib/advene/gui/views/activebookmarks.py:442
-msgid "Completeness and chronological order"
-msgstr "Complétude et ordre chronologique"
+#: ../lib/advene/gui/popup.py:753
+msgid "Renumber annotations..."
+msgstr "Renuméroter les annotations..."
 
-#: ../lib/advene/gui/views/activebookmarks.py:458
-msgid "Bookmark duration"
-msgstr "Durée du signet."
+#: ../lib/advene/gui/popup.py:754
+msgid "Shot validation view..."
+msgstr "Validation de plans..."
 
-#: ../lib/advene/gui/views/activebookmarks.py:459
-msgid "Enter the duration (in ms) to convert bookmarks into annotations"
-msgstr ""
-"Entrez la durée standard (en ms) pour convertir les signets en annotations."
+#: ../lib/advene/gui/popup.py:766
+#, 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/views/activebookmarks.py:481
-msgid "User-specified duration"
-msgstr "Durée définie par l'utilisateur"
+#: ../lib/advene/gui/popup.py:775
+#, python-format
+msgid "Follow %s relation-type"
+msgstr "Suivre le type de relation %s"
 
-#: ../lib/advene/gui/views/activebookmarks.py:482
-msgid "2s duration"
-msgstr "Durée de 2s"
+#: ../lib/advene/gui/popup.py:784
+msgid "Follow the relation"
+msgstr "Suivre la relation"
 
-#: ../lib/advene/gui/views/activebookmarks.py:483
-msgid "Complete coverage"
-msgstr "Couverture complète"
+#: ../lib/advene/gui/popup.py:804
+msgid "Delete all relations..."
+msgstr "Supprimer toutes les relations..."
 
-#: ../lib/advene/gui/views/activebookmarks.py:501
-msgid "Drop a bookmark here to remove it from the list"
-msgstr "Déposez un signet ici pour le supprimer de la liste."
+#: ../lib/advene/gui/popup.py:805
+msgid "Create montage from related annotations"
+msgstr "Créer un montage suivant les relations"
 
-#: ../lib/advene/gui/views/activebookmarks.py:520
-#: ../lib/advene/gui/views/bookmarks.py:243
-msgid "Insert a bookmark for the current video time"
-msgstr "Insérer un signet pour la position courante"
+#: ../lib/advene/gui/popup.py:806
+msgid "Create dynamic view following relations"
+msgstr "Créer une vue dynamique suivant les relations"
 
-#: ../lib/advene/gui/views/activebookmarks.py:528
-msgid "Type of the annotations that will be created"
-msgstr "Type d'annotation où les annotations seront créées."
+#: ../lib/advene/gui/popup.py:821 ../lib/advene/gui/edit/elements.py:703
+#, python-format
+msgid "Exception in query: %s"
+msgstr "Exception dans la requête : %s"
 
-#: ../lib/advene/gui/views/activebookmarks.py:561
-msgid "Reorder active bookmarks"
-msgstr "Réordonner les signets actifs"
+#: ../lib/advene/gui/popup.py:824
+msgid "Apply query on..."
+msgstr "Appliquer la requête sur..."
 
-#: ../lib/advene/gui/views/activebookmarks.py:562
-msgid "Complete bookmarks into annotations"
-msgstr "Compléter les signets en annotations"
+#: ../lib/advene/gui/popup.py:849
+msgid "Activate view"
+msgstr "Activation d'une vue"
 
-#: ../lib/advene/gui/views/activebookmarks.py:563
-msgid "Save the current state"
-msgstr "Sauvegarder l'état courant"
+#: ../lib/advene/gui/popup.py:851
+msgid "Open adhoc view"
+msgstr "Ouvrir une vue adhoc"
 
-#: ../lib/advene/gui/views/activebookmarks.py:863
-msgid "Remove end timestamp"
-msgstr "Supprimer la marque de temps de fin"
+#: ../lib/advene/gui/util/initialconfig.py:82
+msgid "Initial Advene configuration"
+msgstr "Configuration initiale d'Advene"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1071
+#: ../lib/advene/gui/util/initialconfig.py:83
 msgid ""
-"Error: cannot find an appropriate schema to create the Active-bookmark type."
+"<span size='large'><b>Welcome in Advene</b>\n"
+"This is the first time that you run Advene. Please answer some basic "
+"configuration questions. You will be able to modify these choices from the "
+"Advene interface, in the Edit/Preferences menu.</span>"
 msgstr ""
-"Erreur: impossible de trouver un schéma approprié pour créer le type Active-"
-"bookmark"
-
-#: ../lib/advene/gui/views/activebookmarks.py:1076
-msgid "Active bookmark"
-msgstr "Signet actif"
+"<span size='large'><b>Bienvenue dans Advene</b>\n"
+"C'est la première fois que vous utilisez Advene. Vous pouvez maintenant "
+"fixer certaines options de configuration essentielles. Vous pourrez modifier "
+"plus tard ces choix depuis l'interface d'Advene, dans le menu Edit/"
+"Préférences.</span>"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1114
-msgid "Validate the annotation"
-msgstr "Valider l'annotation"
+#: ../lib/advene/gui/util/initialconfig.py:84
+msgid "Interface language"
+msgstr "Langue de l'interface"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1260
-msgid "Duplicate bookmark"
-msgstr "Dupliquer le signet"
+#: ../lib/advene/gui/util/initialconfig.py:84
+msgid "Language used for the interface"
+msgstr "Langue utilisée pour l'interface"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1261
-msgid "Remove bookmark"
-msgstr "Supprimer le signet"
+#: ../lib/advene/gui/util/initialconfig.py:90
+msgid "Weekly check for Advene updates on the Advene website"
+msgstr "Vérification hebdomadaire des mises à jour depuis le site web d'Advene"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1270
-msgid "Remove begin timestamp"
-msgstr "Supprimer le temps de début"
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for data files"
+msgstr "Répertoire préféré pour les fichiers de données"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1277
-msgid "Complete bookmark"
-msgstr "Compléter le signet"
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for storing data files (Advene packages)"
+msgstr ""
+"Répertoire préféré pour stocker les fichiers de données (recueils Advene)"
 
-#: ../lib/advene/gui/views/activebookmarks.py:1281
-msgid "Change type to"
-msgstr "Changer le type en"
+#: ../lib/advene/gui/util/initialconfig.py:94
+msgid "Directories to search for movies"
+msgstr "Répertoires où chercher les films référencés"
 
-#: ../lib/advene/gui/views/bookmarks.py:48
-msgid "Bookmarks importer"
-msgstr "Importateur de signets"
+#: ../lib/advene/gui/util/initialconfig.py:94
+#, python-format
+msgid ""
+"List of directories (separated by %(pathsep)s) to search for movie files."
+msgstr "Liste de répertoires (séparés par %(pathsep)s) où chercher les vidéos."
 
-#: ../lib/advene/gui/views/bookmarks.py:69
-msgid "Bookmarks"
-msgstr "Signets"
+#: ../lib/advene/gui/util/initialconfig.py:95
+msgid "First look for movie file in the same directory as the package"
+msgstr ""
+"Chercher d'abord le fichier vidéo dans le même répertoire que le recueil"
 
-#: ../lib/advene/gui/views/bookmarks.py:71
-msgid "Bookmark timecodes with their corresponding screenshots"
-msgstr "Mémorise les temps avec les captures d'écran correspondantes"
+#: ../lib/advene/gui/util/initialconfig.py:95
+msgid ""
+"If checked, the movie file will be searched for in the same directory as the "
+"referencing package."
+msgstr ""
+"Si cette case est cochée, les fichiers vidéos seront recherchés d'abord dans "
+"le même répertoire que le recueil qui les référence."
 
-#: ../lib/advene/gui/views/bookmarks.py:142
-msgid "Select the annotation type to generate"
-msgstr "Choisissez le type d'annotation à générer"
+#: ../lib/advene/gui/util/__init__.py:44 ../lib/advene/gui/edit/create.py:106
+msgid "Plain text content"
+msgstr "Contenu textuel"
 
-#: ../lib/advene/gui/views/bookmarks.py:147
-msgid "Choose a duration"
-msgstr "Choisissez une durée"
+#: ../lib/advene/gui/util/__init__.py:45
+msgid "HTML content"
+msgstr "Contenu HTML"
 
-#: ../lib/advene/gui/views/bookmarks.py:148
-msgid "Enter the standard duration (in ms) of created annotations."
-msgstr "Entrez la durée standard (en ms) des annotations créées"
+#: ../lib/advene/gui/util/__init__.py:46 ../lib/advene/gui/edit/create.py:107
+msgid "Simple-structured content"
+msgstr "Contenu simplement structuré"
 
-#: ../lib/advene/gui/views/bookmarks.py:165
-msgid "Converted from bookmarks"
-msgstr "Converti depuis les signets"
+#: ../lib/advene/gui/util/__init__.py:47
+msgid "List of numeric values"
+msgstr "Liste de valeurs numériques"
 
-#: ../lib/advene/gui/views/bookmarks.py:223
-msgid "Drop a position here to remove it from the list"
-msgstr "Déposez une position ici pour l'enlever de la liste"
+#: ../lib/advene/gui/util/__init__.py:48 ../lib/advene/gui/edit/create.py:108
+msgid "SVG graphics content"
+msgstr "Contenu graphique SVG"
 
-#: ../lib/advene/gui/views/bookmarks.py:244
-msgid "Convert bookmarks to annotations"
-msgstr "Convertir les signets en annotations"
+#: ../lib/advene/gui/util/__init__.py:389
+#, python-format
+msgid ""
+"Annotation Type %(title)s:\n"
+"%(count)s"
+msgstr ""
+"Type d'annotation %(title)s:\n"
+"%(count)s"
 
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3609
-msgid "Comment here"
-msgstr "Commentez ici"
+#: ../lib/advene/gui/util/__init__.py:395
+#, python-format
+msgid ""
+"Relation Type %(title)s:\n"
+"%(count)s"
+msgstr ""
+"Type de relation %(title)s:\n"
+"%(count)s"
 
-#: ../lib/advene/gui/views/viewplugin.py:60
-msgid "Generic view plugin"
-msgstr "Plugin de vue générique"
+#: ../lib/advene/gui/util/dialog.py:414 ../lib/advene/gui/util/dialog.py:453
+msgid "Name the element"
+msgstr "Nommer l'élément"
 
-#: ../lib/advene/gui/views/viewplugin.py:62
-msgid "You should not ever see this tooltip..."
-msgstr "Vous ne devriez pas voir cette information..."
+#: ../lib/advene/gui/util/dialog.py:417 ../lib/advene/gui/util/dialog.py:454
+msgid "Choose a name for the element"
+msgstr "Choisissez un nom pour l'élément"
 
-#: ../lib/advene/gui/views/interactivequery.py:51
-#: ../lib/advene/gui/views/interactivequery.py:99
-msgid "Interactive query"
-msgstr "Requête interactive"
+#: ../lib/advene/gui/util/dialog.py:492
+msgid "Open a file"
+msgstr "Ouvrir un fichier"
 
-#: ../lib/advene/gui/views/interactivequery.py:53
-msgid "Interactive query dialog"
-msgstr "Fenêtre de requête interactive"
+#: ../lib/advene/gui/util/dialog.py:517 ../lib/advene/gui/util/dialog.py:553
+msgid "N/C"
+msgstr "N/C"
 
-#: ../lib/advene/gui/views/interactivequery.py:59
-#: ../lib/advene/gui/views/interactivequery.py:256
-msgid "Save query"
-msgstr "Sauver la requête"
+#: ../lib/advene/gui/util/dialog.py:522
+msgid "Alias"
+msgstr "Alias"
 
-#: ../lib/advene/gui/views/interactivequery.py:122
-#: ../lib/advene/gui/views/interactivequery.py:172
-#, python-format
+#: ../lib/advene/gui/util/dialog.py:542
 msgid ""
-"Invalid query.\n"
-"The following fields have an invalid value:\n"
-"%s"
+"Press to\n"
+"display\n"
+"information"
 msgstr ""
-"Requête invalide.\n"
-"Les champs suivants ne sont pas valides:\n"
-"%s"
+"Cliquez pour\n"
+"afficher\n"
+"des informations"
 
-#: ../lib/advene/gui/views/interactivequery.py:136
-#: ../lib/advene/gui/views/interactivequery.py:296
-msgid "Saving the query..."
-msgstr "Sauvegarde de la requête"
+#: ../lib/advene/gui/util/dialog.py:561
+msgid "Wait..."
+msgstr "Patientez..."
 
-#: ../lib/advene/gui/views/interactivequery.py:137
-#: ../lib/advene/gui/views/interactivequery.py:297
-msgid "Give a title and identifier for saving the query"
-msgstr "Donnez un titre à la requête"
+#: ../lib/advene/gui/util/dialog.py:565
+#, python-format
+msgid "Error: %s"
+msgstr "Erreur : %s"
 
-#: ../lib/advene/gui/views/interactivequery.py:180
-msgid "Expert search"
-msgstr "Mode expert"
+#: ../lib/advene/gui/util/dialog.py:585
+msgid "Any type of file"
+msgstr "Tout type de fichier"
 
-#: ../lib/advene/gui/views/interactivequery.py:186
-#, python-format
-msgid ""
-"TALES error in interactive expression:\n"
-"%s"
-msgstr ""
-"Erreur TALES dans l'expression interactive :<\n"
-"%s"
+#: ../lib/advene/gui/util/dialog.py:587
+msgid "Advene files (.xml, .azp, .apl)"
+msgstr "Fichiers advene (.xml, .azp, .apl)"
 
-#: ../lib/advene/gui/views/interactivequery.py:247
-msgid "Interactive result"
-msgstr "Résultat de requête interactive"
+#: ../lib/advene/gui/util/dialog.py:589
+msgid "Advene session (.apl)"
+msgstr "Session Advene (.apl)"
 
-#: ../lib/advene/gui/views/interactivequery.py:249
-msgid "Interactive result display"
-msgstr "Résultat de requête interactive"
+#: ../lib/advene/gui/util/dialog.py:590
+msgid "Audio files"
+msgstr "Fichiers audio"
 
-#: ../lib/advene/gui/views/interactivequery.py:274
-msgid "Result of interactive query"
-msgstr "Résultats de la requête interactive"
+#: ../lib/advene/gui/util/dialog.py:591
+msgid "Video files"
+msgstr "Fichiers vidéo"
 
-#: ../lib/advene/gui/views/interactivequery.py:278
-msgid "Result of a query"
-msgstr "Résultat d'une requête"
+#: ../lib/advene/gui/util/dialog.py:636
+#: ../lib/advene/gui/edit/properties.py:423
+msgid "Choose a directory"
+msgstr "Choisissez un répertoire"
 
-#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3188
-#, python-format
-msgid "'%s'"
-msgstr "'%s'"
+#: ../lib/advene/gui/util/dialog.py:689
+msgid "Select an element"
+msgstr "Choisissez un élément"
 
-#: ../lib/advene/gui/views/interactivequery.py:333
-#, python-format
-msgid "Comment on annotations containing %s"
-msgstr "Commentaire sur les annotations contenant %s"
+#: ../lib/advene/gui/edit/rules.py:88 ../lib/advene/gui/edit/rules.py:90
+#: ../lib/advene/gui/edit/create.py:252
+msgid "Rule"
+msgstr "Règle"
 
-#: ../lib/advene/gui/views/interactivequery.py:352
-msgid "Choose the annotation type where annotations will be created."
-msgstr "Choisissez le type d'annotation où les annotations seront créées."
+#: ../lib/advene/gui/edit/rules.py:99 ../lib/advene/gui/edit/create.py:242
+msgid "Subviews"
+msgstr "Vues associées"
 
-#: ../lib/advene/gui/views/interactivequery.py:356
-#, python-format
-msgid "Copied result of the '%s' query"
-msgstr "Copie du résultat de la requête '%s'"
+#: ../lib/advene/gui/edit/rules.py:126
+msgid "Add a new rule"
+msgstr "Ajouter une nouvelle règle"
 
-#: ../lib/advene/gui/views/interactivequery.py:368
-#, python-format
-msgid "Search/replace content in %d elements"
-msgstr "Rechercher/remplacer dans %d éléments"
+#: ../lib/advene/gui/edit/rules.py:130
+msgid "Subview"
+msgstr "Vues associées"
 
-#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3185
-msgid "Empty quicksearch string"
-msgstr "Chaîne de recherche vide"
+#: ../lib/advene/gui/edit/rules.py:133
+msgid "Add a subview list"
+msgstr "Ajouter une nouvelle liste de sous-vuews"
 
-#: ../lib/advene/gui/views/interactivequery.py:396
-msgid "Edit query again"
-msgstr "Rééditer la requête"
+#: ../lib/advene/gui/edit/rules.py:139
+msgid "Remove the current rule"
+msgstr "Supprimer la règle en cours"
 
-#: ../lib/advene/gui/views/interactivequery.py:400
-#: ../lib/advene/gui/views/finder.py:436
-msgid "Edit query"
-msgstr "Éditer la requête"
+#: ../lib/advene/gui/edit/rules.py:279
+msgid "Source expression"
+msgstr "Expression source"
 
-#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:537
-msgid "String to search"
-msgstr "Chaîne à rechercher"
+#: ../lib/advene/gui/edit/rules.py:281
+msgid "Return expression"
+msgstr "Expression de retour"
 
-#: ../lib/advene/gui/views/interactivequery.py:410
-msgid "Search again"
-msgstr "Relancer la recherche"
+#: ../lib/advene/gui/edit/rules.py:355
+msgid "For all elements in "
+msgstr "Pour tous les éléments de "
 
-#: ../lib/advene/gui/views/interactivequery.py:416
-msgid "Empty result"
-msgstr "Résultat vide"
+#: ../lib/advene/gui/edit/rules.py:356
+msgid "All annotations of the package"
+msgstr "Toutes les annotations du recueil"
 
-#: ../lib/advene/gui/views/interactivequery.py:425
-#, python-format
-msgid "Result is a list of %d annotations."
-msgstr "Le résultat est une liste de %d annotation(s)."
+#: ../lib/advene/gui/edit/rules.py:357
+msgid "All views of the package"
+msgstr "Toutes les vues du recueil"
 
-#: ../lib/advene/gui/views/interactivequery.py:427
-#, python-format
-msgid "Result is a list of  %(number)d elements with %(elements)s."
-msgstr "Le résultat est une liste de %(number)d elements avec %(elements)s."
-
-#: ../lib/advene/gui/views/interactivequery.py:470
-msgid "Other elements"
-msgstr "Autres éléments"
+#: ../lib/advene/gui/edit/rules.py:358 ../lib/advene/gui/edit/rules.py:802
+msgid "The context annotations"
+msgstr "Les annotations du contexte"
 
-#: ../lib/advene/gui/views/interactivequery.py:474
-msgid "Display annotations in timeline"
-msgstr "Afficher les annotations dans une ligne de temps"
+#: ../lib/advene/gui/edit/rules.py:359 ../lib/advene/gui/edit/rules.py:803
+msgid "The annotations of the context type"
+msgstr "Les annotations du type du contexte"
 
-#: ../lib/advene/gui/views/interactivequery.py:475
-msgid "Display annotations as transcription"
-msgstr "Afficher les annotations sous forme de transcription"
+#: ../lib/advene/gui/edit/rules.py:362 ../lib/advene/core/controller.py:584
+#, python-format
+msgid "Annotations of type %s"
+msgstr "Annotations de type %s"
 
-#: ../lib/advene/gui/views/interactivequery.py:481
-#: ../lib/advene/gui/views/interactivequery.py:503
-msgid "Export table"
-msgstr "Exporter le tableau"
+#: ../lib/advene/gui/edit/rules.py:374
+msgid "Return "
+msgstr "Retourne "
 
-#: ../lib/advene/gui/views/interactivequery.py:482
-msgid "Create annotations from the result"
-msgstr "Créer des annotations à partir du résultat"
+#: ../lib/advene/gui/edit/rules.py:376 ../lib/advene/gui/edit/rules.py:791
+msgid "The element"
+msgstr "L'élément"
 
-#: ../lib/advene/gui/views/interactivequery.py:483
-msgid "Define a montage with the result"
-msgstr "Définir un montage avec le résultat"
+#: ../lib/advene/gui/edit/rules.py:377 ../lib/advene/gui/edit/rules.py:792
+msgid "The element's content"
+msgstr "Le contenu de l'élément"
 
-#: ../lib/advene/gui/views/interactivequery.py:484
-msgid "Create a comment view with the result"
-msgstr "Créer un commentaire avec le résultat"
+#: ../lib/advene/gui/edit/rules.py:392
+msgid "If the element matches "
+msgstr "Si l'élément correspond à "
 
-#: ../lib/advene/gui/views/interactivequery.py:485
-msgid "Search and replace strings in the annotations content"
-msgstr "Cherche et remplace du texte dans le contenu des annotations"
+#: ../lib/advene/gui/edit/rules.py:394
+msgid "Return the element if it matches "
+msgstr "Renvoie l'élément s'il correspond à "
 
-#: ../lib/advene/gui/views/interactivequery.py:510
-msgid "Edit elements"
-msgstr "Éditer les éléments"
+#: ../lib/advene/gui/edit/rules.py:412 ../lib/advene/gui/edit/rules.py:621
+msgid "All conditions must be met"
+msgstr "Toutes les conditions doivent être remplies"
 
-#: ../lib/advene/gui/views/interactivequery.py:516
-msgid "Open in python evaluator"
-msgstr "Afficher dans l'évaluateur python"
+#: ../lib/advene/gui/edit/rules.py:413 ../lib/advene/gui/edit/rules.py:622
+msgid "Any condition can be met"
+msgstr "Une des conditions doit être remplie"
 
-#: ../lib/advene/gui/views/interactivequery.py:519
+#: ../lib/advene/gui/edit/rules.py:497 ../lib/advene/gui/edit/rules.py:567
 #, python-format
-msgid ""
-"Result:\n"
-"%s"
-msgstr ""
-"Résultat:\n"
-"%s"
-
-#: ../lib/advene/gui/views/interactivequery.py:561
-msgid "Results of _interactive query"
-msgstr "Résultats de la requête _interactive"
+msgid "Rule <b>%s</b>"
+msgstr "Règle <b>%s</b>"
 
-#: ../lib/advene/gui/views/relationdisplay.py:34
-msgid "RelationDisplay"
-msgstr "AfficheRelation"
+#: ../lib/advene/gui/edit/rules.py:578
+msgid "Rule name"
+msgstr "Nom de la règle"
 
-#: ../lib/advene/gui/views/relationdisplay.py:36
-msgid "Display the contents of a relation"
-msgstr "Affiche le contenu d'une relation"
+#: ../lib/advene/gui/edit/rules.py:595
+msgid "Event"
+msgstr "Événement"
 
-#: ../lib/advene/gui/views/relationdisplay.py:79
-msgid "No relation"
-msgstr "Pas de relation"
+#: ../lib/advene/gui/edit/rules.py:603
+msgid "If"
+msgstr "Si"
 
-#: ../lib/advene/gui/views/relationdisplay.py:104
-#: ../lib/advene/gui/views/annotationdisplay.py:253
-msgid "Contents"
-msgstr "Contenu"
+#: ../lib/advene/gui/edit/rules.py:642
+msgid "Then"
+msgstr "Alors"
 
-#: ../lib/advene/gui/views/html.py:62
-msgid "Cannot go back: first item in history"
-msgstr ""
-"Impossible de revenir en arrière : c'est le premier élément de l'historique"
+#: ../lib/advene/gui/edit/rules.py:687
+msgid "When the "
+msgstr "Quand le/la"
 
-#: ../lib/advene/gui/views/html.py:220
-#, python-format
-msgid "%s%% loaded"
-msgstr "%s%% chargé"
+#: ../lib/advene/gui/edit/rules.py:700
+msgid " occurs,"
+msgstr " intervient,"
 
-#: ../lib/advene/gui/views/html.py:223
+#: ../lib/advene/gui/edit/rules.py:727 ../lib/advene/gui/edit/rules.py:730
 #, python-format
-msgid "Title %s"
-msgstr "Titre %s"
-
-#: ../lib/advene/gui/views/html.py:287
-msgid "HTML Viewer"
-msgstr "Visualiseur HTML"
-
-#: ../lib/advene/gui/views/html.py:289
-msgid "Embedded HTML widget"
-msgstr "Composant de visualisation HTML"
+msgid "Condition expression: %s"
+msgstr "Expression de condition : %s"
 
-#: ../lib/advene/gui/views/html.py:319
-msgid "No available HTML rendering component"
-msgstr "Aucun moteur de rendu HTML n'est disponible"
+#: ../lib/advene/gui/edit/rules.py:769
+msgid "The annotation type"
+msgstr "Le type d'annotation"
 
-#: ../lib/advene/gui/views/viewbook.py:36
-msgid "ViewBook"
-msgstr "Collection de vues"
+#: ../lib/advene/gui/edit/rules.py:772
+#, python-format
+msgid "The value of the %s attribute"
+msgstr "La valeur de l'attribut %s"
 
-#: ../lib/advene/gui/views/viewbook.py:57
-#: ../lib/advene/gui/views/viewbook.py:64
-msgid "Cannot remove this widget, it is essential."
-msgstr "Impossible de supprimer ce composant, il est essentiel."
+#: ../lib/advene/gui/edit/rules.py:774
+msgid "The annotation fragment"
+msgstr "Le fragment de l'annotation"
 
-#: ../lib/advene/gui/views/viewbook.py:135
-msgid "Detach"
-msgstr "Détacher"
+#: ../lib/advene/gui/edit/rules.py:775
+msgid "The annotation begin time"
+msgstr "Le temps de début de l'annotation"
 
-#: ../lib/advene/gui/views/viewbook.py:139
-#: ../lib/advene/gui/views/editaccumulator.py:76
-msgid "Close"
-msgstr "Fermer"
+#: ../lib/advene/gui/edit/rules.py:776
+msgid "The annotation end time"
+msgstr "Le temps de fin de l'annotation"
 
-#: ../lib/advene/gui/views/viewbook.py:157
-msgid "Rename the view"
-msgstr "Renommer la vue"
+#: ../lib/advene/gui/edit/rules.py:778
+msgid "The annotation MIME-type"
+msgstr "Le type MIME de l'annotation"
 
-#: ../lib/advene/gui/views/viewbook.py:158
-msgid "Please enter the new name of the view"
-msgstr "Entrez le nouveau nom de la vue"
+#: ../lib/advene/gui/edit/rules.py:779
+msgid "The annotation's incoming relations"
+msgstr "Les relations entrantes de l'annotation"
 
-#: ../lib/advene/gui/views/viewbook.py:197
-msgid "Detach view in its own window, or drag-and-drop to another zone"
-msgstr ""
-"Détacher la vue dans sa propre fenêtre, ou glisser-déposer vers une autre "
-"zone"
+#: ../lib/advene/gui/edit/rules.py:780
+msgid "The annotation's outgoing relations"
+msgstr "Les relations sortantes de l'annotation"
 
-#: ../lib/advene/gui/views/viewbook.py:211
-msgid "Close view"
-msgstr "Fermer la vue"
+#: ../lib/advene/gui/edit/rules.py:783
+#, python-format
+msgid "The %s-related incoming annotations"
+msgstr "Les annotations liées une relation entrante de type %s"
 
-#: ../lib/advene/gui/views/viewbook.py:286
-msgid "Open a new transcription for..."
-msgstr "Ouvrir une nouvelle vue transcription pour..."
+#: ../lib/advene/gui/edit/rules.py:787
+#, python-format
+msgid "The %s-related outgoing annotations"
+msgstr "Les annotations liées une relation sortante de type %s"
 
-#: ../lib/advene/gui/views/viewbook.py:298
-msgid "Create a new comment view"
-msgstr "Créer une nouvelle vue commentaire"
+#: ../lib/advene/gui/edit/rules.py:793
+msgid "The element fragment"
+msgstr "Le fragment de l'élément"
 
-#: ../lib/advene/gui/views/viewbook.py:300
-msgid "Open a new view"
-msgstr "Ouvrir une nouvelle vue"
+#: ../lib/advene/gui/edit/rules.py:794
+msgid "The element begin time"
+msgstr "Le temps de début de l'élément"
 
-#: ../lib/advene/gui/views/viewbook.py:375
-#, python-format
-msgid "Use annotation-type %s :"
-msgstr "Utiliser le type d'annotation %s :"
+#: ../lib/advene/gui/edit/rules.py:795
+msgid "The element end time"
+msgstr "Le temps de fin de l'élément"
 
-#: ../lib/advene/gui/views/viewbook.py:378
-#: ../lib/advene/gui/views/viewbook.py:404
-msgid "to edit it"
-msgstr "pour l'éditer"
+#: ../lib/advene/gui/edit/rules.py:796
+msgid "The element duration"
+msgstr "La durée de l'élément"
 
-#: ../lib/advene/gui/views/viewbook.py:379
-#: ../lib/advene/gui/views/viewbook.py:405
-#: ../lib/advene/gui/views/viewbook.py:437
-msgid "to create a new static view"
-msgstr "pour créer une nouvelle vue statique"
+#: ../lib/advene/gui/edit/rules.py:797
+msgid "The element type"
+msgstr "Le type d'élément"
 
-#: ../lib/advene/gui/views/viewbook.py:381
-msgid "in a timeline"
-msgstr "dans une ligne de temps"
+#: ../lib/advene/gui/edit/rules.py:798
+msgid "The element's incoming relations"
+msgstr "Les relations entrantes de l'élément"
 
-#: ../lib/advene/gui/views/viewbook.py:382
-msgid "as a montage"
-msgstr "comme un montage"
+#: ../lib/advene/gui/edit/rules.py:799
+msgid "The element's outgoing relations"
+msgstr "Les relations sortantes de l'élément"
 
-#: ../lib/advene/gui/views/viewbook.py:383
-#: ../lib/advene/gui/views/viewbook.py:436
-msgid "in a table"
-msgstr "dans une table"
+#: ../lib/advene/gui/edit/rules.py:800
+msgid "The context"
+msgstr "Le contexte"
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
-msgid "in a query"
-msgstr "dans une requête"
+#: ../lib/advene/gui/edit/rules.py:801
+msgid "The context fragment"
+msgstr "Le fragment du contexte"
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
+#: ../lib/advene/gui/edit/rules.py:813
 #, python-format
-msgid "Query %s"
-msgstr "Requête %s"
-
-#: ../lib/advene/gui/views/viewbook.py:385
-#: ../lib/advene/gui/views/viewbook.py:407
-msgid "in the TALES browser"
-msgstr "dans l'explorateur TALES"
+msgid "annotation-type %s"
+msgstr "Type d'annotation %s"
 
-#: ../lib/advene/gui/views/viewbook.py:385
+#: ../lib/advene/gui/edit/rules.py:816
 #, python-format
-msgid "Browsing %s"
-msgstr "Explore %s"
+msgid "relation-type %s"
+msgstr "type de relation %s"
 
-#: ../lib/advene/gui/views/viewbook.py:401
-#, python-format
-msgid "Use annotation %s :"
-msgstr "Utiliser l'annotation %s :"
+#: ../lib/advene/gui/edit/rules.py:838
+msgid "Select a condition"
+msgstr "Sélectionnez une condition"
 
-#: ../lib/advene/gui/views/viewbook.py:407
+#: ../lib/advene/gui/edit/rules.py:882
 #, python-format
-msgid "Browse %s"
-msgstr "Explore %s"
+msgid "Parameter %s"
+msgstr "Paramètre %s"
 
-#: ../lib/advene/gui/views/viewbook.py:408
-msgid "to display its contents"
-msgstr "pour afficher son contenu"
+#: ../lib/advene/gui/edit/rules.py:996
+msgid "Select an action"
+msgstr "Sélectionnez une action"
 
-#: ../lib/advene/gui/views/viewbook.py:408
-#, python-format
-msgid "%s"
-msgstr "%s"
+#: ../lib/advene/gui/edit/rules.py:1087
+msgid "Activate?"
+msgstr "Activer?"
 
-#: ../lib/advene/gui/views/viewbook.py:409
-msgid "as a bookmark"
-msgstr "comme un signet"
+#: ../lib/advene/gui/edit/properties.py:37
+#: ../lib/advene/gui/edit/shapewidget.py:1599
+msgid "Properties"
+msgstr "Propriétés"
 
-#: ../lib/advene/gui/views/viewbook.py:427
-msgid "as the context for the query..."
-msgstr "comme context pour la requête..."
+#: ../lib/advene/gui/edit/properties.py:376
+msgid "Choose a file"
+msgstr "Choisissez un fichier"
 
-#: ../lib/advene/gui/views/viewbook.py:431
-msgid "Set of annotations"
-msgstr "Ensemble d'annotations"
-
-#: ../lib/advene/gui/views/viewbook.py:432
-msgid "Use annotations:"
-msgstr "Utiliser les annotations :"
-
-#: ../lib/advene/gui/views/viewbook.py:435
-msgid "to edit them"
-msgstr "pour les éditer"
+#: ../lib/advene/gui/edit/frameselector.py:44
+msgid "Click on a frame to select its time."
+msgstr "Cliquer sur une image pour sélectionner son temps."
 
-#: ../lib/advene/gui/views/viewbook.py:438
-msgid "as bookmarks"
-msgstr "comme des signets"
+#: ../lib/advene/gui/edit/frameselector.py:181
+msgid "Select the appropriate snapshot"
+msgstr "Sélectionnez l'image appropriée"
 
-#: ../lib/advene/gui/views/singletonpopup.py:32
-msgid "SingletonPopup"
-msgstr "Fenêtre singleton"
+#: ../lib/advene/gui/edit/frameselector.py:234
+#: ../lib/advene/gui/edit/frameselector.py:287
+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/views/timeline.py:121 ../lib/advene/gui/main.py:1221
-msgid "Timeline"
-msgstr "Ligne de Temps"
+#: ../lib/advene/gui/edit/create.py:81
+#, python-format
+msgid "%s creation"
+msgstr "Création de %s"
 
-#: ../lib/advene/gui/views/timeline.py:123
-msgid "Display annotations on a timeline"
-msgstr "Vue en ligne de temps"
+#: ../lib/advene/gui/edit/create.py:82
+#, python-format
+msgid ""
+"To create a new element of type %s,\n"
+"you must give the following information."
+msgstr ""
+"Pour créer un nouvel élément de type %s\\n\n"
+"vous devez fournir les informations suivantes."
 
-#: ../lib/advene/gui/views/timeline.py:137
-msgid "Limit display to current area"
-msgstr "Limiter l'affichage à la zone courante"
+#: ../lib/advene/gui/edit/create.py:111
+msgid "Dynamic view"
+msgstr "Vue dynamique"
 
-#: ../lib/advene/gui/views/timeline.py:138
-#: ../lib/advene/gui/views/timeline.py:3265
-msgid "Display whole movie"
-msgstr "Afficher tout le film"
+#: ../lib/advene/gui/edit/create.py:112
+msgid "HTML template"
+msgstr "Modèle HTML"
 
-#: ../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/edit/create.py:113
+msgid "Plain XML"
+msgstr "Modèle XML"
 
-#: ../lib/advene/gui/views/timeline.py:218
-msgid "No scrolling"
-msgstr "Pas de défilement"
+#: ../lib/advene/gui/edit/create.py:114
+msgid "SVG template"
+msgstr "Modèle SVG"
 
-#: ../lib/advene/gui/views/timeline.py:219
-msgid "Continuous scrolling"
-msgstr "Défilement continu"
+#: ../lib/advene/gui/edit/create.py:115
+msgid "Plain text template"
+msgstr "Modèle de texte simple"
 
-#: ../lib/advene/gui/views/timeline.py:220
-msgid "Discrete scrolling"
-msgstr "Défilement discret"
+#: ../lib/advene/gui/edit/create.py:118
+msgid "Simple query"
+msgstr "Requête simple"
 
-#: ../lib/advene/gui/views/timeline.py:221
-msgid "Annotation scrolling"
-msgstr "Défilement sur annotation"
+#: ../lib/advene/gui/edit/create.py:120
+msgid "Directory"
+msgstr "Répertoire"
 
-#: ../lib/advene/gui/views/timeline.py:483
-#, python-format
-msgid "%d annotations"
-msgstr "%d annotations"
+#: ../lib/advene/gui/edit/create.py:122 ../lib/advene/util/helper.py:411
+msgid "Resource File"
+msgstr "Fichier de ressource"
 
-#: ../lib/advene/gui/views/timeline.py:486
-msgid "Display all types"
-msgstr "Afficher tous les types"
+#: ../lib/advene/gui/edit/create.py:128
+msgid "No available type."
+msgstr "Pas de type disponible."
 
-#: ../lib/advene/gui/views/timeline.py:488
+#: ../lib/advene/gui/edit/create.py:172
 #, python-format
 msgid ""
-"There are %d annotations.\n"
-"The current timeline may take a long time to display them, so only the first "
-"two annotation types are displayed. Use the annotation type selector (second "
-"button in the timeline) to select other annotations types to display, or "
-"click on the 'Display all types' button below."
+"The identifier %s is not valid.\n"
+"It must be composed of non-accentuated alphabetic characters\n"
+"Underscore is allowed."
 msgstr ""
-"Il y a %d annotations.\n"
-"La timeline actuelle peut prendre beaucoup de temps pour les afficher, donc "
-"seuls les deux premiers types d'annotations sont affichés. Utilisez le "
-"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:963
-msgid "Split at current player position"
-msgstr "Couper à la valeur de la position courante"
-
-#: ../lib/advene/gui/views/timeline.py:967
-msgid "Center and zoom"
-msgstr "Centrer et zoomer"
+"L'identifcateur %s n'est pas valide.\n"
+"Il doit être composé de caractères alphabétiques non-accentués.\n"
+"Le souligné (_) est autorisé."
 
-#: ../lib/advene/gui/views/timeline.py:1058
-#: ../lib/advene/gui/views/tree.py:808 ../lib/advene/gui/main.py:4563
-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/edit/create.py:177
+#, python-format
+msgid "The identifier %s is already defined."
+msgstr "L'identificateur %s est déjà défini."
 
-#: ../lib/advene/gui/views/timeline.py:1071
-#: ../lib/advene/gui/views/tree.py:821
-msgid "Create a relation"
-msgstr "Créer une relation"
+#: ../lib/advene/gui/edit/create.py:310
+msgid "New resource data"
+msgstr "Nouvelle ressource"
 
-#: ../lib/advene/gui/views/timeline.py:1081
-#: ../lib/advene/gui/views/tree.py:831
-msgid "Create a new relation-type."
-msgstr "Créer un nouveau type de relation"
+#: ../lib/advene/gui/edit/imports.py:129 ../lib/advene/gui/edit/imports.py:130
+#: ../lib/advene/core/controller.py:585
+msgid "Views"
+msgstr "Vues"
 
-#: ../lib/advene/gui/views/timeline.py:1107
-msgid "Merge with this annotation"
-msgstr "Fusionner avec cette annotation"
+#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
+msgid "Schemas"
+msgstr "Schémas"
 
-#: ../lib/advene/gui/views/timeline.py:1116
-msgid "Align both begin times"
-msgstr "Aligner les temps de début"
+#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
+#: ../lib/advene/gui/edit/elements.py:521
+msgid "Relations"
+msgstr "Relations"
 
-#: ../lib/advene/gui/views/timeline.py:1117
-msgid "Align both end times"
-msgstr "Aligner les temps de fin"
+#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
+msgid "Queries"
+msgstr "Requêtes"
 
-#: ../lib/advene/gui/views/timeline.py:1118
-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/edit/imports.py:320
+msgid "Imported?"
+msgstr "Importé ?"
 
-#: ../lib/advene/gui/views/timeline.py:1119
-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/edit/imports.py:337 ../lib/advene/gui/edit/elements.py:513
+#: ../lib/advene/gui/edit/elements.py:562
+#: ../lib/advene/gui/edit/elements.py:649
+#: ../lib/advene/gui/edit/elements.py:729
+#: ../lib/advene/gui/edit/elements.py:786
+#: ../lib/advene/gui/edit/elements.py:878
+#: ../lib/advene/gui/edit/elements.py:947
+#: ../lib/advene/gui/edit/elements.py:1059
+#: ../lib/advene/gui/edit/elements.py:1121
+msgid "URI"
+msgstr "URI"
 
-#: ../lib/advene/gui/views/timeline.py:1120
-msgid "Align all times"
-msgstr "Aligner tous les temps"
+#: ../lib/advene/gui/edit/imports.py:359
+msgid "Choose the package to import, and its alias"
+msgstr "Choisissez le recueil à importer, et son alias"
 
-#: ../lib/advene/gui/views/timeline.py:1158
-#: ../lib/advene/gui/views/tree.py:700
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
-"Impossible de supprimer l'annotation :\n"
-"elle fait partie de relations."
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
+#, python-format
+msgid "Package %s"
+msgstr "Recueil %s"
 
-#: ../lib/advene/gui/views/timeline.py:1233
-msgid "Select the appropriate relation type"
-msgstr "Sélectionnez le type de relation"
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
+msgid "No title"
+msgstr "Pas de titre"
 
-#: ../lib/advene/gui/views/timeline.py:1252
-#: ../lib/advene/gui/views/tree.py:757
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr "Dupliquer la sélection vers le type %s"
+#: ../lib/advene/gui/edit/shapewidget.py:89
+msgid "Generic shape"
+msgstr "Forme générique"
 
-#: ../lib/advene/gui/views/timeline.py:1255
-#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/edit/shapewidget.py:254
+#: ../lib/advene/gui/edit/shapewidget.py:753
 #, python-format
-msgid "Move selection to type %s"
-msgstr "Déplacer la sélection vers le type %s"
+msgid "Link to %s"
+msgstr "Lier à  %s"
 
-#: ../lib/advene/gui/views/timeline.py:1264
-#: ../lib/advene/gui/views/tree.py:769
-#, python-format
-msgid "Duplicate annotation to type %s"
-msgstr "Dupliquer l'annotation vers le type %s"
+#: ../lib/advene/gui/edit/shapewidget.py:346
+#: ../lib/advene/gui/edit/shapewidget.py:1301
+msgid "Link"
+msgstr "Lien"
 
-#: ../lib/advene/gui/views/timeline.py:1268
-#: ../lib/advene/gui/views/tree.py:773
-#, python-format
-msgid "Move annotation to type %s"
-msgstr "Déplacer l'annotation vers le type %s"
+#: ../lib/advene/gui/edit/shapewidget.py:351
+msgid "Link label"
+msgstr "Label du lien"
 
-#: ../lib/advene/gui/views/timeline.py:1275
-#, python-format
-msgid "Duplicate to type %(type)s at %(position)s"
-msgstr "Dupliquer vers le type %(type)s à %(position)s"
+#: ../lib/advene/gui/edit/shapewidget.py:369
+msgid "Linewidth"
+msgstr "Largeur de trait"
 
-#: ../lib/advene/gui/views/timeline.py:1281
-#, python-format
-msgid "Move to type %(type)s at %(position)s"
-msgstr "Déplacer vers le type %(type)s à %(position)s"
+#: ../lib/advene/gui/edit/shapewidget.py:374
+msgid "Filled"
+msgstr "Rempli"
 
-#: ../lib/advene/gui/views/timeline.py:1291
-#: ../lib/advene/gui/views/tree.py:784
-msgid "Duplicate and create a relation"
-msgstr "Dupliquer et créer une relation"
+#: ../lib/advene/gui/edit/shapewidget.py:382
+msgid "Opacity"
+msgstr "Opacité"
 
-#: ../lib/advene/gui/views/timeline.py:1302
+#: ../lib/advene/gui/edit/shapewidget.py:424
 #, python-format
-msgid "Duplicate at %s and create a relation"
-msgstr "Dupliquer vers %s et créer une relation"
+msgid "Properties of %s"
+msgstr "Propriétés de %s"
 
-#: ../lib/advene/gui/views/timeline.py:1333
-msgid "Annotation filter"
-msgstr "Filtre d'annotations "
+#: ../lib/advene/gui/edit/shapewidget.py:471
+msgid "Rectangle"
+msgstr "Rectangle"
 
-#: ../lib/advene/gui/views/timeline.py:1334
-msgid "Enter the searched string"
-msgstr "Entrez la chaîne recherchée"
+#: ../lib/advene/gui/edit/shapewidget.py:551
+#: ../lib/advene/gui/edit/shapewidget.py:664
+msgid "Text"
+msgstr "Texte"
 
-#: ../lib/advene/gui/views/timeline.py:1442
-#, python-format
-msgid "Duplicate all annotations to type %s"
-msgstr "Dupliquer toutes les annotations vers le type %s"
+#: ../lib/advene/gui/edit/shapewidget.py:675
+msgid "Textsize"
+msgstr "Taille du texte"
 
-#: ../lib/advene/gui/views/timeline.py:1444
-#, python-format
-msgid "Move all annotations to type %s"
-msgstr "Déplacer toutes les annotations vers le type %s"
+#: ../lib/advene/gui/edit/shapewidget.py:689
+msgid "Image"
+msgstr "Image"
 
-#: ../lib/advene/gui/views/timeline.py:1446
-#, 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/edit/shapewidget.py:773
+msgid "Href"
+msgstr "Href"
 
-#: ../lib/advene/gui/views/timeline.py:1448
-#, 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/edit/shapewidget.py:783
+msgid "Line"
+msgstr "Ligne"
 
-#: ../lib/advene/gui/views/timeline.py:1450
-#, 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/edit/shapewidget.py:879
+msgid "Draw an arrow"
+msgstr "Dessiner une flêche"
 
-#: ../lib/advene/gui/views/timeline.py:1452
-#, 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/edit/shapewidget.py:890
+msgid "Arrow size"
+msgstr "Taille de la flêche"
 
-#: ../lib/advene/gui/views/timeline.py:1642
-#: ../lib/advene/gui/views/table.py:240
-msgid "Cannot update the annotation, its representation is too complex"
-msgstr "Impossible de l'annotation, sa représentation est trop complexe."
+#: ../lib/advene/gui/edit/shapewidget.py:1105
+msgid "Close path"
+msgstr "Fermer le chemin"
 
-#: ../lib/advene/gui/views/timeline.py:1936
-#: ../lib/advene/gui/views/timeline.py:1965
-#, python-format
-msgid "Displaying %(count)d / %(total)d annotations..."
-msgstr "Affichage de %(count)d / %(total)d annotations..."
-
-#: ../lib/advene/gui/views/timeline.py:1947
-msgid "Displaying done."
-msgstr "Affichage terminé."
+#: ../lib/advene/gui/edit/shapewidget.py:1184
+msgid "Circle"
+msgstr "Cercle"
 
-#: ../lib/advene/gui/views/timeline.py:2439
-msgid "Create a new annotation"
-msgstr "Créer une nouvelle annotation"
+#: ../lib/advene/gui/edit/shapewidget.py:1239
+msgid "Ellipse"
+msgstr "Ellipse"
 
-#: ../lib/advene/gui/views/timeline.py:2440
-msgid "Zoom on region"
-msgstr "Zoom sur la zone"
+#: ../lib/advene/gui/edit/shapewidget.py:1600
+msgid "SVG"
+msgstr "SVG"
 
-#: ../lib/advene/gui/views/timeline.py:2441
-msgid "Restrict display to region"
-msgstr "Limiter l'affichage à la zone sélectionnée"
+#: ../lib/advene/gui/edit/shapewidget.py:2158
+msgid "Load SVG"
+msgstr "Charger un fichier SVG"
 
-#: ../lib/advene/gui/views/timeline.py:2560
-msgid "New annotation at player time"
-msgstr "Nouvelle annotation au temps du lecteur"
+#: ../lib/advene/gui/edit/shapewidget.py:2164
+msgid "Save SVG"
+msgstr "Sauver le SVG"
 
-#: ../lib/advene/gui/views/timeline.py:2564
-msgid "New annotation at mouse position"
-msgstr "Nouvelle annotation à la position de la souris"
+#: ../lib/advene/gui/edit/importer.py:46
+msgid "Importer"
+msgstr "Importateur"
 
-#: ../lib/advene/gui/views/timeline.py:2568
-msgid "Selection"
-msgstr "Sélection"
+#: ../lib/advene/gui/edit/importer.py:102
+#: ../lib/advene/gui/edit/importer.py:112
+msgid "Advene package importer"
+msgstr "Importateur de recueil Advene"
 
-#: ../lib/advene/gui/views/timeline.py:2694
-msgid "Cannot zoom more"
-msgstr "Impossible de zoomer plus"
+#: ../lib/advene/gui/edit/importer.py:116
+msgid "Not likely"
+msgstr "Non-pertinents"
 
-#: ../lib/advene/gui/views/timeline.py:2915
+#: ../lib/advene/gui/edit/importer.py:138
 #, python-format
-msgid "From schema %s"
-msgstr "Schéma %s"
+msgid "Completed conversion: %(statistics)s"
+msgstr "Conversion terminée : %(statistics)s"
 
-#: ../lib/advene/gui/views/timeline.py:2977
-msgid "Restrict playing to this annotation-type"
-msgstr "Restreindre le jeu à ce type d'annotation"
+#: ../lib/advene/gui/edit/importer.py:144
+#: ../lib/advene/gui/edit/dvdselect.py:73
+msgid "Stop"
+msgstr "Stop"
 
-#: ../lib/advene/gui/views/timeline.py:2984
-msgid "Goto previous annotation"
-msgstr "Aller à l'annotation précédente"
+#: ../lib/advene/gui/edit/importer.py:254
+msgid "Choose the file to import"
+msgstr "Choisissez le fichier à importer"
 
-#: ../lib/advene/gui/views/timeline.py:2995
-msgid "Goto next annotation"
-msgstr "Aller à l'annotation suivante"
+#: ../lib/advene/gui/edit/importer.py:273
+msgid "Filter"
+msgstr "Filtre"
 
-#: ../lib/advene/gui/views/timeline.py:3006
-msgid "+"
-msgstr "+"
+#: ../lib/advene/gui/edit/importer.py:277
+msgid "Options"
+msgstr "Options"
 
-#: ../lib/advene/gui/views/timeline.py:3064
-msgid "Open an annotation display view"
-msgstr "Ouvrir une vue d'affichage de l'annotation"
+#: ../lib/advene/gui/edit/importer.py:287
+msgid "Start"
+msgstr "Lancer"
 
-#: ../lib/advene/gui/views/timeline.py:3071
-msgid "Open a slave montage view (coordinated zoom level)"
-msgstr "Ouvrir une vue montage escale (avec zoom coordonné)"
+#: ../lib/advene/gui/edit/dvdselect.py:82
+#: ../lib/advene/gui/edit/dvdselect.py:112
+msgid "Preview"
+msgstr "Prévisualisation"
 
-#: ../lib/advene/gui/views/timeline.py:3106
+#: ../lib/advene/gui/edit/dvdselect.py:91
 msgid ""
-"<b>Statistics about current selection</b>\n"
-"\n"
+"Select the correct\n"
+"title and chapter\n"
+"of the DVD"
 msgstr ""
-"<b>Statistiques sur la sélection</b>\n"
-"\n"
-
-#: ../lib/advene/gui/views/timeline.py:3113
-msgid "No selected annotation"
-msgstr "Pas d'annotation sélectionnée"
+"Sélectionnez le\n"
+"titre et chapitre\n"
+"adéquats du DVD"
 
-#: ../lib/advene/gui/views/timeline.py:3117
-#, python-format
-msgid "%d selected annotation(s)"
-msgstr "%d annotation(s) sélectionnée(s)"
+#: ../lib/advene/gui/edit/dvdselect.py:104
+msgid "Chapter"
+msgstr "Chapître"
 
-#: ../lib/advene/gui/views/timeline.py:3124
-msgid "Unselect all annotations"
-msgstr "Déselectionner toutes les annotations"
+#: ../lib/advene/gui/edit/merge.py:33
+msgid "Create element"
+msgstr "Créer un élément"
 
-#: ../lib/advene/gui/views/timeline.py:3125
-msgid "Create a static view"
-msgstr "Créer une vue statique"
+#: ../lib/advene/gui/edit/merge.py:34
+msgid "Create annotation (duplicate id)"
+msgstr "Créer une annotation (id dupliquée)"
 
-#: ../lib/advene/gui/views/timeline.py:3126
-msgid "Highlight selection in other views"
-msgstr "Signaler les annotations actives dans les autres vues"
+#: ../lib/advene/gui/edit/merge.py:35
+msgid "Create relation (duplicate id)"
+msgstr "Créer une relation (id dupliquée)"
 
-#: ../lib/advene/gui/views/timeline.py:3127
-#: ../lib/advene/gui/views/timeline.py:3713
-msgid "Tag selection"
-msgstr "Taguer la sélection"
+#: ../lib/advene/gui/edit/merge.py:36
+msgid "Update the color"
+msgstr "Modifier la couleur"
 
-#: ../lib/advene/gui/views/timeline.py:3128
-msgid "Delete selected annotations"
-msgstr "Supprimer les annotations sélectionnées"
+#: ../lib/advene/gui/edit/merge.py:37
+msgid "Update the representation"
+msgstr "Modifier la représentation"
 
-#: ../lib/advene/gui/views/timeline.py:3129
-msgid "Display selection in a table"
-msgstr "Affiche la sélection dans un tableau"
+#: ../lib/advene/gui/edit/merge.py:38
+msgid "Update the description"
+msgstr "Modifier la description"
 
-#: ../lib/advene/gui/views/timeline.py:3130
-msgid "Center and zoom on selection"
-msgstr "Centrer et zoomer sur la sélection"
+#: ../lib/advene/gui/edit/merge.py:39
+msgid "Update the title"
+msgstr "Modifier le titre"
 
-#: ../lib/advene/gui/views/timeline.py:3131
-msgid "Edit selected annotations"
-msgstr "Éditer les annotations sélectionnées"
+#: ../lib/advene/gui/edit/merge.py:40
+msgid "Update the mimetype"
+msgstr "Modifier le type MIME"
 
-#: ../lib/advene/gui/views/timeline.py:3132
-msgid "Merge annotations"
-msgstr "Fusionner les annotations"
+#: ../lib/advene/gui/edit/merge.py:41
+msgid "Update the begin time"
+msgstr "Modifier le temps de début"
 
-#: ../lib/advene/gui/views/timeline.py:3133
-msgid "Display statistics"
-msgstr "Afficher les statistiques"
+#: ../lib/advene/gui/edit/merge.py:42
+msgid "Update the end time"
+msgstr "Modifier le temps de fin"
 
-#: ../lib/advene/gui/views/timeline.py:3258
-msgid "Goto previous page"
-msgstr "Aller à la page précédente"
+#: ../lib/advene/gui/edit/merge.py:43
+msgid "Update the content"
+msgstr "Modifier le contenu"
 
-#: ../lib/advene/gui/views/timeline.py:3270
-msgid "Goto next page"
-msgstr "Aller à la page suivante"
+#: ../lib/advene/gui/edit/merge.py:44
+msgid "Update the matchFilter"
+msgstr "Modifier le filtre de vue"
 
-#: ../lib/advene/gui/views/timeline.py:3324
-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/edit/merge.py:45
+msgid "Update the member types"
+msgstr "Mettre à jour les types des membres"
 
-#: ../lib/advene/gui/views/timeline.py:3352
-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/edit/merge.py:46
+msgid "Update tags"
+msgstr "Mettre à jour les tags"
 
-#: ../lib/advene/gui/views/timeline.py:3374
-msgid ""
-"Drag an annotation type here to remove it from display.\n"
-"Click to edit all displayed types"
-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/edit/merge.py:90
+msgid "Difference between original and merged elements"
+msgstr "Différence entre l'élément original et l'élément à fusionner"
 
-#: ../lib/advene/gui/views/timeline.py:3386
-msgid "Selection actions"
-msgstr "Actions sur la sélection"
+#: ../lib/advene/gui/edit/merge.py:136
+msgid "Current element"
+msgstr "Élément courant"
 
-#: ../lib/advene/gui/views/timeline.py:3401
-msgid "Display relations"
-msgstr "Afficher les relations"
+#: ../lib/advene/gui/edit/merge.py:141
+msgid "Updated element"
+msgstr "Élément mis à jour"
 
-#: ../lib/advene/gui/views/timeline.py:3407
-msgid "Display all relations"
-msgstr "Afficher toutes les relations"
+#: ../lib/advene/gui/edit/merge.py:147
+msgid "Show diff"
+msgstr "Montrer les différences"
 
-#: ../lib/advene/gui/views/timeline.py:3484
-msgid "Center on current player position."
-msgstr "Centrer sur la position courante"
+#: ../lib/advene/gui/edit/merge.py:180
+msgid "Merge?"
+msgstr "Fusionner?"
 
-#: ../lib/advene/gui/views/timeline.py:3500
-msgid "Automatically activate loop when clicking on an annotation"
-msgstr "Activer la boucle automatiquement lors du clic sur une annotation"
+#: ../lib/advene/gui/edit/merge.py:197
+msgid "Element"
+msgstr "Élément"
 
-#: ../lib/advene/gui/views/timeline.py:3524
-msgid "Displayed"
-msgstr "Affichés"
+#: ../lib/advene/gui/edit/merge.py:215
+#, python-format
+msgid "Merge elements from %s into %s"
+msgstr "Fusionner les éléments de %s dans %s"
 
-#: ../lib/advene/gui/views/timeline.py:3532
-msgid "Not displayed"
-msgstr "Pas affichés"
+#: ../lib/advene/gui/edit/merge.py:267
+msgid "All"
+msgstr "Tout"
 
-#: ../lib/advene/gui/views/timeline.py:3580
-msgid "< All <"
-msgstr "< Tout <"
+#: ../lib/advene/gui/edit/merge.py:272 ../lib/advene/core/controller.py:1152
+msgid "None"
+msgstr "Aucun"
 
-#: ../lib/advene/gui/views/timeline.py:3584
-msgid "> All >"
-msgstr "> Tout >"
+#: ../lib/advene/gui/edit/montage.py:51
+msgid "Montage"
+msgstr "Montage"
 
-#: ../lib/advene/gui/views/timeline.py:3600
-msgid "Displayed annotation types"
-msgstr "Types d'annotations affichés"
+#: ../lib/advene/gui/edit/montage.py:53
+msgid "Dynamic montage of annotations"
+msgstr "Montage dynamique d'annotations"
 
-#: ../lib/advene/gui/views/timeline.py:3625
-msgid "Relation type"
-msgstr "Type de relation"
+#: ../lib/advene/gui/edit/montage.py:61
+msgid "Render"
+msgstr "Exporter en vidéo"
 
-#: ../lib/advene/gui/views/timeline.py:3625
-msgid "Display relation types"
-msgstr "Afficher les types de relation"
+#: ../lib/advene/gui/edit/montage.py:176
+msgid "Remove from montage"
+msgstr "Supprimer du montage"
 
-#: ../lib/advene/gui/views/timeline.py:3626
-msgid "Relation content"
-msgstr "Contenu de relation"
+#: ../lib/advene/gui/edit/montage.py:310
+#, python-format
+msgid ""
+"Exporting montage %(title)s\n"
+"to %%(filename)s"
+msgstr ""
+"Export du montage %(title)s\n"
+"vers %%(filename)s"
 
-#: ../lib/advene/gui/views/timeline.py:3626
-msgid "Display relation content"
-msgstr "Afficher le contenu des relations"
+#: ../lib/advene/gui/edit/montage.py:402
+msgid "Drop an annotation here to remove it from the list"
+msgstr "Déposez une annotation ici pour l'enlever de la liste"
 
-#: ../lib/advene/gui/views/timeline.py:3627 ../lib/advene/gui/popup.py:516
-msgid "Highlight"
-msgstr "Mise en valeur"
+#: ../lib/advene/gui/edit/montage.py:414
+msgid "Play the montage"
+msgstr "Jouer le montage"
 
-#: ../lib/advene/gui/views/timeline.py:3627
-msgid "Highlight active annotations"
-msgstr "Signaler les annotations actives"
+#: ../lib/advene/gui/edit/montage.py:419
+msgid "Save the view in the package"
+msgstr "Sauvegarder la vue dans le recueil"
 
-#: ../lib/advene/gui/views/timeline.py:3714
-msgid "Enter the tag for the selection"
-msgstr "Entrez le tag pour la sélection"
+#: ../lib/advene/gui/edit/montage.py:467
+msgid "Set zoom level"
+msgstr "Fixer le niveau de zoom"
 
-#: ../lib/advene/gui/views/tree.py:248
-msgid "No children in on_iter_children()!"
-msgstr "Pas de fils dans on_iter_children"
+#: ../lib/advene/gui/edit/montage.py:472
+msgid "Set 100% zoom"
+msgstr "Zoom à 100%"
 
-#: ../lib/advene/gui/views/tree.py:263
-msgid "No children in on_iter_nth_child()"
-msgstr "Pas de fils dans on_iter_nth_child"
+#: ../lib/advene/gui/edit/montage.py:551
+msgid "Total duration:"
+msgstr "Durée totale :"
 
-#: ../lib/advene/gui/views/tree.py:317
-msgid "List of views"
-msgstr "Liste des vues"
-
-#: ../lib/advene/gui/views/tree.py:318
-msgid "Static views"
-msgstr "Vues statiques"
-
-#: ../lib/advene/gui/views/tree.py:319
-msgid "Dynamic views"
-msgstr "Vues dynamiques"
+#: ../lib/advene/gui/edit/timeadjustment.py:97
+#, python-format
+msgid "Decrement value by %.2f s"
+msgstr "Décrémenter la valeur de %.2f s"
 
-#: ../lib/advene/gui/views/tree.py:320
-msgid "Admin views"
-msgstr "Vues administratives"
+#: ../lib/advene/gui/edit/timeadjustment.py:99
+#, python-format
+msgid "Increment value by %.2f s"
+msgstr "Incrémenter la valeur de %.2f s"
 
-#: ../lib/advene/gui/views/tree.py:321
-msgid "Adhoc views"
-msgstr "Vues adhoc"
+#: ../lib/advene/gui/edit/timeadjustment.py:125
+msgid ""
+"Click to play\n"
+"Control+click to set to current time\n"
+"Scroll to modify value (with control/shift)\n"
+"Right-click to invalidate screenshot"
+msgstr ""
+"Cliquer pour jouer\n"
+"Contrôle+clic pour fixer au temps actuel\n"
+"Scroll pour modifier la valeur (avec Contrôle/Shift)\n"
+"Clic droit pour invalider la capture d'écran"
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
-msgid "Tree view"
-msgstr "Vue en arbre"
+#: ../lib/advene/gui/edit/timeadjustment.py:140
+msgid ""
+"Enter a timecode.\n"
+"An integer value will be considered as milliseconds.\n"
+"A float value (12.2) will be considered as seconds.\n"
+"HH:MM:SS.sss values are possible."
+msgstr ""
+"Entrez un timecode.\n"
+"Une valeur entière sera considérée comme des millisecondes.\n"
+"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/views/tree.py:453
-msgid "Package View"
-msgstr "Vue du recueil"
+#: ../lib/advene/gui/edit/timeadjustment.py:154
+msgid "Set to current player position"
+msgstr "Fixer à la valeur de la position courante"
 
-#: ../lib/advene/gui/views/editaccumulator.py:42
-msgid "EditAccumulator"
-msgstr "Accumulateur d'édition"
+#: ../lib/advene/gui/edit/elements.py:78
+#, python-format
+msgid "No edit popup available for element %s"
+msgstr "Pas de fenêtre d'édition disponible pour l'élément %s"
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-#: ../lib/advene/gui/views/annotationdisplay.py:256
-msgid "Validate"
-msgstr "Valider"
+#: ../lib/advene/gui/edit/elements.py:99
+msgid "Edit Window"
+msgstr "Fenêtre d'édition"
 
-#: ../lib/advene/gui/views/relation.py:68
-msgid "Relations view"
-msgstr "Vue des relations"
+#: ../lib/advene/gui/edit/elements.py:138
+msgid "Apply changes and close the edit window"
+msgstr "Appliquer les modifications et fermer la fenêtre"
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4339
-msgid "Caption"
-msgstr "Sous-titreur"
+#: ../lib/advene/gui/edit/elements.py:143
+msgid "Apply changes"
+msgstr "Appliquer les modifications"
 
-#: ../lib/advene/gui/views/caption.py:32
-msgid "Display a text caption below the video output"
-msgstr "Composant dédié à l'affichage des sous-titres sous la vidéo"
+#: ../lib/advene/gui/edit/elements.py:277
+msgid "Content has been modified. Close anyway and lose data?"
+msgstr ""
+"Le contenu a été modifié. Souhaitez-vous fermer de toute façon et perdre les "
+"données ?"
 
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4338
-msgid "Scroller"
-msgstr "Défileur"
+#: ../lib/advene/gui/edit/elements.py:337
+#, python-format
+msgid "View %s (read-only)"
+msgstr "Visualiser %s (lecture seule)"
 
-#: ../lib/advene/gui/views/finder.py:329
+#: ../lib/advene/gui/edit/elements.py:373
 #, python-format
-msgid ""
-"View <b>%(title)s</b>\n"
-"Id: %(id)s"
+msgid "Display %s"
+msgstr "Afficher %s"
+
+#: ../lib/advene/gui/edit/elements.py:457
+msgid "Apply changes and edit previous annotation of same type"
 msgstr ""
-"Vue <b>%(title)s</b>\n"
-"Id: %(id)s"
+"Valider les modifications et éditer l'annotation précédente du même type"
 
-#: ../lib/advene/gui/views/finder.py:336
-msgid "Open in webbrowser"
-msgstr "Afficher dans un navigateur web"
+#: ../lib/advene/gui/edit/elements.py:461
+msgid "Apply changes and edit next annotation of same type"
+msgstr "Valider les modifications et éditer l'annotation suivante du même type"
 
-#: ../lib/advene/gui/views/finder.py:337
-#, python-format
-msgid "View applied to %s\n"
-msgstr "Vue appliquée sur %s\n"
+#: ../lib/advene/gui/edit/elements.py:467
+msgid "Unhighlight annotation"
+msgstr "Désactiver les annotations"
 
-#: ../lib/advene/gui/views/finder.py:342 ../lib/advene/gui/popup.py:496
-msgid "Activate"
-msgstr "Activer"
+#: ../lib/advene/gui/edit/elements.py:471
+msgid "Highlight annotation"
+msgstr "Activer les annotations"
 
-#: ../lib/advene/gui/views/finder.py:345
-msgid "Open in GUI"
-msgstr "Ouvrir dans l'interface"
+#: ../lib/advene/gui/edit/elements.py:502
+msgid "Fragment"
+msgstr "Fragment"
 
-#: ../lib/advene/gui/views/finder.py:347
-msgid "Unknown type of view??"
-msgstr "Type de vue inconnu??"
+#: ../lib/advene/gui/edit/elements.py:525 ../lib/advene/core/controller.py:585
+msgid "Tags"
+msgstr "Tags"
 
-#: ../lib/advene/gui/views/finder.py:372
-msgid "Edit view"
-msgstr "Éditer la vue"
+#: ../lib/advene/gui/edit/elements.py:621
+msgid "Apply changes and visualise in web browser"
+msgstr "Appliquer les modifications et visualiser dans le navigateur"
 
-#: ../lib/advene/gui/views/finder.py:381
-msgid "Open view"
-msgstr "Ouvrir la vue"
+#: ../lib/advene/gui/edit/elements.py:626
+msgid "Apply changes and activate the view"
+msgstr "Appliquer les modifications et activer la vue"
 
-#: ../lib/advene/gui/views/finder.py:421 ../lib/advene/gui/views/finder.py:487
-#, python-format
-msgid ""
-"%(type)s <b>%(title)s</b>\n"
-"Id: %(id)s"
-msgstr ""
-"%(type)s <b>%(title)s</b>\n"
-"Id: %(id)s"
+#: ../lib/advene/gui/edit/elements.py:634
+#: ../lib/advene/gui/edit/elements.py:715
+#: ../lib/advene/gui/edit/elements.py:772
+#: ../lib/advene/gui/edit/elements.py:863
+#: ../lib/advene/gui/edit/elements.py:932
+#: ../lib/advene/gui/edit/elements.py:1034
+msgid "Title (name)"
+msgstr "Titre (nom)"
 
-#: ../lib/advene/gui/views/finder.py:444
-msgid "Try to apply the query on..."
-msgstr "Essayer d'appliquer la requête sur..."
+#: ../lib/advene/gui/edit/elements.py:638
+msgid "Name of the view"
+msgstr "Nom de la vue"
 
-#: ../lib/advene/gui/views/finder.py:464 ../lib/advene/gui/popup.py:829
-msgid "the package"
-msgstr "le recueil"
+#: ../lib/advene/gui/edit/elements.py:662
+msgid "Class"
+msgstr "Classe"
 
-#: ../lib/advene/gui/views/finder.py:465 ../lib/advene/gui/popup.py:830
-msgid "all annotations of the package"
-msgstr "toutes les annotations du recueil"
+#: ../lib/advene/gui/edit/elements.py:665
+msgid "Match Filter"
+msgstr "Masque de filtrage"
 
-#: ../lib/advene/gui/views/finder.py:466 ../lib/advene/gui/popup.py:831
-msgid "the first annotation of the package"
-msgstr "la première annotation du recueil"
+#: ../lib/advene/gui/edit/elements.py:708
+msgid "Validate and run query on package"
+msgstr "Valider et lancer la requête sur le recueil"
 
-#: ../lib/advene/gui/views/finder.py:509
-msgid "Edit resource"
-msgstr "Éditer la ressource"
+#: ../lib/advene/gui/edit/elements.py:719
+msgid "Name of the query"
+msgstr "Nom de la requête"
 
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
-msgid "Package finder"
-msgstr "Navigateur de recueil"
+#: ../lib/advene/gui/edit/elements.py:776
+msgid "Name of the package"
+msgstr "Nom du recueil"
 
-#: ../lib/advene/gui/views/finder.py:525
-msgid "Column-based package finder"
-msgstr "Afficher un navigateur en colonnes du recueil"
+#: ../lib/advene/gui/edit/elements.py:794
+#: ../lib/advene/gui/edit/elements.py:885
+#: ../lib/advene/gui/edit/elements.py:964
+#: ../lib/advene/gui/edit/elements.py:1078
+msgid "Description"
+msgstr "Description"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:41
-msgid "AnnotationDisplay"
-msgstr "AfficheAnnotation"
+#: ../lib/advene/gui/edit/elements.py:798
+#: ../lib/advene/gui/edit/elements.py:889
+#: ../lib/advene/gui/edit/elements.py:968
+#: ../lib/advene/gui/edit/elements.py:1082
+msgid "Textual description of the package"
+msgstr "Description textuelle du recueil"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:43
-msgid "Display the contents of an annotation"
-msgstr "Affiche le contenu d'une annotation"
+#: ../lib/advene/gui/edit/elements.py:803
+msgid "Default dynamic view"
+msgstr "Vue dynamique par défaut"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:84
-msgid "No annotation"
-msgstr "Pas d'annotation"
+#: ../lib/advene/gui/edit/elements.py:807
+msgid "Dynamic view to activate on package load"
+msgstr "Vue dynamique à activer au chargement du recueil"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:110
-#, python-format
-msgid ""
-"Schema %(schema)s (id %(id)s)\n"
-"%(description)s\n"
-"%(stats)s"
-msgstr ""
-"Schéma %(schema)s\n"
-"%(description)s\n"
-"%(total)s\n"
-"Id: %(id)s"
+#: ../lib/advene/gui/edit/elements.py:812
+msgid "Default static view"
+msgstr "Vue statique par défaut"
 
-#: ../lib/advene/gui/views/annotationdisplay.py:231
-msgid "Screenshot"
-msgstr "Aperçu"
+#: ../lib/advene/gui/edit/elements.py:816
+msgid "Static view to open on package load"
+msgstr "Vue statique à ouvrir au chargement du recueil"
 
-#: ../lib/advene/gui/views/__init__.py:193
-msgid "Invalid view id"
-msgstr "Identificateur de vue invalide"
+#: ../lib/advene/gui/edit/elements.py:821
+msgid "Default adhoc view"
+msgstr "Vue adhoc par défaut"
 
-#: ../lib/advene/gui/views/__init__.py:239
-#, python-format
-msgid "Cannot save default options: %s"
-msgstr "Impossible de sauvegarder les options par défaut : %s"
+#: ../lib/advene/gui/edit/elements.py:825
+msgid "Adhoc view to open on package load"
+msgstr "Vue adhoc à ouvrir au chargement du recueil"
 
-#: ../lib/advene/gui/views/__init__.py:250
-#, python-format
-msgid "Default options saved for view %s"
-msgstr "Options par défaut sauvées pour la vue %s"
+#: ../lib/advene/gui/edit/elements.py:830
+msgid "Cached duration"
+msgstr "Durée mémorisée"
 
-#: ../lib/advene/gui/views/__init__.py:282
-#, python-format
-msgid "Saving %s"
-msgstr "Sauver %s"
+#: ../lib/advene/gui/edit/elements.py:834
+msgid "Cached duration in ms"
+msgstr "Durée mémorisée du média en ms"
 
-#: ../lib/advene/gui/views/__init__.py:285
-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/edit/elements.py:839
+msgid "Mediafile"
+msgstr "Fichier vidéo"
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4630
-#, python-format
-msgid "Error: the identifier %s contains invalid characters."
-msgstr "Erreur : l'identifiant %s contient des caractères non valides."
+#: ../lib/advene/gui/edit/elements.py:843
+msgid "Location of associated media file"
+msgstr "Emplacement du fichier vidéo associé"
 
-#: ../lib/advene/gui/views/__init__.py:303
-#, python-format
-msgid "Error: the view %s is not an adhoc view."
-msgstr "Erreur : la vue %s n'est pas une vue ad-hoc"
+#: ../lib/advene/gui/edit/elements.py:867
+msgid "Name of the schema"
+msgstr "Nom du schéma"
 
-#: ../lib/advene/gui/views/__init__.py:328
-msgid "HTML export"
-msgstr "Export HTML"
+#: ../lib/advene/gui/edit/elements.py:899
+#: ../lib/advene/gui/edit/elements.py:979
+msgid "TALES expression returning a color for the element"
+msgstr "Expression TALES spécifiant une couleur pour l'élément"
 
-#: ../lib/advene/gui/views/__init__.py:329
-msgid "Specify a name for the export view"
-msgstr "Choisissez un nom pour l'export de la vue."
+#: ../lib/advene/gui/edit/elements.py:906
+#: ../lib/advene/gui/edit/elements.py:997
+msgid "Item color"
+msgstr "Couleur de l'item"
 
-#: ../lib/advene/gui/views/__init__.py:348
-#, python-format
+#: ../lib/advene/gui/edit/elements.py:910
+#: ../lib/advene/gui/edit/elements.py:1001
 msgid ""
-"View successfully exported as %s.\n"
-"Open it in the web browser ?"
+"TALES expression returning a color for the items contained by the element"
 msgstr ""
-"Vue exportée sous le nom %s.\n"
-"Souhaitez-vous l'ouvrir dans le navigateur web ?"
+"Expression TALES retournant une couleur pour les items contenus dans "
+"l'élément"
 
-#: ../lib/advene/gui/views/__init__.py:427
-msgid "Actions"
-msgstr "Actions"
+#: ../lib/advene/gui/edit/elements.py:936
+#: ../lib/advene/gui/edit/elements.py:1038
+msgid "Name of the type"
+msgstr "Nom du type"
 
-#: ../lib/advene/gui/views/__init__.py:452
-msgid "Click or drag-and-drop to reattach view"
-msgstr "Cliquer ou glisser-déposer pour réattacher la vue"
+#: ../lib/advene/gui/edit/elements.py:954
+#: ../lib/advene/gui/edit/elements.py:1043
+#: ../lib/advene/gui/edit/elements.py:1312
+msgid "MIME Type"
+msgstr "Type MIME"
 
-#: ../lib/advene/gui/views/table.py:55
-msgid "Annotation table view"
-msgstr "Tableau d'annotations"
+#: ../lib/advene/gui/edit/elements.py:958
+#: ../lib/advene/gui/edit/elements.py:1047
+msgid "MIMEType of the content"
+msgstr "Type MIME du contenu"
 
-#: ../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:227 ../lib/advene/gui/views/table.py:452
-msgid "Snapshot"
-msgstr "Copie d'écran"
-
-#: ../lib/advene/gui/views/table.py:254 ../lib/advene/gui/main.py:4178
-msgid "Duration"
-msgstr "Durée"
-
-#: ../lib/advene/gui/views/table.py:382 ../lib/advene/gui/views/table.py:511
-msgid "Export data to file..."
-msgstr "Exporter les données vers le fichier..."
+#: ../lib/advene/gui/edit/elements.py:990
+msgid ""
+"TALES expression used to get a compact representation of the annotations"
+msgstr ""
+"Expression TALES fournissant une représentation compacte des annotations"
 
-#: ../lib/advene/gui/views/table.py:391 ../lib/advene/gui/views/table.py:520
+#: ../lib/advene/gui/edit/elements.py:991
 #, 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:402
-msgid "id"
-msgstr "id"
+msgid "Display %s key"
+msgstr "Afficher la clé %s"
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "type"
-msgstr "type"
+#: ../lib/advene/gui/edit/elements.py:1007
+msgid "Completions"
+msgstr "Complétions"
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "begin"
-msgstr "début"
+#: ../lib/advene/gui/edit/elements.py:1011
+msgid "Space-separated list of words used for content completion"
+msgstr "Liste de mots, séparés par des espaces, utilisés pour la complétion."
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "end"
-msgstr "fin"
+#: ../lib/advene/gui/edit/elements.py:1017
+msgid "Advanced"
+msgstr "Avancées"
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "content"
-msgstr "contenu"
+#: ../lib/advene/gui/edit/elements.py:1067
+msgid "Any annotation type"
+msgstr "Tout type d'annotation"
 
-#: ../lib/advene/gui/views/table.py:460
-msgid "Generic table view"
-msgstr "Tableau d'éléments"
+#: ../lib/advene/gui/edit/elements.py:1093
+msgid "TALES expression specifying a color"
+msgstr "Expression TALES spécifiant une couleur"
 
-#: ../lib/advene/gui/views/table.py:462
-msgid "Display Advene elements in a table."
-msgstr "Affiche des éléments Advene dans un tableau"
+#: ../lib/advene/gui/edit/elements.py:1120
+msgid "MIMEType"
+msgstr "Type MIME"
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element title"
-msgstr "Titre de l'élément"
+#: ../lib/advene/gui/edit/elements.py:1345
+#, python-format
+msgid "Error: cannot find a content handler for %s"
+msgstr "Erreur : impossible d'ouvrir une fenêtre d'édition pour %s"
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element type"
-msgstr "Type de l'élément"
+#: ../lib/advene/gui/edit/elements.py:1461
+#: ../lib/advene/gui/edit/elements.py:1686
+#, python-format
+msgid ""
+"Cannot read the data:\n"
+"%s"
+msgstr ""
+"Impossible de lire les données :\n"
+"%s"
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element id"
-msgstr "Identificateur de l'élément"
+#: ../lib/advene/gui/edit/elements.py:1485
+#: ../lib/advene/gui/edit/elements.py:1711
+msgid "Save content to..."
+msgstr "Sauver le contenu..."
 
-#: ../lib/advene/gui/widget.py:327
+#: ../lib/advene/gui/edit/elements.py:1496
+#: ../lib/advene/gui/edit/elements.py:1724
 #, python-format
-msgid "Set of %s annotations"
-msgstr "Ensemble de %s annotations"
+msgid ""
+"Cannot save the data:\n"
+"%s"
+msgstr ""
+"Impossible de sauvegarder les données :\n"
+"%s"
 
-#: ../lib/advene/gui/widget.py:1067
-msgid "Save as..."
-msgstr "Sauvegarder sous..."
+#: ../lib/advene/gui/edit/elements.py:1515
+#: ../lib/advene/gui/edit/elements.py:1738
+msgid "Open a file (C-o)"
+msgstr "Ouvrir un fichier (C-o)"
 
-#: ../lib/advene/gui/widget.py:1072
-msgid "Use current player position"
-msgstr "Utiliser la position courante du lecteur"
+#: ../lib/advene/gui/edit/elements.py:1520
+#: ../lib/advene/gui/edit/elements.py:1743
+msgid "Save to a file (C-s)"
+msgstr "Sauvegarder dans un fichier (C-s)"
 
-#: ../lib/advene/gui/widget.py:1078
-msgid "Adjust timestamp"
-msgstr "Ajuster le timecode"
+#: ../lib/advene/gui/edit/elements.py:1525
+#: ../lib/advene/gui/edit/elements.py:1748
+msgid "Reload the file (C-r)"
+msgstr "Recharger le fichier (C-r)"
 
-#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
-msgid "_Select player"
-msgstr "Sélection du lecteur"
+#: ../lib/advene/gui/edit/elements.py:1531
+msgid "Insert a value from the browser (C-i)"
+msgstr "Insérer une valeur depuis le browser (C-i)"
 
-#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
-msgid "_View"
-msgstr "_Vues"
+#: ../lib/advene/gui/edit/elements.py:1777
+msgid "Begin time is greater than end time"
+msgstr "Le moment de début est plus grand que celui de fin"
 
-#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
-msgid "Packages"
-msgstr "Recueils"
+#: ../lib/advene/gui/edit/elements.py:2049
+msgid "Expecting an integer."
+msgstr "Un entier est attendu."
 
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
-msgid "Open recent"
-msgstr "Recueils récents"
+#: ../lib/advene/gui/edit/elements.py:2081
+#, python-format
+msgid ""
+"The %(attribute)s attribute could not be updated:\n"
+"\n"
+"%(error)s\n"
+"\n"
+"Resetting to the original value."
+msgstr ""
+"L'attribut %(attribute)s ne peut pas être mis à jour:\n"
+"\n"
+"%(error)s\n"
+"\n"
+"Il est remis à son ancienne valeur."
 
-#: ../lib/advene/gui/main.py:239
-msgid "Input from the keyboard (function keys)"
-msgstr "Entrée depuis le clavier (touches de fonction)"
+#: ../lib/advene/gui/edit/elements.py:2108
+#, python-format
+msgid ""
+"The following attributes cannot be updated:\n"
+"\n"
+"%s"
+msgstr ""
+"Les attributs suivants sont invalides :\n"
+"\n"
+"%s"
 
-#: ../lib/advene/gui/main.py:243
-msgid "_File"
-msgstr "_Fichier"
+#: ../lib/advene/gui/edit/elements.py:2148
+#, python-format
+msgid ""
+"The following attributes could not be updated:\n"
+"\n"
+"%s"
+msgstr ""
+"Les attributs suivants n'ont pas été mis à jour :\n"
+"\n"
+"%s"
 
-#: ../lib/advene/gui/main.py:244
-msgid "_New package"
-msgstr "_Nouveau recueil"
+#: ../lib/advene/gui/edit/elements.py:2165
+msgid "Attribute"
+msgstr "Attribut"
 
-#: ../lib/advene/gui/main.py:244
-msgid "Create a new package"
-msgstr "Créer un nouveau recueil"
+#: ../lib/advene/gui/edit/elements.py:2264
+msgid "Insert an element"
+msgstr "Insérer un élément"
 
-#: ../lib/advene/gui/main.py:245
-msgid "_Open package"
-msgstr "_Ouvrir recueil"
+#: ../lib/advene/gui/edit/elements.py:2265
+msgid "Choose the element to insert."
+msgstr "Choisissez l'élément à insérer."
 
-#: ../lib/advene/gui/main.py:245
-msgid "Open a package"
-msgstr "Ouvrir un recueil"
+#: ../lib/advene/gui/edit/elements.py:2335
+#: ../lib/advene/gui/edit/elements.py:2378
+#, python-format
+msgid "Some tags contain invalid characters: %s"
+msgstr "Certains tags contiennent des caractères non-valides: %s"
 
-#: ../lib/advene/gui/main.py:246
-msgid "Show recently opened packages"
-msgstr "Recueils ouverts récemments"
+#: ../lib/advene/gui/edit/elements.py:2358
+msgid "Tags:"
+msgstr "Tags :"
 
-#: ../lib/advene/gui/main.py:247
-msgid "_Save package"
-msgstr "_Sauvegarder recueil"
+#: ../lib/advene/gui/edit/transcribe.py:68
+msgid "Transcription importer"
+msgstr "Importateur de transcription"
 
-#: ../lib/advene/gui/main.py:247
-msgid "Save the package"
-msgstr "Sauvegarder le recueil %s"
+#: ../lib/advene/gui/edit/transcribe.py:79
+msgid "Note taking"
+msgstr "Prise de notes"
 
-#: ../lib/advene/gui/main.py:248
-msgid "Save package as..."
-msgstr "Sauvegarder sous..."
+#: ../lib/advene/gui/edit/transcribe.py:81
+msgid "Take notes on the fly as a timestamped transcription"
+msgstr "Prendre des notes au vol sous forme de transcription temporalisée"
 
-#: ../lib/advene/gui/main.py:248
-msgid "Save the package as..."
-msgstr "Sauvegarder le recueil sous..."
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Timestamp"
+msgstr "Temps"
 
-#: ../lib/advene/gui/main.py:249
-msgid "Close package"
-msgstr "Fermer recueil"
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Click inserts timestamp marks"
+msgstr "Cliquer insére les marques de temps"
 
-#: ../lib/advene/gui/main.py:249
-msgid "Close the package"
-msgstr "Fermer le recueil"
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "Insert on single-click"
+msgstr "Insérer sur simple-clic"
 
-#: ../lib/advene/gui/main.py:251
-msgid "Save session"
-msgstr "Sauver la session"
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "A single click will insert the mark (else a double click is needed)"
+msgstr ""
+"Un simple-clic insérera une marque de temps (sinon, un double-clic est "
+"nécessaire)"
 
-#: ../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/edit/transcribe.py:150
+msgid "Play on scroll"
+msgstr "Jouer après modification"
 
-#: ../lib/advene/gui/main.py:252
-msgid "Save workspace"
-msgstr "Sauver l'environnement"
+#: ../lib/advene/gui/edit/transcribe.py:150
+msgid "Play the new position upon timestamp modification"
+msgstr "Joue la nouvelle position après la modification de la marque de temps"
 
-#: ../lib/advene/gui/main.py:253
-msgid "...as package view"
-msgstr "...comme une vue du recueil"
+#: ../lib/advene/gui/edit/transcribe.py:151
+msgid "Generate empty annotations"
+msgstr "Contenus vides"
 
-#: ../lib/advene/gui/main.py:254
-msgid "...as standard workspace"
-msgstr "... comme environnement standard"
+#: ../lib/advene/gui/edit/transcribe.py:151
+msgid "If checked, generate annotations for empty text"
+msgstr "Si coché, des annotations seront générées pour les contenus vides"
 
-#: ../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/edit/transcribe.py:152
+msgid "Reaction time"
+msgstr "Temps de réaction"
 
-#: ../lib/advene/gui/main.py:256
-msgid "Associate a video _File"
-msgstr "Associer un _Fichier vidéo"
+#: ../lib/advene/gui/edit/transcribe.py:152
+msgid ""
+"Reaction time (substracted from current player time, except when paused.)"
+msgstr "Temps de réaction (soustrait du temps de la vidéo, sauf en pause)"
 
-#: ../lib/advene/gui/main.py:256
-msgid "Associate a video file"
-msgstr "Associer un fichier vidéo"
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Auto-insert"
+msgstr "Insertion automatique"
 
-#: ../lib/advene/gui/main.py:257
-msgid "Associate a _DVD"
-msgstr "Associer un _DVD"
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Automatic timestamp mark insertion"
+msgstr "Insertion automatique des marques de temps"
 
-#: ../lib/advene/gui/main.py:257
-msgid "Associate a chapter from a DVD"
-msgstr "Associer un chapitre de DVD"
+#: ../lib/advene/gui/edit/transcribe.py:154
+msgid "Automatic insertion delay"
+msgstr "Délai d'insertion automatique"
 
-#: ../lib/advene/gui/main.py:258
-msgid "Associate a _Video stream"
-msgstr "Associer un flux _Vidéo"
+#: ../lib/advene/gui/edit/transcribe.py:154
+msgid ""
+"If autoinsert is active, timestamp marks will be automatically inserted when "
+"text is entered after no interaction since this delay (in ms).\n"
+"1000 is typically a good value."
+msgstr ""
+"Si l'insertion automatique est enclenchée, des marques de temps sont "
+"automatiquement insérées quand du texte est entré après aucune interaction "
+"depuis ce délai (en ms)\n"
+"1000 est une bonne valeur pour commencer."
 
-#: ../lib/advene/gui/main.py:258
-msgid "Enter a video stream address"
-msgstr "Entrer une adresse de flux vidéo"
+#: ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size for text (0 for standard size)"
+msgstr "Taille de la police pour le texte (0 pour la police standard)"
 
-#: ../lib/advene/gui/main.py:260
-msgid "_Import File"
-msgstr "_Importer un fichier"
+#: ../lib/advene/gui/edit/transcribe.py:215
+#: ../lib/advene/gui/edit/transcribe.py:219
+#: ../lib/advene/gui/edit/transcribe.py:377
+#: ../lib/advene/gui/edit/transcribe.py:381
+msgid "Invalid timestamp mark"
+msgstr "Marque de temps non valide"
 
-#: ../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/edit/transcribe.py:508
+msgid "Ignore the following text (toggle)"
+msgstr "Ignorer le texte qui suit (bascule)"
 
-#: ../lib/advene/gui/main.py:261
-msgid "_Process video"
-msgstr "_Traitement de la vidéo"
+#: ../lib/advene/gui/edit/transcribe.py:512
+msgid "Remove mark"
+msgstr "Supprimer la marque"
 
-#: ../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/edit/transcribe.py:516
+msgid "Reaction-time offset"
+msgstr "Décalage du temps de réaction"
 
-#: ../lib/advene/gui/main.py:263
-msgid "Merge package"
-msgstr "Fusionner un recueil"
+#: ../lib/advene/gui/edit/transcribe.py:520
+msgid "-1 sec"
+msgstr "-1 sec"
 
-#: ../lib/advene/gui/main.py:263
-msgid "Merge elements from another package"
-msgstr "Fusionner les éléments d'un autres recueil"
+#: ../lib/advene/gui/edit/transcribe.py:523
+msgid "-0.5 sec"
+msgstr "-0.5 sec"
 
-#: ../lib/advene/gui/main.py:264
-msgid "Import _DVD chapters"
-msgstr "Importer les chapitres du _DVD"
+#: ../lib/advene/gui/edit/transcribe.py:526
+msgid "-0.1 sec"
+msgstr "-0.1 sec"
 
-#: ../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/edit/transcribe.py:530
+msgid "+1 sec"
+msgstr "+1 sec"
 
-#: ../lib/advene/gui/main.py:266
-msgid "_Export..."
-msgstr "Exporter..."
+#: ../lib/advene/gui/edit/transcribe.py:533
+msgid "+0.5 sec"
+msgstr "+0.5 sec"
 
-#: ../lib/advene/gui/main.py:266
-msgid "Export data to another format"
-msgstr "Exporter les données dans un autre format"
+#: ../lib/advene/gui/edit/transcribe.py:536
+msgid "+0.1 sec"
+msgstr "+0.1 sec"
 
-#: ../lib/advene/gui/main.py:267
-msgid "_Website export..."
-msgstr "Exporter vers un site _Web..."
+#: ../lib/advene/gui/edit/transcribe.py:627
+msgid "Invalid timestamp"
+msgstr "Marque de temps invalide"
 
-#: ../lib/advene/gui/main.py:267
-msgid "Export views to a website"
-msgstr "Exporter les vues vers un site web"
+#: ../lib/advene/gui/edit/transcribe.py:760
+#, python-format
+msgid "Invalid timestamp mark in conversion: %s"
+msgstr "Marque de temps non valide lors de la conversion: %s"
 
-#: ../lib/advene/gui/main.py:269
-msgid "_Quit"
-msgstr "_Quitter"
+#: ../lib/advene/gui/edit/transcribe.py:877
+#, python-format
+msgid "Cannot save the file: %s"
+msgstr "Impossible de sauvegarder le fichier : %s"
 
-#: ../lib/advene/gui/main.py:271
-msgid "_Edit"
-msgstr "Édition"
+#: ../lib/advene/gui/edit/transcribe.py:888
+#: ../lib/advene/gui/edit/transcribe.py:972
+msgid "This will overwrite the current textual content. Are you sure?"
+msgstr "Ceci va écraser le contenu actuel. Êtes-vous sûr ?"
 
-#: ../lib/advene/gui/main.py:272
-msgid "_Undo"
-msgstr "_Undo"
+#: ../lib/advene/gui/edit/transcribe.py:891
+msgid "Select transcription file to load"
+msgstr "Sélectionnez le fichier de transcription"
 
-#: ../lib/advene/gui/main.py:273
-msgid "_Find"
-msgstr "_Chercher"
+#: ../lib/advene/gui/edit/transcribe.py:908
+#, python-format
+msgid "Cannot open %(filename)s: %(error)s"
+msgstr "Impossible de lire %(filename)s : %(error)s"
 
-#: ../lib/advene/gui/main.py:274
-msgid "_Delete"
-msgstr "_Supprimer"
+#: ../lib/advene/gui/edit/transcribe.py:957
+msgid "Cannot import annotations: no existing interface"
+msgstr "Impossible d'importer des annotations : aucune interface disponible"
 
-#: ../lib/advene/gui/main.py:275
-msgid "Create"
-msgstr "Créer"
+#: ../lib/advene/gui/edit/transcribe.py:959
+msgid "Select the annotation type to import"
+msgstr "Sélectionnez le type d'annotation à importer"
 
-#: ../lib/advene/gui/main.py:284
-msgid "P_ackage properties"
-msgstr "_Propriétés du recueil"
+#: ../lib/advene/gui/edit/transcribe.py:968
+#, python-format
+msgid "There are no annotations of type %s"
+msgstr "Il n'y a pas d'annotation de type %s"
 
-#: ../lib/advene/gui/main.py:284
-msgid "Edit package properties"
-msgstr "Éditer les propriétés du recueil"
+#: ../lib/advene/gui/edit/transcribe.py:997
+msgid "Cannot convert the data: no associated package"
+msgstr "Impossible de convertir les données : aucun recueil associé"
 
-#: ../lib/advene/gui/main.py:285
-msgid "P_references"
-msgstr "P_références"
+#: ../lib/advene/gui/edit/transcribe.py:1000
+msgid "Converting transcription"
+msgstr "Conversion de la transcription"
 
-#: ../lib/advene/gui/main.py:285
-msgid "Interface preferences"
-msgstr "Préférences de l'interface"
+#: ../lib/advene/gui/edit/transcribe.py:1006
+msgid "Choose the annotation-type where to create annotations.\n"
+msgstr "Choisissez le type d'annotation où les annotations seront créées.\n"
 
-#: ../lib/advene/gui/main.py:289
-msgid "_Start Web Browser"
-msgstr "Lancer le navigateur _Web"
+#: ../lib/advene/gui/edit/transcribe.py:1014
+msgid "Delete existing annotations in this type"
+msgstr "Supprimer les annotations existantes de ce type"
 
-#: ../lib/advene/gui/main.py:289
-msgid "Start the web browser"
-msgstr "Lancer le navigateur web"
+#: ../lib/advene/gui/edit/transcribe.py:1037
+msgid "Select type"
+msgstr "Sélection du type"
 
-#: ../lib/advene/gui/main.py:291
-msgid "Simplify interface"
-msgstr "Simplifier l'interface"
+#: ../lib/advene/gui/edit/transcribe.py:1041
+msgid "You want to create a new type. Please specify its schema and title."
+msgstr "Vous voulez créer un nouveau type. Spécifiez son titre et son schéma."
 
-#: ../lib/advene/gui/main.py:291
-msgid "Simplify the application interface (toggle)"
-msgstr "Simplifier l'interface (bascule)"
+#: ../lib/advene/gui/edit/transcribe.py:1053
+msgid "Containing schema"
+msgstr "Schéma"
 
-#: ../lib/advene/gui/main.py:292
-msgid "Evaluator"
-msgstr "Évaluateur"
+#: ../lib/advene/gui/edit/transcribe.py:1066
+msgid "Export options"
+msgstr "Options d'export"
 
-#: ../lib/advene/gui/main.py:292
-msgid "Open python evaluator window"
-msgstr "Ouvrir l'évaluateur python"
+#: ../lib/advene/gui/edit/transcribe.py:1071
+msgid "Generate annotations for empty contents"
+msgstr "Générer des annotations pour les contenus vides"
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4022
-msgid "Webserver log"
-msgstr "Statistiques du serveur web"
+#: ../lib/advene/gui/edit/transcribe.py:1096
+#, python-format
+msgid "The %s identifier already exists. Choose another one."
+msgstr "L'identificateur %s est déjà défini. Choisissez-en un autre."
 
-#: ../lib/advene/gui/main.py:296
-msgid "_Player"
-msgstr "_Lecteur"
+#: ../lib/advene/gui/edit/transcribe.py:1135
+msgid "Notes converted"
+msgstr "Notes converties"
 
-#: ../lib/advene/gui/main.py:297
-msgid "Go to _Time"
-msgstr "Aller au _Temps"
+#: ../lib/advene/gui/edit/transcribe.py:1182
+msgid "Open"
+msgstr "Ouvrir"
 
-#: ../lib/advene/gui/main.py:297
-msgid "Goto a specified time code"
-msgstr "Aller à un timecode précis"
+#: ../lib/advene/gui/edit/transcribe.py:1183
+msgid "Save"
+msgstr "Sauver"
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save _ImageCache"
-msgstr "Sauvegarder le cache"
+#: ../lib/advene/gui/edit/transcribe.py:1184
+msgid "Save As"
+msgstr "Sauver sous"
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save the contents of the ImageCache to disk"
-msgstr "Sauvegarder le contenu du cache d'images"
+#: ../lib/advene/gui/edit/transcribe.py:1185
+msgid "Import"
+msgstr "Importer"
 
-#: ../lib/advene/gui/main.py:299
-msgid "Reset ImageCache"
-msgstr "Vider le cache d'images"
+#: ../lib/advene/gui/edit/transcribe.py:1185
+msgid "Import from annotations"
+msgstr "Importer des annotations"
 
-#: ../lib/advene/gui/main.py:299
-msgid "Reset the ImageCache"
-msgstr "Vider le cache d'images"
+#: ../lib/advene/gui/edit/transcribe.py:1186
+msgid "Convert"
+msgstr "Convertir"
 
-#: ../lib/advene/gui/main.py:300
-msgid "_Restart player"
-msgstr "_Redémarrer le lecteur"
+#: ../lib/advene/gui/edit/transcribe.py:1186
+msgid "Convert to annotations"
+msgstr "Convertir en annotations"
 
-#: ../lib/advene/gui/main.py:300
-msgid "Restart the player"
-msgstr "Redémarrer le lecteur"
+#: ../lib/advene/gui/edit/transcribe.py:1188 ../lib/advene/rules/actions.py:685
+msgid "Center"
+msgstr "Centrer"
 
-#: ../lib/advene/gui/main.py:302
-msgid "Update annotation screenshots"
-msgstr "Captures d'écran pour les annotations"
+#: ../lib/advene/gui/edit/transcribe.py:1188
+msgid "Center on the current mark"
+msgstr "Centrer sur la marque courante"
 
-#: ../lib/advene/gui/main.py:302
-msgid "Update screenshots for annotation bounds"
-msgstr "Générer des captures d'écran pour chaque borne d'annotation"
+#: ../lib/advene/gui/edit/transcribe.py:1189
+msgid "Find"
+msgstr "Chercher"
 
-#: ../lib/advene/gui/main.py:303
-msgid "Detect shots"
-msgstr "Détecter les plans"
+#: ../lib/advene/gui/edit/transcribe.py:1189
+msgid "Search a string"
+msgstr "Rechercher un mot"
 
-#: ../lib/advene/gui/main.py:303
-msgid "Automatically detect shots"
-msgstr "Détecter automatiquement les plans"
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Scale"
+msgstr "Échelle"
 
-#: ../lib/advene/gui/main.py:304
-msgid "Select the player plugin"
-msgstr "Sélectionner le lecteur vidéo"
+#: ../lib/advene/gui/edit/transcribe.py:1213
+msgid "Automatically scroll to the mark position when playing"
+msgstr "Défiler automatiquement lors du jeu de la vidéo"
 
-#: ../lib/advene/gui/main.py:307
-msgid "No package"
-msgstr "Aucun recueil"
+#: ../lib/advene/gui/edit/transcribe.py:1215
+msgid "Autoscroll"
+msgstr "Défilement automatique"
 
-#: ../lib/advene/gui/main.py:309
-msgid "_Help"
-msgstr "_Aide"
+#: ../lib/advene/gui/edit/transcribe.py:1222
+msgid "Autoinsert"
+msgstr "Insertion automatique"
 
-#: ../lib/advene/gui/main.py:310
-msgid "Help"
-msgstr "Aide"
+#: ../lib/advene/gui/edit/transcribe.py:1224
+msgid "Automatically insert marks"
+msgstr "Insérer des marques de temps automatiquement"
 
-#: ../lib/advene/gui/main.py:311
-msgid "Get support"
-msgstr "Obtenir de l'aide"
+#: ../lib/advene/core/webcherry.py:51
+msgid "The webserver requires version 3.0 of CherryPy at least."
+msgstr "Le serveur web exige CherryPy version 3.0 ou supérieure."
 
-#: ../lib/advene/gui/main.py:312
-msgid "Check for updates"
-msgstr "Vérification de mise à jour"
+#: ../lib/advene/core/webcherry.py:167
+#, python-format
+msgid ""
+"\n"
+"            <p>\n"
+"            <a href=\"/admin\">Server administration</a> |\n"
+"            <a href=\"/media\">Media control</a> |\n"
+"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
+"            </p>\n"
+"            Location: %(locationbar)s\n"
+"            <hr>\n"
+"            "
+msgstr ""
+"\n"
+"<p>\n"
+"<a href=\"/admin\">Administration du serveur</a> |\n"
+"<a href=\"/media\">Contrôle du lecteur</a> |\n"
+"<a href=\"%(path)s?mode=raw\">Vue brute</a>\n"
+"</p>\n"
+"Chemin courant : %(locationbar)s\n"
+"<hr>"
 
-#: ../lib/advene/gui/main.py:313
-msgid "Display shortcuts"
-msgstr "Afficher les raccourcis"
+#: ../lib/advene/core/webcherry.py:227
+msgid "Unspecified Error"
+msgstr "Erreur non spécifiée"
+
+#: ../lib/advene/core/webcherry.py:228
+#, python-format
+msgid ""
+"\n"
+"        <h1>Error</h1>\n"
+"        <p>An error occurred:</p>\n"
+"        %s\n"
+"        "
+msgstr ""
+"\n"
+"        <h1>Erreur</h1>\n"
+"        <p>Une erreur est survenue :</p>\n"
+"        %s\n"
+"        "
+
+#: ../lib/advene/core/webcherry.py:261
+msgid "<h1>No available mediaplayer</h1>"
+msgstr "<h1>Aucune capture d'écran.</h1>"
+
+#: ../lib/advene/core/webcherry.py:265
+#, python-format
+msgid ""
+"\n"
+"            <h1>Current STBV: %(currentstbv)s</h1>\n"
+"\n"
+"            <h1>Player status</h1>\n"
+"            <table border=\"1\">\n"
+"            <tr>\n"
+"            <td>Current position</td><td>%(position)s</td>\n"
+"            <td>Duration</td><td>%(duration)s</td>\n"
+"            <td>Player status</td><td>%(status)s</td>\n"
+"            </tr>\n"
+"            </table>\n"
+"            "
+msgstr ""
+"\n"
+"            <h1>Vue STBV courante: %(currentstbv)s</h1>\n"
+"\n"
+"            <h1>Statut du lecteur</h1>\n"
+"            <table border=\"1\">\n"
+"            <tr>\n"
+"            <td>Position</td><td>%(position)s</td>\n"
+"            <td>Durée</td><td>%(duration)s</td>\n"
+"            <td>Statut</td><td>%(status)s</td>\n"
+"            </tr>\n"
+"            </table>\n"
+"            "
+
+#: ../lib/advene/core/webcherry.py:284
+msgid "<h1>No playlist</h1>"
+msgstr "<h1>Aucun film chargé</h1>"
+
+#: ../lib/advene/core/webcherry.py:286
+#, python-format
+msgid ""
+"<h1>Current playlist</h1>\n"
+"                <ul>%s</ul>"
+msgstr ""
+"<h1>Films chargés</h1>\n"
+"                <ul>%s</ul>"
+
+#: ../lib/advene/core/webcherry.py:288
+msgid ""
+"\n"
+"                <form action=\"/media/play\" method=\"GET\">\n"
+"                Starting pos: <input type=\"text\" name=\"position\" value="
+"\"0\">\n"
+"                <input type=\"submit\" value=\"Play\">\n"
+"                </form>\n"
+"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
+"\">Pause</a><br>\n"
+"                "
+msgstr ""
+"\n"
+"                <form action=\"/media/play\" method=\"GET\">\n"
+"                Position de départ (en ms): <input type=\"text\" name=\"bc\" "
+"value=\"0\">\n"
+"                <input type=\"submit\" value=\"Démarrer\">\n"
+"                </form>\n"
+"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
+"\">Pause</a><br>\n"
+"                "
+
+#: ../lib/advene/core/webcherry.py:295
+msgid ""
+"<hr />\n"
+"            <form action=\"/media/load\" method=\"GET\">\n"
+"            Add a new file (<em>dvd</em> to play a DVD):\n"
+"            <input type=\"text\" name=\"filename\">\n"
+"            <input type=\"submit\" value=\"Add\">\n"
+"            </form>"
+msgstr ""
+"<hr />\n"
+"            <form action=\"/media/load\" method=\"GET\">\n"
+"            Ajouter un nouveau fichier (<em>dvd</em> pour un DVD):\n"
+"            <input type=\"text\" name=\"filename\">\n"
+"            <input type=\"submit\" value=\"Ajouter\">\n"
+"            </form>"
+
+#: ../lib/advene/core/webcherry.py:301
+msgid ""
+"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
+msgstr "<h3><a href=\"/media/snapshot\">Accéder aux captures d'écran</h3>"
+
+#: ../lib/advene/core/webcherry.py:310
+#, python-format
+msgid "Unknown STBV identifier: %s"
+msgstr "Identificateur STBV inconnu : %s"
+
+#: ../lib/advene/core/webcherry.py:385
+msgid "Media information"
+msgstr "Information sur le média"
+
+#: ../lib/advene/core/webcherry.py:398
+msgid "File added"
+msgstr "Fichier ajouté"
+
+#: ../lib/advene/core/webcherry.py:399
+#, python-format
+msgid "<p><strong>%s has been added to the playlist</strong></p>"
+msgstr "<p><strong>%s a été ajouté à la liste</strong></p>"
+
+#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
+msgid "Access to packages snapshots"
+msgstr "Accès aux catpures d'écran"
+
+#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
+msgid "Unknown package alias"
+msgstr "Alias du recueil inconnu"
+
+#: ../lib/advene/core/webcherry.py:426
+#, python-format
+msgid "Available snapshots for %s"
+msgstr "Captures d'écran disponibles pour le recueil %s"
+
+#: ../lib/advene/core/webcherry.py:432
+#, python-format
+msgid ""
+"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
+"a></p>"
+msgstr ""
+"<p><a href=\"/media/snapshot/%s?mode=inline\">Afficher les vignettes</a></p>"
+
+#: ../lib/advene/core/webcherry.py:439
+msgid "Done"
+msgstr "Fait"
+
+#: ../lib/advene/core/webcherry.py:441
+msgid "Pending"
+msgstr "En attente"
+
+#: ../lib/advene/core/webcherry.py:487
+#, python-format
+msgid "Unknown annotation id: %s"
+msgstr "Annotation inconnue: %s"
+
+#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
+#, python-format
+msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
+msgstr "Impossible d'écrire dans %(stbvid)s : %(error)s"
+
+#: ../lib/advene/core/webcherry.py:675
+msgid "<p>No GUI is available."
+msgstr "<p>Aucune interface n'est disponible."
+
+#: ../lib/advene/core/webcherry.py:677
+#, python-format
+msgid "<p>Opened adhoc views: %s</p>"
+msgstr "<p>Vues ad-hoc ouvertes : %s</p>"
+
+#: ../lib/advene/core/webcherry.py:678
+msgid "<p>Available adhoc views:</p><ul>"
+msgstr "<p>Vues ad-hoc disponibles : %s</p>"
+
+#: ../lib/advene/core/webcherry.py:699
+#, python-format
+msgid "<p>Current stbv: %s</p>"
+msgstr "<p>Vue STBV courante : %s</p>"
+
+#: ../lib/advene/core/webcherry.py:700
+#, python-format
+msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
+msgstr "<p>Vous pouvez activer les STBV suivantes :</p><ul>%s</ul>"
+
+#: ../lib/advene/core/webcherry.py:702
+msgid "Activate and play"
+msgstr "Activer et jouer"
+
+#: ../lib/advene/core/webcherry.py:708
+msgid "Application information"
+msgstr "Informations sur l'application"
+
+#: ../lib/advene/core/webcherry.py:778
+msgid "Missing element id parameter"
+msgstr "Paramètre id manquant"
+
+#: ../lib/advene/core/webcherry.py:782
+#, python-format
+msgid "No existing element with id %s"
+msgstr "Aucun élément existant avec l'id %s"
+
+#: ../lib/advene/core/webcherry.py:791
+#, python-format
+msgid "<p>The GUI view %s does not exist.</p>"
+msgstr "<p>La vue ad-hoc %s n'existe pas.</p>"
+
+#: ../lib/advene/core/webcherry.py:798
+msgid "Invalid request"
+msgstr "Requête invalide"
+
+#: ../lib/advene/core/webcherry.py:803
+msgid "Invalid configuration variable name"
+msgstr "Nom de variable de configuration invalide"
+
+#: ../lib/advene/core/webcherry.py:815
+msgid "Invalid value"
+msgstr "Valeur non valide"
+
+#: ../lib/advene/core/webcherry.py:819
+#, python-format
+msgid "Unsupported method %s"
+msgstr "Méthode non supportée: %s"
+
+#: ../lib/advene/core/webcherry.py:845
+#, python-format
+msgid ""
+"\n"
+"        <h1>Authorized hosts</h1>\n"
+"        <table border=\"1\">\n"
+"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
+"        %s\n"
+"        </table>\n"
+"        <form method=\"GET\">\n"
+"        Add a new hostname to the list :<br>\n"
+"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
+"\"Add\">\n"
+"        </form>\n"
+"        "
+msgstr ""
+"\n"
+"        <h1>Clients autorisés</h1>\n"
+"        <table border=\"1\">\n"
+"        <tr><th>Host</th><th>Adresse IP</th><th>Action</th></tr>\n"
+"        %s\n"
+"        </table>\n"
+"        <form method=\"GET\">\n"
+"        Ajouter une nouvelle adresse à la liste :<br>\n"
+"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
+"\"Ajouter\">\n"
+"        </form>\n"
+"        "
+
+#: ../lib/advene/core/webcherry.py:859
+msgid "Access control"
+msgstr "Contrôle d'accès"
+
+#: ../lib/advene/core/webcherry.py:864
+msgid "Access control - add a hostname"
+msgstr "Contrôle d'accès - ajouter une adresse"
+
+#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
+#, python-format
+msgid "<strong>Error: %s is an invalid hostname.</strong>"
+msgstr "<strong>Erreur: %s n'est pas un nom de machine valide.</strong>"
+
+#: ../lib/advene/core/webcherry.py:875
+#, python-format
+msgid "<p>Added %s to authorized hosts list.</p>"
+msgstr "<p>Ajouté %s à la liste des clients autorisés.</p>"
+
+#: ../lib/advene/core/webcherry.py:881
+msgid "Access control - delete a hostname"
+msgstr "Contrôle d'accès - supprimer une adresse"
+
+#: ../lib/advene/core/webcherry.py:889
+msgid "<strong>Cannot remove the localhost access.</strong>"
+msgstr "<strong>Impossible de supprimer l'accès local.</strong>"
+
+#: ../lib/advene/core/webcherry.py:894
+#, python-format
+msgid "<p>Removed %s from authorized hosts list.</p>"
+msgstr "<p>Supprimé %s de la liste des clients autorisés.</p>"
+
+#: ../lib/advene/core/webcherry.py:896
+#, python-format
+msgid "<p>%s is not in authorized hosts list.</p>"
+msgstr "<p>%s n'est pas dans la liste des clients autorisés.</p>"
+
+#: ../lib/advene/core/webcherry.py:945
+msgid "Server Administration"
+msgstr "Administration du serveur"
+
+#: ../lib/advene/core/webcherry.py:953
+#, python-format
+msgid ""
+"\n"
+"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
+"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
+"        <p><a href=\"/action\">List available actions</a></p>\n"
+"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
+"        <p><a href=\"/media\">Media control</a></p>\n"
+"        <p><a href=\"/application\">Display GUI status</a></p>\n"
+"        <p><a href=\"/admin/list\">List available files</a></p>\n"
+"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
+"p>\n"
+"        <p>Display mode : %(displaymode)s</p>\n"
+"        <hr>\n"
+"        <p>Load a package :\n"
+"        <form action=\"/admin/load\" method=\"GET\">\n"
+"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
+"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
+"        <input type=\"submit\" value=\"Load\" />\n"
+"        </form>\n"
+"        </body></html>\n"
+"        "
+msgstr ""
+"\n"
+"        <p><a href=\"/admin/access\">Régler le contrôle d'accès</a></p>\n"
+"        <p><a href=\"/admin/methods\">Afficher les méthodes TALES "
+"disponibles</a></p>\n"
+"        <p><a href=\"/action\">Afficher les actions disponibles</a></p>\n"
+"        <p><a href=\"/admin/reset\">Réinitialiser le serveur</a></p>\n"
+"        <p><a href=\"/media\">Contrôle du lecteur</a></p>\n"
+"        <p><a href=\"/application\">Afficher le statut de l'interface "
+"graphique</a></p>\n"
+"        <p><a href=\"/admin/list\">Afficher les fichiers disponibles</a></"
+"p>\n"
+"        <p><a href=\"/packages\">Afficher les recueils chargés</a> "
+"(%(packagelist)s)</p>\n"
+"        <p>Mode d'affichage : %(displaymode)s</p>\n"
+"        <hr>\n"
+"        <p>Charger un nouveau recueil :\n"
+"        <form action=\"/admin/load\" method=\"GET\">\n"
+"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
+"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
+"        <input type=\"submit\" value=\"Charger\" />\n"
+"        </form>\n"
+"        </body></html>\n"
+"        "
+
+#: ../lib/advene/core/webcherry.py:983
+msgid "Available files"
+msgstr "Fichiers disponibles"
+
+#: ../lib/advene/core/webcherry.py:1009
+msgid "You should specify an alias"
+msgstr "Vous devez spécifier un alias"
+
+#: ../lib/advene/core/webcherry.py:1014
+msgid "You should specify an uri"
+msgstr "Vous devez spécifier une URI"
+
+#: ../lib/advene/core/webcherry.py:1020
+#, python-format
+msgid "Package %s loaded"
+msgstr "Recueil %s chargé"
+
+#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
+#, python-format
+msgid ""
+"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
+"the <a href=\"/packages\">package list</a>."
+msgstr ""
+"<p>Accéder au recueil <a href=\"/packages/%(alias)s\">%(alias)s</a>, ou à la "
+"<a href=\"/packages\">liste des recueils chargés</a>."
+
+#: ../lib/advene/core/webcherry.py:1024
+#, python-format
+msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
+msgstr "<p>Impossible de charger le recueil %(alias)s : %(error)s</p>"
+
+#: ../lib/advene/core/webcherry.py:1035
+#, python-format
+msgid "Package %s deleted"
+msgstr "Recueil %s supprimé"
+
+#: ../lib/advene/core/webcherry.py:1036
+msgid "<p>Go to the <a href=\"/packages\">package list</a>."
+msgstr ""
+"<p>Consulter la <a href=\"/packages\">liste des recueils disponibles</a>"
+
+#: ../lib/advene/core/webcherry.py:1039
+#, python-format
+msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
+msgstr "<p>Impossible de supprimer le recueil %(alias)s : %(error)s</p>"
+
+#: ../lib/advene/core/webcherry.py:1056
+#, python-format
+msgid "Package %s saved"
+msgstr "Recueil %s sauvegardé"
+
+#: ../lib/advene/core/webcherry.py:1060
+#, python-format
+msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
+msgstr "<p>Impossible de sauvegarder le recueil %(alias)s : %(error)s</p>"
+
+#: ../lib/advene/core/webcherry.py:1070
+msgid "Server reset"
+msgstr "Serveur réinitialisé"
+
+#: ../lib/advene/core/webcherry.py:1076
+msgid "Available TALES methods"
+msgstr "Méthodes TALES disponibles"
+
+#: ../lib/advene/core/webcherry.py:1117
+msgid "Loaded package(s)"
+msgstr "Recueil(s) chargé(s)"
+
+#: ../lib/advene/core/webcherry.py:1119
+msgid ""
+"\n"
+"        <h1>Loaded package(s)</h1>\n"
+"        <table border=\"1\" width=\"50%\">\n"
+"        <tr>\n"
+"        <th>Alias</th>\n"
+"        <th>Action</th>\n"
+"        <th>URI</th>\n"
+"        <th>Annotations</th>\n"
+"        </tr>\n"
+"        "
+msgstr ""
+"\n"
+"        <h1>Recueil(s) chargé(s)</h1>\n"
+"        <table border=\"1\" width=\"50%\">\n"
+"        <tr>\n"
+"        <th>Alias</th>\n"
+"        <th>Action</th>\n"
+"        <th>URI</th>\n"
+"        <th>Annotations</th>\n"
+"        </tr>\n"
+"        "
+
+#: ../lib/advene/core/webcherry.py:1131
+#, python-format
+msgid ""
+"<tr>\n"
+"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
+"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
+"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
+"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
+"            <td>%(uri)s</td>\n"
+"            <td>%(size)d</td>\n"
+"            </tr>\n"
+"            "
+msgstr ""
+"<tr>\n"
+"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
+"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
+"%(uri)s\">Recharger</a>|<a href=\"/admin/delete?alias=%(alias)s\">Supprimer</"
+"a>|<a href=\"/admin/save?alias=%(alias)s\">Sauver</a></td>\n"
+"            <td>%(uri)s</td>\n"
+"            <td>%(size)d</td>\n"
+"            </tr>\n"
+"            "
+
+#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
+#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
+#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
+#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
+#: ../lib/advene/core/webcherry.py:2039
+msgid "Error"
+msgstr "Erreur"
+
+#: ../lib/advene/core/webcherry.py:1205
+#, python-format
+msgid "The TALES expression %s is not valid."
+msgstr "L'expression TALES %s n'est pas valide."
+
+#: ../lib/advene/core/webcherry.py:1256
+msgid "Content mode not available on non-content data"
+msgstr ""
+"Le mode <em>Contenu</em> n'est pas applicable aux données qui ne sont pas "
+"des contenus."
+
+#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
+#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
+#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
+#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
+#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
+#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
+msgid "<h1>Error</h1>"
+msgstr "<h1>Erreur</h1>"
+
+#: ../lib/advene/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
+#, python-format
+msgid ""
+"<p>There was an error in the template code.</p>\n"
+"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"                <p>Error message: <em>%(message)s</em></p>"
+msgstr ""
+"<p>Il y a une erreur dans le modèle.</p>\n"
+"                <p>Balise: <strong>%(tagname)s</strong></p>\n"
+"                <p>Message d'erreur: <em>%(message)s</em></p>"
 
-#: ../lib/advene/gui/main.py:314
-msgid "Display logfile"
-msgstr "Afficher les messages d'information"
+#: ../lib/advene/core/webcherry.py:1290
+#, python-format
+msgid ""
+"<p>An invalid character is in the Context:</p>\n"
+"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
+"pre>"
+msgstr ""
+"<p>Un caractère invalide est dans le Contexte :</p>\n"
+"                <p>Message d'erreur: <em>%(error)s</em></p><pre>%(message)s</"
+"pre>"
 
-#: ../lib/advene/gui/main.py:314
-msgid "Display log file"
-msgstr "Afficher les messages d'information"
+#: ../lib/advene/core/webcherry.py:1298
+#, python-format
+msgid ""
+"<p>There was an error in the TALES expression.</p>\n"
+"                <pre>%s</pre>"
+msgstr ""
+"<p>Il y a une erreur dans l'expression TALES.</p>\n"
+"                <pre>%s</pre>"
 
-#: ../lib/advene/gui/main.py:315
-msgid "Open logfile folder"
-msgstr "Ouvrir le dossier du rapport d'erreur"
+#: ../lib/advene/core/webcherry.py:1318
+#, python-format
+msgid ""
+"<p>There was an error.</p>\n"
+"                <pre>%s</pre>"
+msgstr ""
+"<p>Une erreur est survenue.</p>\n"
+"                <pre>%s</pre>"
+
+#: ../lib/advene/core/webcherry.py:1342
+#, python-format
+msgid ""
+"\n"
+"            <hr>\n"
+"            <p>\n"
+"            Location: %(location)s<br>\n"
+"            <form name=\"navigation\" method=\"GET\">\n"
+"            <a href=\"%(levelup)s\">Up one level</a> |\n"
+"            Next level :\n"
+"            <select name=\"path\" onchange=\"submit()\">\n"
+"            "
+msgstr ""
+"\n"
+"        <hr>\n"
+"        <p>\n"
+"        Chemin courant : %(location)s<br>\n"
+"        <form name=\"navigation\" method=\"GET\">\n"
+"        <a href=\"%(levelup)s\">Remonter d'un niveau</a> |\n"
+"        Niveau suivant :\n"
+"        <select name=\"path\" onchange=\"submit()\">\n"
+"        "
+
+#: ../lib/advene/core/webcherry.py:1360
+msgid ""
+"\n"
+"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
+"            <option selected></option>\n"
+"            "
+msgstr ""
+"\n"
+"        </select> Vue : <select name=\"view\" onchange=\"submit()\">\n"
+"        <option selected></option>\n"
+"        "
+
+#: ../lib/advene/core/webcherry.py:1378
+#, python-format
+msgid ""
+"<hr>\n"
+"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
+"package %(uri)s returns %(value)s</p>\n"
+"            "
+msgstr ""
+"<hr>\n"
+"        <p>L'évaluation de l'expression \"<strong>%(expression)s</strong>\" "
+"sur le recueil %(uri)s retourne %(value)s</p>\n"
+"        "
+
+#: ../lib/advene/core/webcherry.py:1414
+#, python-format
+msgid "<p>Package <strong>%s</strong> not loaded</p>"
+msgstr "<p>Le recueil <strong>%s</strong> n'est pas chargé</p>"
+
+#: ../lib/advene/core/webcherry.py:1456
+#, python-format
+msgid ""
+"<p>There was an error in the template code.</p>\n"
+"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"            <p>Error message: <em>%(message)s</em></p>"
+msgstr ""
+"<p>Il y a une erreur dans le modèle.</p>\n"
+"            <p>Balise: <strong>%(tagname)s</strong></p>\n"
+"            <p>Message d'erreur: <em>%(message)s</em></p>"
+
+#: ../lib/advene/core/webcherry.py:1464
+#, python-format
+msgid ""
+"<p>There was an error in the expression.</p>\n"
+"            <pre>%s</pre>"
+msgstr ""
+"<p>Il y a une erreur dans l'expression.</p>\n"
+"            <pre>%s</pre>"
+
+#: ../lib/advene/core/webcherry.py:1472
+#, python-format
+msgid ""
+"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
+"            %(type)s\n"
+"            %(value)s\n"
+"            %(traceback)s</pre>"
+msgstr ""
+"<p>Impossible d'interpéter l'expression TALES %(expr)s sur le recueil "
+"%(package)s<p><pre>\n"
+"                %(type)s\n"
+"                %(value)s\n"
+"                %(traceback)s</pre>"
+
+#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
+msgid "<p>Cannot set the value : invalid path</p>"
+msgstr "<p>Impossible de mettre à jour : chemin invalide</p>"
+
+#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
+#, python-format
+msgid ""
+"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
+"%(folder)s could not be created.</p>"
+msgstr ""
+"<h1>Erreur</h1><p>Lors de la création de la ressource %(path)s, le "
+"répertoire %(folder)s n'a pas pu être créé.</p>"
+
+#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
+msgid "Resource successfuly created/updated"
+msgstr "Ressource mise à jour"
+
+#: ../lib/advene/core/webcherry.py:1611
+msgid "Value successfuly updated"
+msgstr "Valeur mise à jour"
+
+#: ../lib/advene/core/webcherry.py:1613
+#, python-format
+msgid ""
+"Unable to update the attribute %(attribute)s for element %(element)s: "
+"%(error)s."
+msgstr ""
+"Impossible de mettre à jour l'attribut %(attribute)s de l'élément "
+"%(element)s: %(error)s."
+
+#: ../lib/advene/core/webcherry.py:1724
+msgid "<p>Invalid request</p>."
+msgstr "<p>Requête invalide</p>"
+
+#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
+msgid "Value updated"
+msgstr "Valeur mise à jour"
+
+#: ../lib/advene/core/webcherry.py:1789
+#, python-format
+msgid ""
+"\n"
+"                <h1>Value updated</h1>\n"
+"                The value of %(path)s has been updated to\n"
+"                <pre>\n"
+"                %(value)s\n"
+"                </pre>\n"
+"                "
+msgstr ""
+"\n"
+"                    <h1>Valeur mise à jour</h1>\n"
+"                    La valeur de %(path)s a été fixée à :\n"
+"                    <pre>\n"
+"                    %(value)s\n"
+"                    </pre>\n"
+"                    "
+
+#: ../lib/advene/core/webcherry.py:1806
+#, python-format
+msgid ""
+"\n"
+"                    <h1>Value updated</h1>\n"
+"                    The value of %(path)s has been updated to\n"
+"                    <pre>\n"
+"                    %(value)s\n"
+"                    </pre>\n"
+"                    "
+msgstr ""
+"\n"
+"                    <h1>Contenu mis à jour</h1>\n"
+"                    Le contenu de %(path)s a été fixé à :\n"
+"                    <pre>\n"
+"                    %(value)s\n"
+"                    </pre>\n"
+"                    "
+
+#: ../lib/advene/core/webcherry.py:1817
+#, python-format
+msgid ""
+"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
+msgstr ""
+"Requête invalide : impossible de mettre à jour la valeur de %(attribute)s "
+"dans %(tales)s."
+
+#: ../lib/advene/core/webcherry.py:1860
+msgid "Cannot create an element in something else than a package."
+msgstr "Impossible de créer un élément dans autre chose qu'un recueil."
+
+#: ../lib/advene/core/webcherry.py:1877
+#, python-format
+msgid "The identifier %s already exists."
+msgstr "L'identificateur %s est déjà défini."
+
+#: ../lib/advene/core/webcherry.py:1889
+#, python-format
+msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
+msgstr "<p>Erreur lors de la création de la vue %(id)s</p><pre>%(error)s</pre>"
+
+#: ../lib/advene/core/webcherry.py:1895
+msgid "View created"
+msgstr "Vue créée"
 
-#: ../lib/advene/gui/main.py:315
+#: ../lib/advene/core/webcherry.py:1896
+#, python-format
+msgid ""
+"\n"
+"                 <h1>View <em>%(id)s</em> created</h1>\n"
+"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
+"created.</p>\n"
+"                 "
+msgstr ""
+"\n"
+"                     <h1>Vue <em>%(id)s</em> créée</h1>\n"
+"                     <p>La vue <a href=\"%(url)s\">%(id)s</a> a été "
+"correctement créée.</p>\n"
+"                     "
+
+#: ../lib/advene/core/webcherry.py:1912
+#, python-format
+msgid "Missing %s parameter"
+msgstr "Paramètre %s manquant"
+
+#: ../lib/advene/core/webcherry.py:1915
+#, python-format
+msgid "Relation type %s does not exist"
+msgstr "Le type de relation %s n'existe pas"
+
+#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
+#, python-format
+msgid "Annotation %s does not exist"
+msgstr "L'annotation %s n'existe pas"
+
+#: ../lib/advene/core/webcherry.py:1928
+#, python-format
 msgid ""
-"Display logfile folder. It can help when sending the advene.log file by e-"
-"mail."
+"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
+"p>"
 msgstr ""
-"Afficher le dossier contenant le rapport d'erreurs advene.log, afin d'en "
-"faciliter l'envoi par courriel."
-
-#: ../lib/advene/gui/main.py:316
-msgid "_About"
-msgstr "À _Propos"
+"<p>Impossible de créer une relation entre %(member1)s et %(member2)s : type "
+"invalide</p>"
 
-#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3750
+#: ../lib/advene/core/webcherry.py:1940
 #, python-format
 msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
+"<p>Error while creating relation between %(member1)s and %(member2)s :</"
+"p><pre>%(error)s</pre>"
 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"
+"<p>Erreur lors de la création de la relation entre %(member1)s et "
+"%(member2)s : </p><pre>%(error)s</pre>"
 
-#: ../lib/advene/gui/main.py:345
-msgid "Save the current package"
-msgstr "Sauvegarder le recueil courant"
+#: ../lib/advene/core/webcherry.py:1943
+msgid "Relation created"
+msgstr "Relation créée"
 
-#: ../lib/advene/gui/main.py:346
-msgid "Save the package with a new name"
-msgstr "Sauvegarder le recueil sous un nouveau nom"
+#: ../lib/advene/core/webcherry.py:1944
+#, python-format
+msgid "<h1>Relation <em>%s</em> created</h1>"
+msgstr "<h1>Relation <em>%s</em> créée</h1>"
 
-#: ../lib/advene/gui/main.py:347
-msgid "Select movie file..."
-msgstr "Sélectionner un fichier vidéo"
+#: ../lib/advene/core/webcherry.py:1954
+#, python-format
+msgid "Annotation type %s does not exist"
+msgstr "Le type d'annotation %s n'existe pas"
 
-#: ../lib/advene/gui/main.py:348
-msgid "Select DVD"
-msgstr "Sélectionner un DVD"
+#: ../lib/advene/core/webcherry.py:1971
+#, python-format
+msgid ""
+"<p>Error while creating annotation of type %(type)s :<pre>\n"
+"                    %(errortype)s\n"
+"                    %(value)s\n"
+"                    %(traceback)s</pre>"
+msgstr ""
+"<p>Erreur lors de la création d'une annotation du type %(type)s :<pre>\n"
+"                     %(errortype)s\n"
+"                     %(value)s\n"
+"                     %(traceback)s</pre>"
 
-#: ../lib/advene/gui/main.py:352
-msgid "Create a text annotation"
-msgstr "Créer une annotation textuelle"
+#: ../lib/advene/core/webcherry.py:1983
+#, python-format
+msgid "Annotation %s created"
+msgstr "Annotation %s créée"
 
-#: ../lib/advene/gui/main.py:353
-msgid "Create a graphical annotation"
-msgstr "Créer une annotation graphique"
+#: ../lib/advene/core/webcherry.py:1985
+#, python-format
+msgid "Error: Cannot create an object of type %s."
+msgstr "Erreur: impossible de créer un objet de type %s."
 
-#: ../lib/advene/gui/main.py:359
-msgid "List recently opened packages"
-msgstr "Recueils récemment ouverts"
+#: ../lib/advene/core/webcherry.py:1988
+#, python-format
+msgid ""
+"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
+"code></p>"
+msgstr ""
+"Erreur: Impossible d'effectuer l'action <em>%(action)s</em> sur <code>"
+"%(object)s</code>"
 
-#: ../lib/advene/gui/main.py:389
-msgid "Snapshotter activity"
-msgstr "Activité de prise de capture d'écran"
+#: ../lib/advene/core/webcherry.py:2001
+msgid "Available actions"
+msgstr "Actions disponibles"
 
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/core/webcherry.py:2010
 #, python-format
-msgid "%d queued requests"
-msgstr "%d requêtes en attente"
-
-#: ../lib/advene/gui/main.py:392
-msgid "Cancel all requests"
-msgstr "Annuler toutes les requêtes"
+msgid "<li>%(name)s: %(value)s"
+msgstr "<li>%(name)s: %(value)s"
 
-#: ../lib/advene/gui/main.py:397
-msgid "No snapshotter"
-msgstr "Aucun composant de capture d'écran"
+#: ../lib/advene/core/webcherry.py:2033
+#, python-format
+msgid "<p>Unknown action</p><pre>Action: %s</pre>"
+msgstr "<p>Action inconnue</p><pre>Action : %s</pre>"
 
-#: ../lib/advene/gui/main.py:419
-msgid "No snapshotting activity"
-msgstr "Aucune requête de capture d'écran en cours"
+#: ../lib/advene/core/webcherry.py:2040
+msgid "Missing parameter(s) :<ul>"
+msgstr "Paramètre(s) manquant(s) :<ul>"
 
-#: ../lib/advene/gui/main.py:423
-msgid "Snapshotting"
-msgstr "En cours de capture d'écran"
+#: ../lib/advene/core/webcherry.py:2076
+msgid "Advene web resources"
+msgstr "Ressources web d'Advene"
 
-#: ../lib/advene/gui/main.py:440
-msgid "Display application log messages"
-msgstr "Afficher les messages d'information de l'application"
+#: ../lib/advene/core/webcherry.py:2082
+msgid "Advene webserver"
+msgstr "Serveur web Advene"
 
-#: ../lib/advene/gui/main.py:482
-msgid "Quicksearch lists"
-msgstr "Listes de recherche"
+#: ../lib/advene/core/webcherry.py:2083
+#, python-format
+msgid ""
+"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
+"webserver run by %(userid)s on %(serveraddress)s.</p>"
+msgstr ""
+"<p>Bienvenue sur le serveur web <a href=\"http://liris.cnrs.fr/advene/"
+"\">Advene</a> exécuté par %(userid)s sur %(serveraddress)s.</p>"
 
-#: ../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/core/webcherry.py:2090
+msgid ""
+" <p>No package is loaded. You can access the <a href=\"/admin\">server "
+"administration page</a>.<p>"
+msgstr ""
+" <p>Aucun recueil n'est chargé. Vous pouvez accéder aux <a href=\"/admin"
+"\">formulaires d'administration du serveur</a>.<p>"
 
-#: ../lib/advene/gui/main.py:507
+#: ../lib/advene/core/webcherry.py:2100
 #, python-format
 msgid ""
-"Searching on %s.\n"
-"Left click to launch the search, right-click to set the quicksearch options"
+"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
+"view</a>"
 msgstr ""
-"Recherche sur %s.\n"
-"Clic gauche pour lancer la recherche, click droit pour régler les options de "
-"recherche"
+"à la <a href=\"/packages/%(alias)s/view/%(view)s\">vue par défaut du "
+"recueil</a>"
 
-#: ../lib/advene/gui/main.py:508
+#: ../lib/advene/core/webcherry.py:2102
 #, python-format
-msgid "String to search in %s"
-msgstr "Chaîne à rechercher dans %s"
+msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
+msgstr "aux <a href=\"/packages/%s\">données du recueil</a>"
 
-#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
-msgid "Tracing : "
-msgstr "Trace : "
+#: ../lib/advene/core/webcherry.py:2104
+msgid "the <a href=\"/packages\">loaded packages' data</a>"
+msgstr "aux <a href=\"/packages\">recueils disponibles</a>"
 
-#: ../lib/advene/gui/main.py:521
-msgid "off"
-msgstr "off"
+#: ../lib/advene/core/webcherry.py:2105
+#, python-format
+msgid ""
+" <p>You can either access %s or the <a href=\"/admin\">server administration "
+"page</a>.<p>"
+msgstr ""
+" <p>Vous pouvez accéder soit %s, soit aux <a href=\"/admin\">formulaires "
+"d'administration du serveur</a>.<p>"
 
-#: ../lib/advene/gui/main.py:525
-msgid "on"
-msgstr "on"
+#: ../lib/advene/core/webcherry.py:2107
+#, python-format
+msgid ""
+"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
+"fr/advene/\">Advene</a> v. %s.</em></p>"
+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/gui/main.py:545
-msgid "Launch search"
-msgstr "Lancer la recherche"
+#: ../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/gui/main.py:550
-msgid "Ignore case"
-msgstr "Ignorer la casse"
+#: ../lib/advene/core/controller.py:375
+msgid "Exception (traceback in console):"
+msgstr "Exception (details dans la console)"
 
-#: ../lib/advene/gui/main.py:555
-msgid "Searched elements"
-msgstr "Éléments recherchés"
+#: ../lib/advene/core/controller.py:408
+msgid "No available GUI"
+msgstr "Pas d'interface graphique disponible."
 
-#: ../lib/advene/gui/main.py:625
-msgid "Playing"
-msgstr "Lecture"
+#: ../lib/advene/core/controller.py:427
+msgid "No available event handler"
+msgstr "Pas de gestionnaire d'événements disponible."
 
-#: ../lib/advene/gui/main.py:626
-msgid "Pause"
-msgstr "Pause"
+#: ../lib/advene/core/controller.py:435
+msgid "No available gui"
+msgstr "Pas d'interface graphique disponible."
 
-#: ../lib/advene/gui/main.py:627
-msgid "Init"
-msgstr "Initialisation"
+#: ../lib/advene/core/controller.py:451
+#, python-format
+msgid "Warning: redefining an existing feature %s"
+msgstr "Avertissement: vous redéfinissez une fonctionnalité existante %s"
 
-#: ../lib/advene/gui/main.py:629
-msgid "Undefined"
-msgstr "Indéfini"
+#: ../lib/advene/core/controller.py:583
+msgid "All annotations"
+msgstr "Toutes les annotations"
 
-#: ../lib/advene/gui/main.py:901
-msgid "Enter the new time value"
-msgstr "Entrez le nouveau temps"
+#: ../lib/advene/core/controller.py:585
+msgid "Ids"
+msgstr "Id"
 
-#: ../lib/advene/gui/main.py:925
+#: ../lib/advene/core/controller.py:773
 #, python-format
-msgid "Replace content in %d elements"
-msgstr "Remplacer du texte dans %d elements"
-
-#: ../lib/advene/gui/main.py:938
-msgid "Find word"
-msgstr "Trouver le mot"
+msgid ""
+"Cannot start the webserver\n"
+"The following processes seem to use the %(port)s port: %(processes)s"
+msgstr ""
+"Impossible de démarrer le serveur web.\n"
+"Les processus suivants semblent utiliser le port %(port)s: %(processes)s"
 
-#: ../lib/advene/gui/main.py:945
-msgid "Replace by"
-msgstr "Remplacer par"
+#: ../lib/advene/core/controller.py:822 ../lib/advene/core/controller.py:833
+#, python-format
+msgid "Loaded %(uri)s as %(alias)s"
+msgstr "Chargé %(uri)s sous %(alias)s"
 
-#: ../lib/advene/gui/main.py:973
+#: ../lib/advene/core/controller.py:824 ../lib/advene/core/controller.py:836
 #, 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)."
+msgid "Cannot load package from file %(uri)s: %(error)s"
+msgstr "Impossible de charger le fichier %(uri)s : %(error)s"
 
-#: ../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/core/controller.py:875
+msgid "Deactivating web server"
+msgstr "Désactivation du serveur web"
 
-#: ../lib/advene/gui/main.py:985
-msgid "Video export"
-msgstr "Export vidéo"
+#: ../lib/advene/core/controller.py:992
+#, python-format
+msgid "Cannot get audio volume: %s"
+msgstr "Impossible d'obtenir le volume: %s"
 
-#: ../lib/advene/gui/main.py:987
+#: ../lib/advene/core/controller.py:1042
 #, python-format
-msgid "Exporting video montage/fragment to %%(filename)s"
-msgstr "Export du fragment/montage vidéo vers %%(filename)s"
+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/gui/main.py:989
-msgid "Please choose a destination filename"
-msgstr "Choisissez le fichier destination"
+#: ../lib/advene/core/controller.py:1246
+#, python-format
+msgid "Found matching video file in moviepath: %s"
+msgstr "Trouvé fichier vidéo correspondant dans le chemin de recherche : %s"
 
-#: ../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."
+#: ../lib/advene/core/controller.py:1287 ../lib/advene/core/controller.py:1289
+msgid "Analysis of "
+msgstr "Analyse de "
+
+#: ../lib/advene/core/controller.py:1489
+msgid "Cannot split the annotation: the given position is outside."
 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"
+"Impossible de supprimer l'annotation : la position indiquée est en dehors"
 
-#: ../lib/advene/gui/main.py:1069
+#: ../lib/advene/core/controller.py:1654
 #, 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 ""
-"La vidéo associée %s est introuvable. Utilisez le menu 'Fichier/Associer un "
-"fichier vidéo' pour associer un fichier vidéo."
+msgid "Cannot find the template package %(filename)s: %(error)s"
+msgstr "Impossible de trouver le recueil modèle %(filename)s : %(error)s"
 
-#: ../lib/advene/gui/main.py:1071
+#: ../lib/advene/core/controller.py:1697
 #, 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:1932
+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:1950
 msgid ""
-"You are now working with the following video:\n"
-"%s"
+"Cannot load package: the following annotations do not have Millisecond "
+"fragments:"
 msgstr ""
-"Vous travaillez maintenant avec la vidéo suivante :\\n\n"
-"%s"
+"Impossible de charger le recueil: les annotations suivantes\n"
+"n'ont pas de fragment de type Milliseconde :"
 
-#: ../lib/advene/gui/main.py:1188
-msgid "Open this view..."
-msgstr "Ouvrir cette vue..."
+#: ../lib/advene/core/controller.py:1977
+#, 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/gui/main.py:1205
-msgid "_All available views"
-msgstr "_Toutes les vues disponibles"
+#: ../lib/advene/core/controller.py:1979
+#, 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/gui/main.py:1224
-msgid "Transcription of annotations"
-msgstr "Transcription d'annotations"
+#: ../lib/advene/core/controller.py:2019
+msgid "Standard summary"
+msgstr "Index standard"
 
-#: ../lib/advene/gui/main.py:1227
-msgid "Note-taking editor"
-msgstr "Éditeur de prise de notes"
+#: ../lib/advene/core/controller.py:2024
+msgid "Default view"
+msgstr "Vue statique par défaut"
 
-#: ../lib/advene/gui/main.py:1228
-msgid "Active bookmarks"
-msgstr "Signets actifs"
+#: ../lib/advene/core/controller.py:2066
+#, python-format
+msgid ""
+"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
+msgstr ""
+"Boucle infinie dans la vue dynamique %(name)s : la vue %(imp)s est invoquée "
+"plusieurs fois."
 
-#: ../lib/advene/gui/main.py:1229
-msgid "Schema editor"
-msgstr "Éditeur de schéma"
+#: ../lib/advene/core/controller.py:2156
+#, python-format
+msgid "Got exception %s when stopping player."
+msgstr "Reçu l'exception %s à l'arrêt du lecteur"
 
-#: ../lib/advene/gui/main.py:1233
-msgid "TALES explorer"
-msgstr "Explorateur TALES"
+#: ../lib/advene/core/controller.py:2242
+#, python-format
+msgid "Raised exception in update_status: %s"
+msgstr "Exception dans update_status: %s"
 
-#: ../lib/advene/gui/main.py:1234
-msgid "Dynamic montage"
-msgstr "Montage dynamique"
+#: ../lib/advene/core/controller.py:2269
+msgid "Unable to start the player."
+msgstr "Impossible de lancer le lecteur."
 
-#: ../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/core/controller.py:2478
+#, python-format
+msgid "Comment on set of %d annotations"
+msgstr "Commentaire sur %d annotations"
 
-#: ../lib/advene/gui/main.py:1239
-msgid "Create or open a comment view"
-msgstr "Créer ou éditer une vue de commentaire"
+#: ../lib/advene/core/controller.py:2480
+#, python-format
+msgid "Comment on %s"
+msgstr "Commentaire sur %s"
 
-#: ../lib/advene/gui/main.py:1242
+#: ../lib/advene/core/controller.py:2484
+#, python-format
 msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
+"<h1>Comment on %(title)s</h1>\n"
+"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
+"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
+"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
+"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
+"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
+"\"%(imgurl)s\" ></img></a></span>"
 msgstr ""
-"Emplacement de fenêtres d'édition (les fenêtres d'édition d'annotations et "
-"relations seront placées ici)"
+"<h1>Commentaire sur %(title)s</h1>\n"
+"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
+"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
+"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
+"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
+"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
+"\"%(imgurl)s\" ></img></a></span>"
 
-#: ../lib/advene/gui/main.py:1243
-msgid "Display edition history"
-msgstr "Afficher l'historique d'édition"
+#: ../lib/advene/core/controller.py:2494
+#, python-format
+msgid "List of %s annotations"
+msgstr "Ensemble de %s annotations"
 
-#: ../lib/advene/gui/main.py:1244
-msgid "Visualise the activity trace preview"
-msgstr "Prévisualiser la trace d'activité"
+#: ../lib/advene/core/controller.py:2529
+#, python-format
+msgid "Cannot export to %(filename)s: %(e)s"
+msgstr "Impossible d'exporter vers %(filename)s: %(e)s"
 
-#: ../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/core/controller.py:2544 ../lib/advene/core/controller.py:2553
+#, python-format
+msgid "Error when exporting: %s"
+msgstr "Erreur lors de l'export de %s"
 
-#: ../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/plugins/featuredetect.py:42
+msgid "Feature detection (face...)"
+msgstr "Reconnaissance de formes"
 
-#: ../lib/advene/gui/main.py:1352
-#, python-format
+#: ../lib/advene/plugins/featuredetect.py:57
+msgid "Sensitivity level."
+msgstr "Niveau de sensibilité"
+
+#: ../lib/advene/plugins/featuredetect.py:60
 msgid ""
-"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
-"released</b> on %(date)s, but you are running version %(current)s.\n"
-"You can download the latest version from the Advene website: http://liris."
-"cnrs.fr/advene/</span>"
+"Scale. Original image size will be divided by this factor, in order to speed "
+"up detection."
 msgstr ""
-"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s est "
-"disponible</b> depuis le %(date)s, mais vous utilisez la version "
-"%(current)s.\n"
-"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:1357
-msgid "Go to the website"
-msgstr "Aller sur le site web"
+"La taille d'image sera divisée par ce facteur d'échelle, afin\n"
+"d'accélérer le traitement."
 
-#: ../lib/advene/gui/main.py:1363
-msgid "Advene release"
-msgstr "Nouvelle version d'Advene"
+#: ../lib/advene/plugins/featuredetect.py:63
+msgid "Classifier"
+msgstr "Classificateur"
 
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/plugins/featuredetect.py:77
 #, 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:1369
-msgid "Advene is up-to-date"
-msgstr "Advene est à jour"
+msgid "Feature %s"
+msgstr "Forme %s"
 
-#: ../lib/advene/gui/main.py:1383
-msgid "Choose a color"
-msgstr "Choisissez une couleur"
+#: ../lib/advene/plugins/featuredetect.py:79
+#, python-format
+msgid "Detected %s"
+msgstr "%s détecté"
 
-#: ../lib/advene/gui/main.py:1415
-msgid "Select an annotation to loop on it"
-msgstr "Sélectionnez l'annotation sur laquelle boucler"
+#: ../lib/advene/plugins/featuredetect.py:81
+msgid "Detection started"
+msgstr "Détection commencée"
 
-#: ../lib/advene/gui/main.py:1417
+#: ../lib/advene/plugins/featuredetect.py:171
 #, python-format
-msgid "Looping on %s"
-msgstr "Boucler sur %s"
-
-#: ../lib/advene/gui/main.py:1476 ../lib/advene/gui/main.py:2367
-msgid "No active dynamic view"
-msgstr "Aucune vue dynamique active"
+msgid "Detected %(count)d feature(s) until %(time)s"
+msgstr "%(count)d objet(s) détectés jusqu'à %(time)s"
 
-#: ../lib/advene/gui/main.py:1487
-msgid "Create a new dynamic view."
-msgstr "Créer une nouvelle vue dynamique."
+#: ../lib/advene/plugins/ted.py:39
+msgid "TED importer"
+msgstr "Importateur TED"
 
-#: ../lib/advene/gui/main.py:1506
-msgid "Edit the current dynamic view."
-msgstr "Éditer la vue dynamique courante"
+#: ../lib/advene/plugins/cutter.py:39
+msgid "Audio segmentation"
+msgstr "Segmentation audio"
 
-#: ../lib/advene/gui/main.py:1518
-msgid "No dynamic view"
-msgstr "Pas de vue dynamique"
+#: ../lib/advene/plugins/cutter.py:53
+msgid "Volume threshold (in dB, can be negative) before trigger."
+msgstr "Seuil de détection de silence (en dB, peut être négatif)"
 
-#: ../lib/advene/gui/main.py:1550
-msgid "Playing rate"
-msgstr "Vitesse de lecture"
+#: ../lib/advene/plugins/cutter.py:56
+#: ../lib/advene/plugins/soundenveloppe.py:62
+msgid "Channel selection."
+msgstr "Choix du canal"
 
-#: ../lib/advene/gui/main.py:1698
-msgid "History"
-msgstr "Historique"
+#: ../lib/advene/plugins/cutter.py:101
+#, python-format
+msgid "Detected %(count)d segments until %(time)s"
+msgstr "Détecté %(count)d segments jusqu'à %(time)s"
 
-#: ../lib/advene/gui/main.py:1705
-msgid "Popups"
-msgstr "Popups"
+# Segment audio
+#: ../lib/advene/plugins/cutter.py:119
+msgid "Sound segment"
+msgstr "Segment audio"
 
-#: ../lib/advene/gui/main.py:1709
+#: ../lib/advene/plugins/cutter.py:120
+#, python-format
 msgid ""
-"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"notebooks to embed various views."
+"Sound segmentation with a threshold of %(threshold)d dB - channel: "
+"%(channel)s"
 msgstr ""
-"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."
+"Segmentation sonore avec un seuil de %(threshold)d dB - canal : %(channel)s"
 
-#: ../lib/advene/gui/main.py:1709
-msgid "Information"
-msgstr "Information"
+#: ../lib/advene/plugins/cutter.py:138
+msgid "Starting silence detection"
+msgstr "Démarrage de la détection audio"
 
-#: ../lib/advene/gui/main.py:2004
-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/plugins/ttl.py:41
+msgid "TurTLe (RDF) importer"
+msgstr "Importateur TurTLe (RDF)"
 
-#: ../lib/advene/gui/main.py:2013
-msgid "Default annotation type"
-msgstr "Type d'annotation par défaut"
+#: ../lib/advene/plugins/shotdetect.py:35
+msgid "Shotdetect importer"
+msgstr "Importateur Shotdetect"
 
-#: ../lib/advene/gui/main.py:2025
-msgid "Annotation created"
-msgstr "Annotation créée"
+#: ../lib/advene/plugins/shotdetect.py:79
+msgid "No shots"
+msgstr "Pas de plans"
 
-#: ../lib/advene/gui/main.py:2057
-msgid "Play/Pause [Control-Tab / Control-Space]"
-msgstr "Lecture/Pause [Contrôle-Tab / Contrôle-Espace]"
+#: ../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/gui/main.py:2058
-#, python-format
-msgid "Rewind (%.02f s) [Control-Left]"
-msgstr "Reculer (%.02f s) [Contrôle-gauche]"
+#: ../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/gui/main.py:2059
-#, python-format
-msgid "Forward (%.02f s) [Control-Right]"
-msgstr "Avancer (%.02f s) [Contrôle-droite]"
+#: ../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/gui/main.py:2060
-msgid "Previous frame [Control-Down]"
-msgstr "Image précédente [Contrôle-bas]"
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr "Modèle acoustique (répertoire)"
 
-#: ../lib/advene/gui/main.py:2061
-msgid "Next frame [Control-Up]"
-msgstr "Image suivante [Contrôle-haut]"
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr "Dictionnaire phonétique (fichier .dic)"
 
-#: ../lib/advene/gui/main.py:2062
-msgid "Fullscreen"
-msgstr "Plein écran"
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr "Modèle de langage (fichier .dmp)"
 
-#: ../lib/advene/gui/main.py:2214
-#, python-format
-msgid "Screenshot saved to %s"
-msgstr "Capture sauvegardée dans %s"
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:86
+#: ../lib/advene/plugins/barcode.py:58
+msgid "Generating annotations"
+msgstr "Création des annotations"
 
-#: ../lib/advene/gui/main.py:2216
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#: ../lib/advene/plugins/barcode.py:83
 #, python-format
-msgid ""
-"Screenshot saved in\n"
-" %s"
-msgstr ""
-"Capture sauvegardée dans\n"
-" %s"
+msgid "%(count)d utterances until %(time)s"
+msgstr "%(count)d paroles jusqu'à %(time)s"
 
-#: ../lib/advene/gui/main.py:2218
-#, python-format
-msgid ""
-"Could not save screenshot:\n"
-" %s"
-msgstr ""
-"Impossible de sauvegarder la capture:\n"
-" %s"
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr "Parole"
 
-#: ../lib/advene/gui/main.py:2226
-msgid "Save screenshot to..."
-msgstr "Sauver la capture d'écran sous..."
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr "Parole reconnue"
 
-#: ../lib/advene/gui/main.py:2244
-msgid "Could not take snapshot with enough precision"
-msgstr "Impossible de faire une capture avec suffisamment de précision"
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr "Reconnaissance en cours"
 
-#: ../lib/advene/gui/main.py:2282
-msgid "Export package data"
-msgstr "Exporter les données du recueil"
+#: ../lib/advene/plugins/brltty.py:62
+msgid "Input from the braille table."
+msgstr "Entrée depuis la plage Braille"
 
-#: ../lib/advene/gui/main.py:2284
-#, python-format
-msgid "Export annotation type %s"
-msgstr "Exporter le type d'annotation %s"
+#: ../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."
 
-#: ../lib/advene/gui/main.py:2286
-#, python-format
-msgid "Export element %s"
-msgstr "Exporter l'élément %s"
+#: ../lib/advene/plugins/brltty.py:78
+msgid "Could not initialize BrlTTY. No braille support."
+msgstr "Impossible d'initialiser BrlTTY. Il n'y aura pas de support Braille."
 
-#: ../lib/advene/gui/main.py:2312
-msgid "Export format"
-msgstr "Format d'export"
+#: ../lib/advene/plugins/brltty.py:84
+msgid "Display a message in Braille"
+msgstr "Afficher un message en Braille"
 
-#: ../lib/advene/gui/main.py:2349
-msgid " (modified)"
-msgstr " (modifié)"
+#: ../lib/advene/plugins/brltty.py:85
+msgid "Message to display."
+msgstr "Message à afficher"
 
-#: ../lib/advene/gui/main.py:2352
+#: ../lib/advene/plugins/brltty.py:256
 #, python-format
-msgid "Activate %s"
-msgstr "Activer %s"
+msgid "BrlTTY connection error: %s"
+msgstr "BrlTTY - erreur de connexion: %s"
 
-#: ../lib/advene/gui/main.py:2523
-msgid "Saved workspace"
-msgstr "Environnement sauvegardé"
+#: ../lib/advene/plugins/brltty.py:273
+msgid "Braille display: "
+msgstr "Affichage braille :"
 
-#: ../lib/advene/gui/main.py:2575
-msgid "Restoring workspace..."
-msgstr "Restauration de l'environnement"
+#: ../lib/advene/plugins/brltty.py:279
+msgid "No message"
+msgstr "Pas de message"
 
-#: ../lib/advene/gui/main.py:2581
-#, python-format
-msgid "Do you wish to restore the %s workspace ?"
-msgstr "Voulez-vous restaurer l'environnement %s ?"
+#: ../lib/advene/plugins/transcript.py:32
+msgid "Youtube XML importer"
+msgstr "Importateur d'annotations Youtube"
 
-#: ../lib/advene/gui/main.py:2586
-msgid "Clear the current workspace"
-msgstr "Vider l'environnement courant"
+#: ../lib/advene/plugins/transcript.py:69
+msgid "Importing transcript"
+msgstr "Importer une transcription"
 
-#: ../lib/advene/gui/main.py:2607
-#, python-format
-msgid "View %s is not an adhoc view"
-msgstr "La vue %s n'est pas une vue adhoc"
+#: ../lib/advene/plugins/aeidon_import.py:48
+msgid "Aeidon (subtitles) importer"
+msgstr "Importateur sous-titres (Aeidon)"
 
-#: ../lib/advene/gui/main.py:2618
-#, python-format
-msgid "Cannot identify the adhoc view %s"
-msgstr "Impossible de trouver la vue adhoc %s"
+#: ../lib/advene/plugins/anvil.py:35
+msgid "Anvil importer"
+msgstr "Importateur Anvil"
 
-#: ../lib/advene/gui/main.py:2632
-msgid "Choose the annotation type to display as transcription."
-msgstr ""
-"Choisissez le type d'annotation\n"
-"à afficher sous forme de transcription."
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr "Importateur Final Cut Pro XML"
 
-#: ../lib/advene/gui/main.py:2667
-#, python-format
-msgid ""
-"Error: unable to find an edit popup for %(element)s:\n"
-"%(error)s"
-msgstr ""
-"Erreur : impossible d'ouvrir une fenêtre d'édition pour %(element)s:\n"
-"%(error)s"
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr "FCP clipitem"
 
-#: ../lib/advene/gui/main.py:2675
-#, python-format
-msgid "Editing %s"
-msgstr "Édition de %s"
+#: ../lib/advene/plugins/fcp.py:75
+msgid "Importing subtitles"
+msgstr "Import des sous-titres"
 
-#: ../lib/advene/gui/main.py:2687
-#, python-format
-msgid "Comment view (%s)"
-msgstr "Vue de commentaire (%s)"
+#: ../lib/advene/plugins/fcp.py:90
+msgid "Importing clips"
+msgstr "Import des clips"
 
-#: ../lib/advene/gui/main.py:2754
-#, python-format
-msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
-msgstr "Recueil %(uri)s sauvé. %(annotations)s et %(relations)s."
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr "Pas de clip"
 
-#: ../lib/advene/gui/main.py:2765
+#: ../lib/advene/plugins/tracebuilder.py:219
 #, python-format
-msgid "Activating package %s"
-msgstr "Activation du recueil %s"
+msgid "Cannot export to %(fname)s: %(e)s"
+msgstr "Impossible d'exporter vers %(fname)s: %(e)s"
 
-#: ../lib/advene/gui/main.py:2793
+#: ../lib/advene/plugins/tracebuilder.py:1129
+#: ../lib/advene/plugins/tracebuilder.py:1168
 #, 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:2826
-msgid "Do you want to restore the saved workspace ?"
-msgstr "Voulez-vous restaurer l'environnement sauvegardé ?"
-
-#: ../lib/advene/gui/main.py:2833
-msgid "Advene"
-msgstr "Advene"
+msgid "Cannot export to %(host)s:%(port)s %(error)s"
+msgstr "Impossible d'exporter vers %(host)s:%(port)s %(error)s"
 
-#: ../lib/advene/gui/main.py:3038
+#: ../lib/advene/plugins/tracebuilder.py:1143
 #, 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:3062 ../lib/advene/gui/main.py:3083
-#: ../lib/advene/gui/main.py:4033
-msgid "Unknown"
-msgstr "Inconnu"
+msgid "Cannot send data to %(host)s:%(port)s %(error)s"
+msgstr "Impossible d'envoyer des données vers %(host)s:%(port)s %(error)s"
 
-#: ../lib/advene/gui/main.py:3153
+#: ../lib/advene/plugins/tracebuilder.py:1191
 #, python-format
-msgid ""
-"The package(s) %s are modified.\n"
-"Save them now?"
+msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
 msgstr ""
-"Le(s) recueil(s) %s a été modifié mais pas sauvegardé.\n"
-"Sauvegarder maintenant ?"
-
-#: ../lib/advene/gui/main.py:3203
-msgid "Choose an annotation type."
-msgstr "Choisissez un type d'annotation"
+"Impossible d'envoyer l'événement %(nb)s vers %(host)s:%(port)s %(error)s"
 
-#: ../lib/advene/gui/main.py:3247
-msgid "No annotation type is defined."
-msgstr "Aucun type d'annotation n'est défini."
+#: ../lib/advene/plugins/tracebuilder.py:1197
+#, python-format
+msgid "%(nb)s events sent to %(host)s:%(port)s during session."
+msgstr "%(nb)s événements envoyés à  %(host)s:%(port)s pendant la session."
 
-#: ../lib/advene/gui/main.py:3256
-msgid "Creating a new type."
-msgstr "Création d'un nouveau type."
+#: ../lib/advene/plugins/goodshotdetector.py:45
+msgid "Shot detection (Delakis version)"
+msgstr "Détection de plans (version Delakis)"
 
-#: ../lib/advene/gui/main.py:3260
-msgid "Title of the new type"
-msgstr "Titre du nouveau type"
+#: ../lib/advene/plugins/goodshotdetector.py:60
+msgid "Cache histogram alongside video files."
+msgstr "Stocker l'histogramme à côté du fichier vidéo"
 
-#: ../lib/advene/gui/main.py:3261
+#: ../lib/advene/plugins/goodshotdetector.py:63
 msgid ""
-"Id of the new type. It is generated from the title, but you may change it if "
-"necessary."
-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:3265
-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:3267
-msgid "Content type"
-msgstr "Type de contenu"
-
-#: ../lib/advene/gui/main.py:3274 ../lib/advene/gui/main.py:3383
-msgid "Create a new schema"
-msgstr "Créer un nouveau schéma"
-
-#: ../lib/advene/gui/main.py:3287
-msgid "Choose an existing schema for the new type, or create a new one"
+"Parameter profile: safe will detect less cuts, aggressive will detect more "
+"cuts (but more false ones too). default is a compromise."
 msgstr ""
-"Choisissez un schéma existant pour le nouveau type, ou créez un nouveau "
-"schéma."
-
-#: ../lib/advene/gui/main.py:3290 ../lib/advene/gui/main.py:3398
-msgid "Specify the schema title"
-msgstr "Spécifiez le titre du schéma"
+"Profil de configuration: \"safe\" détectera moins de coupures,\n"
+"\"aggressive\" en détectera plus (mais plus d'incorrects\n"
+"également). \"default\" est un compromis."
 
-#: ../lib/advene/gui/main.py:3294
-msgid "Title of the new schema"
-msgstr "Titre du nouveau schéma"
+#: ../lib/advene/plugins/goodshotdetector.py:77
+#, python-format
+msgid "Shot (%s profile)"
+msgstr "Plan (profil %s)"
 
-#: ../lib/advene/gui/main.py:3295
-msgid ""
-"Id of the new schema. It is generated from the title, but you may change it "
-"if necessary."
-msgstr ""
-"Identifiant du nouveau schéma. Il est généré à partir du titre, mais vous "
-"pouvez le changer si nécessaire."
+#: ../lib/advene/plugins/goodshotdetector.py:78
+#: ../lib/advene/plugins/shotdetectapp.py:87
+msgid "Detected shots"
+msgstr "Plans détectés"
 
-#: ../lib/advene/gui/main.py:3318
-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/plugins/goodshotdetector.py:83
+msgid "Loading histogram"
+msgstr "Chargement de l'histogramme"
 
-#: ../lib/advene/gui/main.py:3336
-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/plugins/goodshotdetector.py:146
+msgid "Computing hdiff"
+msgstr "Calcul du hdiff"
 
-#: ../lib/advene/gui/main.py:3338
-msgid ""
-"You specified an existing identifier that does not reference a schema. "
-"Aborting."
-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/plugins/goodshotdetector.py:153
+msgid "Detecting cuts"
+msgstr "Détection des plans"
 
-#: ../lib/advene/gui/main.py:3365
-msgid "Choose a schema."
-msgstr "Choisissez un schéma"
+#: ../lib/advene/plugins/goodshotdetector.py:180
+msgid "Detecting dissolves"
+msgstr "Détection des fondus"
 
-#: ../lib/advene/gui/main.py:3425
-msgid "You specified an existing identifier. Aborting."
-msgstr ""
-"Vous avez spécifié un identifiant déjà existant. Annulation de l'opération."
+#: ../lib/advene/plugins/goodshotdetector.py:265
+msgid "Extracting histogram"
+msgstr "Extraction de l'histogramme"
 
-#: ../lib/advene/gui/main.py:3445
-#, python-format
-msgid "Package %s modified"
-msgstr "Recueil %s modifié"
+#: ../lib/advene/plugins/webannotation_import.py:45
+msgid "WebAnnotation importer"
+msgstr "Importateur WebAnnotation"
 
-#: ../lib/advene/gui/main.py:3446
+#: ../lib/advene/plugins/webannotation_import.py:63
+#: ../lib/advene/plugins/owl_import.py:58 ../lib/advene/util/importer.py:363
 #, python-format
-msgid ""
-"The package %s has been modified but not saved.\n"
-"Save it now?"
+msgid "Converted from %s"
+msgstr "Converti depuis %s"
+
+#: ../lib/advene/plugins/montagerenderer.py:43
+msgid "Cannot register montage renderer: Gnonlin plugins are not present."
 msgstr ""
-"Le recueil %s a été modifié mais pas sauvegardé.\n"
-"Sauvegarder maintenant ?"
+"Impossible d'initialiser le rendu de montage: les plugins Gnonlin ne sont "
+"pas présents"
 
-#: ../lib/advene/gui/main.py:3456
-#, python-format
-msgid "%s snapshots"
-msgstr "%s captures d'écran"
+#: ../lib/advene/plugins/transcriber.py:40
+msgid "Transcriber importer"
+msgstr "Importateur Transcriber"
 
-#: ../lib/advene/gui/main.py:3457
-#, 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/plugins/transcriber.py:86
+msgid "Parsing section information"
+msgstr "Traitement des informations de section"
 
-#: ../lib/advene/gui/main.py:3464 ../lib/advene/gui/main.py:3473
-#: ../lib/advene/gui/main.py:4449
-#, python-format
-msgid "Cannot save imagecache for %(media)s: %(e)s"
-msgstr "Impossible de sauvegarder le cache pour %(media)s : %(e)s"
+#: ../lib/advene/plugins/transcriber.py:254 ../lib/advene/util/importer.py:1520
+msgid "Creating package"
+msgstr "Création du recueil"
 
-#: ../lib/advene/gui/main.py:3487
-msgid "first frame"
-msgstr "première image"
+#: ../lib/advene/plugins/transcriber.py:260 ../lib/advene/util/importer.py:1527
+msgid "Creating annotation types"
+msgstr "Création des types d'annotation"
 
-#: ../lib/advene/gui/main.py:3488
-msgid "last frame"
-msgstr "dernière image"
+#: ../lib/advene/plugins/transcriber.py:265 ../lib/advene/util/importer.py:1533
+msgid "Parsing header information"
+msgstr "Traitement de l'entête"
 
-#: ../lib/advene/gui/main.py:3496
-#, python-format
-msgid "Click on %(bound)s of %(annotation)s"
-msgstr "Cliquer sur %(bound)s de %(annotation)s"
+#: ../lib/advene/plugins/transcriber.py:276
+msgid "Parsing topic and speaker tables information"
+msgstr "Traitement des tables de sujet et orateur"
 
-#: ../lib/advene/gui/main.py:3499
-#, python-format
-msgid "Update %(bound)s of %(annotation)s"
-msgstr "Éditer %(bound)s de %(annotation)s"
+#: ../lib/advene/plugins/tts.py:77
+msgid "Pronounce a text"
+msgstr "Prononcer un texte"
 
-#: ../lib/advene/gui/main.py:3518
-msgid "Click on the frame corresponding to the timestamp value"
-msgstr "Cliquez sur l'image correspondant au temps désiré"
+#: ../lib/advene/plugins/tts.py:78
+msgid "String to pronounce."
+msgstr "Chaîne à prononcer"
 
-#: ../lib/advene/gui/main.py:3520
-msgid "Set new timestamp value"
-msgstr "Fixer le nouveau timecode"
+#: ../lib/advene/plugins/tts.py:156
+msgid "TTS disabled. Cannot find the application 'festival' in PATH"
+msgstr ""
+"Synthèse vocale désactivée. Impossible de trouver l'application 'festival'"
 
-#: ../lib/advene/gui/main.py:3527
-msgid ""
-"<b>Annotation statistics</b>\n"
-"\n"
+#: ../lib/advene/plugins/tts.py:158
+msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
-"<b>Statistiques d'annotations</b>\n"
-"\n"
+"Synthèse vocale désactivée. Impossible de trouver l'application 'aplay'"
 
-#: ../lib/advene/gui/main.py:3599
-msgid "Text annotation"
-msgstr "Annotation textuelle"
+#: ../lib/advene/plugins/soundenveloppe.py:40
+#: ../lib/advene/plugins/soundenveloppe.py:139
+#: ../lib/advene/plugins/soundenveloppe.py:141
+msgid "Sound enveloppe"
+msgstr "Enveloppe sonore"
 
-#: ../lib/advene/gui/main.py:3607 ../lib/advene/gui/main.py:3632
-msgid "Cannot find an appropriate annotation type"
-msgstr "Impossible de trouver un type d'annotation approprié"
+#: ../lib/advene/plugins/soundenveloppe.py:56
+msgid "Interval (in ms) at which to take samples."
+msgstr "Intervalle d'échantillonage (en ms)"
 
-#: ../lib/advene/gui/main.py:3625
-msgid "Graphical annotation"
-msgstr "Annotation graphique"
+#: ../lib/advene/plugins/soundenveloppe.py:59
+msgid "Maximum number of samples per annotation."
+msgstr "Nombre maximum d'échantillons par annotation"
 
-#: ../lib/advene/gui/main.py:3677
-msgid ""
-"An unsaved template package exists\n"
-"Save it first."
-msgstr ""
-"Un recueil modèle non sauvegardé existe.\n"
-"Sauvegardez-le avant d'essayer d'en créer un nouveau."
+#: ../lib/advene/plugins/soundenveloppe.py:111
+#, python-format
+msgid "At %s"
+msgstr "À %s"
 
-#: ../lib/advene/gui/main.py:3686
-msgid "Package modified"
-msgstr "Recueil modifié"
+#: ../lib/advene/plugins/soundenveloppe.py:158
+msgid "Extracting sound enveloppe"
+msgstr "Extraction de l'enveloppe sonore"
 
-#: ../lib/advene/gui/main.py:3687
-msgid ""
-"The package that you want to close has been modified but not saved.\n"
-"Save it now?"
-msgstr ""
-"Le recueil que vous souhaitez fermer a été modifié mais pas sauvegardé.\n"
-"Sauvegarder maintenant ?"
+#: ../lib/advene/plugins/barcode.py:36
+msgid "Cannot register barcode extraction: zbar plugin not found."
+msgstr "Impossible d'initialiser l'extraction de qrcode"
 
-#: ../lib/advene/gui/main.py:3718
-msgid "Load a package"
-msgstr "Charger un recueil"
+#: ../lib/advene/plugins/barcode.py:40
+msgid "Barcode (qr-code) extraction"
+msgstr "Extraction de QR Code"
 
-#: ../lib/advene/gui/main.py:3727
-msgid ""
-"A video file was selected. Pretend that the user selected 'Select a video "
-"file'..."
-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/plugins/barcode.py:95
+msgid "Barcode"
+msgstr "Barcode"
 
-#: ../lib/advene/gui/main.py:3732
-#, 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 ""
-"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/plugins/barcode.py:97
+msgid "Extracted barcode information"
+msgstr "Information qrcode"
 
-#: ../lib/advene/gui/main.py:3741
-msgid ""
-"You are trying to load a session file, but there are unsaved packages. "
-"Proceed anyway?"
-msgstr ""
-"Vous essayez de charger un fichier de session, mais il existe des recueil "
-"non sauvegardés. Continuer tout de même ?"
+#: ../lib/advene/plugins/barcode.py:115
+msgid "Extraction barcodes"
+msgstr "Extraction des codes"
 
-#: ../lib/advene/gui/main.py:3769 ../lib/advene/gui/main.py:3825
-msgid "Do you want to save the current workspace ?"
-msgstr "Voulez-vous sauvegarder l'environnement en cours ?"
+#: ../lib/advene/plugins/dcp.py:65
+msgid "DCP importer"
+msgstr "Importateur DCP"
 
-#: ../lib/advene/gui/main.py:3784 ../lib/advene/gui/main.py:3840
+#: ../lib/advene/plugins/dcp.py:120
 #, python-format
-msgid "Could not save the package: %s"
-msgstr "Impossible de sauvegarder le recueil: %s"
+msgid "Converting #%(num)d / %(count)d"
+msgstr "Conversion #%(num)d / %(count)d"
 
-#: ../lib/advene/gui/main.py:3797
-#, python-format
-msgid "Save the package %s"
-msgstr "Sauvegarde du recueil %s"
+#: ../lib/advene/plugins/nerd_plugin.py:47
+msgid "NERD (Named Entity Recognition and Disambiguation)"
+msgstr "NERD (Named Entity Recognition and Disambiguation)"
 
-#: ../lib/advene/gui/main.py:3810
-msgid "Invalid file extension"
-msgstr "Extension de fichier invalide"
+#: ../lib/advene/plugins/nerd_plugin.py:68
+msgid "NERD API key"
+msgstr "NERD API key"
 
-#: ../lib/advene/gui/main.py:3811
-#, python-format
-msgid ""
-"Your package contains resources,\n"
-"the filename (%s) should have a .azp extension.\n"
-"Should I put the correct extension?"
-msgstr ""
-"Votre recueil contient des ressources,\n"
-"le nom de fichier (%s) devrait avoir l'extension .azp.\n"
-"Corriger le nom de fichier ?"
+#: ../lib/advene/plugins/nerd_plugin.py:82
+msgid "NER service to use"
+msgstr "Service NER à utiliser"
 
-#: ../lib/advene/gui/main.py:3815
-msgid "OK, the resources will be lost."
-msgstr "OK, les ressources seront perdues."
+#: ../lib/advene/plugins/nerd_plugin.py:88
+msgid "Type of annotation to analyze"
+msgstr "Type d'annotation à analyser"
 
-#: ../lib/advene/gui/main.py:3817
-msgid "Aborting package saving"
-msgstr "Abandon de la sauvegarde"
+#: ../lib/advene/plugins/nerd_plugin.py:93
+msgid "Language to analyze"
+msgstr "Langage à analyser"
 
-#: ../lib/advene/gui/main.py:3851
-msgid "Save the session in..."
-msgstr "Sauver la session dans..."
+#: ../lib/advene/plugins/nerd_plugin.py:98
+msgid "Minimum confidence level (between 0.0 and 1.0)"
+msgstr "Niveau de confiance minimum (entre 0.0 et 1.0)"
 
-#: ../lib/advene/gui/main.py:3862
-#, python-format
-msgid "Session saved in %s"
-msgstr "Session sauvegardée dans %s"
+#: ../lib/advene/plugins/nerd_plugin.py:103
+msgid "Interpolate position of annotations"
+msgstr "Interpoler la position des annotations"
 
-#: ../lib/advene/gui/main.py:3871
-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/plugins/nerd_plugin.py:108
+msgid "Split by entity type"
+msgstr "Diviser par type d'entité"
 
-#: ../lib/advene/gui/main.py:3877
-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/plugins/nerd_plugin.py:113
+msgid "Store results as markup in the annotation text"
+msgstr "Stocker les résultats comme marquage dans le texte de l'annotation"
 
-#: ../lib/advene/gui/main.py:3885
-msgid "The associated media is not a DVD."
-msgstr "Le média associé n'est pas un DVD."
+#: ../lib/advene/plugins/nerd_plugin.py:118
+msgid "Create relations between the original annotations and the new ones"
+msgstr "Créer des relations entre les annotations originales et les nouvelles"
 
-# Traitement de %s
-#: ../lib/advene/gui/main.py:3896
+#: ../lib/advene/plugins/nerd_plugin.py:150
 #, python-format
-msgid "Processing %s video"
-msgstr "Traitement de la vidéo %s"
+msgid "NERD applied to %s"
+msgstr "NERD appliqué à %s"
 
-#: ../lib/advene/gui/main.py:3899
-msgid "No associated video file"
-msgstr "Aucun fichier vidéo associé"
+#: ../lib/advene/plugins/nerd_plugin.py:208
+#, python-format
+msgid "NERD %s"
+msgstr "NERD %s"
 
-#: ../lib/advene/gui/main.py:3926
-msgid "Standard RuleSet"
-msgstr "Ensemble de règles standard"
+#: ../lib/advene/plugins/annotationgraph.py:40
+msgid "AnnotationGraph importer"
+msgstr "Importateur AnnotationGraph"
 
-#: ../lib/advene/gui/main.py:4042
-#, 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/plugins/shotdetectapp.py:48
+msgid "ShotdetectApp importer"
+msgstr "Importateur ShotdetectApp"
 
-#: ../lib/advene/gui/main.py:4054
+#: ../lib/advene/plugins/shotdetectapp.py:59
 msgid ""
-"GNU General Public License v. 2\n"
-"See http://www.gnu.org/copyleft/gpl.html for more details"
+"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
+"too many shots are detected, try to increase its value."
 msgstr ""
-"GNU General Public License v. 2\n"
-"Voir http://www.gnu.org/copyleft/gpl.html pour plus d'informations"
-
-#: ../lib/advene/gui/main.py:4056
-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:4089 ../lib/advene/gui/main.py:4177
-msgid "Select a movie file"
-msgstr "Choisissez un fichier vidéo"
+"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/gui/main.py:4101
-msgid "Title/Chapter selection"
-msgstr "Sélection du titre/chapître"
+#: ../lib/advene/plugins/shotdetectapp.py:146
+#, python-format
+msgid "Detected shot #%(num)d at %(pos)s "
+msgstr "Plan #%(num)d détecté à %(pos)s "
 
-#: ../lib/advene/gui/main.py:4143
-msgid "Select a video stream"
-msgstr "Choisir un flux vidéo"
+#: ../lib/advene/plugins/mpeg7.py:54
+msgid "MPEG7 importer"
+msgstr "Importateur MPEG7"
 
-#: ../lib/advene/gui/main.py:4144
-msgid "Enter the address of a video stream"
-msgstr "Entrer l'adresse d'un flux vidéo"
+#: ../lib/advene/plugins/cinelab.py:76
+msgid "Cinelab importer"
+msgstr "Importateur Cinelab"
 
-#: ../lib/advene/gui/main.py:4148
+#: ../lib/advene/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
 #, 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:4173
-msgid "Package properties"
-msgstr "Proprietes du recueil"
-
-#: ../lib/advene/gui/main.py:4174
-msgid "Author name"
-msgstr "Auteur"
+msgid "File %s is not an Advene2 zip package."
+msgstr "Le fichier %s n'est pas un recueil Advene2 compressé."
 
-#: ../lib/advene/gui/main.py:4175
-msgid "Package creation date"
-msgstr "Date de création du recueil"
+#: ../lib/advene/plugins/cinelab.py:176
+msgid "Converting annotation types"
+msgstr "Conversion des types d'annotation"
 
-#: ../lib/advene/gui/main.py:4176
-msgid "Package title"
-msgstr "Titre du recueil"
+#: ../lib/advene/plugins/cinelab.py:217
+msgid "Converting views"
+msgstr "Conversion des vues"
 
-#: ../lib/advene/gui/main.py:4177
-msgid "Associated media"
-msgstr "Media associe"
+#: ../lib/advene/plugins/cinelab.py:249
+msgid "Importing annotations"
+msgstr "Import des annotations"
 
-#: ../lib/advene/gui/main.py:4178
-msgid "Media duration in ms"
-msgstr "Durée du média en ms"
+#: ../lib/advene/plugins/owl_import.py:40
+msgid "OWL (schema) importer"
+msgstr "Importateur OWL (schéma)"
 
-#: ../lib/advene/gui/main.py:4237
-msgid "Paths"
-msgstr "Chemins"
+#: ../lib/advene/player/gstreamer.py:421
+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/gui/main.py:4239
-msgid "Data"
-msgstr "Contenu"
+#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
+#: ../lib/advene/rules/actions.py:120
+msgid "Message to display"
+msgstr "Message à afficher"
 
-#: ../lib/advene/gui/main.py:4239
-msgid "Standard directory for data files"
-msgstr "Répertoire standard pour les fichiers de données"
+#: ../lib/advene/rules/actions.py:48
+msgid "Start the player"
+msgstr "Démarrer le lecteur"
 
-#: ../lib/advene/gui/main.py:4240
-msgid "Movie path"
-msgstr "Chemin de recherche pour les fichiers vidéo"
+#: ../lib/advene/rules/actions.py:49
+msgid "Start position (in ms)"
+msgstr "Position de début (en ms)"
 
-#: ../lib/advene/gui/main.py:4240
-#, python-format
-msgid ""
-"List of directories (separated by %s) to search for movie files (_ means "
-"package directory)"
-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/rules/actions.py:52 ../lib/advene/rules/actions.py:384
+msgid "The movie start"
+msgstr "Le début du film"
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Imagecache"
-msgstr "Cache d'images"
+#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
+msgid "The annotation begin"
+msgstr "Le début de l'annotation"
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Directory for storing the snapshot cache"
-msgstr "Répertoire où sauvegarder le cache de captures d'écran"
+#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
+msgid "The annotation end"
+msgstr "La fin de l'annotation"
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Player"
-msgstr "Lecteur"
+#: ../lib/advene/rules/actions.py:64
+msgid "Goto position (in ms)"
+msgstr "Position (en ms)"
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Directory of the video player"
-msgstr "Répertoire du lecteur vidéo"
+#: ../lib/advene/rules/actions.py:73
+msgid "Stop the player"
+msgstr "Arrêter le lecteur"
 
-#: ../lib/advene/gui/main.py:4243
-msgid "Shotdetect"
-msgstr "Détection de plans"
+#: ../lib/advene/rules/actions.py:80
+msgid "Pause the player"
+msgstr "Mettre le lecteur en pause"
 
-#: ../lib/advene/gui/main.py:4243
-msgid "Shotdetect application"
-msgstr "Application de détection de plans"
+#: ../lib/advene/rules/actions.py:87
+msgid "Resume the player"
+msgstr "Relancer le lecteur"
 
-# Interface
-#: ../lib/advene/gui/main.py:4245
-msgid "GUI"
-msgstr "Interface"
+#: ../lib/advene/rules/actions.py:94
+msgid "Take a snapshot"
+msgstr "Prendre une capture d'écran"
 
-#: ../lib/advene/gui/main.py:4246
-msgid "Interface language (after restart)"
-msgstr "Langage de l'interface (après redémarrage)"
+#: ../lib/advene/rules/actions.py:101
+msgid "Display a caption"
+msgstr "Afficher un sous-titre"
 
-#: ../lib/advene/gui/main.py:4246
-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/rules/actions.py:103
+msgid "Duration of the caption"
+msgstr "Durée du sous-titre"
 
-#: ../lib/advene/gui/main.py:4252
-msgid "Record activity trace"
-msgstr "Enregistrer la trace d'activité"
+#: ../lib/advene/rules/actions.py:131
+msgid "Display a graphical shape"
+msgstr "Afficher une forme graphique"
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Expert mode"
-msgstr "Mode expert"
+#: ../lib/advene/rules/actions.py:132
+msgid "Shape (square, circle, triangle)"
+msgstr "Forme (square, circle, triangle)"
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Offer advanced possibilities"
-msgstr "Afficher les fonctionnalités avancées"
+#: ../lib/advene/rules/actions.py:134
+msgid "x-position (percentage of screen)"
+msgstr "Abscisse (pourcentage de l'écran)"
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Prefer WYSIWYG"
-msgstr "WYSIWYG préféré"
+#: ../lib/advene/rules/actions.py:135
+msgid "y-position (percentage of screen)"
+msgstr "Ordonnée (pourcentage de l'écran)"
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Use WYSIWYG editors when possible (HTML, SVG)"
-msgstr "Utiliser un éditeur WYSIWYG quand c'est possible (HTML, SVG)"
+#: ../lib/advene/rules/actions.py:136
+msgid "Size (arbitrary units)"
+msgstr "Taille (unité arbitraire)"
 
-#: ../lib/advene/gui/main.py:4255
-msgid "Player control in edit popups"
-msgstr "Contrôle du lecteur dans les fenêtres d'édition"
+#: ../lib/advene/rules/actions.py:137
+msgid "Duration of the display in ms"
+msgstr "Durée de l'affichage en ms"
 
-#: ../lib/advene/gui/main.py:4255
-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 ""
-"Activer les raccourcis globaux de contrôle du lecteur dans les\n"
-"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/rules/actions.py:145
+msgid "A square"
+msgstr "Un carré"
 
-#: ../lib/advene/gui/main.py:4257
-msgid "Open popups"
-msgstr "Ouvrir les vues"
+#: ../lib/advene/rules/actions.py:146
+msgid "A circle"
+msgstr "Un cercle"
 
-#: ../lib/advene/gui/main.py:4258
-msgid "Where should we open adhoc views?"
-msgstr "Où doit-on ouvrir les vues adhoc ?"
+#: ../lib/advene/rules/actions.py:147
+msgid "A triangle"
+msgstr "Un triangle"
 
-#: ../lib/advene/gui/main.py:4259
-msgid "as a popup window"
-msgstr "dans des fenêtres indépendantes"
+#: ../lib/advene/rules/actions.py:150
+msgid "White"
+msgstr "Blanc"
 
-#: ../lib/advene/gui/main.py:4260
-msgid "embedded east of the video"
-msgstr "intégrée à l'est de la vidéo"
+# Retour rapide
+#: ../lib/advene/rules/actions.py:151
+msgid "Black"
+msgstr "Noir"
 
-#: ../lib/advene/gui/main.py:4261
-msgid "embedded west of the video"
-msgstr "intégrée à l'ouest de la vidéo"
+#: ../lib/advene/rules/actions.py:152
+msgid "Red"
+msgstr "Rouge"
 
-#: ../lib/advene/gui/main.py:4262
-msgid "embedded south of the video"
-msgstr "intégrée au sud de la vidéo"
+#: ../lib/advene/rules/actions.py:153
+msgid "Green"
+msgstr "Vert"
 
-#: ../lib/advene/gui/main.py:4263
-msgid "embedded at the right of the window"
-msgstr "intégrée à droite de la fenêtre"
+#: ../lib/advene/rules/actions.py:154
+msgid "Blue"
+msgstr "Bleu"
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History size"
-msgstr "Taille de l'historique"
+#: ../lib/advene/rules/actions.py:155
+msgid "Yellow"
+msgstr "Jaune"
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History filelist size limit"
-msgstr "Taille limite de la liste des fichiers"
+#: ../lib/advene/rules/actions.py:158
+msgid "At the top of the screen"
+msgstr "En haut de l'écran"
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember window size"
-msgstr "Mémoriser les tailles des fenêtres"
+#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
+msgid "In the middle of the screen"
+msgstr "Au milieu de l'écran"
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember the size of opened windows"
-msgstr "Mémoriser la taille des fenêtres"
+#: ../lib/advene/rules/actions.py:160
+msgid "At the bottom of the screen"
+msgstr "En bas de l'écran"
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Bookmark snapshot width"
-msgstr "Largeur des copies d'écran de signets"
+#: ../lib/advene/rules/actions.py:163
+msgid "At the left of the screen"
+msgstr "À gauche de l'écran"
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Width of the snapshots representing bookmarks"
-msgstr "Largeur des captures d'écran représentant les signets"
+#: ../lib/advene/rules/actions.py:181
+msgid "Zero the volume during the annotation"
+msgstr "Couper le son durant l'annotation"
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Bookmark snapshot precision"
-msgstr "Précision des captures d'écran pour les signets"
+#: ../lib/advene/rules/actions.py:188
+msgid "Zero the volume"
+msgstr "Couper le son"
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Precision (in ms) of the displayed bookmark snapshots."
-msgstr "Précision (en ms) des captures d'écran pour les signets."
+#: ../lib/advene/rules/actions.py:195
+msgid "Restore the volume"
+msgstr "Restaurer le son"
 
-#: ../lib/advene/gui/main.py:4272
-msgid "General"
-msgstr "Générales"
+#: ../lib/advene/rules/actions.py:203
+msgid "Activate a STBV"
+msgstr "Activer une vue dynamique"
 
-#: ../lib/advene/gui/main.py:4273
-msgid "Weekly update check"
-msgstr "Vérification hebdomadaire des mises à jour"
+#: ../lib/advene/rules/actions.py:204
+msgid "STBV id"
+msgstr "Identificateur de la vue dynamique"
 
-#: ../lib/advene/gui/main.py:4274
-msgid "On exit,"
-msgstr "À la fin, "
+#: ../lib/advene/rules/actions.py:213
+msgid "Send a user event"
+msgstr "Envoyer un événement utilisateur"
 
-#: ../lib/advene/gui/main.py:4275
-msgid "How to handle screenshots on exit"
-msgstr "Comment gérer les captures d'écran à la fin de l'application"
+#: ../lib/advene/rules/actions.py:214
+msgid "Identifier"
+msgstr "Identificateur"
 
-#: ../lib/advene/gui/main.py:4276
-msgid "never save screenshots"
-msgstr "ne jamais sauvegarder les captures d'écran"
+#: ../lib/advene/rules/actions.py:215
+msgid "Delay in ms before sending the event."
+msgstr "Délai en ms avant l'envoi de l'événement."
 
-#: ../lib/advene/gui/main.py:4277
-msgid "always save screenshots"
-msgstr "toujours sauvegarder les captures d'écran"
+#: ../lib/advene/rules/actions.py:225
+msgid "Open a URL in the web browser"
+msgstr "Ouvrir une URL dans le navigateur web"
 
-#: ../lib/advene/gui/main.py:4278
-msgid "ask before saving screenshots"
-msgstr "demander avant de sauvegarder les captures d'écran"
+#: ../lib/advene/rules/actions.py:235
+msgid "Open a static view"
+msgstr "Ouvrir une vue statique"
 
-#: ../lib/advene/gui/main.py:4280
-msgid "Auto-save"
-msgstr "La sauvegarde automatique"
+#: ../lib/advene/rules/actions.py:246
+msgid "Set the audio volume"
+msgstr "Fixer le volume"
 
-#: ../lib/advene/gui/main.py:4281
-msgid "Data auto-save functionality"
-msgstr "Sauvegarde automatique des recueils"
+#: ../lib/advene/rules/actions.py:247
+msgid "Volume level (from 0 to 100)"
+msgstr "Niveau de volume (0 à 100)"
 
-#: ../lib/advene/gui/main.py:4282
-msgid "is desactivated"
-msgstr "est désactivée"
+#: ../lib/advene/rules/actions.py:256
+msgid "Set the playing rate"
+msgstr "Fixer la vitesse"
 
-#: ../lib/advene/gui/main.py:4283
-msgid "is done automatically"
-msgstr "est activée"
+#: ../lib/advene/rules/actions.py:257
+msgid "Rate (100: normal rate, 200: twice slower)"
+msgstr "Vitesse (100: vitesse normale, 200: deux fois plus lent)"
 
-#: ../lib/advene/gui/main.py:4284
-msgid "is done after confirmation"
-msgstr "est activée avec confirmation"
+#: ../lib/advene/rules/actions.py:266
+msgid "Play a sound resource"
+msgstr "Jouer une ressource son"
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Auto-save interval (in s)"
-msgstr "Intervalle de sauvegarde automatique (en s)"
+#: ../lib/advene/rules/actions.py:267
+msgid "Clip id"
+msgstr "Clip id"
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Interval (in seconds) between package auto-saves"
-msgstr "Durée (en secondes) entre deux sauvegardes automatiques"
+#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
+msgid "Volume (0..100)"
+msgstr "Volume (0 à 100)"
 
-#: ../lib/advene/gui/main.py:4288
-msgid "Workspace"
-msgstr "Environnement"
+#: ../lib/advene/rules/actions.py:269 ../lib/advene/rules/actions.py:283
+msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
+msgstr "Balance droite-gauche : -1 -> gauche, 0 -> centre, 1 -> droite"
 
-#: ../lib/advene/gui/main.py:4290
-msgid "On package saving,"
-msgstr "Lors de la sauvegarde du recueil,"
+#: ../lib/advene/rules/actions.py:280
+msgid "Play a sound file"
+msgstr "Jouer un fichier son externe"
 
-#: ../lib/advene/gui/main.py:4291
-msgid "Do you wish to save the default workspace with the package?"
-msgstr "Voulez-vous sauvegarder l'environnement avec le recueil ?"
+#: ../lib/advene/rules/actions.py:281
+msgid "Sound filename"
+msgstr "Nom du fichier son"
 
-#: ../lib/advene/gui/main.py:4292
-msgid "never save the current workspace"
-msgstr "ne jamais sauvegarder l'environnement courant"
+#: ../lib/advene/rules/actions.py:293
+msgid "Set a state variable"
+msgstr "Définir une variable d'état"
 
-#: ../lib/advene/gui/main.py:4293
-msgid "always save the current workspace"
-msgstr "toujours sauvegarder l'environnement courant"
+#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
+msgid "State variable name"
+msgstr "Nom de la variable d'état"
 
-#: ../lib/advene/gui/main.py:4294
-msgid "ask before saving the current workspace"
-msgstr "demander avant de sauvegarder l'environnement courant"
+#: ../lib/advene/rules/actions.py:295
+msgid "State value"
+msgstr "Valeu"
 
-#: ../lib/advene/gui/main.py:4296
-msgid "Auto-validation of edited elements"
-msgstr "Validation automatique des éléments"
+#: ../lib/advene/rules/actions.py:305
+msgid "Increment a state variable"
+msgstr "Incrémenter une variable d'état"
 
-#: ../lib/advene/gui/main.py:4296
-msgid "Automatically validate modified elements when saving the package."
-msgstr "Valider automatiquement les éléments modifiés lors de la sauvegarde."
+#: ../lib/advene/rules/actions.py:315
+msgid "Clear all state variables"
+msgstr "Effacer toutes les variables d'état"
 
-#: ../lib/advene/gui/main.py:4298
-msgid "On package load,"
-msgstr "Lors du chargement du recueil,"
+#: ../lib/advene/rules/actions.py:330
+#, python-format
+msgid "Error in the evaluation of the parameter %s:"
+msgstr "Erreur dans l'évaluation du paramètre %s :"
 
-#: ../lib/advene/gui/main.py:4299
-msgid "Do you wish to load the workspace saved with the package?"
-msgstr "Voulez-vous restaurer l'environnement sauvegardé avec le recueil ?"
+#: ../lib/advene/rules/actions.py:551
+#, python-format
+msgid "Cannot find the stbv %s"
+msgstr "Impossible de trouver la vue dynamique %s"
 
-#: ../lib/advene/gui/main.py:4300
-msgid "never load the saved workspace"
-msgstr "ne jamais restaurer l'environnement sauvegardé"
+#: ../lib/advene/rules/actions.py:647
+msgid "The set_rate method is unavailable."
+msgstr "La méthode set_rate n'est pas disponible"
 
-#: ../lib/advene/gui/main.py:4301
-msgid "always load the saved workspace"
-msgstr "toujours restaurer l'environnement sauvegardé"
+#: ../lib/advene/rules/actions.py:657
+msgid "No 'soundclips' resource folder in the package"
+msgstr "Pas de ressource 'soundclips' dans ce recueil"
 
-#: ../lib/advene/gui/main.py:4302
-msgid "ask before loading the saved workspace"
-msgstr "demander avant de restaurer l'environnement sauvegardé"
+#: ../lib/advene/rules/actions.py:683
+msgid "Full volume"
+msgstr "Volume maximum"
 
-#: ../lib/advene/gui/main.py:4305
-msgid "Video Player"
-msgstr "Lecteur Vidéo"
+#: ../lib/advene/rules/actions.py:684
+msgid "Left"
+msgstr "Gauche"
 
-#: ../lib/advene/gui/main.py:4306
-msgid "Autostart"
-msgstr "Démarrage automatique"
+#: ../lib/advene/rules/actions.py:686
+msgid "Right"
+msgstr "À droite"
 
-#: ../lib/advene/gui/main.py:4306
-msgid ""
-"Automatically start the player when loading a media file (either directly or "
-"through a package)"
-msgstr ""
-"Lancer automatiquement le lecteur lors du chargement d'une vidéo (soit "
-"directement, soit via un recueil)"
+#: ../lib/advene/rules/importer.py:29
+msgid "Event history importer"
+msgstr "Importateur d'historique d'événements"
 
-#: ../lib/advene/gui/main.py:4307
-msgid "Fulscreen timestamp"
-msgstr "Timestamp plein-écran"
+#: ../lib/advene/rules/elements.py:141
+msgid "is equal to"
+msgstr "est égal à"
 
-#: ../lib/advene/gui/main.py:4307
-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/rules/elements.py:142
+msgid "is different from"
+msgstr "est différent de"
 
-#: ../lib/advene/gui/main.py:4308
-msgid "Enable captions"
-msgstr "Activer le sous-titrage externe"
+#: ../lib/advene/rules/elements.py:143
+msgid "contains"
+msgstr "contient"
 
-#: ../lib/advene/gui/main.py:4308
-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/rules/elements.py:144
+msgid "is greater than"
+msgstr "est supérieur à"
 
-#: ../lib/advene/gui/main.py:4309
-msgid "Caption font"
-msgstr "Police de sous-titrage"
+#: ../lib/advene/rules/elements.py:145
+msgid "is lower than"
+msgstr "est inférieur à"
 
-#: ../lib/advene/gui/main.py:4309
-msgid "TrueType font for captions"
-msgstr "Police TrueType pour les sous-titres"
+#: ../lib/advene/rules/elements.py:146
+msgid "matches the regexp"
+msgstr "correspond à l'expression"
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG"
-msgstr "Activer le SVG"
+#: ../lib/advene/rules/elements.py:147
+msgid "is before"
+msgstr "précède"
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG captions over the video"
-msgstr "Activer l'affichage de graphiques SVG sur la vidéo"
+#: ../lib/advene/rules/elements.py:148
+msgid "meets"
+msgstr "touch"
 
-#: ../lib/advene/gui/main.py:4312
-msgid "Enable snapshots"
-msgstr "Activer les copies d'écran"
+#: ../lib/advene/rules/elements.py:149
+msgid "overlaps"
+msgstr "intersecte"
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width"
-msgstr "Largeur des copies d'écran"
+#: ../lib/advene/rules/elements.py:150
+msgid "during"
+msgstr "est contenue dans"
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width in pixels."
-msgstr "Largeur (en pixels) des copies d'écran"
+#: ../lib/advene/rules/elements.py:151
+msgid "starts"
+msgstr "commence avec"
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity"
-msgstr "Verbosité"
+#: ../lib/advene/rules/elements.py:152
+msgid "finishes"
+msgstr "termine avec"
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity level. -1 for no messages."
-msgstr "Niveau de verbosité. -1 pour pas de messages."
+#: ../lib/advene/rules/elements.py:157
+msgid "is not true"
+msgstr "n'est pas vrai"
 
-#: ../lib/advene/gui/main.py:4317
-msgid "Devices"
-msgstr "Périphériques"
+#: ../lib/advene/rules/elements.py:158
+msgid "is true"
+msgstr "est vrai"
 
-#: ../lib/advene/gui/main.py:4319
-msgid "Standard"
-msgstr "Standard"
+#: ../lib/advene/rules/elements.py:162
+msgid "Basic conditions"
+msgstr "Conditions élémenaires"
 
-#: ../lib/advene/gui/main.py:4321
-msgid "DVD drive"
-msgstr "Lecteur DVD"
+#: ../lib/advene/rules/elements.py:163
+msgid "Allen relations"
+msgstr "Relations de Allen"
 
-#: ../lib/advene/gui/main.py:4321
-msgid "Drive letter for the DVD"
-msgstr "Lettre du lecteur DVD"
+#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
+msgid "Unknown type for overlaps comparison"
+msgstr "Type inconnu pour comparaison de recouvrement"
 
-#: ../lib/advene/gui/main.py:4322
-msgid "GDI"
-msgstr "GDI"
+#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
+msgid "Unknown type for during comparison"
+msgstr "Type inconnu pour comparaison"
 
-#: ../lib/advene/gui/main.py:4323
-msgid "Direct X"
-msgstr "Direct X"
+#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
+#, python-format
+msgid "Unknown action %s"
+msgstr "Action inconnue %s"
 
-#: ../lib/advene/gui/main.py:4325
-msgid "DVD device"
-msgstr "Périphérique DVD"
+#: ../lib/advene/rules/elements.py:522
+#, python-format
+msgid "Unknown parameter %s"
+msgstr "Paramètre inconnu %s"
 
-#: ../lib/advene/gui/main.py:4325
-msgid "Device for the DVD"
-msgstr "Device du DVD"
+#: ../lib/advene/rules/elements.py:527
+msgid "Unknown actions"
+msgstr "Actions inconnues"
 
-#: ../lib/advene/gui/main.py:4326
-msgid "X11"
-msgstr "X11"
+#: ../lib/advene/rules/elements.py:972
+msgid "Start of the editing of an element"
+msgstr "Début de l'édition d'un élément"
 
-#: ../lib/advene/gui/main.py:4327
-msgid "XVideo"
-msgstr "XVideo"
+#: ../lib/advene/rules/elements.py:973
+msgid "Cancel of the editing of an element"
+msgstr "Abandon de l'édition d'un élément"
 
-#: ../lib/advene/gui/main.py:4328
-msgid "GL"
-msgstr "GL"
+#: ../lib/advene/rules/elements.py:974
+msgid "Destruction of the edit window of an element"
+msgstr "Destruction de la fenêtre d'édition d'un élément"
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output"
-msgstr "Sortie vidéo"
+#: ../lib/advene/rules/elements.py:975
+msgid "Validation of the editing of an element"
+msgstr "Validation de l'édition d'un élément"
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output module"
-msgstr "Module de sortie vidéo"
+#: ../lib/advene/rules/elements.py:976
+msgid "Ending editing of a package"
+msgstr "Fin de l'édition d'un recueil"
 
-#: ../lib/advene/gui/main.py:4332
-msgid "Recorder options"
-msgstr "Options d'enregistrement"
+#: ../lib/advene/rules/elements.py:977
+msgid "Beginning of an annotation"
+msgstr "Début d'une annotation"
 
-#: ../lib/advene/gui/main.py:4333
-msgid "Audio input"
-msgstr "Entrée audio"
+#: ../lib/advene/rules/elements.py:978
+msgid "End of an annotation"
+msgstr "Fin d'une annotation"
 
-#: ../lib/advene/gui/main.py:4333
-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/rules/elements.py:979
+msgid "Creation of a new annotation"
+msgstr "Création d'une nouvelle annotation"
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record video"
-msgstr "Enregistrement vidéo"
+#: ../lib/advene/rules/elements.py:980
+msgid "Ending editing of an annotation"
+msgstr "Fin de l'édition d'une annotation"
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record both video and audio"
-msgstr "Enregistrer audio et vidéo"
+#: ../lib/advene/rules/elements.py:981
+msgid "Suppression of an annotation"
+msgstr "Suppression d'une annotation"
 
-#: ../lib/advene/gui/main.py:4337
-msgid "<i>Experimental</i>"
-msgstr "Expérimental"
+#: ../lib/advene/rules/elements.py:982
+msgid "Activation of an annotation"
+msgstr "Activation d'une annotation"
 
-#: ../lib/advene/gui/main.py:4338
-msgid "Embed the caption scroller below the video"
-msgstr "Intégrer le dérouleur sous la vidéo"
+#: ../lib/advene/rules/elements.py:983
+msgid "Deactivation of an annotation"
+msgstr "Désactivation d'une annotation"
 
-#: ../lib/advene/gui/main.py:4339
-msgid "Embed the caption view below the video"
-msgstr "Intégrer la visuablisation de sous-titres sous la vidéo"
+#: ../lib/advene/rules/elements.py:984
+msgid "Merging of two annotations"
+msgstr "Fusion de deux annotations"
 
-#: ../lib/advene/gui/main.py:4341
-msgid "Time-related"
-msgstr "Relatives au temps"
+#: ../lib/advene/rules/elements.py:985
+msgid "Moving an annotation"
+msgstr "Déplacement d'une annotation"
 
-#: ../lib/advene/gui/main.py:4342
-msgid "Time format"
-msgstr "Format des temps"
+#: ../lib/advene/rules/elements.py:986
+msgid "Activation of a relation"
+msgstr "Activation d'une relation"
 
-#: ../lib/advene/gui/main.py:4342
-msgid "Format used to display timecodes"
-msgstr "Format utilisé pour afficher les timecodes"
+#: ../lib/advene/rules/elements.py:987
+msgid "Deactivation of a relation"
+msgstr "Désactivation d'une relation"
 
-#: ../lib/advene/gui/main.py:4356
-msgid "Default FPS"
-msgstr "FPS par défaut"
+#: ../lib/advene/rules/elements.py:988
+msgid "Creation of a new relation"
+msgstr "Création d'une nouvelle relation"
 
-#: ../lib/advene/gui/main.py:4357
-msgid ""
-"Default FPS (frame-per-second) value, when entering or displaying timestamps "
-"with frame numbers."
-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/rules/elements.py:989
+msgid "Ending editing of a relation"
+msgstr "Fin de l'édition d'une relation"
 
-#: ../lib/advene/gui/main.py:4358
-msgid "Time increment"
-msgstr "Durée pour navigation"
+#: ../lib/advene/rules/elements.py:990
+msgid "Suppression of a relation"
+msgstr "Suppression d'une relation"
 
-#: ../lib/advene/gui/main.py:4358
-msgid ""
-"Skip duration, when using control-left/right or forward/rewind buttons (in "
-"ms)."
-msgstr ""
-"Réglage de la durée (en ms) utilisée avec contrôle-flèche ou les boutons "
-"avance/retour rapide"
+#: ../lib/advene/rules/elements.py:991
+msgid "Creation of a new view"
+msgstr "Création d'une nouvelle vue"
 
-#: ../lib/advene/gui/main.py:4359
-msgid "Second time increment"
-msgstr "Seconde durée pour navigation"
+#: ../lib/advene/rules/elements.py:992
+msgid "Ending editing of a view"
+msgstr "Fin de l'édition d'une Vue"
 
-#: ../lib/advene/gui/main.py:4359
-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/rules/elements.py:993
+msgid "Suppression of a view"
+msgstr "Suppression d'une vue"
 
-#: ../lib/advene/gui/main.py:4360
-msgid "Third time increment"
-msgstr "Troisième durée pour navigation"
+#: ../lib/advene/rules/elements.py:994
+msgid "Creation of a new query"
+msgstr "Création d'une nouvelle requête"
 
-#: ../lib/advene/gui/main.py:4360
-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/rules/elements.py:995
+msgid "Ending editing of a query"
+msgstr "Fin de l'édition d'une requête"
 
-#: ../lib/advene/gui/main.py:4361
-msgid "Custom Up/Down"
-msgstr "Haut/Bas personnalisés"
+#: ../lib/advene/rules/elements.py:996
+msgid "Suppression of a query"
+msgstr "Suppression d'une requête"
 
-#: ../lib/advene/gui/main.py:4361
-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/rules/elements.py:997
+msgid "Creation of a new schema"
+msgstr "Création d'un nouveau schéma"
 
-#: ../lib/advene/gui/main.py:4363
-msgid "Scroll increment"
-msgstr "Incrément de temps"
+#: ../lib/advene/rules/elements.py:998
+msgid "Ending editing of a schema"
+msgstr "Fin de l'édition d'un schéma"
 
-#: ../lib/advene/gui/main.py:4363
-msgid ""
-"On most annotations, control+scrollwheel will increment/decrement their "
-"bounds by this value (in ms)."
-msgstr ""
-"Sur les annotations, contrôle + molette permet d'incrémenter/décrémenter "
-"leurs bornes de cette valeur (en ms)."
+#: ../lib/advene/rules/elements.py:999
+msgid "Suppression of a schema"
+msgstr "Suppression d'un schéma"
 
-#: ../lib/advene/gui/main.py:4364
-msgid "Second scroll increment"
-msgstr "Second incrément de scroll"
+#: ../lib/advene/rules/elements.py:1001
+msgid "Ending editing an annotation type"
+msgstr "Fin de l'édition d'un type d'annotation"
 
-#: ../lib/advene/gui/main.py:4364
-msgid ""
-"On most annotations, control+shift+scrollwheel will increment/decrement "
-"their bounds by this value (in ms)."
-msgstr ""
-"Sur les annotations, contrôle + shift + molette permet d'incrémenter/"
-"décrémenter leurs bornes de cette valeur (en ms)."
+#: ../lib/advene/rules/elements.py:1002
+msgid "Suppression of an annotation type"
+msgstr "Suppression d'un type d'annotation"
 
-#: ../lib/advene/gui/main.py:4366
-msgid "Player sync"
-msgstr "Synchro des lecteurs"
+#: ../lib/advene/rules/elements.py:1003
+msgid "Creation of a new relation type"
+msgstr "Création d'un nouveau type de relation"
 
-#: ../lib/advene/gui/main.py:4366
-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 ""
-"Intervalle (en ms) avec lequel on synchronise les lecteurs esclaves. Une "
-"valeur trop basse peut rendre l'application inutilisable. Entrez 0 pour "
-"désactiver la synchronisation continue."
+#: ../lib/advene/rules/elements.py:1004
+msgid "Ending editing a relation type"
+msgstr "Fin de l'édition d'un type de relation"
 
-#: ../lib/advene/gui/main.py:4367
-msgid "Timeline parameters"
-msgstr "Paramètres de la ligne de temps"
+#: ../lib/advene/rules/elements.py:1005
+msgid "Suppression of a relation type"
+msgstr "Suppression d'un type de relation"
 
-#: ../lib/advene/gui/main.py:4368
-msgid "Font size for annotation widgets"
-msgstr "Taille de la police pour les représentations d'annotations"
+#: ../lib/advene/rules/elements.py:1006
+msgid "Creation of a new resource"
+msgstr "Création d'une nouvelle ressource"
 
-#: ../lib/advene/gui/main.py:4369
-msgid "Button height"
-msgstr "Hauteur des boutons"
+#: ../lib/advene/rules/elements.py:1007
+msgid "Ending editing of a resource"
+msgstr "Fin de l'édition d'une ressource"
 
-#: ../lib/advene/gui/main.py:4369
-msgid "Height of annotation widgets"
-msgstr "Hauteur des représentations d'annotations"
+#: ../lib/advene/rules/elements.py:1008
+msgid "Suppression of a resource"
+msgstr "Suppression d'une ressource"
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Interline height"
-msgstr "Taille des interlignes"
+#: ../lib/advene/rules/elements.py:1009
+msgid "Modification of the tag"
+msgstr "Modification du tag"
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Height of interlines"
-msgstr "Taille des interlignes"
+#: ../lib/advene/rules/elements.py:1010
+msgid "Activating a link"
+msgstr "Activation d'un lien"
 
-#: ../lib/advene/gui/main.py:4372
-msgid "Text content"
-msgstr "Contenu textuel"
+#: ../lib/advene/rules/elements.py:1011
+msgid "Player start"
+msgstr "Lecture"
 
-#: ../lib/advene/gui/main.py:4373
-msgid "Completion mode"
-msgstr "Mode de complétion"
+#: ../lib/advene/rules/elements.py:1012
+msgid "Player stop"
+msgstr "Stop"
 
-#: ../lib/advene/gui/main.py:4373
-msgid "Enable dynamic completion mode"
-msgstr "Activer la complétion dynamique"
+#: ../lib/advene/rules/elements.py:1013
+msgid "Player pause"
+msgstr "Pause"
 
-#: ../lib/advene/gui/main.py:4374
-msgid "Abbreviation mode"
-msgstr "Mode abbréviation"
+#: ../lib/advene/rules/elements.py:1014
+msgid "Player resume"
+msgstr "Relance"
 
-#: ../lib/advene/gui/main.py:4374
-msgid "Enable abbreviation mode"
-msgstr "Activer l'expansion des abbréviations"
+#: ../lib/advene/rules/elements.py:1015
+msgid "Going to a given position"
+msgstr "Déplacement à une position donnée"
 
-#: ../lib/advene/gui/main.py:4375
-msgid "Abbreviations"
-msgstr "Abbréviations"
+#: ../lib/advene/rules/elements.py:1016
+msgid "Loading a new package"
+msgstr "Chargement d'un nouveau recueil"
 
-#: ../lib/advene/gui/main.py:4375
-msgid ""
-"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
-"followed by its replacement."
-msgstr ""
-"Abbréviations textuelles. Une entrée par ligne. Chaque ligne contient "
-"l'abbréviation suivie par son remplacement."
+#: ../lib/advene/rules/elements.py:1017
+msgid "Activating a package"
+msgstr "Activation d'un recueil"
 
-#: ../lib/advene/gui/main.py:4377
-msgid "Text-To-Speech"
-msgstr "Synthèse vocale"
+#: ../lib/advene/rules/elements.py:1018
+msgid "Saving the package"
+msgstr "Sauvegarde du recueil"
 
-#: ../lib/advene/gui/main.py:4378
-msgid "TTS language"
-msgstr "Langue de la synthèse vocale"
+#: ../lib/advene/rules/elements.py:1019
+msgid "Start of the dynamic view"
+msgstr "Activation d'une vue dynamique"
 
-#: ../lib/advene/gui/main.py:4379
-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/rules/elements.py:1020
+msgid "End of the dynamic view"
+msgstr "Fin d'une vue dynamique"
 
-#: ../lib/advene/gui/main.py:4380
-msgid "English"
-msgstr "Anglais"
+#: ../lib/advene/rules/elements.py:1021
+msgid "Start of the application"
+msgstr "Début de l'application"
 
-#: ../lib/advene/gui/main.py:4381
-msgid "French"
-msgstr "Français"
+#: ../lib/advene/rules/elements.py:1022
+msgid "End of the application"
+msgstr "Fin de l'application"
 
-#: ../lib/advene/gui/main.py:4382
-msgid "Spanish"
-msgstr "Espagnol"
+#: ../lib/advene/rules/elements.py:1023
+msgid "User-defined event"
+msgstr "Événement utilisateur"
 
-#: ../lib/advene/gui/main.py:4384
-msgid "TTS Encoding"
-msgstr "Encodage TTS"
+#: ../lib/advene/rules/elements.py:1024
+msgid "Modification of the associated media"
+msgstr "Modification du média associé"
 
-#: ../lib/advene/gui/main.py:4385
-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/rules/elements.py:1025
+msgid "Highlight a bookmark"
+msgstr "Surligner un signet"
 
-#: ../lib/advene/gui/main.py:4386
-msgid "TTS Engine"
-msgstr "Moteur de synthèse vocale"
+#: ../lib/advene/rules/elements.py:1026
+msgid "Unhighlight a bookmark"
+msgstr "Désurligner un signet"
 
-#: ../lib/advene/gui/main.py:4387
-msgid ""
-"Which TTS engine should be used (modification requires restarting Advene to "
-"take into account)"
-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/rules/elements.py:1027
+msgid "Updating duration of the movie"
+msgstr "Modification de la durée du film"
 
-#: ../lib/advene/gui/main.py:4388
-msgid "Automatic"
-msgstr "Automatique"
+#: ../lib/advene/rules/elements.py:1028
+msgid "Displaying a popup"
+msgstr "Affichage d'une popup"
 
-#: ../lib/advene/gui/main.py:4389
-msgid "eSpeak"
-msgstr "eSpeak"
+#: ../lib/advene/rules/elements.py:1029
+msgid "Updating a snapshot"
+msgstr "Mise-à-jour d'une vignette"
 
-#: ../lib/advene/gui/main.py:4390
-msgid "Custom script with standard input"
-msgstr "Script personnel via l'entrée standard"
+#: ../lib/advene/rules/elements.py:1067
+msgid "Player control"
+msgstr "Contrôle du lecteur"
 
-#: ../lib/advene/gui/main.py:4391
-msgid "Custom script with arguments"
-msgstr "Script personnel via les arguments"
+#: ../lib/advene/rules/elements.py:1068
+msgid "Audio enrichment"
+msgstr "Enrichissement audio"
 
-#: ../lib/advene/gui/main.py:4392
-msgid "SAPI"
-msgstr "SAPI"
+#: ../lib/advene/rules/elements.py:1069
+msgid "Image enrichment"
+msgstr "Enrichissement image"
 
-#: ../lib/advene/gui/main.py:4393
-msgid "MacOS X say"
-msgstr "Commande \"say\" de MacOS X"
+#: ../lib/advene/rules/elements.py:1070
+msgid "External display control"
+msgstr "Contrôle d'un affichage extérieur"
 
-#: ../lib/advene/gui/main.py:4394
-msgid "Generic (text output)"
-msgstr "Générique (affichage du texte)"
+#: ../lib/advene/rules/elements.py:1071
+msgid "Popup"
+msgstr "Popup"
 
-#: ../lib/advene/gui/main.py:4438
-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/rules/elements.py:1073
+msgid "State"
+msgstr "Statut "
 
-#: ../lib/advene/gui/main.py:4447
-#, python-format
-msgid "Imagecache saved to %s"
-msgstr "Cache d'image sauvé dans %s"
+#: ../lib/advene/rules/elements.py:1074
+msgid "GUI actions"
+msgstr "Actions sur l'interface"
 
-#: ../lib/advene/gui/main.py:4460
-msgid "Restarting player..."
-msgstr "Redémarrage du lecteur multimédia..."
+#: ../lib/advene/rules/elements.py:1075
+msgid "Expert"
+msgstr "Expert"
 
-#: ../lib/advene/gui/main.py:4512
-msgid "Advene log"
-msgstr "Advene log"
+#: ../lib/advene/util/helper.py:403
+msgid "Annotation"
+msgstr "Annotation"
 
-#: ../lib/advene/gui/main.py:4581
-msgid "Select the package to merge"
-msgstr "Sélectionnez le recueil à fusionner"
+#: ../lib/advene/util/helper.py:404
+msgid "Relation"
+msgstr "Relation"
 
-#: ../lib/advene/gui/main.py:4602
-msgid "Saving workspace"
-msgstr "Sauvegarde de l'environnement"
+#: ../lib/advene/util/helper.py:410
+msgid "Resource Folder"
+msgstr "Répertoire de ressources"
 
-#: ../lib/advene/gui/main.py:4605
-msgid "Enter a view name to save the workspace"
-msgstr "Entrez un nom de vue pour sauvegarder cet environnement"
+#: ../lib/advene/util/helper.py:446
+msgid "---- Elements ----"
+msgstr "---- Éléments ----"
 
-#: ../lib/advene/gui/main.py:4606
-msgid "Default workspace"
-msgstr "Environnement standard"
+#: ../lib/advene/util/helper.py:452
+msgid "---- Attributes ----"
+msgstr "---- Attributs ----"
 
-#: ../lib/advene/gui/main.py:4607
-msgid "Open this workspace when opening the package"
-msgstr "Ouvrir cet environnement lors du chargement du recueil"
+#: ../lib/advene/util/helper.py:455
+msgid "---- Methods ----"
+msgstr "---- Méthodes ----"
 
-#: ../lib/advene/gui/main.py:4641
+#: ../lib/advene/util/helper.py:531
 #, 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"
+msgid "Cannot read %(filename)s: %(error)s"
+msgstr "Impossible de lire %(filename)s : %(error)s"
 
-#: ../lib/advene/gui/main.py:4672
+#: ../lib/advene/util/helper.py:555
 #, python-format
-msgid "Cannot save default workspace: %s"
-msgstr "Impossible de sauvegarder l'environnement par défaut : %s"
+msgid ""
+"Error:\n"
+"%s"
+msgstr ""
+"Erreur :\n"
+"%s"
 
-#: ../lib/advene/gui/main.py:4682
-msgid "Standard workspace has been saved"
-msgstr "L'environnement standard a été sauvé"
+#: ../lib/advene/util/helper.py:637
+msgid "schema"
+msgstr "schéma"
 
-#: ../lib/advene/gui/main.py:4689
-msgid "Website export"
-msgstr "Export de site web"
+#: ../lib/advene/util/helper.py:637
+msgid "schemas"
+msgstr "schémas"
 
-#: ../lib/advene/gui/main.py:4690
-msgid "Exporting views to a website"
-msgstr "Exporter les vues vers un site web"
+#: ../lib/advene/util/helper.py:638
+msgid "annotation"
+msgstr "annotation"
 
-#: ../lib/advene/gui/main.py:4693
-msgid "Output directory"
-msgstr "Répertoire destination"
+#: ../lib/advene/util/helper.py:638
+msgid "annotations"
+msgstr "annotations"
 
-#: ../lib/advene/gui/main.py:4702
-msgid "Specify the output directory"
-msgstr "Précisez le répertoire de destination"
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation type"
+msgstr "type d'annotation"
 
-#: ../lib/advene/gui/main.py:4711
-msgid "Maximum recursion depth"
-msgstr "Niveau maximal de récursivité"
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation types"
+msgstr "types d'annotation"
 
-#: ../lib/advene/gui/main.py:4718
-msgid "Video URL"
-msgstr "URL de la vidéo"
+#: ../lib/advene/util/helper.py:641
+msgid "relation"
+msgstr "relation"
 
-#: ../lib/advene/gui/main.py:4720
-msgid ""
-"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 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/util/helper.py:641
+msgid "relations"
+msgstr "relations"
 
-#: ../lib/advene/gui/main.py:4770
-msgid "Could not export data: "
-msgstr "Impossible d'exporter les données : "
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation type"
+msgstr "type de relation"
 
-#: ../lib/advene/gui/main.py:4772
-#, python-format
-msgid "Website export to %s completed"
-msgstr "Export de site web vers %s terminé"
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation types"
+msgstr "types de relation"
 
-#: ../lib/advene/gui/main.py:4811
-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/util/helper.py:644
+msgid "query"
+msgstr "requête"
 
-#: ../lib/advene/gui/main.py:4821
-#, python-format
-msgid "Updating %d snapshots"
-msgstr "Mise-à-jour de %d vignette(s)"
+#: ../lib/advene/util/helper.py:644
+msgid "queries"
+msgstr "requêtes"
 
-#: ../lib/advene/gui/main.py:4826
-msgid "No snapshot to update"
-msgstr "Aucune capture d'écran à mettre à jour"
+#: ../lib/advene/util/helper.py:645
+msgid "view"
+msgstr "vue"
 
-#: ../lib/advene/gui/main.py:4835 ../lib/advene/gui/main.py:4947
-msgid "You first must load a movie into Advene"
-msgstr "Vous devez d'abord charger un fichier vidéo dans Advene"
+#: ../lib/advene/util/helper.py:645
+msgid "views"
+msgstr "vues"
 
-#: ../lib/advene/gui/main.py:4838 ../lib/advene/gui/main.py:4950
-#, python-format
-msgid "The movie %s does not seem to exist."
-msgstr "Le fichier vidéo %s ne semble pas exister."
+#: ../lib/advene/util/helper.py:646
+msgid "package"
+msgstr "recueil"
 
-#: ../lib/advene/gui/main.py:4895
-msgid "Generating screenshots"
-msgstr "Génération des vignettes"
+#: ../lib/advene/util/helper.py:646
+msgid "packages"
+msgstr "recueils"
 
-#: ../lib/advene/gui/main.py:4900
-msgid ""
-"<b>Screenshot generation</b>\n"
-"\n"
-"Screenshots will be captured approximately every 500ms.\n"
-"\n"
-"If the movie was paused or playing, the capture will begin at the current "
-"position. Else, it will begin at the beginning of the movie.\n"
-"Note that the main interface will not be refreshed as long as this window is "
-"open."
-msgstr ""
-"<b>Génération des vignettes</b>\n"
-"\n"
-"Des vignettes seront capturées environ toutes les 500ms.\n"
-"\n"
-"Si le film est en pause ou en train de jouer, la capture commencera à la "
-"position en cours. Sinon, elle commencera au début du film.\n"
-"Notez que l'interface d'Advene ne sera pas mise à jour tant que cette "
-"fenêtre est ouverte."
+#: ../lib/advene/util/helper.py:658
+#, python-format
+msgid "No %s"
+msgstr "Pas de %s"
 
-#: ../lib/advene/gui/main.py:4941
-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 ""
-"L'application <b>shotdetect</b> ne semble pas installée. Merci de vérifier "
-"qu'elle est bien présente et que son chemin est correctement spécifié dans "
-"les préférences."
+#: ../lib/advene/util/helper.py:660
+#, python-format
+msgid "1 %s"
+msgstr "1 %s"
 
-#: ../lib/advene/gui/main.py:4981
-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/util/helper.py:662
+#, python-format
+msgid "%(count)d %(plural)s"
+msgstr "%(count)d %(plural)s"
 
-#: ../lib/advene/gui/main.py:4998
-msgid "Incomplete shots"
-msgstr "Plans incomplets"
+#: ../lib/advene/util/website_export.py:61
+#, python-format
+msgid "%s exists but is not a directory. Cancelling website export"
+msgstr "%s existe mais n'est pas un répertoire. Abandon de l'export."
 
-#: ../lib/advene/gui/main.py:5001
+#: ../lib/advene/util/website_export.py:67
 #, python-format
-msgid "Detected %s shots"
-msgstr "Détecté %s plans"
+msgid "%s does not exist"
+msgstr "%s n'existe pas"
+
+#: ../lib/advene/util/website_export.py:422
+msgid "Starting export"
+msgstr "Début de l'export"
 
-#: ../lib/advene/gui/main.py:5103
+#: ../lib/advene/util/website_export.py:451
 #, python-format
-msgid "Could not run shotdetect: %s"
-msgstr "Impossible de lancer shotdetect : %s"
+msgid "Depth %d"
+msgstr "Profondeur %d"
 
-#: ../lib/advene/gui/main.py:5107
+#: ../lib/advene/util/website_export.py:455
 #, python-format
-msgid "Detecting shots from %s"
-msgstr "Détection des plans de %s"
+msgid "Depth %(depth)d: processing %(url)s"
+msgstr "Profondeur %(depth)d: traitement de %(url)s"
 
-#: ../lib/advene/gui/main.py:5160
-msgid "Shot detection"
-msgstr "Détection de plans"
+#: ../lib/advene/util/website_export.py:477
+msgid "Finalizing"
+msgstr "Finalisation"
 
-#: ../lib/advene/gui/main.py:5166
+#: ../lib/advene/util/website_export.py:511
+#, python-format
 msgid ""
-"<b>Shot detection</b>\n"
-"\n"
-"Advene will try to detect shots from the currently loaded movie. The "
-"threshold parameter is used to specify the sensitivity of the algorithm, and "
-"should typically be between 50 and 80. If too many shots are detected, try "
-"to augment its value."
+"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
+"strong></p>"
 msgstr ""
-"<b>Détection de plans</b>\n"
-"\n"
-"Advene va essayer de détecter les plans du fichier vidéo en cours. Le "
-"paramètre ci-dessous est utilisé pour spécifier la sensibilité de "
-"l'algorithme, et doit typiquement être entre 50 et 80. Si trop de plans sont "
-"détectés, essayez d'augmenter cette valeur."
+"<p><strong>Vous devriez probablement commencer à <a href=\"%(href)s\">"
+"%(title)s</a>.</strong></p>"
 
-#: ../lib/advene/gui/main.py:5182
-msgid "Sensitivity"
-msgstr "Sensibilité"
+#: ../lib/advene/util/website_export.py:554
+msgid "Export complete"
+msgstr "Export terminé"
 
-#: ../lib/advene/gui/popup.py:138
-msgid "Choose the file to insert"
-msgstr "Choisissez le fichier à insérer"
+#: ../lib/advene/util/importer.py:138
+msgid "Generic importer"
+msgstr "Importateur générique"
 
-#: ../lib/advene/gui/popup.py:146
-msgid "Select a valid identifier"
-msgstr "Sélectionnez un identificateur valide."
+#: ../lib/advene/util/importer.py:165
+msgid "Usage: %prog [options] source-file destination-file"
+msgstr "Usage: %prog [options] fichier-source fichier-destination"
 
-#: ../lib/advene/gui/popup.py:147
-#, python-format
+#: ../lib/advene/util/importer.py:169
+msgid "Specify the offset in ms"
+msgstr "Précisez l'offset en ms"
+
+#: ../lib/advene/util/importer.py:229
 msgid ""
-"The filename %s contains invalid characters\n"
-"that have been replaced.\n"
-"You can modify this identifier if necessary:"
+"Import filter error. The asynchronous API should be used, please report a "
+"bug."
 msgstr ""
-"Le nom de fichier %s contient des caractères\n"
-"invalides qui ont été remplacés.\n"
-"Vous pouvez modifier cet identificateur si nécessaire."
-
-#: ../lib/advene/gui/popup.py:158
-msgid "Choose the soundclip to insert"
-msgstr "Choisissez le fichier son à insérer"
+"Erreur dans le filtre d'import. L'API asynchrone devrait être\n"
+"utilisée, faites un rapport de bug SVP."
 
-#: ../lib/advene/gui/popup.py:162
-msgid "Choose the directory to insert"
-msgstr "Choisissez le répertoire à insérer."
+#: ../lib/advene/util/importer.py:231
+msgid ""
+"Import filter error. No conversion method is defined,  please report a bug."
+msgstr ""
+"Erreur dans le filtre d'import. Aucune méthode de conversion définie, faites "
+"un rapport de bug SVP."
 
-#: ../lib/advene/gui/popup.py:177
-msgid "Named-Entity extraction using NERD"
-msgstr "Reconnaissance d'Entités Nommées avec NERD"
+#: ../lib/advene/util/importer.py:488
+msgid "ExternalApp importer"
+msgstr "Importateur d'application externe"
 
-#: ../lib/advene/gui/popup.py:181
+#: ../lib/advene/util/importer.py:502
+#, python-format
 msgid ""
-"Give the offset to use\n"
-"on specified element.\n"
-"It is in ms and can be\n"
-"either positive or negative."
+"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 ""
-"Indiquez l'offset à ajouter\n"
-"sur l'élément spécifié.\n"
-"La valeur est en ms\n"
-"et peut être positive\n"
-"ou négative."
+"L'application <b>%s</b> ne semble pas installée. Merci de vérifier qu'elle "
+"est bien présente et que son chemin est correctement spécifié dans les "
+"préférences."
 
-#: ../lib/advene/gui/popup.py:225
+#: ../lib/advene/util/importer.py:504
 #, python-format
-msgid "Replace content in %s"
-msgstr "Remplacer du texte dans %s"
+msgid "The file %s does not seem to exist."
+msgstr "Le fichier %s semble ne pas exister."
 
-#: ../lib/advene/gui/popup.py:228
+#: ../lib/advene/util/importer.py:526
 #, python-format
-msgid "Replace content in annotations of type %s"
-msgstr "Remplacer du texte dans les annotations de type %s"
-
-#: ../lib/advene/gui/popup.py:231
-msgid "Replace content in all annotations"
-msgstr "Remplacer du texte dans toutes les annotations"
+msgid "Could not run %(appname)s: %(msg)s"
+msgstr "Impossible d'exécuter %(appname)s: %(msg)s"
 
-#: ../lib/advene/gui/popup.py:324
+# Traitement de %s
+#: ../lib/advene/util/importer.py:528
 #, python-format
-msgid "Copy id %s"
-msgstr "Copier l'id %s"
+msgid "Processing %s"
+msgstr "Traitement de %s"
 
-#: ../lib/advene/gui/popup.py:358
-#, python-format
-msgid ""
-"<b>Statistics about %s</b>\n"
-"\n"
+#: ../lib/advene/util/importer.py:532
+msgid "Cleaning up..."
+msgstr "Nettoyage..."
+
+#: ../lib/advene/util/importer.py:652
+msgid "Text importer"
+msgstr "Importateur texte"
+
+#: ../lib/advene/util/importer.py:665 ../lib/advene/util/importer.py:1195
+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:668
+msgid "Should the timestamps be encoded relative to the first timestamp?"
 msgstr ""
-"<b>Statistiques sur %s</b>\n"
-"\n"
+"Les timecodes doivent-ils être décalés en considérant le premier à zéro ?"
 
-#: ../lib/advene/gui/popup.py:364
-#, python-format
-msgid "Renumbering annotations of type %s"
-msgstr "Renumérotation des annotations de type %s"
+#: ../lib/advene/util/importer.py:671
+msgid "Unit to consider for integers"
+msgstr "Unité à utiliser pour les entiers"
 
-#: ../lib/advene/gui/popup.py:371
+#: ../lib/advene/util/importer.py:674
 msgid ""
-"<b>Renumber all annotations according to their order.</b>\n"
-"\n"
-"<i>Note that this action cannot be undone.</i>\n"
-"Replace the first numeric value of the annotation content with the new "
-"annotation number.\n"
-"If no numeric value is found and the annotation is structured, it will "
-"insert the number.\n"
-"If no numeric value is found and the annotation is of type text/plain, it "
-"will overwrite the annotation content.\n"
-"The offset parameter allows you to renumber from a given annotation."
+"What timestamps are present in a line (only begin, both begin and end, or "
+"automatic recognition)"
 msgstr ""
-"<b>Renumérotation des annotations suivant leur ordre.</b>\n"
-"\n"
-"<i>Attention, cette action ne peut pas être annulée.</i>\n"
-"Cette action va remplacer la première valeur numérique de l'annotation par "
-"son numéro d'ordre.\n"
-"Si aucune valeur numérique n'est présente et que l'annotation est "
-"structurée, le numéro sera inséré.\n"
-"Si aucune valeur numérique n'est trouvée et que le type est text/plain, le "
-"contenu de l'annotation sera écrasé.\n"
-"Le paramètre offset permet de commencer la numérotation à partir de "
-"l'annotation offset."
+"Quels timecodes sont présents sur une ligne : uniquement le début\n"
+"(begin), début et fin (both) ou reconnaissance automatique (auto)"
+
+#: ../lib/advene/util/importer.py:817
+msgid "lsdvd importer"
+msgstr "Importateur lsdvd"
+
+#: ../lib/advene/util/importer.py:844
+msgid "Processing data"
+msgstr "Traitement des données"
+
+#: ../lib/advene/util/importer.py:862 ../lib/advene/util/importer.py:922
+msgid "DVD Chapter"
+msgstr "Chapitre DVD"
 
-#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
-msgid "Offset"
-msgstr "Offset"
+#: ../lib/advene/util/importer.py:866
+msgid "Launching lsdvd..."
+msgstr "Lancement de lsdvd"
 
-#: ../lib/advene/gui/popup.py:399
-#, python-format
-msgid "Renumbering %d annotations"
-msgstr "Renumérotation de %d annotations"
+#: ../lib/advene/util/importer.py:878
+msgid "chaplin importer"
+msgstr "Importateur chaplin"
 
-#: ../lib/advene/gui/popup.py:408
-#, python-format
-msgid "Annotation #%d"
-msgstr "Annotation #%d"
+#: ../lib/advene/util/importer.py:936
+msgid "Xi importer"
+msgstr "Importateur Xi"
 
-#: ../lib/advene/gui/popup.py:445
-#, python-format
-msgid ""
-"Exporting annotation %(title)s\n"
-"from %(begin)s to %(end)s\n"
-"to %%(filename)s"
-msgstr ""
-"Export de l'annotation %(title)s\n"
-"depuis %(begin)s à %(end)s\n"
-"to %%(filename)s"
+#: ../lib/advene/util/importer.py:1005
+msgid "ELAN importer"
+msgstr "Importateur ELAN"
 
-#: ../lib/advene/gui/popup.py:458
-msgid "Browse"
-msgstr "Explorateur TALES"
+#: ../lib/advene/util/importer.py:1058
+#, python-format
+msgid "Converting tier %s"
+msgstr "Conversion du tier %s"
 
-#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
-msgid "Open in web browser"
-msgstr "Afficher dans un navigateur web"
+#: ../lib/advene/util/importer.py:1159
+msgid "Processing time slots"
+msgstr "Traitement des bornes temporelles"
 
-#: ../lib/advene/gui/popup.py:479
-msgid "Search/replace content"
-msgstr "Rechercher/remplacer"
+#: ../lib/advene/util/importer.py:1174
+msgid "Fixing forward references"
+msgstr "Correction des références"
 
-#: ../lib/advene/gui/popup.py:497
-msgid "Desactivate"
-msgstr "Désactiver"
+#: ../lib/advene/util/importer.py:1176
+msgid "Creating relations"
+msgstr "Création des relations"
 
-#: ../lib/advene/gui/popup.py:514
-msgid "Loop"
-msgstr "Boucler"
+#: ../lib/advene/util/importer.py:1188
+msgid "Subtitle (SRT) importer"
+msgstr "Importateur sous-titres (SRT)"
 
-#: ../lib/advene/gui/popup.py:515
-msgid "Duplicate"
-msgstr "Dupliquer"
+#: ../lib/advene/util/importer.py:1257
+#, python-format
+msgid "Subtitles from %s"
+msgstr "Sous-titres de %s"
 
-#: ../lib/advene/gui/popup.py:519
-msgid "Save snapshot..."
-msgstr "Prendre une capture d'écran"
+#: ../lib/advene/util/importer.py:1270
+msgid "PRAAT importer"
+msgstr "Importateur PRAAT"
 
-#: ../lib/advene/gui/popup.py:521
-msgid "Extract video fragment"
-msgstr "Extraire un fragment vidéo"
+#: ../lib/advene/util/importer.py:1360
+msgid "CMML importer"
+msgstr "Importateur CMML"
 
-#: ../lib/advene/gui/popup.py:551
-msgid "Incoming"
-msgstr "Entrantes"
+#: ../lib/advene/util/importer.py:1423
+msgid "Parsing clip information"
+msgstr "Traitement des informations de clip"
 
-#: ../lib/advene/gui/popup.py:567
-msgid "Outgoing"
-msgstr "Sortantes"
+#: ../lib/advene/util/importer.py:1523
+msgid "Creating CMML schema"
+msgstr "Création du schéma CMML"
 
-#: ../lib/advene/gui/popup.py:582
-msgid "Related annotations"
-msgstr "Annotations liées"
+#: ../lib/advene/util/importer.py:1547
+msgid "Parsing stream information"
+msgstr "Traitement des informations sur le média"
 
-#: ../lib/advene/gui/popup.py:589
-msgid "Incoming relations"
-msgstr "Relations entrantes"
+#: ../lib/advene/util/importer.py:1581
+msgid "IRI importer"
+msgstr "Importateur IRI"
 
-#: ../lib/advene/gui/popup.py:596
-msgid "Outgoing relations"
-msgstr "Relations sortantes"
+#: ../lib/advene/util/importer.py:1590
+msgid "Generate one type per view"
+msgstr "Générer un type par vue"
 
-#: ../lib/advene/gui/popup.py:612
+#: ../lib/advene/util/importer.py:1610
 #, python-format
-msgid "Begin: %s"
-msgstr "Début : %s"
+msgid "Parsing ensemble %s"
+msgstr "Traitement de l'ensemble %s"
 
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/util/importer.py:1621
 #, python-format
-msgid "End: %s"
-msgstr "Fin : %s"
+msgid "Parsing decoupage %s"
+msgstr "Traitement du découpage %s"
 
-#: ../lib/advene/gui/popup.py:615
-#, python-format
-msgid "Duration: %s"
-msgstr "Durée : %s"
+#: ../lib/advene/util/importer.py:1657
+msgid "Parsing views"
+msgstr "Traitement des vues"
 
-#: ../lib/advene/gui/popup.py:622
-msgid "Members:"
-msgstr "Membres:"
+#: ../lib/advene/util/importer.py:1705 ../lib/advene/util/importer.py:1794
+msgid "Initializing package"
+msgstr "Initialisation du recueil"
 
-#: ../lib/advene/gui/popup.py:635
-msgid "Edit package properties..."
-msgstr "Éditer les propriétés du recueil..."
+#: ../lib/advene/util/importer.py:1743
+msgid "IRIData importer"
+msgstr "Importateur IRIData"
 
-#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
-#, python-format
-msgid "%d annotations(s) - statistics"
-msgstr "%d annotation(s) - statistiques"
+#: ../lib/advene/util/importer.py:1757
+msgid "Parsing sound values"
+msgstr "Traitement des valeurs d'échantillons de son"
 
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
-msgid "Create a new static view..."
-msgstr "Créer une nouvelle vue statique..."
+#: ../lib/advene/util/importer.py:1769
+msgid "Creating annotations"
+msgstr "Création des annotations"
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:865
-msgid "Create a new dynamic view..."
-msgstr "Créer une nouvelle vue dynamique..."
+#~ msgid "Detect shots"
+#~ msgstr "Détecter les plans"
 
-#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
-msgid "Create a new annotation..."
-msgstr "Créer une nouvelle annotation..."
+#~ msgid "Automatically detect shots"
+#~ msgstr "Détecter automatiquement les plans"
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
-msgid "Create a new schema..."
-msgstr "Créer un nouveau schéma"
+#~ msgid "Tree view"
+#~ msgstr "Vue en arbre"
 
-#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
-msgid "Create a new query..."
-msgstr "Créer une nouvelle requête"
+#~ msgid "Schema editor"
+#~ msgstr "Éditeur de schéma"
 
-#: ../lib/advene/gui/popup.py:651
-msgid "Create a new folder..."
-msgstr "Créer un nouveau répertoire..."
+#~ msgid "Visualise the activity trace preview"
+#~ msgstr "Prévisualiser la trace d'activité"
 
-#: ../lib/advene/gui/popup.py:652
-msgid "Create a new resource file..."
-msgstr "Créer une nouvelle ressource"
+#~ msgid "Visualise the activity trace as a timeline"
+#~ msgstr "Visualiser la trace d'activité sous forme de ligne de temps"
 
-#: ../lib/advene/gui/popup.py:653
-msgid "Insert a new resource file..."
-msgstr "Insérer un nouveau fichier ressource..."
+#~ msgid ""
+#~ "Error: unable to find an edit popup for %(element)s:\n"
+#~ "%(error)s"
+#~ msgstr ""
+#~ "Erreur : impossible d'ouvrir une fenêtre d'édition pour %(element)s:\n"
+#~ "%(error)s"
 
-#: ../lib/advene/gui/popup.py:654
-msgid "Insert a new resource directory..."
-msgstr "Insérer un nouveau répertoire ressource..."
+#~ 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 ""
+#~ "L'application <b>shotdetect</b> ne semble pas installée. Merci de "
+#~ "vérifier qu'elle est bien présente et que son chemin est correctement "
+#~ "spécifié dans les préférences."
 
-#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
-msgid "Insert a soundclip..."
-msgstr "Insérer un fichier son..."
+#~ 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/popup.py:676
-msgid "Play sound"
-msgstr "Jouer un son"
+#~ msgid "Incomplete shots"
+#~ msgstr "Plans incomplets"
 
-#: ../lib/advene/gui/popup.py:686
-msgid "Create a new annotation type..."
-msgstr "Créer un nouveau type d'annotation..."
+#~ msgid "Detected %s shots"
+#~ msgstr "Détecté %s plans"
 
-#: ../lib/advene/gui/popup.py:688
-msgid "Create a new relation type..."
-msgstr "Créer un nouveau type de relation..."
+#~ msgid "Could not run shotdetect: %s"
+#~ msgstr "Impossible de lancer shotdetect : %s"
 
-#: ../lib/advene/gui/popup.py:699
-#, 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à."
+#~ msgid "Detecting shots from %s"
+#~ msgstr "Détection des plans de %s"
 
-#: ../lib/advene/gui/popup.py:708
-#, python-format
-msgid "Caption %s annotations"
-msgstr "Sous-titrer les annotations de type %s"
+#~ msgid "Shot detection"
+#~ msgstr "Détection de plans"
 
-#: ../lib/advene/gui/popup.py:740
-msgid "Create a comment view"
-msgstr "Créer une nouvelle vue commentaire"
+#~ msgid ""
+#~ "<b>Shot detection</b>\n"
+#~ "\n"
+#~ "Advene will try to detect shots from the currently loaded movie. The "
+#~ "threshold parameter is used to specify the sensitivity of the algorithm, "
+#~ "and should typically be between 50 and 80. If too many shots are "
+#~ "detected, try to augment its value."
+#~ msgstr ""
+#~ "<b>Détection de plans</b>\n"
+#~ "\n"
+#~ "Advene va essayer de détecter les plans du fichier vidéo en cours. Le "
+#~ "paramètre ci-dessous est utilisé pour spécifier la sensibilité de "
+#~ "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/popup.py:741
-msgid "Generate a caption dynamic view..."
-msgstr "Créer une vue dynamique de sous-titrage..."
+#~ msgid "Sensitivity"
+#~ msgstr "Sensibilité"
 
-#: ../lib/advene/gui/popup.py:742
-msgid "Display as transcription"
-msgstr "Afficher en transcription"
+#~ msgid "Min duration"
+#~ msgstr "Durée min"
 
-#: ../lib/advene/gui/popup.py:743
-msgid "Display annotations in table"
-msgstr "Afficher les annotations dans un tableau"
+#~ msgid "Max duration"
+#~ msgstr "Durée max"
 
-#: ../lib/advene/gui/popup.py:744
-msgid "Export to another format..."
-msgstr "Exporter dans un autre format..."
+#~ msgid "Mean duration"
+#~ msgstr "Durée moyenne"
 
-#: ../lib/advene/gui/popup.py:746
-msgid "Extract Named Entities..."
-msgstr "Extraire les entités nommées..."
+#~ msgid "Total duration"
+#~ msgstr "Durée totale"
 
-#: ../lib/advene/gui/popup.py:752
-msgid "Delete all annotations"
-msgstr "Supprimer toutes les annotations"
+#~ msgid "Schema Editor"
+#~ msgstr "Éditeur de schéma"
 
-#: ../lib/advene/gui/popup.py:753
-msgid "Renumber annotations..."
-msgstr "Renuméroter les annotations..."
+#~ msgid "Display"
+#~ msgstr "Afficher"
 
-#: ../lib/advene/gui/popup.py:754
-msgid "Shot validation view..."
-msgstr "Validation de plans..."
+#~ msgid "Remove relation type"
+#~ msgstr "Supprimer le type de relation"
 
-#: ../lib/advene/gui/popup.py:766
-#, 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à."
+#~ msgid "Create HTML view"
+#~ msgstr "Créer une vue HTML"
 
-#: ../lib/advene/gui/popup.py:775
-#, python-format
-msgid "Follow %s relation-type"
-msgstr "Suivre le type de relation %s"
+#~ msgid "Remove annotation type"
+#~ msgstr "Supprimer le type d'annotation"
 
-#: ../lib/advene/gui/popup.py:784
-msgid "Follow the relation"
-msgstr "Suivre la relation"
+#~ msgid "Create relation type between this one and..."
+#~ msgstr "Créer un type de relation entre cet élément et ..."
 
-#: ../lib/advene/gui/popup.py:804
-msgid "Delete all relations..."
-msgstr "Supprimer toutes les relations..."
+#~ msgid "New schema"
+#~ msgstr "Nouveau schéma"
 
-#: ../lib/advene/gui/popup.py:805
-msgid "Create montage from related annotations"
-msgstr "Créer un montage suivant les relations"
+#~ msgid "New annotation type"
+#~ msgstr "Nouveau type d'annotation"
 
-#: ../lib/advene/gui/popup.py:806
-msgid "Create dynamic view following relations"
-msgstr "Créer une vue dynamique suivant les relations"
+#~ msgid "New relation type"
+#~ msgstr "Nouveau type de relation"
 
-#: ../lib/advene/gui/popup.py:824
-msgid "Apply query on..."
-msgstr "Appliquer la requête sur..."
+#~ msgid "Hide this schema"
+#~ msgstr "Cacher ce schéma"
 
-#: ../lib/advene/gui/popup.py:849
-msgid "Activate view"
-msgstr "Activation d'une vue"
+#~ msgid "Export drawing to pdf"
+#~ msgstr "Exporter le schéma en pdf"
 
-#: ../lib/advene/gui/popup.py:851
-msgid "Open adhoc view"
-msgstr "Ouvrir une vue adhoc"
+#~ msgid "Choose a filename to export the schema as PDF"
+#~ msgstr "Choisissez un nom pour l'export PDF"
+
+#~ msgid "Cannot go back: first item in history"
+#~ msgstr ""
+#~ "Impossible de revenir en arrière : c'est le premier élément de "
+#~ "l'historique"
+
+#~ msgid "No children in on_iter_children()!"
+#~ msgstr "Pas de fils dans on_iter_children"
+
+#~ msgid "No children in on_iter_nth_child()"
+#~ msgstr "Pas de fils dans on_iter_nth_child"
+
+#~ msgid "Package View"
+#~ msgstr "Vue du recueil"
+
+#~ msgid ""
+#~ "GNU General Public License v. 2\n"
+#~ "See http://www.gnu.org/copyleft/gpl.html for more details"
+#~ msgstr ""
+#~ "GNU General Public License v. 2\n"
+#~ "Voir http://www.gnu.org/copyleft/gpl.html pour plus d'informations"
 
 #~ msgid "Adjust annotation bounds..."
 #~ msgstr "Ajuster les bornes des annotations..."
@@ -10124,9 +10137,6 @@ msgstr "Ouvrir une vue adhoc"
 #~ msgid "Set begin time to %s"
 #~ msgstr "Fixer le temps de début à %s"
 
-#~ msgid "Set end time to %s"
-#~ msgstr "Fixer le temps de fin à %s"
-
 #~ msgid "Cancel"
 #~ msgstr "Abandonner"
 
@@ -10188,9 +10198,6 @@ msgstr "Ouvrir une vue adhoc"
 #~ "résultat, ouvrez les vues désirées dans l'interface et utilisez le menu "
 #~ "Fichier/Sauver l'environnement/...comme environnement standard"
 
-#~ msgid "Error: unable to find an edit popup for %s"
-#~ msgstr "Erreur : impossible d'ouvrir une fenêtre d'édition pour %s"
-
 #~ msgid "Should provide a package name"
 #~ msgstr "Vous devez fournir un nom de recueil"
 
@@ -10858,9 +10865,6 @@ msgstr "Ouvrir une vue adhoc"
 #~ msgid "URL Stack"
 #~ msgstr "Pile d'URL"
 
-#~ msgid "Import _Transcription"
-#~ msgstr "Importer une T_ranscription"
-
 #~ msgid "Currently edited annotation"
 #~ msgstr "Annotation en cours d'edition"
 
diff --git a/po/it.po b/po/it.po
index f324bea..7e18676 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: 2014-07-09 17:25+0200\n"
+"POT-Creation-Date: 2017-05-09 11:32+0200\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"
@@ -18,17 +18,6 @@ msgstr ""
 "X-Launchpad-Export-Date: 2008-07-04 13:44+0000\n"
 "X-Generator: Launchpad (build Unknown)\n"
 
-#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
-#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
-#, python-format
-msgid "File %s is not an Advene zip package."
-msgstr ""
-
-#: ../lib/advene/model/zippackage.py:243
-#, python-format
-msgid "Directory %s is not an extracted Advene zip package."
-msgstr ""
-
 #: ../lib/advene/model/bundle.py:296
 #, python-format
 msgid "%s not in bundle"
@@ -43,3089 +32,2820 @@ msgstr ""
 msgid "List of %s elements"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:263 ../lib/advene/rules/actions.py:36
-#: ../lib/advene/gui/plugins/actions.py:40
-msgid "Display a message"
+#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
+#: ../lib/advene/util/helper.py:538 ../lib/advene/util/helper.py:540
+#, python-format
+msgid "File %s is not an Advene zip package."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:264
-#: ../lib/advene/gui/plugins/actions.py:41
-#: ../lib/advene/gui/plugins/actions.py:53
-#: ../lib/advene/gui/plugins/actions.py:71
-#: ../lib/advene/gui/plugins/actions.py:86
-#: ../lib/advene/gui/plugins/actions.py:102
-#: ../lib/advene/gui/plugins/actions.py:203
-msgid "String to display."
+#: ../lib/advene/model/zippackage.py:243
+#, python-format
+msgid "Directory %s is not an extracted Advene zip package."
 msgstr ""
 
-#: ../lib/advene/core/controller.py:362
-msgid "Exception (traceback in console):"
-msgstr ""
+#: ../lib/advene/gui/widget.py:293
+#, fuzzy, python-format
+msgid "Set of %s annotations"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/core/controller.py:393
-msgid "No available GUI"
+#: ../lib/advene/gui/widget.py:1017
+#: ../lib/advene/gui/views/transcription.py:472
+#: ../lib/advene/gui/edit/montage.py:60
+msgid "Play"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:412
-msgid "No available event handler"
-msgstr ""
+#: ../lib/advene/gui/widget.py:1021 ../lib/advene/gui/edit/timeadjustment.py:77
+#, fuzzy
+msgid "Refresh snapshot"
+msgstr "Visualizza %s"
 
-#: ../lib/advene/core/controller.py:420
-msgid "No available gui"
+#: ../lib/advene/gui/widget.py:1025
+#, fuzzy
+msgid "Save as..."
+msgstr "Pacchetto %s"
+
+#: ../lib/advene/gui/widget.py:1030
+msgid "Use current player position"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:436
-#, python-format
-msgid "Warning: redefining an existing feature %s"
+#: ../lib/advene/gui/widget.py:1036
+msgid "Adjust timestamp"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:568
-msgid "All annotations"
-msgstr "Tutte le annotazioni"
+#: ../lib/advene/gui/main.py:189 ../lib/advene/gui/main.py:298
+#, fuzzy
+msgid "_Select player"
+msgstr "Seleziona un DVD"
 
-#: ../lib/advene/core/controller.py:569 ../lib/advene/gui/edit/rules.py:358
-#, python-format
-msgid "Annotations of type %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:191 ../lib/advene/gui/main.py:283
+msgid "_View"
+msgstr "_Visualizza"
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/imports.py:129
-#: ../lib/advene/gui/edit/imports.py:130
-msgid "Views"
-msgstr "Visualizzazioni"
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:300
+msgid "Packages"
+msgstr "Pacchetti"
 
-#: ../lib/advene/core/controller.py:570 ../lib/advene/gui/edit/elements.py:521
-msgid "Tags"
-msgstr "Tag"
+#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:242
+#, fuzzy
+msgid "Open recent"
+msgstr "Apri"
 
-#: ../lib/advene/core/controller.py:570
-msgid "Ids"
+#: ../lib/advene/gui/main.py:236
+msgid "Input from the keyboard (function keys)"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:747
-#, python-format
-msgid ""
-"Cannot start the webserver\n"
-"The following processes seem to use the %(port)s port: %(processes)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:239
+msgid "_File"
+msgstr "_File"
 
-#: ../lib/advene/core/controller.py:797 ../lib/advene/core/controller.py:808
-#, python-format
-msgid "Loaded %(uri)s as %(alias)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:240
+#, fuzzy
+msgid "_New package"
+msgstr "Nessun pacchetto"
 
-#: ../lib/advene/core/controller.py:799 ../lib/advene/core/controller.py:811
-#, python-format
-msgid "Cannot load package from file %(uri)s: %(error)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:240
+msgid "Create a new package"
+msgstr "Crea un nuovo pacchetto"
 
-#: ../lib/advene/core/controller.py:850
-msgid "Deactivating web server"
-msgstr ""
+#: ../lib/advene/gui/main.py:241
+#, fuzzy
+msgid "_Open package"
+msgstr "Apri un file pacchetto"
 
-#: ../lib/advene/core/controller.py:970
-#, python-format
-msgid "Cannot get audio volume: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:241
+#, fuzzy
+msgid "Open a package"
+msgstr "Apri un file pacchetto"
 
-#: ../lib/advene/core/controller.py:1020
-#, python-format
-msgid "Cannot open Advene URL %s: the webserver is not running."
+#: ../lib/advene/gui/main.py:242
+msgid "Show recently opened packages"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1128 ../lib/advene/gui/edit/merge.py:272
-msgid "None"
-msgstr "Nessuno"
+#: ../lib/advene/gui/main.py:243
+#, fuzzy
+msgid "_Save package"
+msgstr "Nessun pacchetto"
 
-#: ../lib/advene/core/controller.py:1222
-#, python-format
-msgid "Found matching video file in moviepath: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:243
+#, fuzzy
+msgid "Save the package"
+msgstr "Tutte le visualizzazioni del pacchetto"
 
-#: ../lib/advene/core/controller.py:1263 ../lib/advene/core/controller.py:1265
-msgid "Analysis of "
-msgstr ""
+#: ../lib/advene/gui/main.py:244
+#, fuzzy
+msgid "Save package as..."
+msgstr "Pacchetto %s"
 
-#: ../lib/advene/core/controller.py:1465
-msgid "Cannot split the annotation: the given position is outside."
-msgstr ""
+#: ../lib/advene/gui/main.py:244
+#, fuzzy
+msgid "Save the package as..."
+msgstr "Salva il pacchetto attuale"
 
-#: ../lib/advene/core/controller.py:1630
-#, python-format
-msgid "Cannot find the template package %(filename)s: %(error)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:245
+#, fuzzy
+msgid "Close package"
+msgstr "Nessun pacchetto"
 
-#: ../lib/advene/core/controller.py:1672
-#, python-format
-msgid "Cannot read the imported package %(uri)s: %(error)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:245
+#, fuzzy
+msgid "Close the package"
+msgstr "Tutte le visualizzazioni del pacchetto"
 
-#: ../lib/advene/core/controller.py:1907
-msgid "Package URI has changed. Reloading package with new URI."
-msgstr ""
+#: ../lib/advene/gui/main.py:247
+msgid "Save session"
+msgstr "Salva sessione"
 
-#: ../lib/advene/core/controller.py:1925
-msgid ""
-"Cannot load package: the following annotations do not have Millisecond "
-"fragments:"
+#: ../lib/advene/gui/main.py:247
+msgid "Save the current session (list of opened packages)"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1952
-#, python-format
-msgid "Cannot handle master attribute, the package %s is not imported."
+#: ../lib/advene/gui/main.py:248
+msgid "Save workspace"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1954
-#, python-format
-msgid "Checking master package %s for not yet imported elements."
+#: ../lib/advene/gui/main.py:249
+msgid "...as package view"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1994
-msgid "Standard summary"
+#: ../lib/advene/gui/main.py:250
+msgid "...as standard workspace"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:1999
-msgid "Default view"
+#: ../lib/advene/gui/main.py:250
+msgid "Use the current layout as standard workspace in the future"
 msgstr ""
 
-#: ../lib/advene/core/controller.py:2041
-#, python-format
-msgid ""
-"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
-msgstr ""
+#: ../lib/advene/gui/main.py:252
+#, fuzzy
+msgid "Associate a video _File"
+msgstr "Seleziona un file video"
 
-#: ../lib/advene/core/controller.py:2131
-#, python-format
-msgid "Got exception %s when stopping player."
-msgstr ""
+#: ../lib/advene/gui/main.py:252
+#, fuzzy
+msgid "Associate a video file"
+msgstr "Seleziona un file video"
 
-#: ../lib/advene/core/controller.py:2214
-#, python-format
-msgid "Raised exception in update_status: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:253
+#, fuzzy
+msgid "Associate a _DVD"
+msgstr "Seleziona un capitolo da un DVD"
 
-#: ../lib/advene/core/controller.py:2241
-msgid "Unable to start the player."
-msgstr ""
+#: ../lib/advene/gui/main.py:253
+#, fuzzy
+msgid "Associate a chapter from a DVD"
+msgstr "Seleziona un capitolo da un DVD"
 
-#: ../lib/advene/core/controller.py:2448
-#, fuzzy, python-format
-msgid "Comment on set of %d annotations"
-msgstr "Trascrizione delle annotazioni"
+#: ../lib/advene/gui/main.py:254
+#, fuzzy
+msgid "Associate a _Video stream"
+msgstr "Seleziona un video stream"
 
-#: ../lib/advene/core/controller.py:2450
-#, python-format
-msgid "Comment on %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:254
+msgid "Enter a video stream address"
+msgstr "Inserisci un indirizzo di un video stream"
 
-#: ../lib/advene/core/controller.py:2454
-#, python-format
-msgid ""
-"<h1>Comment on %(title)s</h1>\n"
-"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
-"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
-"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
-"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
-"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
-"\"%(imgurl)s\" ></img></a></span>"
-msgstr ""
+#: ../lib/advene/gui/main.py:256
+msgid "_Import File"
+msgstr "_Importa file"
 
-#: ../lib/advene/core/controller.py:2464
-#, fuzzy, python-format
-msgid "List of %s annotations"
-msgstr "Tutte le annotazioni"
+#: ../lib/advene/gui/main.py:256
+msgid "Import data from an external source"
+msgstr "Importa dati da una sorgente esterna"
 
-#: ../lib/advene/core/controller.py:2499
-#, fuzzy, python-format
-msgid "Cannot export to %(filename)s: %(e)s"
-msgstr "Impossibile salvare il file: %s"
+#: ../lib/advene/gui/main.py:257
+#, fuzzy
+msgid "_Process video"
+msgstr "Modifica %s"
 
-#: ../lib/advene/core/controller.py:2514 ../lib/advene/core/controller.py:2523
-#, python-format
-msgid "Error when exporting: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:257
+#, fuzzy
+msgid "Import data from video processing algorithms"
+msgstr "Importa dati da una sorgente esterna"
 
-#: ../lib/advene/core/controller.py:2525 ../lib/advene/gui/views/table.py:406
-#: ../lib/advene/gui/views/table.py:536
-#, python-format
-msgid "Data exported to %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:259
+msgid "Merge package"
+msgstr "Unisci pacchetto"
 
-#: ../lib/advene/core/webcherry.py:51
-msgid "The webserver requires version 3.0 of CherryPy at least."
-msgstr ""
+#: ../lib/advene/gui/main.py:259
+msgid "Merge elements from another package"
+msgstr "Unisci elementi da un altro pacchetto"
 
-#: ../lib/advene/core/webcherry.py:167
-#, python-format
-msgid ""
-"\n"
-"            <p>\n"
-"            <a href=\"/admin\">Server administration</a> |\n"
-"            <a href=\"/media\">Media control</a> |\n"
-"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
-"            </p>\n"
-"            Location: %(locationbar)s\n"
-"            <hr>\n"
-"            "
-msgstr ""
+#: ../lib/advene/gui/main.py:260
+msgid "Import _DVD chapters"
+msgstr "Importa capitoli _DVD"
 
-#: ../lib/advene/core/webcherry.py:227
-msgid "Unspecified Error"
-msgstr "Errore non Specificato"
+#: ../lib/advene/gui/main.py:260
+msgid "Create annotations based on DVD chapters"
+msgstr "Crea annotazioni basate sui capitoli DVD"
 
-#: ../lib/advene/core/webcherry.py:228
-#, python-format
-msgid ""
-"\n"
-"        <h1>Error</h1>\n"
-"        <p>An error occurred:</p>\n"
-"        %s\n"
-"        "
-msgstr ""
+#: ../lib/advene/gui/main.py:262
+#, fuzzy
+msgid "_Export..."
+msgstr "Importatore"
 
-#: ../lib/advene/core/webcherry.py:261
-msgid "<h1>No available mediaplayer</h1>"
+#: ../lib/advene/gui/main.py:262
+msgid "Export data to another format"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:265
-#, python-format
-msgid ""
-"\n"
-"            <h1>Current STBV: %(currentstbv)s</h1>\n"
-"\n"
-"            <h1>Player status</h1>\n"
-"            <table border=\"1\">\n"
-"            <tr>\n"
-"            <td>Current position</td><td>%(position)s</td>\n"
-"            <td>Duration</td><td>%(duration)s</td>\n"
-"            <td>Player status</td><td>%(status)s</td>\n"
-"            </tr>\n"
-"            </table>\n"
-"            "
+#: ../lib/advene/gui/main.py:263
+msgid "_Website export..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:284
-msgid "<h1>No playlist</h1>"
-msgstr "<h1>Nessuna playlist</h1>"
-
-#: ../lib/advene/core/webcherry.py:286
-#, python-format
-msgid ""
-"<h1>Current playlist</h1>\n"
-"                <ul>%s</ul>"
+#: ../lib/advene/gui/main.py:263
+msgid "Export views to a website"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:288
-msgid ""
-"\n"
-"                <form action=\"/media/play\" method=\"GET\">\n"
-"                Starting pos: <input type=\"text\" name=\"position\" value="
-"\"0\">\n"
-"                <input type=\"submit\" value=\"Play\">\n"
-"                </form>\n"
-"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
-"\">Pause</a><br>\n"
-"                "
-msgstr ""
+#: ../lib/advene/gui/main.py:265
+#, fuzzy
+msgid "_Quit"
+msgstr "_Modifica"
 
-#: ../lib/advene/core/webcherry.py:295
-msgid ""
-"<hr />\n"
-"            <form action=\"/media/load\" method=\"GET\">\n"
-"            Add a new file (<em>dvd</em> to play a DVD):\n"
-"            <input type=\"text\" name=\"filename\">\n"
-"            <input type=\"submit\" value=\"Add\">\n"
-"            </form>"
-msgstr ""
+#: ../lib/advene/gui/main.py:267
+msgid "_Edit"
+msgstr "_Modifica"
 
-#: ../lib/advene/core/webcherry.py:301
-msgid ""
-"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
+#: ../lib/advene/gui/main.py:268
+msgid "_Undo"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:310
-#, python-format
-msgid "Unknown STBV identifier: %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:269
+#, fuzzy
+msgid "_Find"
+msgstr "_File"
 
-#: ../lib/advene/core/webcherry.py:385
-msgid "Media information"
-msgstr ""
+#: ../lib/advene/gui/main.py:270
+#, fuzzy
+msgid "_Delete"
+msgstr "Elimina"
 
-#: ../lib/advene/core/webcherry.py:398
-msgid "File added"
-msgstr ""
+#: ../lib/advene/gui/main.py:271
+msgid "Create"
+msgstr "Crea"
 
-#: ../lib/advene/core/webcherry.py:399
-#, python-format
-msgid "<p><strong>%s has been added to the playlist</strong></p>"
-msgstr ""
+#: ../lib/advene/gui/main.py:272 ../lib/advene/gui/main.py:3309
+#: ../lib/advene/util/helper.py:405
+msgid "Schema"
+msgstr "Schema"
 
-#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
-msgid "Access to packages snapshots"
-msgstr ""
+#: ../lib/advene/gui/main.py:273 ../lib/advene/gui/edit/rules.py:1091
+#: ../lib/advene/rules/actions.py:236 ../lib/advene/util/helper.py:408
+msgid "View"
+msgstr "Visualizza"
 
-#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
-msgid "Unknown package alias"
-msgstr ""
+#: ../lib/advene/gui/main.py:274 ../lib/advene/gui/popup.py:459
+#: ../lib/advene/util/helper.py:409
+msgid "Query"
+msgstr "Ricerca"
 
-#: ../lib/advene/core/webcherry.py:426
-#, python-format
-msgid "Available snapshots for %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:275 ../lib/advene/util/helper.py:406
+msgid "Annotation Type"
+msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/core/webcherry.py:432
-#, python-format
-msgid ""
-"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
-"a></p>"
+#: ../lib/advene/gui/main.py:276 ../lib/advene/util/helper.py:407
+msgid "Relation Type"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:439
-msgid "Done"
-msgstr ""
+#: ../lib/advene/gui/main.py:280
+msgid "P_ackage properties"
+msgstr "Proprietà P_acchetto"
 
-#: ../lib/advene/core/webcherry.py:441
-msgid "Pending"
-msgstr ""
+#: ../lib/advene/gui/main.py:280
+msgid "Edit package properties"
+msgstr "Modifica proprietà pacchetto"
 
-#: ../lib/advene/core/webcherry.py:487
-#, fuzzy, python-format
-msgid "Unknown annotation id: %s"
-msgstr "Tutte le annotazioni"
+#: ../lib/advene/gui/main.py:281
+msgid "P_references"
+msgstr "P_referenze"
 
-#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
-#, python-format
-msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:281
+msgid "Interface preferences"
+msgstr "Preference interfaccia"
 
-#: ../lib/advene/core/webcherry.py:675
-msgid "<p>No GUI is available."
+#: ../lib/advene/gui/main.py:285
+msgid "_Start Web Browser"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:677
-#, python-format
-msgid "<p>Opened adhoc views: %s</p>"
+#: ../lib/advene/gui/main.py:285
+msgid "Start the web browser"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:678
-msgid "<p>Available adhoc views:</p><ul>"
+#: ../lib/advene/gui/main.py:287
+msgid "Simplify interface"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:699
-#, python-format
-msgid "<p>Current stbv: %s</p>"
-msgstr ""
+#: ../lib/advene/gui/main.py:287
+#, fuzzy
+msgid "Simplify the application interface (toggle)"
+msgstr "Visualizza cronologia di navigazione"
 
-#: ../lib/advene/core/webcherry.py:700
-#, python-format
-msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
+#: ../lib/advene/gui/main.py:288
+msgid "Evaluator"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:702
-msgid "Activate and play"
+#: ../lib/advene/gui/main.py:288
+msgid "Open python evaluator window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:708
-msgid "Application information"
+#: ../lib/advene/gui/main.py:289 ../lib/advene/gui/main.py:4061
+msgid "Webserver log"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:778
-msgid "Missing element id parameter"
+#: ../lib/advene/gui/main.py:292
+msgid "_Player"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:782
-#, python-format
-msgid "No existing element with id %s"
+#: ../lib/advene/gui/main.py:293
+msgid "Go to _Time"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:791
-#, python-format
-msgid "<p>The GUI view %s does not exist.</p>"
+#: ../lib/advene/gui/main.py:293
+msgid "Goto a specified time code"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:798
-msgid "Invalid request"
+#: ../lib/advene/gui/main.py:294
+msgid "Save _ImageCache"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:803
-msgid "Invalid configuration variable name"
+#: ../lib/advene/gui/main.py:294
+msgid "Save the contents of the ImageCache to disk"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:815
-msgid "Invalid value"
+#: ../lib/advene/gui/main.py:295
+msgid "Reset ImageCache"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:819
-#, python-format
-msgid "Unsupported method %s"
+#: ../lib/advene/gui/main.py:295
+msgid "Reset the ImageCache"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:845
-#, python-format
-msgid ""
-"\n"
-"        <h1>Authorized hosts</h1>\n"
-"        <table border=\"1\">\n"
-"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
-"        %s\n"
-"        </table>\n"
-"        <form method=\"GET\">\n"
-"        Add a new hostname to the list :<br>\n"
-"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
-"\"Add\">\n"
-"        </form>\n"
-"        "
+#: ../lib/advene/gui/main.py:296
+msgid "_Restart player"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:859
-msgid "Access control"
+#: ../lib/advene/gui/main.py:296
+msgid "Restart the player"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:864
-msgid "Access control - add a hostname"
-msgstr ""
+#: ../lib/advene/gui/main.py:297
+#, fuzzy
+msgid "Update annotation screenshots"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
-#, python-format
-msgid "<strong>Error: %s is an invalid hostname.</strong>"
+#: ../lib/advene/gui/main.py:297
+msgid "Update screenshots for annotation bounds"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:875
-#, python-format
-msgid "<p>Added %s to authorized hosts list.</p>"
+#: ../lib/advene/gui/main.py:298
+msgid "Select the player plugin"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:881
-msgid "Access control - delete a hostname"
-msgstr ""
+#: ../lib/advene/gui/main.py:301
+msgid "No package"
+msgstr "Nessun pacchetto"
 
-#: ../lib/advene/core/webcherry.py:889
-msgid "<strong>Cannot remove the localhost access.</strong>"
+#: ../lib/advene/gui/main.py:303
+msgid "_Help"
+msgstr "_Aiuto"
+
+#: ../lib/advene/gui/main.py:304
+#, fuzzy
+msgid "Help"
+msgstr "_Aiuto"
+
+#: ../lib/advene/gui/main.py:305
+msgid "Get support"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:894
-#, python-format
-msgid "<p>Removed %s from authorized hosts list.</p>"
+#: ../lib/advene/gui/main.py:306
+msgid "Check for updates"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:896
-#, python-format
-msgid "<p>%s is not in authorized hosts list.</p>"
+#: ../lib/advene/gui/main.py:307
+msgid "Display shortcuts"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:945
-msgid "Server Administration"
+#: ../lib/advene/gui/main.py:308
+#, fuzzy
+msgid "Display logfile"
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/main.py:308
+#, fuzzy
+msgid "Display log file"
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/main.py:309
+#, fuzzy
+msgid "Open logfile folder"
+msgstr "Apri un file (C-o)"
+
+#: ../lib/advene/gui/main.py:309
+msgid ""
+"Display logfile folder. It can help when sending the advene.log file by e-"
+"mail."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:953
+#: ../lib/advene/gui/main.py:310
+msgid "_About"
+msgstr "_Informazioni"
+
+#: ../lib/advene/gui/main.py:332 ../lib/advene/gui/main.py:3789
 #, python-format
 msgid ""
-"\n"
-"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
-"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
-"        <p><a href=\"/action\">List available actions</a></p>\n"
-"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
-"        <p><a href=\"/media\">Media control</a></p>\n"
-"        <p><a href=\"/application\">Display GUI status</a></p>\n"
-"        <p><a href=\"/admin/list\">List available files</a></p>\n"
-"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
-"p>\n"
-"        <p>Display mode : %(displaymode)s</p>\n"
-"        <hr>\n"
-"        <p>Load a package :\n"
-"        <form action=\"/admin/load\" method=\"GET\">\n"
-"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
-"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
-"        <input type=\"submit\" value=\"Load\" />\n"
-"        </form>\n"
-"        </body></html>\n"
-"        "
+"Cannot load package %(filename)s:\n"
+"%(error)s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:983
-msgid "Available files"
+#: ../lib/advene/gui/main.py:340
+msgid "Open a package file"
+msgstr "Apri un file pacchetto"
+
+#: ../lib/advene/gui/main.py:341
+msgid "Save the current package"
+msgstr "Salva il pacchetto attuale"
+
+#: ../lib/advene/gui/main.py:342
+msgid "Save the package with a new name"
+msgstr "Salva il pacchetto con un nuovo nome"
+
+#: ../lib/advene/gui/main.py:343
+msgid "Select movie file..."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1009
-msgid "You should specify an alias"
+#: ../lib/advene/gui/main.py:344
+msgid "Select DVD"
+msgstr "Seleziona DVD"
+
+#: ../lib/advene/gui/main.py:346
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:808
+#: ../lib/advene/gui/edit/transcribe.py:1203
+msgid "Undo"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1014
-msgid "You should specify an uri"
+#: ../lib/advene/gui/main.py:348
+#, fuzzy
+msgid "Create a text annotation"
+msgstr "Trascrizione delle annotazioni"
+
+#: ../lib/advene/gui/main.py:349
+#, fuzzy
+msgid "Create a graphical annotation"
+msgstr "Trascrizione delle annotazioni"
+
+#: ../lib/advene/gui/main.py:355
+msgid "List recently opened packages"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1020
-#, python-format
-msgid "Package %s loaded"
+#: ../lib/advene/gui/main.py:385
+msgid "Snapshotter activity"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
+#: ../lib/advene/gui/main.py:387
 #, python-format
-msgid ""
-"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
-"the <a href=\"/packages\">package list</a>."
+msgid "%d queued requests"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1024
-#, python-format
-msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:388
+msgid "Cancel all requests"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1035
-#, python-format
-msgid "Package %s deleted"
+#: ../lib/advene/gui/main.py:393
+#, fuzzy
+msgid "No snapshotter"
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/main.py:415
+msgid "No snapshotting activity"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1036
-msgid "<p>Go to the <a href=\"/packages\">package list</a>."
+#: ../lib/advene/gui/main.py:419
+msgid "Snapshotting"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1039
-#, python-format
-msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
+#: ../lib/advene/gui/main.py:436
+#, fuzzy
+msgid "Display application log messages"
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/main.py:477
+msgid "Quicksearch lists"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1056
+#: ../lib/advene/gui/main.py:483
+msgid "Please specify the lists of elements to be searched."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:502
 #, python-format
-msgid "Package %s saved"
+msgid ""
+"Searching on %s.\n"
+"Left click to launch the search, right-click to set the quicksearch options"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1060
+#: ../lib/advene/gui/main.py:503
 #, python-format
-msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
+msgid "String to search in %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1070
-msgid "Server reset"
+#: ../lib/advene/gui/main.py:516 ../lib/advene/gui/main.py:520
+msgid "Tracing : "
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1076
-msgid "Available TALES methods"
+#: ../lib/advene/gui/main.py:516
+msgid "off"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1117
-msgid "Loaded package(s)"
+#: ../lib/advene/gui/main.py:520
+#, fuzzy
+msgid "on"
+msgstr "Nessuno"
+
+#: ../lib/advene/gui/main.py:532
+#: ../lib/advene/gui/views/interactivequery.py:409
+msgid "String to search"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1119
-msgid ""
-"\n"
-"        <h1>Loaded package(s)</h1>\n"
-"        <table border=\"1\" width=\"50%\">\n"
-"        <tr>\n"
-"        <th>Alias</th>\n"
-"        <th>Action</th>\n"
-"        <th>URI</th>\n"
-"        <th>Annotations</th>\n"
-"        </tr>\n"
-"        "
+#: ../lib/advene/gui/main.py:540
+msgid "Launch search"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1131
-#, python-format
-msgid ""
-"<tr>\n"
-"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
-"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
-"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
-"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
-"            <td>%(uri)s</td>\n"
-"            <td>%(size)d</td>\n"
-"            </tr>\n"
-"            "
+#: ../lib/advene/gui/main.py:545
+msgid "Ignore case"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
-#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
-#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
-#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
-#: ../lib/advene/core/webcherry.py:2039
-msgid "Error"
+#: ../lib/advene/gui/main.py:550
+msgid "Searched elements"
+msgstr "Elementi cercati"
+
+#: ../lib/advene/gui/main.py:634
+msgid "Playing"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1205
-#, python-format
-msgid "The TALES expression %s is not valid."
+#: ../lib/advene/gui/main.py:635
+msgid "Pause"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1256
-msgid "Content mode not available on non-content data"
+#: ../lib/advene/gui/main.py:636
+msgid "Init"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
-#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
-#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
-#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
-#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
-#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
-msgid "<h1>Error</h1>"
+#: ../lib/advene/gui/main.py:637 ../lib/advene/gui/views/table.py:308
+#: ../lib/advene/gui/edit/elements.py:1816
+msgid "End"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
-#, python-format
-msgid ""
-"<p>There was an error in the template code.</p>\n"
-"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"                <p>Error message: <em>%(message)s</em></p>"
+#: ../lib/advene/gui/main.py:638
+msgid "Undefined"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1290
+#: ../lib/advene/gui/main.py:660
+#, fuzzy, python-format
+msgid "Exception in update_annotation: %s."
+msgstr "Trascrizione delle annotazioni"
+
+#: ../lib/advene/gui/main.py:691
 #, python-format
-msgid ""
-"<p>An invalid character is in the Context:</p>\n"
-"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
-"pre>"
+msgid "Exception in update_relation: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1298
+#: ../lib/advene/gui/main.py:716
 #, python-format
-msgid ""
-"<p>There was an error in the TALES expression.</p>\n"
-"                <pre>%s</pre>"
+msgid "Exception in update_view: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1318
+#: ../lib/advene/gui/main.py:747
 #, python-format
-msgid ""
-"<p>There was an error.</p>\n"
-"                <pre>%s</pre>"
+msgid "Exception in update_query: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1342
+#: ../lib/advene/gui/main.py:770
 #, python-format
-msgid ""
-"\n"
-"            <hr>\n"
-"            <p>\n"
-"            Location: %(location)s<br>\n"
-"            <form name=\"navigation\" method=\"GET\">\n"
-"            <a href=\"%(levelup)s\">Up one level</a> |\n"
-"            Next level :\n"
-"            <select name=\"path\" onchange=\"submit()\">\n"
-"            "
+msgid "Exception in update_resource: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1360
-msgid ""
-"\n"
-"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
-"            <option selected></option>\n"
-"            "
+#: ../lib/advene/gui/main.py:793
+#, python-format
+msgid "Exception in update_schema: %s."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1378
-#, python-format
-msgid ""
-"<hr>\n"
-"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
-"package %(uri)s returns %(value)s</p>\n"
-"            "
-msgstr ""
+#: ../lib/advene/gui/main.py:816
+#, fuzzy, python-format
+msgid "Exception in update_annotationtype: %s."
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/core/webcherry.py:1414
-#, python-format
-msgid "<p>Package <strong>%s</strong> not loaded</p>"
-msgstr ""
+#: ../lib/advene/gui/main.py:844
+#, fuzzy, python-format
+msgid "Exception in update_relationtype: %s."
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/core/webcherry.py:1456
-#, python-format
-msgid ""
-"<p>There was an error in the template code.</p>\n"
-"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
-"            <p>Error message: <em>%(message)s</em></p>"
+#: ../lib/advene/gui/main.py:950
+msgid "Enter the new time value"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1464
+#: ../lib/advene/gui/main.py:974
 #, python-format
-msgid ""
-"<p>There was an error in the expression.</p>\n"
-"            <pre>%s</pre>"
+msgid "Replace content in %d elements"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1472
-#, python-format
-msgid ""
-"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
-"            %(type)s\n"
-"            %(value)s\n"
-"            %(traceback)s</pre>"
+#: ../lib/advene/gui/main.py:987
+msgid "Find word"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
-msgid "<p>Cannot set the value : invalid path</p>"
+#: ../lib/advene/gui/main.py:994
+msgid "Replace by"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
+#: ../lib/advene/gui/main.py:1022
 #, python-format
-msgid ""
-"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
-"%(folder)s could not be created.</p>"
+msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
-msgid "Resource successfuly created/updated"
+#: ../lib/advene/gui/main.py:1031
+msgid "The video extracting feature is not available."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1611
-msgid "Value successfuly updated"
-msgstr ""
+#: ../lib/advene/gui/main.py:1034
+#, fuzzy
+msgid "Video export"
+msgstr "Seleziona un DVD"
 
-#: ../lib/advene/core/webcherry.py:1613
+#: ../lib/advene/gui/main.py:1036
 #, python-format
-msgid ""
-"Unable to update the attribute %(attribute)s for element %(element)s: "
-"%(error)s."
-msgstr ""
-
-#: ../lib/advene/core/webcherry.py:1724
-msgid "<p>Invalid request</p>."
+msgid "Exporting video montage/fragment to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
-msgid "Value updated"
+#: ../lib/advene/gui/main.py:1038
+msgid "Please choose a destination filename"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1789
-#, python-format
+#: ../lib/advene/gui/main.py:1116
 msgid ""
-"\n"
-"                <h1>Value updated</h1>\n"
-"                The value of %(path)s has been updated to\n"
-"                <pre>\n"
-"                %(value)s\n"
-"                </pre>\n"
-"                "
+"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/core/webcherry.py:1806
+#: ../lib/advene/gui/main.py:1118
 #, python-format
 msgid ""
-"\n"
-"                    <h1>Value updated</h1>\n"
-"                    The value of %(path)s has been updated to\n"
-"                    <pre>\n"
-"                    %(value)s\n"
-"                    </pre>\n"
-"                    "
+"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/core/webcherry.py:1817
+#: ../lib/advene/gui/main.py:1120
 #, python-format
 msgid ""
-"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
+"You are now working with the following video:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1860
-msgid "Cannot create an element in something else than a package."
-msgstr ""
+#: ../lib/advene/gui/main.py:1237
+msgid "Open this view..."
+msgstr "Apri questa vista..."
 
-#: ../lib/advene/core/webcherry.py:1877
-#, python-format
-msgid "The identifier %s already exists."
+#: ../lib/advene/gui/main.py:1238 ../lib/advene/gui/plugins/actions.py:286
+#: ../lib/advene/gui/views/viewbook.py:124
+msgid "...in its own window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1889
-#, python-format
-msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
+#: ../lib/advene/gui/main.py:1239 ../lib/advene/gui/plugins/actions.py:287
+#: ../lib/advene/gui/views/viewbook.py:125
+#: ../lib/advene/gui/views/__init__.py:382
+msgid "...embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1895
-msgid "View created"
+#: ../lib/advene/gui/main.py:1240 ../lib/advene/gui/plugins/actions.py:288
+#: ../lib/advene/gui/views/viewbook.py:126
+#: ../lib/advene/gui/views/__init__.py:383
+msgid "...embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1896
-#, python-format
-msgid ""
-"\n"
-"                 <h1>View <em>%(id)s</em> created</h1>\n"
-"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
-"created.</p>\n"
-"                 "
+#: ../lib/advene/gui/main.py:1241 ../lib/advene/gui/plugins/actions.py:289
+#: ../lib/advene/gui/views/viewbook.py:127
+#: ../lib/advene/gui/views/__init__.py:384
+msgid "...embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1912
-#, python-format
-msgid "Missing %s parameter"
+#: ../lib/advene/gui/main.py:1242 ../lib/advene/gui/plugins/actions.py:290
+#: ../lib/advene/gui/views/viewbook.py:128
+#: ../lib/advene/gui/views/__init__.py:385
+msgid "...embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1915
-#, python-format
-msgid "Relation type %s does not exist"
+#: ../lib/advene/gui/main.py:1254
+#, fuzzy
+msgid "_All available views"
+msgstr "Nessun tipo disponibile"
+
+#: ../lib/advene/gui/main.py:1270 ../lib/advene/gui/views/timeline.py:126
+msgid "Timeline"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
-#, python-format
-msgid "Annotation %s does not exist"
+#: ../lib/advene/gui/main.py:1271 ../lib/advene/gui/views/finder.py:771
+msgid "Package finder"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1928
-#, python-format
-msgid ""
-"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
-"p>"
+#: ../lib/advene/gui/main.py:1272
+msgid "Transcription of annotations"
+msgstr "Trascrizione delle annotazioni"
+
+#: ../lib/advene/gui/main.py:1273
+#, fuzzy
+msgid "Annotation table"
+msgstr "Tipo di Annotazione"
+
+#: ../lib/advene/gui/main.py:1276
+msgid "Note-taking editor"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1940
-#, python-format
-msgid ""
-"<p>Error while creating relation between %(member1)s and %(member2)s :</"
-"p><pre>%(error)s</pre>"
+#: ../lib/advene/gui/main.py:1277
+msgid "Active bookmarks"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1943
-msgid "Relation created"
+#: ../lib/advene/gui/main.py:1280 ../lib/advene/gui/views/tagbag.py:57
+msgid "Bag of tags"
+msgstr "Raccolta di tag"
+
+#: ../lib/advene/gui/main.py:1281
+msgid "TALES explorer"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1944
-#, python-format
-msgid "<h1>Relation <em>%s</em> created</h1>"
+#: ../lib/advene/gui/main.py:1282
+msgid "Dynamic montage"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1954
-#, python-format
-msgid "Annotation type %s does not exist"
+#: ../lib/advene/gui/main.py:1283 ../lib/advene/gui/plugins/videoplayer.py:37
+#, fuzzy
+msgid "Video player"
+msgstr "Seleziona un DVD"
+
+#: ../lib/advene/gui/main.py:1286
+msgid "Open a comment view in the web browser"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1971
-#, python-format
+#: ../lib/advene/gui/main.py:1287
+#, fuzzy
+msgid "Create or open a comment view"
+msgstr "Vista statica predefinita"
+
+#: ../lib/advene/gui/main.py:1290
 msgid ""
-"<p>Error while creating annotation of type %(type)s :<pre>\n"
-"                    %(errortype)s\n"
-"                    %(value)s\n"
-"                    %(traceback)s</pre>"
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1983
-#, python-format
-msgid "Annotation %s created"
-msgstr ""
+#: ../lib/advene/gui/main.py:1291
+#, fuzzy
+msgid "Display edition history"
+msgstr "Visualizza cronologia di navigazione"
 
-#: ../lib/advene/core/webcherry.py:1985
-#, python-format
-msgid "Error: Cannot create an object of type %s."
+#: ../lib/advene/gui/main.py:1320
+msgid "The webserver could not be started. Static views cannot be accessed."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:1988
+#: ../lib/advene/gui/main.py:1398
 #, python-format
 msgid ""
-"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
-"code></p>"
+"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
+"released</b> on %(date)s, but you are running version %(current)s.\n"
+"You can download the latest version from the Advene website: http://advene."
+"org/</span>"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2001
-msgid "Available actions"
+#: ../lib/advene/gui/main.py:1403
+msgid "Go to the website"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2010
-#, python-format
-msgid "<li>%(name)s: %(value)s"
+#: ../lib/advene/gui/main.py:1409
+msgid "Advene release"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2033
+#: ../lib/advene/gui/main.py:1415
 #, python-format
-msgid "<p>Unknown action</p><pre>Action: %s</pre>"
+msgid "You are using a up-to-date version of Advene (%(current)s)."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2040
-msgid "Missing parameter(s) :<ul>"
+#: ../lib/advene/gui/main.py:1415
+msgid "Advene is up-to-date"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2076
-msgid "Advene web resources"
+#: ../lib/advene/gui/main.py:1429
+msgid "Choose a color"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2082
-msgid "Advene webserver"
+#: ../lib/advene/gui/main.py:1461
+msgid "Select an annotation to loop on it"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2083
+#: ../lib/advene/gui/main.py:1463
 #, python-format
-msgid ""
-"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
-"webserver run by %(userid)s on %(serveraddress)s.</p>"
+msgid "Looping on %s"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2090
-msgid ""
-" <p>No package is loaded. You can access the <a href=\"/admin\">server "
-"administration page</a>.<p>"
+#: ../lib/advene/gui/main.py:1521 ../lib/advene/gui/main.py:2409
+msgid "No active dynamic view"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2100
-#, python-format
-msgid ""
-"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
-"view</a>"
+#: ../lib/advene/gui/main.py:1532
+msgid "Create a new dynamic view."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2102
-#, python-format
-msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
+#: ../lib/advene/gui/main.py:1551
+msgid "Edit the current dynamic view."
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2104
-msgid "the <a href=\"/packages\">loaded packages' data</a>"
+#: ../lib/advene/gui/main.py:1563
+#, fuzzy
+msgid "No dynamic view"
+msgstr "Vista dinamica"
+
+#: ../lib/advene/gui/main.py:1594
+msgid "Playing rate"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2105
-#, python-format
-msgid ""
-" <p>You can either access %s or the <a href=\"/admin\">server administration "
-"page</a>.<p>"
+#: ../lib/advene/gui/main.py:1742
+msgid "History"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2107
-#, python-format
-msgid ""
-"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
-"fr/advene/\">Advene</a> v. %s.</em></p>"
+#: ../lib/advene/gui/main.py:1749
+msgid "Popups"
 msgstr ""
 
-#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
-#, python-format
-msgid "Cannot start HTTP server: %s"
+#: ../lib/advene/gui/main.py:1753
+msgid ""
+"You can drag and drop view icons (timeline, treeview, transcription...) in "
+"notebooks to embed various views."
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:61
-#, python-format
-msgid "%s exists but is not a directory. Cancelling website export"
+#: ../lib/advene/gui/main.py:1753
+msgid "Information"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:67
-#, python-format
-msgid "%s does not exist"
+#: ../lib/advene/gui/main.py:2046
+msgid "Cannot create annotation. There is no schema to put it in."
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:422
-msgid "Starting export"
-msgstr ""
+#: ../lib/advene/gui/main.py:2055
+#, fuzzy
+msgid "Default annotation type"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/util/website_export.py:451
-#, python-format
-msgid "Depth %d"
-msgstr ""
+#: ../lib/advene/gui/main.py:2067
+#, fuzzy
+msgid "Annotation created"
+msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/util/website_export.py:455
-#, python-format
-msgid "Depth %(depth)d: processing %(url)s"
+#: ../lib/advene/gui/main.py:2099
+msgid "Play/Pause [Control-Tab / Control-Space]"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:477
-msgid "Finalizing"
+#: ../lib/advene/gui/main.py:2100
+#, python-format
+msgid "Rewind (%.02f s) [Control-Left]"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:511
+#: ../lib/advene/gui/main.py:2101
 #, python-format
-msgid ""
-"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
-"strong></p>"
+msgid "Forward (%.02f s) [Control-Right]"
 msgstr ""
 
-#: ../lib/advene/util/website_export.py:554
-msgid "Export complete"
+#: ../lib/advene/gui/main.py:2102
+msgid "Previous frame [Control-Down]"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:134
-msgid "Generic importer"
+#: ../lib/advene/gui/main.py:2103
+msgid "Next frame [Control-Up]"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:161
-msgid "Usage: %prog [options] source-file destination-file"
+#: ../lib/advene/gui/main.py:2104
+msgid "Fullscreen"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:165
-msgid "Specify the offset in ms"
+#: ../lib/advene/gui/main.py:2256
+#, python-format
+msgid "Screenshot saved to %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:210
+#: ../lib/advene/gui/main.py:2258
+#, python-format
 msgid ""
-"Import filter error. The asynchronous API should be used, please report a "
-"bug."
+"Screenshot saved in\n"
+" %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:212
+#: ../lib/advene/gui/main.py:2260
+#, fuzzy, python-format
 msgid ""
-"Import filter error. No conversion method is defined,  please report a bug."
-msgstr ""
-
-#: ../lib/advene/util/importer.py:344
-#, python-format
-msgid "Converted from %s"
-msgstr ""
+"Could not save screenshot:\n"
+" %s"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/util/importer.py:469
+#: ../lib/advene/gui/main.py:2268
 #, fuzzy
-msgid "ExternalApp importer"
-msgstr "Importatore"
+msgid "Save screenshot to..."
+msgstr "Salva contenuto in..."
 
-#: ../lib/advene/util/importer.py:483
-#, 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."
+#: ../lib/advene/gui/main.py:2286
+msgid "Could not take snapshot with enough precision"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:485
-#, python-format
-msgid "The file %s does not seem to exist."
-msgstr ""
+#: ../lib/advene/gui/main.py:2324
+#, fuzzy
+msgid "Export package data"
+msgstr "Nessun pacchetto"
 
-#: ../lib/advene/util/importer.py:507
+#: ../lib/advene/gui/main.py:2326
 #, fuzzy, python-format
-msgid "Could not run %(appname)s: %(msg)s"
-msgstr "Impossibile salvare il file: %s"
+msgid "Export annotation type %s"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/util/importer.py:509
+#: ../lib/advene/gui/main.py:2328
 #, fuzzy, python-format
-msgid "Processing %s"
-msgstr "Modifica %s"
+msgid "Export element %s"
+msgstr "Crea elemento"
 
-#: ../lib/advene/util/importer.py:513
-msgid "Cleaning up..."
+#: ../lib/advene/gui/main.py:2354
+msgid "Export format"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:633
-msgid "Text importer"
+#: ../lib/advene/gui/main.py:2391
+msgid " (modified)"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:646 ../lib/advene/util/importer.py:1176
-msgid "Specify the encoding of the input file (latin1, utf8...)"
+#: ../lib/advene/gui/main.py:2394
+#, python-format
+msgid "Activate %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:649
-msgid "Should the timestamps be encoded relative to the first timestamp?"
+#: ../lib/advene/gui/main.py:2564
+msgid "Saved workspace"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:652
-msgid "Unit to consider for integers"
+#: ../lib/advene/gui/main.py:2616
+msgid "Restoring workspace..."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:655
-msgid ""
-"What timestamps are present in a line (only begin, both begin and end, or "
-"automatic recognition)"
+#: ../lib/advene/gui/main.py:2622
+#, python-format
+msgid "Do you wish to restore the %s workspace ?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:798
-msgid "lsdvd importer"
+#: ../lib/advene/gui/main.py:2627
+msgid "Clear the current workspace"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:825
-msgid "Processing data"
+#: ../lib/advene/gui/main.py:2648
+#, python-format
+msgid "View %s is not an adhoc view"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:843 ../lib/advene/util/importer.py:903
-#, fuzzy
-msgid "DVD Chapter"
-msgstr "Capitolo"
-
-#: ../lib/advene/util/importer.py:847
-msgid "Launching lsdvd..."
+#: ../lib/advene/gui/main.py:2659
+#, python-format
+msgid "Cannot identify the adhoc view %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:859
-msgid "chaplin importer"
+#: ../lib/advene/gui/main.py:2673
+msgid "Choose the annotation type to display as transcription."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:917
-msgid "Xi importer"
+#: ../lib/advene/gui/main.py:2708
+#, python-format
+msgid "Error: unable to find an edit popup for %(element)s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:986
-msgid "ELAN importer"
+#: ../lib/advene/gui/main.py:2715
+#, fuzzy, python-format
+msgid "Editing %s"
+msgstr "Modifica %s"
+
+#: ../lib/advene/gui/main.py:2727
+#, python-format
+msgid "Comment view (%s)"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1039
+#: ../lib/advene/gui/main.py:2794
 #, python-format
-msgid "Converting tier %s"
+msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1140
-msgid "Processing time slots"
+#: ../lib/advene/gui/main.py:2805
+#, python-format
+msgid "Activating package %s"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1155
-msgid "Fixing forward references"
+#: ../lib/advene/gui/main.py:2833
+#, python-format
+msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1157
-msgid "Creating relations"
+#: ../lib/advene/gui/main.py:2865
+msgid "Do you want to restore the saved workspace ?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1169
-msgid "Subtitle (SRT) importer"
+#: ../lib/advene/gui/main.py:2872
+msgid "Advene"
+msgstr "Advene"
+
+#: ../lib/advene/gui/main.py:3077
+#, python-format
+msgid "Got exception %s. Trying to continue."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1238
+#: ../lib/advene/gui/main.py:3101 ../lib/advene/gui/main.py:3122
+#: ../lib/advene/gui/main.py:4072
+#, fuzzy
+msgid "Unknown"
+msgstr "Tutte le annotazioni"
+
+#: ../lib/advene/gui/main.py:3192
 #, python-format
-msgid "Subtitles from %s"
+msgid ""
+"The package(s) %s are modified.\n"
+"Save them now?"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1251
-msgid "PRAAT importer"
+#: ../lib/advene/gui/main.py:3224
+#: ../lib/advene/gui/views/interactivequery.py:375
+msgid "Empty quicksearch string"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1341
-msgid "CMML importer"
+#: ../lib/advene/gui/main.py:3227
+#: ../lib/advene/gui/views/interactivequery.py:280
+#, python-format
+msgid "'%s'"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1404
-msgid "Parsing clip information"
+#: ../lib/advene/gui/main.py:3242
+msgid "Choose an annotation type."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1501
-#: ../lib/advene/plugins/transcriber.py:254
-msgid "Creating package"
+#: ../lib/advene/gui/main.py:3261 ../lib/advene/gui/views/timeline.py:3028
+#: ../lib/advene/gui/edit/transcribe.py:1019
+msgid "Create a new annotation type"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1504
-msgid "Creating CMML schema"
+#: ../lib/advene/gui/main.py:3286
+msgid "No annotation type is defined."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1508
-#: ../lib/advene/plugins/transcriber.py:260
-msgid "Creating annotation types"
+#: ../lib/advene/gui/main.py:3295
+msgid "Creating a new type."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1514
-#: ../lib/advene/plugins/transcriber.py:265
-msgid "Parsing header information"
+#: ../lib/advene/gui/main.py:3299
+msgid "Title of the new type"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1528
-msgid "Parsing stream information"
+#: ../lib/advene/gui/main.py:3300
+msgid ""
+"Id of the new type. It is generated from the title, but you may change it if "
+"necessary."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1562
-msgid "IRI importer"
+#: ../lib/advene/gui/main.py:3304
+msgid "Specify the content-type for the annotation type"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1571
-msgid "Generate one type per view"
+#: ../lib/advene/gui/main.py:3306
+msgid "Content type"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1591
-#, python-format
-msgid "Parsing ensemble %s"
+#: ../lib/advene/gui/main.py:3313 ../lib/advene/gui/main.py:3422
+msgid "Create a new schema"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1602
-#, python-format
-msgid "Parsing decoupage %s"
+#: ../lib/advene/gui/main.py:3326
+msgid "Choose an existing schema for the new type, or create a new one"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1638
-msgid "Parsing views"
+#: ../lib/advene/gui/main.py:3329 ../lib/advene/gui/main.py:3437
+msgid "Specify the schema title"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1686 ../lib/advene/util/importer.py:1775
-msgid "Initializing package"
+#: ../lib/advene/gui/main.py:3333
+msgid "Title of the new schema"
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1724
-msgid "IRIData importer"
+#: ../lib/advene/gui/main.py:3334
+msgid ""
+"Id of the new schema. It is generated from the title, but you may change it "
+"if necessary."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1738
-msgid "Parsing sound values"
+#: ../lib/advene/gui/main.py:3357
+msgid ""
+"You specified a annotation-type identifier that already exists. Aborting."
 msgstr ""
 
-#: ../lib/advene/util/importer.py:1750
-msgid "Creating annotations"
+#: ../lib/advene/gui/main.py:3375
+msgid "You specified a existing schema identifier. Using the existing schema."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:402
-msgid "Package"
+#: ../lib/advene/gui/main.py:3377
+msgid ""
+"You specified an existing identifier that does not reference a schema. "
+"Aborting."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:403
-msgid "Annotation"
+#: ../lib/advene/gui/main.py:3404
+msgid "Choose a schema."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:404
-msgid "Relation"
+#: ../lib/advene/gui/main.py:3464
+msgid "You specified an existing identifier. Aborting."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/edit/schemaeditor.py:111
-#: ../lib/advene/gui/main.py:276 ../lib/advene/gui/main.py:3270
-msgid "Schema"
-msgstr "Schema"
+#: ../lib/advene/gui/main.py:3484
+#, python-format
+msgid "Package %s modified"
+msgstr ""
 
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:279
-msgid "Annotation Type"
-msgstr "Tipo di Annotazione"
+#: ../lib/advene/gui/main.py:3485
+#, python-format
+msgid ""
+"The package %s has been modified but not saved.\n"
+"Save it now?"
+msgstr ""
 
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/main.py:280
-msgid "Relation Type"
+#: ../lib/advene/gui/main.py:3495
+#, python-format
+msgid "%s snapshots"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:408 ../lib/advene/rules/actions.py:236
-#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/gui/main.py:277
-msgid "View"
-msgstr "Visualizza"
+#: ../lib/advene/gui/main.py:3496
+#, python-format
+msgid "Do you want to save the snapshots for media %s?"
+msgstr ""
 
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/main.py:278
-#: ../lib/advene/gui/popup.py:459
-msgid "Query"
-msgstr "Ricerca"
+#: ../lib/advene/gui/main.py:3503 ../lib/advene/gui/main.py:3512
+#: ../lib/advene/gui/main.py:4490
+#, fuzzy, python-format
+msgid "Cannot save imagecache for %(media)s: %(e)s"
+msgstr "Impossibile salvare il file: %s"
 
-#: ../lib/advene/util/helper.py:410
-msgid "Resource Folder"
+#: ../lib/advene/gui/main.py:3526
+msgid "first frame"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:411 ../lib/advene/gui/edit/create.py:122
-msgid "Resource File"
+#: ../lib/advene/gui/main.py:3527
+msgid "last frame"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:446
-msgid "---- Elements ----"
-msgstr ""
+#: ../lib/advene/gui/main.py:3535
+#, fuzzy, python-format
+msgid "Click on %(bound)s of %(annotation)s"
+msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/util/helper.py:452
-msgid "---- Attributes ----"
+#: ../lib/advene/gui/main.py:3538
+#, fuzzy, python-format
+msgid "Update %(bound)s of %(annotation)s"
+msgstr "Trascrizione delle annotazioni"
+
+#: ../lib/advene/gui/main.py:3557
+msgid "Click on the frame corresponding to the timestamp value"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:455
-msgid "---- Methods ----"
+#: ../lib/advene/gui/main.py:3559
+msgid "Set new timestamp value"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:531
-#, python-format
-msgid "Cannot read %(filename)s: %(error)s"
-msgstr ""
-
-#: ../lib/advene/util/helper.py:555
-#, python-format
-msgid ""
-"Error:\n"
-"%s"
-msgstr ""
-
-#: ../lib/advene/util/helper.py:565
-#, python-format
+#: ../lib/advene/gui/main.py:3566
 msgid ""
-"Package %(title)s:\n"
-"%(schema)s\n"
-"%(annotation)s in %(annotation_type)s\n"
-"%(relation)s in %(relation_type)s\n"
-"%(query)s\n"
-"%(view)s\n"
+"<b>Annotation statistics</b>\n"
 "\n"
-"Description:\n"
-"%(description)s\n"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:592
-msgid "Min duration"
-msgstr ""
+#: ../lib/advene/gui/main.py:3638
+#, fuzzy
+msgid "Text annotation"
+msgstr "Tutte le annotazioni"
+
+#: ../lib/advene/gui/main.py:3646 ../lib/advene/gui/main.py:3671
+#, fuzzy
+msgid "Cannot find an appropriate annotation type"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/util/helper.py:593
-msgid "Max duration"
+#: ../lib/advene/gui/main.py:3648 ../lib/advene/gui/views/bookmarks.py:296
+msgid "Comment here"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/gui/main.py:3664
 #, fuzzy
-msgid "Mean duration"
-msgstr "Seleziona un'azione"
+msgid "Graphical annotation"
+msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/util/helper.py:595
-msgid "Total duration"
+#: ../lib/advene/gui/main.py:3716
+msgid ""
+"An unsaved template package exists\n"
+"Save it first."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:601
-msgid "schema"
+#: ../lib/advene/gui/main.py:3725
+msgid "Package modified"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:601
-msgid "schemas"
+#: ../lib/advene/gui/main.py:3726
+msgid ""
+"The package that you want to close has been modified but not saved.\n"
+"Save it now?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotation"
+#: ../lib/advene/gui/main.py:3757
+msgid "Load a package"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:602
-msgid "annotations"
+#: ../lib/advene/gui/main.py:3766
+msgid ""
+"A video file was selected. Pretend that the user selected 'Select a video "
+"file'..."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation type"
+#: ../lib/advene/gui/main.py:3771
+#, 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/util/helper.py:603 ../lib/advene/util/helper.py:604
-msgid "annotation types"
+#: ../lib/advene/gui/main.py:3780
+msgid ""
+"You are trying to load a session file, but there are unsaved packages. "
+"Proceed anyway?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:605
-msgid "relation"
+#: ../lib/advene/gui/main.py:3808 ../lib/advene/gui/main.py:3864
+msgid "Do you want to save the current workspace ?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:605
-msgid "relations"
+#: ../lib/advene/gui/main.py:3823 ../lib/advene/gui/main.py:3879
+#, python-format
+msgid "Could not save the package: %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation type"
+#: ../lib/advene/gui/main.py:3836
+#, python-format
+msgid "Save the package %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:606 ../lib/advene/util/helper.py:607
-msgid "relation types"
+#: ../lib/advene/gui/main.py:3849
+msgid "Invalid file extension"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:608
-msgid "query"
+#: ../lib/advene/gui/main.py:3850
+#, python-format
+msgid ""
+"Your package contains resources,\n"
+"the filename (%s) should have a .azp extension.\n"
+"Should I put the correct extension?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:608
-msgid "queries"
+#: ../lib/advene/gui/main.py:3854
+msgid "OK, the resources will be lost."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
-msgid "view"
+#: ../lib/advene/gui/main.py:3856
+msgid "Aborting package saving"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:609
-msgid "views"
+#: ../lib/advene/gui/main.py:3890
+msgid "Save the session in..."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:610
-msgid "package"
+#: ../lib/advene/gui/main.py:3901
+#, python-format
+msgid "Session saved in %s"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:610
-msgid "packages"
+#: ../lib/advene/gui/main.py:3910
+msgid "Do you confirm the creation of annotations matching the DVD chapters?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:622
-#, python-format
-msgid "No %s"
+#: ../lib/advene/gui/main.py:3916
+msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
 msgstr ""
 
-#: ../lib/advene/util/helper.py:624
-#, python-format
-msgid "1 %s"
+#: ../lib/advene/gui/main.py:3924
+msgid "The associated media is not a DVD."
 msgstr ""
 
-#: ../lib/advene/util/helper.py:626
-#, python-format
-msgid "%(count)d %(plural)s"
-msgstr ""
+#: ../lib/advene/gui/main.py:3935
+#, fuzzy, python-format
+msgid "Processing %s video"
+msgstr "Modifica %s"
 
-#: ../lib/advene/plugins/cinelab.py:76
+#: ../lib/advene/gui/main.py:3938
 #, fuzzy
-msgid "Cinelab importer"
-msgstr "Importatore"
+msgid "No associated video file"
+msgstr "Seleziona un file video"
 
-#: ../lib/advene/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
-#, python-format
-msgid "File %s is not an Advene2 zip package."
+#: ../lib/advene/gui/main.py:3965
+msgid "Standard RuleSet"
 msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:176
-#, fuzzy
-msgid "Converting annotation types"
-msgstr "di un tipo di annotazione"
-
-#: ../lib/advene/plugins/cinelab.py:217
-#, fuzzy
-msgid "Converting views"
-msgstr "Vista statica predefinita"
+#: ../lib/advene/gui/main.py:4081
+#, python-format
+msgid ""
+"Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
+msgstr ""
 
-#: ../lib/advene/plugins/cinelab.py:249
-#: ../lib/advene/plugins/youtubeannotations.py:72
-#, fuzzy
-msgid "Importing annotations"
-msgstr "Tutte le annotazioni"
+#: ../lib/advene/gui/main.py:4096
+msgid "Visit the Advene web site for examples and documentation."
+msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:41
-#, fuzzy
-msgid "ShotdetectApp importer"
-msgstr "Importatore"
+#: ../lib/advene/gui/main.py:4129 ../lib/advene/gui/main.py:4217
+msgid "Select a movie file"
+msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:52
-msgid ""
-"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
-"too many shots are detected, try to increase its value."
+#: ../lib/advene/gui/main.py:4141
+msgid "Title/Chapter selection"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:80
-#: ../lib/advene/plugins/goodshotdetector.py:78
-msgid "Detected shots"
+#: ../lib/advene/gui/main.py:4183
+msgid "Select a video stream"
+msgstr "Seleziona un video stream"
+
+#: ../lib/advene/gui/main.py:4184
+msgid "Enter the address of a video stream"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetectapp.py:140 ../lib/advene/gui/main.py:5130
+#: ../lib/advene/gui/main.py:4188
 #, python-format
-msgid "Detected shot #%(num)d at %(pos)s "
+msgid "Successfully extracted the video stream address (%s) from the url.\n"
 msgstr ""
 
-#: ../lib/advene/plugins/youtubeannotations.py:33
-msgid "Youtube XML annotations importer"
+#: ../lib/advene/gui/main.py:4213
+msgid "Package properties"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:62
-msgid "Input from the braille table."
+#: ../lib/advene/gui/main.py:4214 ../lib/advene/gui/edit/elements.py:514
+#: ../lib/advene/gui/edit/elements.py:563
+#: ../lib/advene/gui/edit/elements.py:650
+#: ../lib/advene/gui/edit/elements.py:730
+#: ../lib/advene/gui/edit/elements.py:787
+#: ../lib/advene/gui/edit/elements.py:879
+#: ../lib/advene/gui/edit/elements.py:948
+#: ../lib/advene/gui/edit/elements.py:1060
+#: ../lib/advene/gui/edit/elements.py:1122
+msgid "Author"
+msgstr "Autore"
+
+#: ../lib/advene/gui/main.py:4214
+msgid "Author name"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:66
-msgid "BrlTTY not installed. There will be no braille support."
+#: ../lib/advene/gui/main.py:4215 ../lib/advene/gui/edit/elements.py:515
+#: ../lib/advene/gui/edit/elements.py:564
+#: ../lib/advene/gui/edit/elements.py:651
+#: ../lib/advene/gui/edit/elements.py:731
+#: ../lib/advene/gui/edit/elements.py:788
+#: ../lib/advene/gui/edit/elements.py:880
+#: ../lib/advene/gui/edit/elements.py:949
+#: ../lib/advene/gui/edit/elements.py:1061
+#: ../lib/advene/gui/edit/elements.py:1123
+msgid "Date"
+msgstr "Data"
+
+#: ../lib/advene/gui/main.py:4215
+msgid "Package creation date"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:78
-msgid "Could not initialize BrlTTY. No braille support."
+#: ../lib/advene/gui/main.py:4216 ../lib/advene/gui/views/table.py:674
+#: ../lib/advene/gui/util/dialog.py:386 ../lib/advene/gui/edit/imports.py:331
+#: ../lib/advene/gui/edit/dvdselect.py:95
+#: ../lib/advene/gui/edit/transcribe.py:1047
+msgid "Title"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:84
-msgid "Display a message in Braille"
+#: ../lib/advene/gui/main.py:4216
+msgid "Package title"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:85
-msgid "Message to display."
+#: ../lib/advene/gui/main.py:4217
+msgid "Associated media"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
-#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
-#: ../lib/advene/rules/actions.py:123 ../lib/advene/gui/plugins/actions.py:44
-#: ../lib/advene/gui/plugins/actions.py:58
-#: ../lib/advene/gui/plugins/actions.py:110
-#: ../lib/advene/gui/plugins/actions.py:399
-#: ../lib/advene/gui/plugins/actions.py:527
-#: ../lib/advene/gui/edit/rules.py:766
-msgid "The annotation content"
+#: ../lib/advene/gui/main.py:4218 ../lib/advene/gui/views/table.py:309
+msgid "Duration"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:240 ../lib/advene/plugins/tts.py:110
-#: ../lib/advene/gui/plugins/actions.py:234
-msgid "Unknown rule"
+#: ../lib/advene/gui/main.py:4218
+msgid "Media duration in ms"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:241 ../lib/advene/plugins/tts.py:111
-#: ../lib/advene/gui/plugins/actions.py:235
-#, python-format
-msgid ""
-"Rule %(rulename)s: Error in the evaluation of the parameter "
-"%(parametername)s:"
+#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/plugins/eventaccumulator.py:143
+msgid "Reset"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:256
-#, python-format
-msgid "BrlTTY connection error: %s"
+#: ../lib/advene/gui/main.py:4275 ../lib/advene/gui/views/timeline.py:3496
+#: ../lib/advene/gui/views/timeline.py:3647
+#: ../lib/advene/gui/views/tagbag.py:64 ../lib/advene/gui/edit/properties.py:51
+#: ../lib/advene/gui/edit/transcribe.py:147
+#: ../lib/advene/gui/edit/transcribe.py:1187
+msgid "Preferences"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:273
-msgid "Braille display: "
+#: ../lib/advene/gui/main.py:4277
+msgid "Paths"
 msgstr ""
 
-#: ../lib/advene/plugins/brltty.py:279
-msgid "No message"
+#: ../lib/advene/gui/main.py:4279
+msgid "Data"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:45
-msgid "Shot detection (Delakis version)"
+#: ../lib/advene/gui/main.py:4279
+msgid "Standard directory for data files"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:60
-msgid "Cache histogram alongside video files."
+#: ../lib/advene/gui/main.py:4280
+msgid "Movie path"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:63
+#: ../lib/advene/gui/main.py:4280
+#, python-format
 msgid ""
-"Parameter profile: safe will detect less cuts, aggressive will detect more "
-"cuts (but more false ones too). default is a compromise."
+"List of directories (separated by %s) to search for movie files (_ means "
+"package directory)"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:77
-#, python-format
-msgid "Shot (%s profile)"
+#: ../lib/advene/gui/main.py:4281
+msgid "Imagecache"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:83
-msgid "Loading histogram"
+#: ../lib/advene/gui/main.py:4281
+msgid "Directory for storing the snapshot cache"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:146
-#, fuzzy
-msgid "Computing hdiff"
-msgstr "Relazioni"
+#: ../lib/advene/gui/main.py:4282
+msgid "Player"
+msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:153
-msgid "Detecting cuts"
+#: ../lib/advene/gui/main.py:4282
+msgid "Directory of the video player"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:180
-msgid "Detecting dissolves"
+#: ../lib/advene/gui/main.py:4283
+msgid "Shotdetect"
 msgstr ""
 
-#: ../lib/advene/plugins/goodshotdetector.py:265
+#: ../lib/advene/gui/main.py:4283
 #, fuzzy
-msgid "Extracting histogram"
-msgstr "Modifica %s"
+msgid "Shotdetect application"
+msgstr "Seleziona un'azione"
 
-#: ../lib/advene/plugins/anvil.py:35
-msgid "Anvil importer"
+#: ../lib/advene/gui/main.py:4285
+msgid "GUI"
 msgstr ""
 
-#: ../lib/advene/plugins/annotationgraph.py:40
-msgid "AnnotationGraph importer"
+#: ../lib/advene/gui/main.py:4286
+msgid "Interface language (after restart)"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:33
-msgid "Final Cut Pro XML importer"
+#: ../lib/advene/gui/main.py:4286
+msgid ""
+"Language used for the interface (necessitates to restart the application)"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:55
-msgid "FCP clipitem"
+#: ../lib/advene/gui/main.py:4287 ../lib/advene/gui/util/initialconfig.py:88
+msgid "System default"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:75
-#, fuzzy
-msgid "Importing subtitles"
-msgstr "_Importa file"
-
-#: ../lib/advene/plugins/fcp.py:90
-msgid "Importing clips"
+#: ../lib/advene/gui/main.py:4292
+msgid "Record activity trace"
 msgstr ""
 
-#: ../lib/advene/plugins/fcp.py:93
-msgid "No clip"
+#: ../lib/advene/gui/main.py:4293
+msgid "Expert mode"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:219
-#, python-format
-msgid "Cannot export to %(fname)s: %(e)s"
+#: ../lib/advene/gui/main.py:4293
+msgid "Offer advanced possibilities"
 msgstr ""
 
-#: ../lib/advene/plugins/tracebuilder.py:1129
-#: ../lib/advene/plugins/tracebuilder.py:1168
-#, fuzzy, python-format
-msgid "Cannot export to %(host)s:%(port)s %(error)s"
-msgstr "Impossibile salvare il file: %s"
-
-#: ../lib/advene/plugins/tracebuilder.py:1143
-#, fuzzy, python-format
-msgid "Cannot send data to %(host)s:%(port)s %(error)s"
-msgstr "Impossibile salvare il file: %s"
-
-#: ../lib/advene/plugins/tracebuilder.py:1191
-#, fuzzy, python-format
-msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
-msgstr "Impossibile salvare il file: %s"
-
-#: ../lib/advene/plugins/tracebuilder.py:1197
-#, python-format
-msgid "%(nb)s events sent to %(host)s:%(port)s during session."
+#: ../lib/advene/gui/main.py:4294
+msgid "Prefer WYSIWYG"
 msgstr ""
 
-#: ../lib/advene/plugins/dcp.py:65
-#, fuzzy
-msgid "DCP importer"
-msgstr "Importatore"
-
-#: ../lib/advene/plugins/dcp.py:120
-#, python-format
-msgid "Converting #%(num)d / %(count)d"
+#: ../lib/advene/gui/main.py:4294
+msgid "Use WYSIWYG editors when possible (HTML, SVG)"
 msgstr ""
 
-#: ../lib/advene/plugins/ttl.py:41
-#, fuzzy
-msgid "TurTLe (RDF) importer"
-msgstr "Importatore"
-
-#: ../lib/advene/plugins/aeidon_import.py:48
-msgid "Aeidon (subtitles) importer"
+#: ../lib/advene/gui/main.py:4295
+msgid "Player control in edit popups"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:47
-#: ../lib/advene/plugins/soundenveloppe.py:143
-#: ../lib/advene/plugins/soundenveloppe.py:145
-msgid "Sound enveloppe"
+#: ../lib/advene/gui/main.py:4295
+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/plugins/soundenveloppe.py:60
-msgid "Interval (in ms) at which to take samples."
+#: ../lib/advene/gui/main.py:4297
+msgid "Open popups"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:63
-msgid "Maximum number of samples per annotation."
+#: ../lib/advene/gui/main.py:4298
+msgid "Where should we open adhoc views?"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:66
-#: ../lib/advene/plugins/cutter.py:56
-msgid "Channel selection."
+#: ../lib/advene/gui/main.py:4299
+msgid "as a popup window"
 msgstr ""
 
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#: ../lib/advene/plugins/pocketsphinx.py:119
-#: ../lib/advene/plugins/barcode.py:58
-#, fuzzy
-msgid "Generating annotations"
-msgstr "Tutte le annotazioni"
-
-#: ../lib/advene/plugins/soundenveloppe.py:115
-#, fuzzy, python-format
-msgid "At %s"
-msgstr "Modifica %s"
-
-#: ../lib/advene/plugins/soundenveloppe.py:162
-#, fuzzy
-msgid "Extracting sound enveloppe"
-msgstr "Modifica %s"
-
-#: ../lib/advene/plugins/cutter.py:39
-msgid "Audio segmentation"
+#: ../lib/advene/gui/main.py:4300
+msgid "embedded east of the video"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:53
-msgid "Volume threshold (in dB, can be negative) before trigger."
+#: ../lib/advene/gui/main.py:4301
+msgid "embedded west of the video"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:101
-#, python-format
-msgid "Detected %(count)d segments until %(time)s"
+#: ../lib/advene/gui/main.py:4302
+msgid "embedded south of the video"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:119
-msgid "Sound segment"
+#: ../lib/advene/gui/main.py:4303
+msgid "embedded at the right of the window"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:120
-#, python-format
-msgid ""
-"Sound segmentation with a threshold of %(threshold)d dB - channel: "
-"%(channel)s"
+#: ../lib/advene/gui/main.py:4306
+msgid "History size"
 msgstr ""
 
-#: ../lib/advene/plugins/cutter.py:138
-msgid "Starting silence detection"
+#: ../lib/advene/gui/main.py:4306
+msgid "History filelist size limit"
 msgstr ""
 
-#: ../lib/advene/plugins/montagerenderer.py:43
-msgid "Cannot register montage renderer: Gnonlin plugins are not present."
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember window size"
 msgstr ""
 
-#: ../lib/advene/plugins/mpeg7.py:54
-msgid "MPEG7 importer"
+#: ../lib/advene/gui/main.py:4308
+msgid "Remember the size of opened windows"
 msgstr ""
 
-#: ../lib/advene/plugins/transcriber.py:40
-msgid "Transcriber importer"
+#: ../lib/advene/gui/main.py:4309
+msgid "Bookmark snapshot width"
 msgstr ""
 
-#: ../lib/advene/plugins/transcriber.py:86
-msgid "Parsing section information"
+#: ../lib/advene/gui/main.py:4309
+msgid "Width of the snapshots representing bookmarks"
 msgstr ""
 
-#: ../lib/advene/plugins/transcriber.py:276
-msgid "Parsing topic and speaker tables information"
+#: ../lib/advene/gui/main.py:4310
+msgid "Bookmark snapshot precision"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:42
-msgid "Feature detection (face...)"
+#: ../lib/advene/gui/main.py:4310
+msgid "Precision (in ms) of the displayed bookmark snapshots."
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:57
-msgid "Sensitivity level."
+#: ../lib/advene/gui/main.py:4312
+msgid "General"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:60
-msgid ""
-"Scale. Original image size will be divided by this factor, in order to speed "
-"up detection."
+#: ../lib/advene/gui/main.py:4313
+msgid "Weekly update check"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:63
-#, fuzzy
-msgid "Classifier"
-msgstr "Classe"
-
-#: ../lib/advene/plugins/featuredetect.py:77
-#, python-format
-msgid "Feature %s"
+#: ../lib/advene/gui/main.py:4313 ../lib/advene/gui/util/initialconfig.py:90
+msgid "Weekly check for updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:79
-#, python-format
-msgid "Detected %s"
+#: ../lib/advene/gui/main.py:4314
+msgid "On exit,"
 msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:81
-#, fuzzy
-msgid "Detection started"
-msgstr "Tempo di reazione"
+#: ../lib/advene/gui/main.py:4315
+msgid "How to handle screenshots on exit"
+msgstr ""
 
-#: ../lib/advene/plugins/featuredetect.py:171
-#, python-format
-msgid "Detected %(count)d feature(s) until %(time)s"
+#: ../lib/advene/gui/main.py:4316
+msgid "never save screenshots"
 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."
+#: ../lib/advene/gui/main.py:4317
+msgid "always save screenshots"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:41
-msgid "Speech recognition (PocketSphinx)"
+#: ../lib/advene/gui/main.py:4318
+msgid "ask before saving screenshots"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:61
-msgid "Filtering noise level [0..1]."
+#: ../lib/advene/gui/main.py:4320
+msgid "Auto-save"
 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."
+#: ../lib/advene/gui/main.py:4321
+msgid "Data auto-save functionality"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:69
-msgid "Use default acoustic and language models."
+#: ../lib/advene/gui/main.py:4322
+msgid "is desactivated"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:73
-msgid "Acoustic model (directory)"
+#: ../lib/advene/gui/main.py:4323
+msgid "is done automatically"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:77
-msgid "Phonetic dictionary (.dic file)"
+#: ../lib/advene/gui/main.py:4324
+msgid "is done after confirmation"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:81
-msgid "Language model (.DMP file)"
+#: ../lib/advene/gui/main.py:4326
+msgid "Auto-save interval (in s)"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:144
-#: ../lib/advene/plugins/barcode.py:83
-#, python-format
-msgid "%(count)d utterances until %(time)s"
+#: ../lib/advene/gui/main.py:4326
+msgid "Interval (in seconds) between package auto-saves"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:153
-msgid "Speech"
+#: ../lib/advene/gui/main.py:4328
+#, fuzzy
+msgid "Workspace"
+msgstr "Vista statica predefinita"
+
+#: ../lib/advene/gui/main.py:4330
+msgid "On package saving,"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:155
-msgid "Recognized speech"
+#: ../lib/advene/gui/main.py:4331
+msgid "Do you wish to save the default workspace with the package?"
 msgstr ""
 
-#: ../lib/advene/plugins/pocketsphinx.py:191
-msgid "Recognizing speech"
+#: ../lib/advene/gui/main.py:4332
+msgid "never save the current workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:36
-msgid "Cannot register barcode extraction: zbar plugin not found."
+#: ../lib/advene/gui/main.py:4333
+msgid "always save the current workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:40
-msgid "Barcode (qr-code) extraction"
+#: ../lib/advene/gui/main.py:4334
+msgid "ask before saving the current workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:95
-msgid "Barcode"
+#: ../lib/advene/gui/main.py:4336
+msgid "Auto-validation of edited elements"
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:97
-msgid "Extracted barcode information"
+#: ../lib/advene/gui/main.py:4336
+msgid "Automatically validate modified elements when saving the package."
 msgstr ""
 
-#: ../lib/advene/plugins/barcode.py:115
+#: ../lib/advene/gui/main.py:4338
 #, fuzzy
-msgid "Extraction barcodes"
-msgstr "Modifica %s"
+msgid "On package load,"
+msgstr "Apri un file pacchetto"
 
-#: ../lib/advene/plugins/nerd_plugin.py:47
-msgid "NERD (Named Entity Recognition and Disambiguation)"
+#: ../lib/advene/gui/main.py:4339
+msgid "Do you wish to load the workspace saved with the package?"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:68
-msgid "NERD API key"
+#: ../lib/advene/gui/main.py:4340
+msgid "never load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:82
-msgid "NER service to use"
+#: ../lib/advene/gui/main.py:4341
+msgid "always load the saved workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:88
-#, fuzzy
-msgid "Type of annotation to analyze"
-msgstr "di un tipo di annotazione"
-
-#: ../lib/advene/plugins/nerd_plugin.py:93
-msgid "Language to analyze"
+#: ../lib/advene/gui/main.py:4342
+msgid "ask before loading the saved workspace"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:98
-msgid "Minimum confidence level (between 0.0 and 1.0)"
-msgstr ""
+#: ../lib/advene/gui/main.py:4345
+#, fuzzy
+msgid "Video Player"
+msgstr "Seleziona un DVD"
 
-#: ../lib/advene/plugins/nerd_plugin.py:103
+#: ../lib/advene/gui/main.py:4346
 #, fuzzy
-msgid "Interpolate position of annotations"
-msgstr "Trascrizione delle annotazioni"
+msgid "Autostart"
+msgstr "Autore"
 
-#: ../lib/advene/plugins/nerd_plugin.py:108
-msgid "Split by entity type"
+#: ../lib/advene/gui/main.py:4346
+msgid ""
+"Automatically start the player when loading a media file (either directly or "
+"through a package)"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:113
-msgid "Store results as markup in the annotation text"
+#: ../lib/advene/gui/main.py:4347
+msgid "Fulscreen timestamp"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:118
-msgid "Create relations between the original annotations and the new ones"
+#: ../lib/advene/gui/main.py:4347
+msgid "Display the timestamp over the video when in fullscreen mode"
 msgstr ""
 
-#: ../lib/advene/plugins/nerd_plugin.py:150
-#, python-format
-msgid "NERD applied to %s"
-msgstr ""
+#: ../lib/advene/gui/main.py:4348
+#, fuzzy
+msgid "Enable captions"
+msgstr "Relazioni"
 
-#: ../lib/advene/plugins/nerd_plugin.py:208
-#, python-format
-msgid "NERD %s"
+#: ../lib/advene/gui/main.py:4348
+msgid "Enable captions over the video"
 msgstr ""
 
-#: ../lib/advene/plugins/ted.py:39
-#, fuzzy
-msgid "TED importer"
-msgstr "Importatore"
-
-#: ../lib/advene/plugins/shotdetect.py:35
-msgid "Shotdetect importer"
+#: ../lib/advene/gui/main.py:4349
+msgid "Caption font"
 msgstr ""
 
-#: ../lib/advene/plugins/shotdetect.py:79
-msgid "No shots"
+#: ../lib/advene/gui/main.py:4349
+msgid "TrueType font for captions"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:77
-msgid "Pronounce a text"
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:78
-msgid "String to pronounce."
+#: ../lib/advene/gui/main.py:4350
+msgid "Enable SVG captions over the video"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:131 ../lib/advene/gui/plugins/actions.py:259
-#: ../lib/advene/gui/plugins/actions.py:340
-#: ../lib/advene/gui/plugins/actions.py:358
-msgid "No message..."
+#: ../lib/advene/gui/main.py:4352
+msgid "Enable snapshots"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:156
-msgid "TTS disabled. Cannot find the application 'festival' in PATH"
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width"
 msgstr ""
 
-#: ../lib/advene/plugins/tts.py:158
-msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
+#: ../lib/advene/gui/main.py:4353
+msgid "Snapshot width in pixels."
 msgstr ""
 
-#: ../lib/advene/player/gstreamer.py:434
-msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity"
 msgstr ""
 
-#: ../lib/advene/rules/importer.py:29
-msgid "Event history importer"
+#: ../lib/advene/gui/main.py:4354
+msgid "Verbosity level. -1 for no messages."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
-#: ../lib/advene/rules/actions.py:120
-msgid "Message to display"
+#: ../lib/advene/gui/main.py:4357
+msgid "Devices"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:48
-msgid "Start the player"
+#: ../lib/advene/gui/main.py:4359
+msgid "Standard"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:49
-msgid "Start position (in ms)"
+#: ../lib/advene/gui/main.py:4361
+msgid "DVD drive"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:52 ../lib/advene/rules/actions.py:384
-msgid "The movie start"
+#: ../lib/advene/gui/main.py:4361
+msgid "Drive letter for the DVD"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
-msgid "The annotation begin"
+#: ../lib/advene/gui/main.py:4362
+msgid "GDI"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
-msgid "The annotation end"
+#: ../lib/advene/gui/main.py:4363
+msgid "Direct X"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:63 ../lib/advene/gui/views/logwindow.py:129
-msgid "Go to the given position"
+#: ../lib/advene/gui/main.py:4365
+msgid "DVD device"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:64
-msgid "Goto position (in ms)"
+#: ../lib/advene/gui/main.py:4365
+msgid "Device for the DVD"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:73
-msgid "Stop the player"
+#: ../lib/advene/gui/main.py:4366
+msgid "X11"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:80
-msgid "Pause the player"
+#: ../lib/advene/gui/main.py:4367
+msgid "XVideo"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:87
-msgid "Resume the player"
+#: ../lib/advene/gui/main.py:4368
+msgid "GL"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:94
-msgid "Take a snapshot"
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:101
-msgid "Display a caption"
+#: ../lib/advene/gui/main.py:4370
+msgid "Video output module"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:103
-msgid "Duration of the caption"
+#: ../lib/advene/gui/main.py:4372
+msgid "Recorder options"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:110 ../lib/advene/rules/actions.py:172
-#: ../lib/advene/gui/plugins/actions.py:61
-#: ../lib/advene/gui/plugins/actions.py:121
-#: ../lib/advene/gui/plugins/actions.py:403
-#: ../lib/advene/gui/plugins/actions.py:538
-msgid "1 second"
+#: ../lib/advene/gui/main.py:4373
+#, fuzzy
+msgid "Audio input"
+msgstr "Aggiungi file..."
+
+#: ../lib/advene/gui/main.py:4373
+msgid "Device name for audio input (with gstrecorder plugin)"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
-#: ../lib/advene/gui/plugins/actions.py:62
-#: ../lib/advene/gui/plugins/actions.py:122
-#: ../lib/advene/gui/plugins/actions.py:404
-#: ../lib/advene/gui/plugins/actions.py:539
-#: ../lib/advene/gui/edit/rules.py:773
-msgid "The annotation duration"
+#: ../lib/advene/gui/main.py:4374
+msgid "Record video"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:119 ../lib/advene/gui/popup.py:718
-msgid "Caption the annotation"
+#: ../lib/advene/gui/main.py:4374
+msgid "Record both video and audio"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:131
-#, fuzzy
-msgid "Display a graphical shape"
-msgstr "Visualizza %s"
+#: ../lib/advene/gui/main.py:4377
+msgid "<i>Experimental</i>"
+msgstr ""
 
-#: ../lib/advene/rules/actions.py:132
-msgid "Shape (square, circle, triangle)"
+#: ../lib/advene/gui/main.py:4378 ../lib/advene/gui/views/scroller.py:29
+msgid "Scroller"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:133
-#: ../lib/advene/gui/edit/shapewidget.py:342
-#: ../lib/advene/gui/edit/elements.py:891
-#: ../lib/advene/gui/edit/elements.py:971
-#: ../lib/advene/gui/edit/elements.py:1085
-#: ../lib/advene/gui/views/tagbag.py:138
-msgid "Color"
-msgstr "Colore"
+#: ../lib/advene/gui/main.py:4378
+msgid "Embed the caption scroller below the video"
+msgstr ""
 
-#: ../lib/advene/rules/actions.py:134
-msgid "x-position (percentage of screen)"
+#: ../lib/advene/gui/main.py:4379 ../lib/advene/gui/views/caption.py:29
+msgid "Caption"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:135
-msgid "y-position (percentage of screen)"
+#: ../lib/advene/gui/main.py:4379
+msgid "Embed the caption view below the video"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:136
-msgid "Size (arbitrary units)"
+#: ../lib/advene/gui/main.py:4381
+msgid "Time-related"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:137
-msgid "Duration of the display in ms"
+#: ../lib/advene/gui/main.py:4382
+msgid "Time format"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:145
-msgid "A square"
+#: ../lib/advene/gui/main.py:4382
+msgid "Format used to display timecodes"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:146
-msgid "A circle"
+#: ../lib/advene/gui/main.py:4396
+msgid "Default FPS"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:147
-msgid "A triangle"
+#: ../lib/advene/gui/main.py:4397
+msgid ""
+"Default FPS (frame-per-second) value, when entering or displaying timestamps "
+"with frame numbers."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:150
-msgid "White"
+#: ../lib/advene/gui/main.py:4398
+msgid "Time increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:151
-msgid "Black"
+#: ../lib/advene/gui/main.py:4398
+msgid ""
+"Skip duration, when using control-left/right or forward/rewind buttons (in "
+"ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:152
-msgid "Red"
+#: ../lib/advene/gui/main.py:4399
+msgid "Second time increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:153
-msgid "Green"
+#: ../lib/advene/gui/main.py:4399
+msgid "Skip duration, when using control-shift-left/right (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:154
-msgid "Blue"
+#: ../lib/advene/gui/main.py:4400
+msgid "Third time increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:155
-msgid "Yellow"
+#: ../lib/advene/gui/main.py:4400
+msgid "Skip duration, when using control-shift-up/down (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:158
-msgid "At the top of the screen"
+#: ../lib/advene/gui/main.py:4401
+msgid "Custom Up/Down"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
-msgid "In the middle of the screen"
+#: ../lib/advene/gui/main.py:4401
+msgid ""
+"Use third time increment for up/down navigation without having to hold shift."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:160
-msgid "At the bottom of the screen"
+#: ../lib/advene/gui/main.py:4403
+msgid "Scroll increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:163
-msgid "At the left of the screen"
+#: ../lib/advene/gui/main.py:4403
+msgid ""
+"On most annotations, control+scrollwheel will increment/decrement their "
+"bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:167
-#: ../lib/advene/gui/edit/transcribe.py:1164
-#: ../lib/advene/gui/views/activebookmarks.py:547
-msgid "Small"
+#: ../lib/advene/gui/main.py:4404
+msgid "Second scroll increment"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:168
-#: ../lib/advene/gui/edit/transcribe.py:1165
-#: ../lib/advene/gui/views/activebookmarks.py:548
-msgid "Normal"
+#: ../lib/advene/gui/main.py:4404
+msgid ""
+"On most annotations, control+shift+scrollwheel will increment/decrement "
+"their bounds by this value (in ms)."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:169
-#: ../lib/advene/gui/edit/transcribe.py:1166
-#: ../lib/advene/gui/views/activebookmarks.py:549
-msgid "Large"
+#: ../lib/advene/gui/main.py:4406
+msgid "Player sync"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:181
-msgid "Zero the volume during the annotation"
+#: ../lib/advene/gui/main.py:4406
+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/rules/actions.py:188
-msgid "Zero the volume"
+#: ../lib/advene/gui/main.py:4407
+msgid "Timeline parameters"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:195
-msgid "Restore the volume"
+#: ../lib/advene/gui/main.py:4408 ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:203
-msgid "Activate a STBV"
+#: ../lib/advene/gui/main.py:4408
+msgid "Font size for annotation widgets"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:204
-msgid "STBV id"
+#: ../lib/advene/gui/main.py:4409
+msgid "Button height"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:213
-msgid "Send a user event"
+#: ../lib/advene/gui/main.py:4409
+msgid "Height of annotation widgets"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:214
-msgid "Identifier"
+#: ../lib/advene/gui/main.py:4410
+msgid "Interline height"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:215
-msgid "Delay in ms before sending the event."
+#: ../lib/advene/gui/main.py:4410
+msgid "Height of interlines"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:225
-msgid "Open a URL in the web browser"
-msgstr ""
+#: ../lib/advene/gui/main.py:4412
+#, fuzzy
+msgid "Text content"
+msgstr "template HTML"
 
-#: ../lib/advene/rules/actions.py:226 ../lib/advene/gui/plugins/actions.py:103
-#: ../lib/advene/gui/views/logwindow.py:159
-msgid "URL"
-msgstr ""
+#: ../lib/advene/gui/main.py:4413
+#, fuzzy
+msgid "Completion mode"
+msgstr "Relazioni"
 
-#: ../lib/advene/rules/actions.py:235
-msgid "Open a static view"
+#: ../lib/advene/gui/main.py:4413
+#, fuzzy
+msgid "Enable dynamic completion mode"
+msgstr "Relazioni"
+
+#: ../lib/advene/gui/main.py:4414
+msgid "Predefined terms only"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:246
-msgid "Set the audio volume"
+#: ../lib/advene/gui/main.py:4414
+msgid "If completion is enabled, complete only with predefined terms."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:247
-msgid "Volume level (from 0 to 100)"
+#: ../lib/advene/gui/main.py:4415
+#, fuzzy
+msgid "Abbreviation mode"
+msgstr "Tempo di reazione"
+
+#: ../lib/advene/gui/main.py:4415
+#, fuzzy
+msgid "Enable abbreviation mode"
+msgstr "Relazioni"
+
+#: ../lib/advene/gui/main.py:4416
+#, fuzzy
+msgid "Abbreviations"
+msgstr "Relazioni"
+
+#: ../lib/advene/gui/main.py:4416
+msgid ""
+"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
+"followed by its replacement."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:256
-msgid "Set the playing rate"
+#: ../lib/advene/gui/main.py:4418
+msgid "Text-To-Speech"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:257
-msgid "Rate (100: normal rate, 200: twice slower)"
+#: ../lib/advene/gui/main.py:4419
+msgid "TTS language"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:266
-msgid "Play a sound resource"
+#: ../lib/advene/gui/main.py:4420
+msgid "What language settings should be used for text-to-speech"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:267
-msgid "Clip id"
+#: ../lib/advene/gui/main.py:4421
+msgid "English"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
-msgid "Volume (0..100)"
+#: ../lib/advene/gui/main.py:4422
+msgid "French"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:269 ../lib/advene/rules/actions.py:283
-msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
+#: ../lib/advene/gui/main.py:4423
+msgid "Spanish"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:280
-#, fuzzy
-msgid "Play a sound file"
-msgstr "Visualizza %s"
+#: ../lib/advene/gui/main.py:4425
+msgid "TTS Encoding"
+msgstr ""
 
-#: ../lib/advene/rules/actions.py:281
-msgid "Sound filename"
+#: ../lib/advene/gui/main.py:4426
+msgid "What encoding should be used to communicate with the TTS engine"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:293
-msgid "Set a state variable"
+#: ../lib/advene/gui/main.py:4427
+msgid "TTS Engine"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
-msgid "State variable name"
+#: ../lib/advene/gui/main.py:4428
+msgid ""
+"Which TTS engine should be used (modification requires restarting Advene to "
+"take into account)"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:295
-msgid "State value"
+#: ../lib/advene/gui/main.py:4429
+#, fuzzy
+msgid "Automatic"
+msgstr "Autore"
+
+#: ../lib/advene/gui/main.py:4430
+msgid "eSpeak"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:305
-msgid "Increment a state variable"
+#: ../lib/advene/gui/main.py:4431
+msgid "Custom script with standard input"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:315
-msgid "Clear all state variables"
+#: ../lib/advene/gui/main.py:4432
+msgid "Custom script with arguments"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:330
-#, python-format
-msgid "Error in the evaluation of the parameter %s:"
+#: ../lib/advene/gui/main.py:4433
+msgid "SAPI"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:389 ../lib/advene/gui/plugins/actions.py:247
-#, python-format
-msgid "The %s-related outgoing annotation"
+#: ../lib/advene/gui/main.py:4434
+msgid "MacOS X say"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:391 ../lib/advene/gui/plugins/actions.py:249
-#, python-format
-msgid "The %s-related incoming annotation"
+#: ../lib/advene/gui/main.py:4435
+msgid "Generic (text output)"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:551
-#, python-format
-msgid "Cannot find the stbv %s"
+#: ../lib/advene/gui/main.py:4479
+msgid "You should restart Advene to take some options into account."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:615 ../lib/advene/gui/views/viewbook.py:263
+#: ../lib/advene/gui/main.py:4488
 #, python-format
-msgid "Cannot find the view %s"
+msgid "Imagecache saved to %s"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:647
-msgid "The set_rate method is unavailable."
+#: ../lib/advene/gui/main.py:4501
+msgid "Restarting player..."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:657
-msgid "No 'soundclips' resource folder in the package"
-msgstr ""
+#: ../lib/advene/gui/main.py:4561
+#, fuzzy
+msgid "Advene log"
+msgstr "Advene"
 
-#: ../lib/advene/rules/actions.py:683
-msgid "Full volume"
+#: ../lib/advene/gui/main.py:4604 ../lib/advene/gui/views/timeline.py:1045
+#: ../lib/advene/rules/elements.py:1000
+msgid "Creation of a new annotation type"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:684
-msgid "Left"
+#: ../lib/advene/gui/main.py:4612 ../lib/advene/gui/views/timeline.py:1074
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:685
-#: ../lib/advene/gui/edit/transcribe.py:1196
-msgid "Center"
+#: ../lib/advene/gui/main.py:4630
+msgid "Select the package to merge"
 msgstr ""
 
-#: ../lib/advene/rules/actions.py:686
-msgid "Right"
+#: ../lib/advene/gui/main.py:4651
+msgid "Saving workspace"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:141
-msgid "is equal to"
+#: ../lib/advene/gui/main.py:4654
+msgid "Enter a view name to save the workspace"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:142
-msgid "is different from"
-msgstr ""
+#: ../lib/advene/gui/main.py:4655
+#, fuzzy
+msgid "Default workspace"
+msgstr "Vista statica predefinita"
 
-#: ../lib/advene/rules/elements.py:143
-msgid "contains"
+#: ../lib/advene/gui/main.py:4656
+msgid "Open this workspace when opening the package"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:144
-msgid "is greater than"
+#: ../lib/advene/gui/main.py:4679 ../lib/advene/gui/views/__init__.py:289
+#, python-format
+msgid "Error: the identifier %s contains invalid characters."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:145
-msgid "is lower than"
+#: ../lib/advene/gui/main.py:4690
+#, python-format
+msgid "Error: the view %s exists and is not a workspace view."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:146
-msgid "matches the regexp"
+#: ../lib/advene/gui/main.py:4721
+#, python-format
+msgid "Cannot save default workspace: %s"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:147
-msgid "is before"
+#: ../lib/advene/gui/main.py:4731
+msgid "Standard workspace has been saved"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:148
-msgid "meets"
+#: ../lib/advene/gui/main.py:4738
+msgid "Website export"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:149
-msgid "overlaps"
+#: ../lib/advene/gui/main.py:4739
+msgid "Exporting views to a website"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:150
-msgid "during"
+#: ../lib/advene/gui/main.py:4742
+#, fuzzy
+msgid "Output directory"
+msgstr "Cartella"
+
+#: ../lib/advene/gui/main.py:4751
+msgid "Specify the output directory"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:151
-msgid "starts"
+#: ../lib/advene/gui/main.py:4760
+msgid "Maximum recursion depth"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:152
-msgid "finishes"
+#: ../lib/advene/gui/main.py:4767
+msgid "Video URL"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:157
-msgid "is not true"
+#: ../lib/advene/gui/main.py:4769
+msgid ""
+"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/rules/elements.py:158
-msgid "is true"
+#: ../lib/advene/gui/main.py:4819
+#, fuzzy
+msgid "Could not export data: "
+msgstr "Impossibile salvare il file: %s"
+
+#: ../lib/advene/gui/main.py:4821
+#, python-format
+msgid "Website export to %s completed"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:162
-msgid "Basic conditions"
+#: ../lib/advene/gui/main.py:4860
+msgid "This video player is not able to grab specific screenshots"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:163
-msgid "Allen relations"
+#: ../lib/advene/gui/main.py:4870
+#, python-format
+msgid "Updating %d snapshots"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
-msgid "Unknown type for overlaps comparison"
+#: ../lib/advene/gui/main.py:4875
+msgid "No snapshot to update"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
-msgid "Unknown type for during comparison"
+#: ../lib/advene/gui/main.py:4884
+msgid "You first must load a movie into Advene"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
+#: ../lib/advene/gui/main.py:4887
 #, python-format
-msgid "Unknown action %s"
+msgid "The movie %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:522
-#, fuzzy, python-format
-msgid "Unknown parameter %s"
-msgstr "Parametro %s"
+#: ../lib/advene/gui/main.py:4943
+msgid "Generating screenshots"
+msgstr ""
 
-#: ../lib/advene/rules/elements.py:527
+#: ../lib/advene/gui/main.py:4948
+msgid ""
+"<b>Screenshot generation</b>\n"
+"\n"
+"Screenshots will be captured approximately every 500ms.\n"
+"\n"
+"If the movie was paused or playing, the capture will begin at the current "
+"position. Else, it will begin at the beginning of the movie.\n"
+"Note that the main interface will not be refreshed as long as this window is "
+"open."
+msgstr ""
+
+#: ../lib/advene/gui/plugins/shotvalidation.py:33
 #, fuzzy
-msgid "Unknown actions"
-msgstr "Tutte le annotazioni"
+msgid "Shot validation view"
+msgstr "Seleziona un'azione"
 
-#: ../lib/advene/rules/elements.py:972
-msgid "Start of the editing of an element"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:35
+#, fuzzy
+msgid "Display shot validation interface"
+msgstr "Visualizza cronologia di navigazione"
 
-#: ../lib/advene/rules/elements.py:973
-msgid "Cancel of the editing of an element"
+#: ../lib/advene/gui/plugins/shotvalidation.py:112
+#, python-format
+msgid "Merged #%(first)d-#%(second)d into #%(first)d"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:974
-msgid "Destruction of the edit window of an element"
+#: ../lib/advene/gui/plugins/shotvalidation.py:137
+msgid "Last action undone"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:975
-msgid "Validation of the editing of an element"
+#: ../lib/advene/gui/plugins/shotvalidation.py:155
+#, python-format
+msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:976
-msgid "Ending editing of a package"
+#: ../lib/advene/gui/plugins/shotvalidation.py:160
+#, python-format
+msgid "Cannot split annotation #%(current)d: out of bounds."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:977
-msgid "Beginning of an annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:180
+#, python-format
+msgid "Changed cut between #%(first)d and %(second)d"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:978
-msgid "End of an annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:183
+msgid "Changed begin time for first annotation"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:979
-msgid "Creation of a new annotation"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:189
+#, fuzzy
+msgid "No annotations to adjust"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/rules/elements.py:980
-msgid "Ending editing of an annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:196
+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/rules/elements.py:981
-msgid "Suppression of an annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:204
+#, python-format
+msgid "Begin of #%(index)d (title: %(content)s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:982
-msgid "Activation of an annotation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
+msgid "< Previous cut"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:983
-msgid "Deactivation of an annotation"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:219
+#, fuzzy
+msgid "Display previous cut"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/rules/elements.py:984
-msgid "Merging of two annotations"
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
+msgid "Next cut >"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:985
+#: ../lib/advene/gui/plugins/shotvalidation.py:227
 #, fuzzy
-msgid "Moving an annotation"
-msgstr "di un tipo di annotazione"
+msgid "Display next cut"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/rules/elements.py:986
-msgid "Activation of a relation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
+#: ../lib/advene/gui/views/annotationdisplay.py:92
+#: ../lib/advene/gui/views/timeline.py:86
+msgid "Current time"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:987
-msgid "Deactivation of a relation"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#, fuzzy
+msgid "Go to annotation containing current player time."
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/rules/elements.py:988
-msgid "Creation of a new relation"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
+#: ../lib/advene/gui/edit/frameselector.py:197
+#, fuzzy
+msgid "Refresh snapshots"
+msgstr "Visualizza %s"
 
-#: ../lib/advene/rules/elements.py:989
-msgid "Ending editing of a relation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:258
+#: ../lib/advene/gui/edit/frameselector.py:198
+msgid "Refresh missing snapshots"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:990
-msgid "Suppression of a relation"
+#: ../lib/advene/gui/plugins/shotvalidation.py:263
+msgid "Undo last modification"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:991
-msgid "Creation of a new view"
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
+msgid "Merge with previous"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:992
-msgid "Ending editing of a view"
+#: ../lib/advene/gui/plugins/shotvalidation.py:270
+msgid "Merge with previous annotation, i.e. remove this bound."
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:993
-msgid "Suppression of a view"
-msgstr ""
+#: ../lib/advene/gui/plugins/shotvalidation.py:275
+#, fuzzy
+msgid "Close view."
+msgstr "Scegliere un file"
 
-#: ../lib/advene/rules/elements.py:994
-msgid "Creation of a new query"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:44
+msgid "Activity trace"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:995
-msgid "Ending editing of a query"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:74
+#: ../lib/advene/gui/plugins/eventaccumulator.py:75
+#: ../lib/advene/gui/plugins/tracetimeline.py:65
+#: ../lib/advene/gui/plugins/tracetimeline.py:66
+#: ../lib/advene/gui/plugins/tracepreview.py:73
+#: ../lib/advene/gui/plugins/tracepreview.py:74
+msgid "Beginning edition"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:996
-msgid "Suppression of a query"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:76
+#: ../lib/advene/gui/plugins/eventaccumulator.py:77
+#: ../lib/advene/gui/plugins/eventaccumulator.py:78
+#: ../lib/advene/gui/plugins/tracetimeline.py:67
+#: ../lib/advene/gui/plugins/tracetimeline.py:68
+#: ../lib/advene/gui/plugins/tracetimeline.py:69
+#: ../lib/advene/gui/plugins/tracepreview.py:75
+#: ../lib/advene/gui/plugins/tracepreview.py:76
+#: ../lib/advene/gui/plugins/tracepreview.py:77
+msgid "Canceling edition"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:997
-msgid "Creation of a new schema"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:79
+#: ../lib/advene/gui/plugins/tracetimeline.py:70
+#: ../lib/advene/gui/plugins/tracepreview.py:78
+msgid "Ending edition"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:998
-msgid "Ending editing of a schema"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:135
+msgid " Trace : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:999
-msgid "Suppression of a schema"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:139
+#, fuzzy
+msgid " Filters"
+msgstr "_File"
 
-#: ../lib/advene/rules/elements.py:1000
-#: ../lib/advene/gui/views/timeline.py:1029 ../lib/advene/gui/main.py:4555
-msgid "Creation of a new annotation type"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:168
+msgid " Time : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1001
-msgid "Ending editing an annotation type"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:178
+msgid " Max. : "
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1002
-msgid "Suppression of an annotation type"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:187
+#, fuzzy
+msgid "Export"
+msgstr "Importatore"
 
-#: ../lib/advene/rules/elements.py:1003
-msgid "Creation of a new relation type"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:203
+#: ../lib/advene/gui/plugins/tracetimeline.py:665
+msgid "Exporting traces"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1004
-msgid "Ending editing a relation type"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:208
+#: ../lib/advene/gui/plugins/tracetimeline.py:670
+#, python-format
+msgid ""
+"Export done to\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1005
-msgid "Suppression of a relation type"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:254
+#, fuzzy
+msgid "Defining Filters"
+msgstr "_File"
 
-#: ../lib/advene/rules/elements.py:1006
-msgid "Creation of a new resource"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:560
+#: ../lib/advene/gui/plugins/eventaccumulator.py:615
+#: ../lib/advene/gui/plugins/tracepreview.py:215
+#, fuzzy, python-format
+msgid "of an annotation (%s)"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/rules/elements.py:1007
-msgid "Ending editing of a resource"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:562
+#: ../lib/advene/gui/plugins/eventaccumulator.py:617
+#: ../lib/advene/gui/plugins/tracepreview.py:217
+#, fuzzy, python-format
+msgid "of a relation (%s)"
+msgstr "Relazioni"
 
-#: ../lib/advene/rules/elements.py:1008
-msgid "Suppression of a resource"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:564
+#: ../lib/advene/gui/plugins/eventaccumulator.py:619
+#: ../lib/advene/gui/plugins/tracepreview.py:219
+#, fuzzy, python-format
+msgid "of an annotation type (%s)"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/rules/elements.py:1009
-msgid "Modification of the tag"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:566
+#: ../lib/advene/gui/plugins/eventaccumulator.py:621
+#: ../lib/advene/gui/plugins/tracepreview.py:221
+#, fuzzy, python-format
+msgid "of a relation type (%s)"
+msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/rules/elements.py:1010
-msgid "Activating a link"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:568
+#: ../lib/advene/gui/plugins/eventaccumulator.py:623
+#: ../lib/advene/gui/plugins/tracepreview.py:223
+#, fuzzy, python-format
+msgid "of a schema (%s)"
+msgstr "Schemi"
 
-#: ../lib/advene/rules/elements.py:1011
-msgid "Player start"
+#: ../lib/advene/gui/plugins/eventaccumulator.py:570
+#: ../lib/advene/gui/plugins/eventaccumulator.py:625
+#: ../lib/advene/gui/plugins/tracepreview.py:225
+#, python-format
+msgid "of a view (%s)"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1012
-msgid "Player stop"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:572
+#: ../lib/advene/gui/plugins/eventaccumulator.py:627
+#: ../lib/advene/gui/plugins/tracepreview.py:227
+#, fuzzy, python-format
+msgid "of a package (%s)"
+msgstr "Pacchetto %s"
 
-#: ../lib/advene/rules/elements.py:1013
-msgid "Player pause"
-msgstr ""
+#: ../lib/advene/gui/plugins/eventaccumulator.py:574
+#: ../lib/advene/gui/plugins/eventaccumulator.py:629
+#: ../lib/advene/gui/plugins/tracepreview.py:229
+#, fuzzy, python-format
+msgid "of an unknown item (%s)"
+msgstr "Parametro %s"
 
-#: ../lib/advene/rules/elements.py:1014
-msgid "Player resume"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:380
+#, python-format
+msgid "Rendering type %(type)s as %(presentation)s"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1015
-msgid "Going to a given position"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
+msgid "Snapshot only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1016
-msgid "Loading a new package"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
+msgid "Overlayed snapshot only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1017
-msgid "Activating a package"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
+msgid "Timestamp only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1018
-msgid "Saving the package"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:528
+msgid "Snapshot+timestamp"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1019
-msgid "Start of the dynamic view"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:529
+#, fuzzy
+msgid "Annotation content"
+msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/rules/elements.py:1020
-msgid "End of the dynamic view"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:544
+msgid "as a list"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1021
-msgid "Start of the application"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:545
+msgid "as a grid"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1022
-msgid "End of the application"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:546
+msgid "as a table"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1023
-msgid "User-defined event"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:547
+#: ../lib/advene/gui/views/viewbook.py:379
+msgid "as a transcription"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1024
-msgid "Modification of the associated media"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/views/transcription.py:461
+#, python-format
+msgid "Annotation %s"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1025
-msgid "Highlight a bookmark"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:685
+msgid "Play video"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1026
-msgid "Unhighlight a bookmark"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
+msgid "Show timestamp only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1027
-msgid "Updating duration of the movie"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
+#, fuzzy
+msgid "Show content only"
+msgstr "Salva contenuto in..."
 
-#: ../lib/advene/rules/elements.py:1028
-msgid "Displaying a popup"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:669
+msgid "Show snapshot only"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1029
-msgid "Updating a snapshot"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
+msgid "Show overlayed timestamp"
 msgstr ""
 
-#: ../lib/advene/rules/elements.py:1067
-msgid "Player control"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#, fuzzy
+msgid "Show overlayed content"
+msgstr "Elementi cercati"
 
-#: ../lib/advene/rules/elements.py:1068
-msgid "Audio enrichment"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#, fuzzy, python-format
+msgid "Annotation type %s"
+msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/rules/elements.py:1069
-msgid "Image enrichment"
-msgstr ""
-
-#: ../lib/advene/rules/elements.py:1070
-msgid "External display control"
-msgstr ""
-
-#: ../lib/advene/rules/elements.py:1071
-msgid "Popup"
-msgstr ""
-
-#: ../lib/advene/rules/elements.py:1073
-msgid "State"
-msgstr ""
-
-#: ../lib/advene/rules/elements.py:1074
-msgid "GUI actions"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:675
+#, fuzzy
+msgid "display as list"
+msgstr "Visualizza cronologia di navigazione"
 
-#: ../lib/advene/rules/elements.py:1075
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:676
 #, fuzzy
-msgid "Expert"
-msgstr "Relazioni"
+msgid "display as grid"
+msgstr "Visualizza cronologia di navigazione"
 
-#: ../lib/advene/gui/util/initialconfig.py:82
-msgid "Initial Advene configuration"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:677
+#, fuzzy
+msgid "display as table"
+msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/util/initialconfig.py:83
-msgid ""
-"<span size='large'><b>Welcome in Advene</b>\n"
-"This is the first time that you run Advene. Please answer some basic "
-"configuration questions. You will be able to modify these choices from the "
-"Advene interface, in the Edit/Preferences menu.</span>"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:678
+#, fuzzy
+msgid "display as transcription"
+msgstr "Visualizza le annotazione come una trascrizione"
 
-#: ../lib/advene/gui/util/initialconfig.py:84
-msgid "Interface language"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:687
+#, fuzzy
+msgid "Open link"
+msgstr "Apri"
 
-#: ../lib/advene/gui/util/initialconfig.py:84
-msgid "Language used for the interface"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:743
+#, python-format
+msgid "HTML editor: cannot parse content (%s)"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:88 ../lib/advene/gui/main.py:4247
-msgid "System default"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#, fuzzy, python-format
+msgid "Heading %d"
+msgstr "Modifica %s"
 
-#: ../lib/advene/gui/util/initialconfig.py:90
-msgid "Weekly check for Advene updates on the Advene website"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
+msgid "Bold"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:90 ../lib/advene/gui/main.py:4273
-msgid "Weekly check for updates on the Advene website"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:786
+msgid "Italic"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for data files"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
+msgid "Header"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:92
-msgid "Preferred directory for storing data files (Advene packages)"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+msgid "Copy"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:94
-msgid "Directories to search for movies"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:790
+msgid "Cut"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:94
-#, python-format
-msgid ""
-"List of directories (separated by %(pathsep)s) to search for movie files."
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
+#, fuzzy
+msgid "Paste"
+msgstr "Data"
 
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid "First look for movie file in the same directory as the package"
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:793
+#: ../lib/advene/gui/views/timeline.py:139
+msgid "Refresh"
 msgstr ""
 
-#: ../lib/advene/gui/util/initialconfig.py:95
-msgid ""
-"If checked, the movie file will be searched for in the same directory as the "
-"referencing package."
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:849
+msgid "WYSIWYG editor"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:39
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
-#: ../lib/advene/gui/edit/create.py:106
-msgid "Plain text content"
-msgstr ""
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:859
+#, fuzzy
+msgid "Edit HTML source"
+msgstr "Modifica %s"
 
-#: ../lib/advene/gui/util/__init__.py:40
+#: ../lib/advene/gui/plugins/tracetimeline.py:71
+#: ../lib/advene/gui/plugins/tracepreview.py:79
 #, fuzzy
-msgid "HTML content"
-msgstr "template HTML"
+msgid "Moving to"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/util/__init__.py:41
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
-#: ../lib/advene/gui/edit/create.py:107
-msgid "Simple-structured content"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracetimeline.py:87
+#, fuzzy
+msgid "Traces"
+msgstr "Tag"
 
-#: ../lib/advene/gui/util/__init__.py:42
-msgid "List of numeric values"
+#: ../lib/advene/gui/plugins/tracetimeline.py:213
+#, python-format
+msgid "%(name)s (%(index)d)"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:43
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
-#: ../lib/advene/gui/edit/create.py:108
-msgid "SVG graphics content"
+#: ../lib/advene/gui/plugins/tracetimeline.py:241
+msgid "Search"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:459
+#: ../lib/advene/gui/plugins/tracetimeline.py:254
+#: ../lib/advene/gui/plugins/tracetimeline.py:1219
 #, python-format
-msgid ""
-"Annotation Type %(title)s:\n"
-"%(count)s"
+msgid "%(name)s (%(index)s)"
 msgstr ""
 
-#: ../lib/advene/gui/util/__init__.py:465
-#, python-format
-msgid ""
-"Relation Type %(title)s:\n"
-"%(count)s"
+#: ../lib/advene/gui/plugins/tracetimeline.py:426
+#: ../lib/advene/gui/views/timeline.py:3457
+#: ../lib/advene/gui/edit/montage.py:446
+msgid "Zoom out"
 msgstr ""
 
-#: ../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
-#: ../lib/advene/gui/views/table.py:557 ../lib/advene/gui/main.py:4176
-msgid "Title"
+#: ../lib/advene/gui/plugins/tracetimeline.py:431
+#: ../lib/advene/gui/views/timeline.py:3462
+#: ../lib/advene/gui/edit/montage.py:451
+msgid "Zoom in"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/rules.py:1092
-#: ../lib/advene/gui/edit/imports.py:325
-#: ../lib/advene/gui/edit/elements.py:507
-#: ../lib/advene/gui/edit/elements.py:556
-#: ../lib/advene/gui/edit/elements.py:644
-#: ../lib/advene/gui/edit/elements.py:724
-#: ../lib/advene/gui/edit/elements.py:873
-#: ../lib/advene/gui/edit/elements.py:942
-#: ../lib/advene/gui/edit/elements.py:1054
-#: ../lib/advene/gui/edit/elements.py:1115
-#: ../lib/advene/gui/views/table.py:255 ../lib/advene/gui/views/table.py:559
-msgid "Id"
+#: ../lib/advene/gui/plugins/tracetimeline.py:436
+msgid "Zoom 100%"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:404 ../lib/advene/gui/util/dialog.py:443
-msgid "Name the element"
+#: ../lib/advene/gui/plugins/tracetimeline.py:440
+msgid "Toggle links lock"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:407 ../lib/advene/gui/util/dialog.py:444
-msgid "Choose a name for the element"
+#: ../lib/advene/gui/plugins/tracetimeline.py:448
+msgid "Toggle link mode"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:482
-msgid "Open a file"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracetimeline.py:455
+#, fuzzy
+msgid "Open a trace file"
+msgstr "Apri un file pacchetto"
 
-#: ../lib/advene/gui/util/dialog.py:507 ../lib/advene/gui/util/dialog.py:543
-msgid "N/C"
+#: ../lib/advene/gui/plugins/tracetimeline.py:470
+msgid "Toggle auto refresh"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:512
-msgid "Alias"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracetimeline.py:481
+#, fuzzy
+msgid "Open an existing trace"
+msgstr "Apri un file pacchetto"
 
-#: ../lib/advene/gui/util/dialog.py:532
-msgid ""
-"Press to\n"
-"display\n"
-"information"
+#: ../lib/advene/gui/plugins/tracetimeline.py:487
+msgid "Save trace"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:551
-msgid "Wait..."
+#: ../lib/advene/gui/plugins/tracetimeline.py:492
+msgid "Configuration"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:555
-#, python-format
-msgid "Error: %s"
+#: ../lib/advene/gui/plugins/tracetimeline.py:946
+msgid "Zoom and center on linked items"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:575
-msgid "Any type of file"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracetimeline.py:955
+#, fuzzy
+msgid "Edit item"
+msgstr "_Modifica"
 
-#: ../lib/advene/gui/util/dialog.py:577
-msgid "Advene files (.xml, .azp, .apl)"
+#: ../lib/advene/gui/plugins/tracetimeline.py:959
+msgid "Recreate item"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:579
-msgid "Advene session (.apl)"
+#: ../lib/advene/gui/plugins/tracetimeline.py:975
+#: ../lib/advene/gui/plugins/tracetimeline.py:996
+#: ../lib/advene/gui/views/timeline.py:2584 ../lib/advene/gui/popup.py:513
+#: ../lib/advene/gui/edit/transcribe.py:500
+msgid "Go to..."
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:580
+#: ../lib/advene/gui/plugins/tracetimeline.py:979
 #, fuzzy
-msgid "Audio files"
-msgstr "Aggiungi file..."
+msgid "Zoom on action"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/util/dialog.py:581
-msgid "Video files"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2023
+#: ../lib/advene/gui/views/timeline.py:3331
+#: ../lib/advene/gui/edit/montage.py:541
+msgid "Inspector"
 msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:626
-#: ../lib/advene/gui/edit/properties.py:418
-msgid "Choose a directory"
-msgstr "Scegliere una cartella"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2028
+msgid "Item Id"
+msgstr ""
 
-#: ../lib/advene/gui/util/dialog.py:679
-msgid "Select an element"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2031
+msgid "Item name or class"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:32
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
 #, fuzzy
-msgid "Shot validation view"
-msgstr "Seleziona un'azione"
+msgid "Type or schema"
+msgstr "Schema"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:34
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
 #, fuzzy
-msgid "Display shot validation interface"
-msgstr "Visualizza cronologia di navigazione"
+msgid "Operations"
+msgstr "Relazioni"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:111
-#, python-format
-msgid "Merged #%(first)d-#%(second)d into #%(first)d"
+#: ../lib/advene/gui/plugins/tracetimeline.py:2081
+msgid "Comment"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:136
-msgid "Last action undone"
-msgstr ""
+#: ../lib/advene/gui/plugins/tracetimeline.py:2113
+#: ../lib/advene/gui/edit/merge.py:191
+msgid "Action"
+msgstr "Azione"
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:154
-#, python-format
-msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
+#: ../lib/advene/gui/plugins/logmessages.py:35
+msgid "Log Messages"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:159
-#, python-format
-msgid "Cannot split annotation #%(current)d: out of bounds."
+#: ../lib/advene/gui/plugins/actions.py:40 ../lib/advene/core/controller.py:277
+#: ../lib/advene/rules/actions.py:36
+msgid "Display a message"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
-#, python-format
-msgid "Changed cut between #%(first)d and %(second)d"
+#: ../lib/advene/gui/plugins/actions.py:41
+#: ../lib/advene/gui/plugins/actions.py:53
+#: ../lib/advene/gui/plugins/actions.py:71
+#: ../lib/advene/gui/plugins/actions.py:86
+#: ../lib/advene/gui/plugins/actions.py:102
+#: ../lib/advene/gui/plugins/actions.py:203
+#: ../lib/advene/core/controller.py:278
+msgid "String to display."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:182
-msgid "Changed begin time for first annotation"
+#: ../lib/advene/gui/plugins/actions.py:44
+#: ../lib/advene/gui/plugins/actions.py:58
+#: ../lib/advene/gui/plugins/actions.py:110
+#: ../lib/advene/gui/plugins/actions.py:399
+#: ../lib/advene/gui/plugins/actions.py:527 ../lib/advene/gui/edit/rules.py:770
+#: ../lib/advene/plugins/brltty.py:88 ../lib/advene/plugins/tts.py:81
+#: ../lib/advene/rules/actions.py:40 ../lib/advene/rules/actions.py:107
+#: ../lib/advene/rules/actions.py:123
+msgid "The annotation content"
 msgstr ""
 
-#: ../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: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."
+#: ../lib/advene/gui/plugins/actions.py:52
+msgid "Display a popup"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:203
-#, python-format
-msgid "Begin of #%(index)d (title: %(content)s)"
+#: ../lib/advene/gui/plugins/actions.py:54
+#: ../lib/advene/gui/plugins/actions.py:73
+#: ../lib/advene/gui/plugins/actions.py:88
+#: ../lib/advene/gui/plugins/actions.py:104
+#: ../lib/advene/gui/plugins/actions.py:160
+#: ../lib/advene/gui/plugins/actions.py:184
+msgid "Display duration in ms. Ignored if empty."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:217
-msgid "< Previous cut"
+#: ../lib/advene/gui/plugins/actions.py:61
+#: ../lib/advene/gui/plugins/actions.py:121
+#: ../lib/advene/gui/plugins/actions.py:403
+#: ../lib/advene/gui/plugins/actions.py:538 ../lib/advene/rules/actions.py:110
+#: ../lib/advene/rules/actions.py:172
+msgid "1 second"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:218
-#, fuzzy
-msgid "Display previous cut"
-msgstr "Tutte le annotazioni"
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:225
-msgid "Next cut >"
+#: ../lib/advene/gui/plugins/actions.py:62
+#: ../lib/advene/gui/plugins/actions.py:122
+#: ../lib/advene/gui/plugins/actions.py:404
+#: ../lib/advene/gui/plugins/actions.py:539 ../lib/advene/gui/edit/rules.py:777
+#: ../lib/advene/rules/actions.py:111 ../lib/advene/rules/actions.py:173
+msgid "The annotation duration"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:226
-#, fuzzy
-msgid "Display next cut"
-msgstr "Tutte le annotazioni"
+#: ../lib/advene/gui/plugins/actions.py:70
+msgid "Popup an entry box"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/shotvalidation.py:251
-#: ../lib/advene/gui/views/timeline.py:81
-#: ../lib/advene/gui/views/annotationdisplay.py:90
-msgid "Current time"
-msgstr ""
-
-#: ../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:256
-#: ../lib/advene/gui/edit/frameselector.py:193
-#, fuzzy
-msgid "Refresh snapshots"
-msgstr "Visualizza %s"
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:257
-#: ../lib/advene/gui/edit/frameselector.py:194
-msgid "Refresh missing snapshots"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:261
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:806
-#: ../lib/advene/gui/edit/transcribe.py:1211 ../lib/advene/gui/main.py:350
-msgid "Undo"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:262
-msgid "Undo last modification"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:268
-msgid "Merge with previous"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:269
-msgid "Merge with previous annotation, i.e. remove this bound."
-msgstr ""
-
-#: ../lib/advene/gui/plugins/shotvalidation.py:274
-#, fuzzy
-msgid "Close view."
-msgstr "Scegliere un file"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:60
-#: ../lib/advene/gui/plugins/tracetimeline.py:61
-#: ../lib/advene/gui/plugins/eventaccumulator.py:73
-#: ../lib/advene/gui/plugins/eventaccumulator.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:72
-#: ../lib/advene/gui/plugins/tracepreview.py:73
-msgid "Beginning edition"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:62
-#: ../lib/advene/gui/plugins/tracetimeline.py:63
-#: ../lib/advene/gui/plugins/tracetimeline.py:64
-#: ../lib/advene/gui/plugins/eventaccumulator.py:75
-#: ../lib/advene/gui/plugins/eventaccumulator.py:76
-#: ../lib/advene/gui/plugins/eventaccumulator.py:77
-#: ../lib/advene/gui/plugins/tracepreview.py:74
-#: ../lib/advene/gui/plugins/tracepreview.py:75
-#: ../lib/advene/gui/plugins/tracepreview.py:76
-msgid "Canceling edition"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:65
-#: ../lib/advene/gui/plugins/eventaccumulator.py:78
-#: ../lib/advene/gui/plugins/tracepreview.py:77
-msgid "Ending edition"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:66
-#: ../lib/advene/gui/plugins/tracepreview.py:78
-#, fuzzy
-msgid "Moving to"
-msgstr "di un tipo di annotazione"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:82
-#, fuzzy
-msgid "Traces"
-msgstr "Tag"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:208
-#, python-format
-msgid "%(name)s (%(index)d)"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:236
-msgid "Search"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1224
-#, python-format
-msgid "%(name)s (%(index)s)"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:421
-#: ../lib/advene/gui/edit/montage.py:439
-#: ../lib/advene/gui/views/timeline.py:3444
-msgid "Zoom out"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:426
-#: ../lib/advene/gui/edit/montage.py:444
-#: ../lib/advene/gui/views/timeline.py:3449
-msgid "Zoom in"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:431
-msgid "Zoom 100%"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:435
-msgid "Toggle links lock"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:443
-msgid "Toggle link mode"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:450
-#, fuzzy
-msgid "Open a trace file"
-msgstr "Apri un file pacchetto"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:465
-msgid "Toggle auto refresh"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:476
-#, fuzzy
-msgid "Open an existing trace"
-msgstr "Apri un file pacchetto"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:482
-msgid "Save trace"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:487
-msgid "Configuration"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:668
-#: ../lib/advene/gui/plugins/eventaccumulator.py:202
-msgid "Exporting traces"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:673
-#: ../lib/advene/gui/plugins/eventaccumulator.py:207
-#, python-format
-msgid ""
-"Export done to\n"
-"%s"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:951
-msgid "Zoom and center on linked items"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:960
-#, fuzzy
-msgid "Edit item"
-msgstr "_Modifica"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:964
-msgid "Recreate item"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:980
-#: ../lib/advene/gui/plugins/tracetimeline.py:1001
-#: ../lib/advene/gui/edit/transcribe.py:502
-#: ../lib/advene/gui/views/timeline.py:2556 ../lib/advene/gui/popup.py:513
-msgid "Go to..."
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:984
-#, fuzzy
-msgid "Zoom on action"
-msgstr "Tutte le annotazioni"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
-#: ../lib/advene/gui/edit/montage.py:535
-#: ../lib/advene/gui/views/timeline.py:3318
-msgid "Inspector"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2035
-msgid "Item Id"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2038
-msgid "Item name or class"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2042
-#, fuzzy
-msgid "Type or schema"
-msgstr "Schema"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2045
-#, fuzzy
-msgid "Operations"
-msgstr "Relazioni"
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2087
-msgid "Comment"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/tracetimeline.py:2119
-#: ../lib/advene/gui/edit/merge.py:191
-msgid "Action"
-msgstr "Azione"
-
-#: ../lib/advene/gui/plugins/kinect.py:41
-msgid "Kinect Controller"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/kinect.py:43
-msgid "Kinect control interface"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/actions.py:52
-msgid "Display a popup"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/actions.py:54
-#: ../lib/advene/gui/plugins/actions.py:73
-#: ../lib/advene/gui/plugins/actions.py:88
-#: ../lib/advene/gui/plugins/actions.py:104
-#: ../lib/advene/gui/plugins/actions.py:160
-#: ../lib/advene/gui/plugins/actions.py:184
-msgid "Display duration in ms. Ignored if empty."
-msgstr ""
-
-#: ../lib/advene/gui/plugins/actions.py:70
-msgid "Popup an entry box"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/actions.py:72
-msgid "Object where to store the answer (should have a content)"
+#: ../lib/advene/gui/plugins/actions.py:72
+msgid "Object where to store the answer (should have a content)"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/actions.py:84
@@ -3152,6 +2872,11 @@ msgstr ""
 msgid "Display a popup linking to an URL"
 msgstr ""
 
+#: ../lib/advene/gui/plugins/actions.py:103
+#: ../lib/advene/gui/views/logwindow.py:159 ../lib/advene/rules/actions.py:226
+msgid "URL"
+msgstr ""
+
 #: ../lib/advene/gui/plugins/actions.py:106
 msgid "string:Display annotation in web browser"
 msgstr ""
@@ -3192,7 +2917,7 @@ msgid "Destination: popup, south, east"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/actions.py:144
-#: ../lib/advene/gui/views/viewbook.py:308
+#: ../lib/advene/gui/views/viewbook.py:307
 msgid "Open a saved view"
 msgstr ""
 
@@ -3271,38 +2996,38 @@ msgstr ""
 msgid "Bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:276
-#, python-format
-msgid "Error: undefined GUI view %s"
+#: ../lib/advene/gui/plugins/actions.py:234 ../lib/advene/plugins/brltty.py:240
+#: ../lib/advene/plugins/tts.py:110
+msgid "Unknown rule"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:286
-#: ../lib/advene/gui/views/viewbook.py:124 ../lib/advene/gui/main.py:1189
-msgid "...in its own window"
+#: ../lib/advene/gui/plugins/actions.py:235 ../lib/advene/plugins/brltty.py:241
+#: ../lib/advene/plugins/tts.py:111
+#, python-format
+msgid ""
+"Rule %(rulename)s: Error in the evaluation of the parameter "
+"%(parametername)s:"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:287
-#: ../lib/advene/gui/views/viewbook.py:125
-#: ../lib/advene/gui/views/__init__.py:381 ../lib/advene/gui/main.py:1190
-msgid "...embedded east of the video"
+#: ../lib/advene/gui/plugins/actions.py:247 ../lib/advene/rules/actions.py:389
+#, python-format
+msgid "The %s-related outgoing annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:288
-#: ../lib/advene/gui/views/viewbook.py:126
-#: ../lib/advene/gui/views/__init__.py:382 ../lib/advene/gui/main.py:1191
-msgid "...embedded west of the video"
+#: ../lib/advene/gui/plugins/actions.py:249 ../lib/advene/rules/actions.py:391
+#, python-format
+msgid "The %s-related incoming annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:289
-#: ../lib/advene/gui/views/viewbook.py:127
-#: ../lib/advene/gui/views/__init__.py:383 ../lib/advene/gui/main.py:1192
-msgid "...embedded south of the video"
+#: ../lib/advene/gui/plugins/actions.py:259
+#: ../lib/advene/gui/plugins/actions.py:340
+#: ../lib/advene/gui/plugins/actions.py:358 ../lib/advene/plugins/tts.py:131
+msgid "No message..."
 msgstr ""
 
-#: ../lib/advene/gui/plugins/actions.py:290
-#: ../lib/advene/gui/views/viewbook.py:128
-#: ../lib/advene/gui/views/__init__.py:384 ../lib/advene/gui/main.py:1193
-msgid "...embedded at the right of the window"
+#: ../lib/advene/gui/plugins/actions.py:276
+#, python-format
+msgid "Error: undefined GUI view %s"
 msgstr ""
 
 #: ../lib/advene/gui/plugins/actions.py:322
@@ -3392,5755 +3117,5945 @@ msgstr ""
 msgid "New bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:43
-msgid "Activity trace"
+#: ../lib/advene/gui/plugins/kinect.py:41
+msgid "Kinect Controller"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:134
-msgid " Trace : "
+#: ../lib/advene/gui/plugins/kinect.py:43
+msgid "Kinect control interface"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:138
-#, fuzzy
-msgid " Filters"
-msgstr "_File"
+#: ../lib/advene/gui/plugins/contenthandlers.py:123
+msgid "Label"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4178
-msgid "Reset"
+#: ../lib/advene/gui/plugins/contenthandlers.py:173
+#, python-format
+msgid ""
+"Error while parsing SVG content:\n"
+"\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:167
-msgid " Time : "
+#: ../lib/advene/gui/plugins/contenthandlers.py:248
+msgid " created from "
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:177
-msgid " Max. : "
+#: ../lib/advene/gui/plugins/contenthandlers.py:314
+msgid "Graphical editor"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:186
-#, fuzzy
-msgid "Export"
-msgstr "Importatore"
+#: ../lib/advene/gui/plugins/contenthandlers.py:325
+msgid "Edit XML"
+msgstr ""
+
+#: ../lib/advene/gui/plugins/contenthandlers.py:377
+#: ../lib/advene/gui/plugins/contenthandlers.py:433
+#: ../lib/advene/gui/edit/rules.py:190
+#, python-format
+msgid ""
+"The following items seem to be\n"
+"invalid TALES expressions:\n"
+"\n"
+"%s"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:253
+#: ../lib/advene/gui/plugins/tracepreview.py:62
 #, fuzzy
-msgid "Defining Filters"
-msgstr "_File"
+msgid "Trace preview"
+msgstr "Anteprima"
 
-#: ../lib/advene/gui/plugins/eventaccumulator.py:559
-#: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../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: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: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: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: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: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: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:228
-#, fuzzy, python-format
-msgid "of an unknown item (%s)"
-msgstr "Parametro %s"
-
-#: ../lib/advene/gui/plugins/contenthandlers.py:122
-msgid "Label"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/contenthandlers.py:172
-#, python-format
-msgid ""
-"Error while parsing SVG content:\n"
-"\n"
-"%s"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/contenthandlers.py:247
-msgid " created from "
-msgstr ""
-
-#: ../lib/advene/gui/plugins/contenthandlers.py:315
-msgid "Graphical editor"
-msgstr ""
-
-#: ../lib/advene/gui/plugins/contenthandlers.py:326
-msgid "Edit XML"
+#: ../lib/advene/gui/plugins/tracepreview.py:100
+msgid "Full trace"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/contenthandlers.py:378
-#: ../lib/advene/gui/plugins/contenthandlers.py:434
-#: ../lib/advene/gui/edit/rules.py:186
-#, python-format
-msgid ""
-"The following items seem to be\n"
-"invalid TALES expressions:\n"
-"\n"
-"%s"
+#: ../lib/advene/gui/plugins/tracepreview.py:101
+msgid "Open the trace timeline view fareast"
 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:38
+#: ../lib/advene/gui/plugins/videoplayer.py:39
 msgid "Complementary video player"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:44
-#: ../lib/advene/gui/edit/montage.py:54
-#: ../lib/advene/gui/edit/transcribe.py:85
-#: ../lib/advene/gui/views/transcription.py:56
-#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/views/bookmarks.py:249
+#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/timeline.py:140 ../lib/advene/gui/edit/montage.py:58
+#: ../lib/advene/gui/edit/transcribe.py:86
 msgid "Save view"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:45
-#: ../lib/advene/gui/edit/transcribe.py:86
-#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/plugins/videoplayer.py:46
+#: ../lib/advene/gui/views/transcription.py:58
+#: ../lib/advene/gui/views/timeline.py:141 ../lib/advene/gui/views/tagbag.py:65
 #: ../lib/advene/gui/views/interactivequery.py:60
-#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/edit/transcribe.py:87
 msgid "Save default options"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:46
+#: ../lib/advene/gui/plugins/videoplayer.py:47
 #, fuzzy
 msgid "Select video file"
 msgstr "Seleziona un video stream"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:127
+#: ../lib/advene/gui/plugins/videoplayer.py:128
 #, fuzzy
 msgid "Select a video file"
 msgstr "Seleziona un video stream"
 
-#: ../lib/advene/gui/plugins/videoplayer.py:250
+#: ../lib/advene/gui/plugins/videoplayer.py:251
 msgid "Synchronize"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:266
+#: ../lib/advene/gui/plugins/videoplayer.py:269
 msgid "Offset in ms"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/videoplayer.py:274
+#: ../lib/advene/gui/plugins/videoplayer.py:277
 #, fuzzy
 msgid "Drag and drop to get player time"
 msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/plugins/tracepreview.py:61
-#, fuzzy
-msgid "Trace preview"
-msgstr "Anteprima"
-
-#: ../lib/advene/gui/plugins/tracepreview.py:99
-msgid "Full trace"
+#: ../lib/advene/gui/views/singletonpopup.py:32
+msgid "SingletonPopup"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/tracepreview.py:100
-msgid "Open the trace timeline view fareast"
+#: ../lib/advene/gui/views/caption.py:31
+msgid "Display a text caption below the video output"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:376
+#: ../lib/advene/gui/views/html.py:88
 #, python-format
-msgid "Rendering type %(type)s as %(presentation)s"
+msgid "%s%% loaded"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:521
-msgid "Snapshot only"
-msgstr ""
+#: ../lib/advene/gui/views/html.py:91
+#, fuzzy, python-format
+msgid "Title %s"
+msgstr "Modifica %s"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:522
-msgid "Overlayed snapshot only"
+#: ../lib/advene/gui/views/html.py:155
+msgid "HTML Viewer"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:523
-msgid "Timestamp only"
+#: ../lib/advene/gui/views/html.py:157
+msgid "Embedded HTML widget"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:524
-msgid "Snapshot+timestamp"
+#: ../lib/advene/gui/views/html.py:185
+msgid "No available HTML rendering component"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
-#, fuzzy
-msgid "Annotation content"
-msgstr "Tipo di Annotazione"
+#: ../lib/advene/gui/views/annotationdisplay.py:43
+msgid "AnnotationDisplay"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:540
-msgid "as a list"
+#: ../lib/advene/gui/views/annotationdisplay.py:45
+msgid "Display the contents of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:541
-msgid "as a grid"
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/util/helper.py:606
+msgid "No annotation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:542
-msgid "as a table"
+#: ../lib/advene/gui/views/annotationdisplay.py:112
+#, python-format
+msgid ""
+"Schema %(schema)s (id %(id)s)\n"
+"%(description)s\n"
+"%(stats)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:543
-#: ../lib/advene/gui/views/viewbook.py:380
-msgid "as a transcription"
+#: ../lib/advene/gui/views/annotationdisplay.py:233
+msgid "Screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:661
-#: ../lib/advene/gui/views/transcription.py:461
-#, python-format
-msgid "Annotation %s"
+#: ../lib/advene/gui/views/annotationdisplay.py:255
+#: ../lib/advene/gui/views/relationdisplay.py:104
+msgid "Contents"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:681
-msgid "Play video"
+#: ../lib/advene/gui/views/annotationdisplay.py:258
+#: ../lib/advene/gui/views/editaccumulator.py:73
+msgid "Validate"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
-msgid "Show timestamp only"
+#: ../lib/advene/gui/views/relationdisplay.py:34
+msgid "RelationDisplay"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
-#, fuzzy
-msgid "Show content only"
-msgstr "Salva contenuto in..."
+#: ../lib/advene/gui/views/relationdisplay.py:36
+msgid "Display the contents of a relation"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
-msgid "Show snapshot only"
+#: ../lib/advene/gui/views/relationdisplay.py:79
+msgid "No relation"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:667
-msgid "Show overlayed timestamp"
+#: ../lib/advene/gui/views/relationdisplay.py:113
+#: ../lib/advene/gui/edit/elements.py:586
+#: ../lib/advene/gui/edit/elements.py:1069
+msgid "Members"
+msgstr "Membri"
+
+#: ../lib/advene/gui/views/viewplugin.py:60
+msgid "Generic view plugin"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:668
-#, fuzzy
-msgid "Show overlayed content"
-msgstr "Elementi cercati"
+#: ../lib/advene/gui/views/viewplugin.py:62
+msgid "You should not ever see this tooltip..."
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:670
-#, fuzzy, python-format
-msgid "Annotation type %s"
-msgstr "Tipo di Annotazione"
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:671
+#: ../lib/advene/gui/views/checker.py:39
 #, fuzzy
-msgid "display as list"
-msgstr "Visualizza cronologia di navigazione"
+msgid "Check various package properties"
+msgstr "Modifica proprietà pacchetto"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/views/checker.py:90
 #, fuzzy
-msgid "display as grid"
-msgstr "Visualizza cronologia di navigazione"
+msgid "List of possible issues in the current package"
+msgstr "Salva il pacchetto attuale"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:673
-#, fuzzy
-msgid "display as table"
-msgstr "Visualizza %s"
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
-#, fuzzy
-msgid "display as transcription"
-msgstr "Visualizza le annotazione come una trascrizione"
+#: ../lib/advene/gui/views/table.py:60
+msgid "Annotation table view"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:62
+msgid "Display annotations in a table"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:683
+#: ../lib/advene/gui/views/table.py:73
 #, fuzzy
-msgid "Open link"
-msgstr "Apri"
+msgid "Export as CSV"
+msgstr "Importatore"
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:739
+#: ../lib/advene/gui/views/table.py:90 ../lib/advene/gui/views/table.py:578
+#: ../lib/advene/gui/views/transcription.py:147
 #, python-format
-msgid "HTML editor: cannot parse content (%s)"
+msgid "Error in source evaluation %(source)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
-#, fuzzy, python-format
-msgid "Heading %d"
-msgstr "Modifica %s"
+#: ../lib/advene/gui/views/table.py:267 ../lib/advene/gui/views/table.py:544
+msgid "Snapshot"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:783
-msgid "Bold"
+#: ../lib/advene/gui/views/table.py:280
+#: ../lib/advene/gui/views/timeline.py:1667
+msgid "Cannot update the annotation, its representation is too complex"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:784
-msgid "Italic"
+#: ../lib/advene/gui/views/table.py:305 ../lib/advene/gui/edit/elements.py:604
+#: ../lib/advene/gui/edit/elements.py:681
+#: ../lib/advene/gui/edit/elements.py:741
+#: ../lib/advene/gui/edit/elements.py:1132
+msgid "Content"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:785
-msgid "Header"
+#: ../lib/advene/gui/views/table.py:306 ../lib/advene/gui/views/table.py:675
+#: ../lib/advene/gui/views/browser.py:363 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/edit/elements.py:512
+#: ../lib/advene/gui/edit/elements.py:561
+#: ../lib/advene/gui/edit/elements.py:663
+msgid "Type"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:787
-msgid "Copy"
+#: ../lib/advene/gui/views/table.py:307 ../lib/advene/gui/edit/elements.py:1807
+msgid "Begin"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:788
-msgid "Cut"
+#: ../lib/advene/gui/views/table.py:310 ../lib/advene/gui/views/table.py:676
+#: ../lib/advene/gui/util/dialog.py:395 ../lib/advene/gui/edit/rules.py:1096
+#: ../lib/advene/gui/edit/imports.py:325 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/edit/elements.py:560
+#: ../lib/advene/gui/edit/elements.py:648
+#: ../lib/advene/gui/edit/elements.py:728
+#: ../lib/advene/gui/edit/elements.py:877
+#: ../lib/advene/gui/edit/elements.py:946
+#: ../lib/advene/gui/edit/elements.py:1058
+#: ../lib/advene/gui/edit/elements.py:1119
+msgid "Id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
-#, fuzzy
-msgid "Paste"
-msgstr "Data"
+#: ../lib/advene/gui/views/table.py:449 ../lib/advene/gui/views/table.py:628
+msgid "Export data to file..."
+msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:791
-#: ../lib/advene/gui/edit/schemaeditor.py:64
-#: ../lib/advene/gui/views/timeline.py:134 ../lib/advene/gui/views/tree.py:428
-msgid "Refresh"
+#: ../lib/advene/gui/views/table.py:458 ../lib/advene/gui/views/table.py:637
+#, python-format
+msgid "Error while exporting data to %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:847
-msgid "WYSIWYG editor"
+#: ../lib/advene/gui/views/table.py:469
+msgid "id"
 msgstr ""
 
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:857
-#, fuzzy
-msgid "Edit HTML source"
-msgstr "Modifica %s"
+#: ../lib/advene/gui/views/table.py:469
+msgid "type"
+msgstr ""
 
-#: ../lib/advene/gui/plugins/logmessages.py:35
-msgid "Log Messages"
+#: ../lib/advene/gui/views/table.py:469
+msgid "begin"
 msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:73
-#: ../lib/advene/gui/edit/importer.py:143
-msgid "Stop"
-msgstr "Stop"
+#: ../lib/advene/gui/views/table.py:469
+msgid "end"
+msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:82
-#: ../lib/advene/gui/edit/dvdselect.py:112
-msgid "Preview"
-msgstr "Anteprima"
+#: ../lib/advene/gui/views/table.py:469
+msgid "content"
+msgstr ""
 
-#: ../lib/advene/gui/edit/dvdselect.py:91
-msgid ""
-"Select the correct\n"
-"title and chapter\n"
-"of the DVD"
+#: ../lib/advene/gui/views/table.py:473 ../lib/advene/gui/views/table.py:653
+#: ../lib/advene/core/controller.py:2555
+#, python-format
+msgid "Data exported to %s"
 msgstr ""
-"Seleziona il capitolo \n"
-"e il titolo corretto\n"
-"del DVD"
 
-#: ../lib/advene/gui/edit/dvdselect.py:104
-msgid "Chapter"
-msgstr "Capitolo"
+#: ../lib/advene/gui/views/table.py:493
+#, python-format
+msgid "Set %(attr)s time to %(time)s"
+msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:33
-msgid "Create element"
-msgstr "Crea elemento"
+#: ../lib/advene/gui/views/table.py:552
+msgid "Generic table view"
+msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:34
-msgid "Create annotation (duplicate id)"
+#: ../lib/advene/gui/views/table.py:554
+msgid "Display Advene elements in a table."
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:35
-msgid "Create relation (duplicate id)"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element title"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:36
-msgid "Update the color"
-msgstr "Aggiorna il colore"
-
-#: ../lib/advene/gui/edit/merge.py:37
-msgid "Update the representation"
-msgstr "Aggiorna la rappresentazione"
-
-#: ../lib/advene/gui/edit/merge.py:38
-msgid "Update the description"
-msgstr "Aggiorna la descrizione"
-
-#: ../lib/advene/gui/edit/merge.py:39
-msgid "Update the title"
-msgstr "Aggiorna il titolo"
-
-#: ../lib/advene/gui/edit/merge.py:40
-msgid "Update the mimetype"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:41
-msgid "Update the begin time"
-msgstr "Aggiorna il tempo di inizio"
-
-#: ../lib/advene/gui/edit/merge.py:42
-msgid "Update the end time"
-msgstr "Aggiorna il tempo di fine"
-
-#: ../lib/advene/gui/edit/merge.py:43
-msgid "Update the content"
-msgstr "Aggiorna il contenuto"
+#: ../lib/advene/gui/views/table.py:649
+msgid "Element id"
+msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:44
-msgid "Update the matchFilter"
+#: ../lib/advene/gui/views/accumulatorpopup.py:49
+msgid "PopupAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:45
-msgid "Update the member types"
+#: ../lib/advene/gui/views/bookmarks.py:51
+msgid "Bookmarks importer"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:46
-msgid "Update tags"
-msgstr "Aggiorna tag"
+#: ../lib/advene/gui/views/bookmarks.py:72
+msgid "Bookmarks"
+msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:90
-msgid "Difference between original and merged elements"
+#: ../lib/advene/gui/views/bookmarks.py:74
+msgid "Bookmark timecodes with their corresponding screenshots"
 msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:136
-msgid "Current element"
-msgstr "Elemento attuale"
+#: ../lib/advene/gui/views/bookmarks.py:80 ../lib/advene/gui/views/tagbag.py:63
+#: ../lib/advene/gui/views/activebookmarks.py:62
+#: ../lib/advene/gui/views/logwindow.py:50 ../lib/advene/gui/edit/montage.py:59
+msgid "Clear"
+msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:141
-msgid "Updated element"
-msgstr "Elemento aggiornato"
+#: ../lib/advene/gui/views/bookmarks.py:145
+msgid "Select the annotation type to generate"
+msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:147
-msgid "Show diff"
-msgstr "Mostra diff"
+#: ../lib/advene/gui/views/bookmarks.py:150
+msgid "Choose a duration"
+msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:180
-msgid "Merge?"
-msgstr "Unire?"
+#: ../lib/advene/gui/views/bookmarks.py:151
+msgid "Enter the standard duration (in ms) of created annotations."
+msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:197
-msgid "Element"
-msgstr "Elemento"
+#: ../lib/advene/gui/views/bookmarks.py:168
+msgid "Converted from bookmarks"
+msgstr ""
 
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
+#: ../lib/advene/gui/views/bookmarks.py:172
+#: ../lib/advene/gui/edit/transcribe.py:1139
 #, python-format
-msgid "Package %s"
-msgstr "Pacchetto %s"
-
-#: ../lib/advene/gui/edit/merge.py:230 ../lib/advene/gui/edit/imports.py:406
-msgid "No title"
-msgstr "Nessun titolo"
-
-#: ../lib/advene/gui/edit/merge.py:267
-msgid "All"
-msgstr "Tutto"
-
-#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1588
-msgid "Properties"
-msgstr "Proprietà"
-
-#: ../lib/advene/gui/edit/properties.py:46
-#: ../lib/advene/gui/edit/transcribe.py:147
-#: ../lib/advene/gui/edit/transcribe.py:1195
-#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3483
-#: ../lib/advene/gui/views/timeline.py:3624 ../lib/advene/gui/main.py:4235
-msgid "Preferences"
+msgid ""
+"Conversion completed.\n"
+"%s annotations generated."
 msgstr ""
 
-#: ../lib/advene/gui/edit/properties.py:371
-msgid "Choose a file"
-msgstr "Scegliere un file"
+#: ../lib/advene/gui/views/bookmarks.py:226
+msgid "Drop a position here to remove it from the list"
+msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:45
-msgid "Importer"
-msgstr "Importatore"
+#: ../lib/advene/gui/views/bookmarks.py:247
+#: ../lib/advene/gui/views/activebookmarks.py:522
+msgid "Insert a bookmark for the current video time"
+msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:101
-#: ../lib/advene/gui/edit/importer.py:111
-#, fuzzy
-msgid "Advene package importer"
-msgstr "Modifica proprietà pacchetto"
+#: ../lib/advene/gui/views/bookmarks.py:248
+msgid "Convert bookmarks to annotations"
+msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:115
-msgid "Not likely"
+#: ../lib/advene/gui/views/viewbook.py:37
+msgid "ViewBook"
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:137
-#, python-format
-msgid "Completed conversion: %(statistics)s"
+#: ../lib/advene/gui/views/viewbook.py:58
+#: ../lib/advene/gui/views/viewbook.py:65
+msgid "Cannot remove this widget, it is essential."
 msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Choose the file to import"
-msgstr "Scegli un file da importare"
+#: ../lib/advene/gui/views/viewbook.py:135
+msgid "Detach"
+msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:272
-#, fuzzy
-msgid "Filter"
-msgstr "_File"
+#: ../lib/advene/gui/views/viewbook.py:139
+#: ../lib/advene/gui/views/editaccumulator.py:79
+msgid "Close"
+msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:276
-#, fuzzy
-msgid "Options"
-msgstr "Relazioni"
+#: ../lib/advene/gui/views/viewbook.py:156
+msgid "Rename the view"
+msgstr ""
 
-#: ../lib/advene/gui/edit/importer.py:287
-msgid "Start"
+#: ../lib/advene/gui/views/viewbook.py:157
+msgid "Please enter the new name of the view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:57
-msgid "Schema Editor"
+#: ../lib/advene/gui/views/viewbook.py:196
+msgid "Detach view in its own window, or drag-and-drop to another zone"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:132
+#: ../lib/advene/gui/views/viewbook.py:210
 #, fuzzy
-msgid "Display"
-msgstr "Visualizza %s"
+msgid "Close view"
+msgstr "Scegliere un file"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:155
-#: ../lib/advene/gui/edit/shapewidget.py:1587 ../lib/advene/gui/popup.py:472
-#: ../lib/advene/gui/popup.py:476
-msgid "Delete"
-msgstr "Elimina"
+#: ../lib/advene/gui/views/viewbook.py:233
+#: ../lib/advene/gui/views/viewbook.py:239
+#: ../lib/advene/gui/edit/elements.py:335
+#, python-format
+msgid "Edit %s"
+msgstr "Modifica %s"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:762
-#, fuzzy
-msgid "Remove relation type"
-msgstr "Tipo di Annotazione"
+#: ../lib/advene/gui/views/viewbook.py:262 ../lib/advene/rules/actions.py:615
+#, python-format
+msgid "Cannot find the view %s"
+msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:765
-#: ../lib/advene/gui/edit/schemaeditor.py:997
-msgid "Create HTML view"
+#: ../lib/advene/gui/views/viewbook.py:285
+#, python-format
+msgid "Open a new %s for..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:831
+#: ../lib/advene/gui/views/viewbook.py:297
 #, fuzzy
-msgid "Remove annotation type"
-msgstr "di un tipo di annotazione"
+msgid "Create a new comment view"
+msgstr "Vista statica predefinita"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:834
-msgid "Create relation type between this one and..."
+#: ../lib/advene/gui/views/viewbook.py:299
+msgid "Open a new view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:969
-#, fuzzy
-msgid "New schema"
-msgstr "Schema"
-
-#: ../lib/advene/gui/edit/schemaeditor.py:985 ../lib/advene/gui/popup.py:690
-#: ../lib/advene/gui/popup.py:750 ../lib/advene/gui/popup.py:803
-msgid "Select a color"
+#: ../lib/advene/gui/views/viewbook.py:373
+#, python-format
+msgid "Use annotation-type %s :"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:988
-#, fuzzy
-msgid "New annotation type"
-msgstr "di un tipo di annotazione"
+#: ../lib/advene/gui/views/viewbook.py:377
+#: ../lib/advene/gui/views/viewbook.py:403
+msgid "to edit it"
+msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:991
+#: ../lib/advene/gui/views/viewbook.py:378
+#: ../lib/advene/gui/views/viewbook.py:404
+#: ../lib/advene/gui/views/viewbook.py:436
 #, fuzzy
-msgid "New relation type"
-msgstr "Tipo di Annotazione"
+msgid "to create a new static view"
+msgstr "Vista statica predefinita"
 
-#: ../lib/advene/gui/edit/schemaeditor.py:994
-msgid "Hide this schema"
+#: ../lib/advene/gui/views/viewbook.py:380
+msgid "in a timeline"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1000
-msgid "Export drawing to pdf"
+#: ../lib/advene/gui/views/viewbook.py:381
+msgid "as a montage"
 msgstr ""
 
-#: ../lib/advene/gui/edit/schemaeditor.py:1042
-msgid "Choose a filename to export the schema as PDF"
+#: ../lib/advene/gui/views/viewbook.py:382
+#: ../lib/advene/gui/views/viewbook.py:435
+msgid "in a table"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:84 ../lib/advene/gui/edit/rules.py:86
-#: ../lib/advene/gui/edit/create.py:252
-msgid "Rule"
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
+msgid "in a query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:95 ../lib/advene/gui/edit/create.py:242
-msgid "Subviews"
+#: ../lib/advene/gui/views/viewbook.py:383
+#: ../lib/advene/gui/views/viewbook.py:405
+#, python-format
+msgid "Query %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:122
-msgid "Add a new rule"
+#: ../lib/advene/gui/views/viewbook.py:384
+#: ../lib/advene/gui/views/viewbook.py:406
+msgid "in the TALES browser"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:126
-msgid "Subview"
+#: ../lib/advene/gui/views/viewbook.py:384
+#, python-format
+msgid "Browsing %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:129
-msgid "Add a subview list"
+#: ../lib/advene/gui/views/viewbook.py:400
+#, python-format
+msgid "Use annotation %s :"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:135
-msgid "Remove the current rule"
+#: ../lib/advene/gui/views/viewbook.py:406
+#, python-format
+msgid "Browse %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:275
-msgid "Source expression"
+#: ../lib/advene/gui/views/viewbook.py:407
+msgid "to display its contents"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:277
-msgid "Return expression"
+#: ../lib/advene/gui/views/viewbook.py:407
+#, python-format
+msgid "%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:351
-msgid "For all elements in "
-msgstr "Per tutti gli elementi in "
+#: ../lib/advene/gui/views/viewbook.py:408
+msgid "as a bookmark"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:352
-msgid "All annotations of the package"
+#: ../lib/advene/gui/views/viewbook.py:426
+msgid "as the context for the query..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:353
-msgid "All views of the package"
-msgstr "Tutte le visualizzazioni del pacchetto"
+#: ../lib/advene/gui/views/viewbook.py:430
+#, fuzzy
+msgid "Set of annotations"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/edit/rules.py:354 ../lib/advene/gui/edit/rules.py:798
-msgid "The context annotations"
-msgstr ""
+#: ../lib/advene/gui/views/viewbook.py:431
+#, fuzzy
+msgid "Use annotations:"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/edit/rules.py:355 ../lib/advene/gui/edit/rules.py:799
-msgid "The annotations of the context type"
+#: ../lib/advene/gui/views/viewbook.py:434
+msgid "to edit them"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:370
-msgid "Return "
+#: ../lib/advene/gui/views/viewbook.py:437
+msgid "as bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:372 ../lib/advene/gui/edit/rules.py:787
-msgid "The element"
-msgstr "L'elemento"
+#: ../lib/advene/gui/views/transcription.py:49
+msgid "Transcription"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:373 ../lib/advene/gui/edit/rules.py:788
-msgid "The element's content"
-msgstr "Il contenuto dell'elemento"
+#: ../lib/advene/gui/views/transcription.py:51
+#, fuzzy
+msgid "Display annotations as a text transcription"
+msgstr "Visualizza le annotazione come una trascrizione"
 
-#: ../lib/advene/gui/edit/rules.py:388
-msgid "If the element matches "
+#: ../lib/advene/gui/views/transcription.py:164
+msgid "Transcription options"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:390
-msgid "Return the element if it matches "
+#: ../lib/advene/gui/views/transcription.py:165
+msgid "Default representation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:408 ../lib/advene/gui/edit/rules.py:617
-msgid "All conditions must be met"
+#: ../lib/advene/gui/views/transcription.py:165
+msgid "Use the default representation for annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:409 ../lib/advene/gui/edit/rules.py:618
-msgid "Any condition can be met"
+#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/edit/elements.py:986
+msgid "Representation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:493 ../lib/advene/gui/edit/rules.py:563
-#, python-format
-msgid "Rule <b>%s</b>"
+#: ../lib/advene/gui/views/transcription.py:166
+msgid ""
+"If default representation is unchecked,\n"
+"this TALES expression that will be used to format the annotations."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:574
-msgid "Rule name"
-msgstr "Nome della regola"
+#: ../lib/advene/gui/views/transcription.py:167
+msgid "Separator"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:591
-msgid "Event"
-msgstr "Evento"
+#: ../lib/advene/gui/views/transcription.py:168
+msgid "This separator will be inserted between the annotations."
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:599
-msgid "If"
-msgstr "Se"
+#: ../lib/advene/gui/views/transcription.py:169
+msgid "Whitespace"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:638
-msgid "Then"
-msgstr "Quindi"
+#: ../lib/advene/gui/views/transcription.py:170
+msgid "Newline"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:683
-msgid "When the "
-msgstr "Quando il "
+#: ../lib/advene/gui/views/transcription.py:171
+msgid "Tabulation"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:696
-msgid " occurs,"
-msgstr " succede,"
+#: ../lib/advene/gui/views/transcription.py:172
+msgid "Dash"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:723 ../lib/advene/gui/edit/rules.py:726
-#, python-format
-msgid "Condition expression: %s"
+#: ../lib/advene/gui/views/transcription.py:173
+msgid "User defined"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:765
-#, fuzzy
-msgid "The annotation type"
-msgstr "di un tipo di annotazione"
+#: ../lib/advene/gui/views/transcription.py:175
+msgid "User-defined separator"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:768
-#, python-format
-msgid "The value of the %s attribute"
+#: ../lib/advene/gui/views/transcription.py:175
+msgid ""
+"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
+"a tabulation."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:770
-msgid "The annotation fragment"
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Display timestamps"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:771
-msgid "The annotation begin time"
+#: ../lib/advene/gui/views/transcription.py:176
+msgid "Insert timestsamp values"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:772
-msgid "The annotation end time"
+#: ../lib/advene/gui/views/transcription.py:177
+msgid "Display annotation bounds"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:774
-msgid "The annotation MIME-type"
+#: ../lib/advene/gui/views/transcription.py:237
+#, python-format
+msgid ""
+"Cannot convert the following annotations,\n"
+"the representation pattern is too complex.\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:775
-msgid "The annotation's incoming relations"
+#: ../lib/advene/gui/views/transcription.py:248
+msgid ""
+"Cannot validate the update.\n"
+"The representation pattern is too complex."
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:776
-msgid "The annotation's outgoing relations"
+#: ../lib/advene/gui/views/transcription.py:274
+msgid "Save transcription to a text file"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:779
-#, python-format
-msgid "The %s-related incoming annotations"
+#: ../lib/advene/gui/views/transcription.py:275
+msgid "Apply the modifications"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:783
-#, python-format
-msgid "The %s-related outgoing annotations"
+#: ../lib/advene/gui/views/transcription.py:276
+msgid "Find text"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:789
-msgid "The element fragment"
+#: ../lib/advene/gui/views/transcription.py:277
+msgid "Quickly switch display options"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:790
-msgid "The element begin time"
+#: ../lib/advene/gui/views/transcription.py:278
+msgid "Refresh the transcription"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:791
-msgid "The element end time"
+#: ../lib/advene/gui/views/transcription.py:279
+msgid "Edit preferences"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:792
-msgid "The element duration"
+#: ../lib/advene/gui/views/transcription.py:697
+#, python-format
+msgid "Cannot write to %(filename)s: %(error)s:"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:793
-#, fuzzy
-msgid "The element type"
-msgstr "L'elemento"
+#: ../lib/advene/gui/views/transcription.py:703
+#: ../lib/advene/gui/edit/transcribe.py:882
+#, python-format
+msgid "Transcription saved to %s"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:794
-msgid "The element's incoming relations"
+#: ../lib/advene/gui/views/browser.py:164
+#: ../lib/advene/gui/views/browser.py:166
+msgid "TALES browser"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:795
-msgid "The element's outgoing relations"
+#: ../lib/advene/gui/views/browser.py:171
+msgid "Display result in table"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:796
-msgid "The context"
+#: ../lib/advene/gui/views/browser.py:194
+msgid "Insert path"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:797
-msgid "The context fragment"
+#: ../lib/advene/gui/views/browser.py:195
+msgid "Insert value"
 msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:809
-#, fuzzy, python-format
-msgid "annotation-type %s"
-msgstr "Tipo di Annotazione"
+#: ../lib/advene/gui/views/browser.py:250
+msgid "Expression returned None (there was an exception)"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:812
-#, fuzzy, python-format
-msgid "relation-type %s"
-msgstr "Tipo di Annotazione"
+#: ../lib/advene/gui/views/browser.py:303
+msgid "Result is not a list"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:834
-msgid "Select a condition"
-msgstr "Seleziona una condizione"
+#: ../lib/advene/gui/views/browser.py:360
+#: ../lib/advene/gui/edit/shapewidget.py:942
+msgid "Path"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:878
-#, python-format
-msgid "Parameter %s"
-msgstr "Parametro %s"
+#: ../lib/advene/gui/views/browser.py:367
+#: ../lib/advene/gui/edit/elements.py:2173
+msgid "Value"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:992
-msgid "Select an action"
-msgstr "Seleziona un'azione"
+#: ../lib/advene/gui/views/timeline.py:128
+msgid "Display annotations on a timeline"
+msgstr ""
 
-#: ../lib/advene/gui/edit/rules.py:1083
-msgid "Activate?"
+#: ../lib/advene/gui/views/timeline.py:142
+msgid "Limit display to current area"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:83
-msgid "Generic shape"
-msgstr "Forma generica"
+#: ../lib/advene/gui/views/timeline.py:143
+#: ../lib/advene/gui/views/timeline.py:3276
+msgid "Display whole movie"
+msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:234
-#: ../lib/advene/gui/edit/shapewidget.py:741
+#: ../lib/advene/gui/views/timeline.py:173
 #, python-format
-msgid "Link to %s"
+msgid "Cannot find annotation type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:321
-#: ../lib/advene/gui/views/tagbag.py:132
-msgid "Name"
-msgstr "Nome"
+#: ../lib/advene/gui/views/timeline.py:222
+msgid "No scrolling"
+msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:326
-#: ../lib/advene/gui/edit/shapewidget.py:1299
-msgid "Link"
+#: ../lib/advene/gui/views/timeline.py:223
+msgid "Continuous scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:331
-msgid "Link label"
+#: ../lib/advene/gui/views/timeline.py:224
+msgid "Discrete scrolling"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:349
-msgid "Linewidth"
-msgstr "LarghezzaLinea"
+#: ../lib/advene/gui/views/timeline.py:225
+#, fuzzy
+msgid "Annotation scrolling"
+msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/edit/shapewidget.py:354
-msgid "Filled"
-msgstr "Riempito"
+#: ../lib/advene/gui/views/timeline.py:501
+#, fuzzy, python-format
+msgid "%d annotations"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/edit/shapewidget.py:362
-msgid "Opacity"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:504
+#, fuzzy
+msgid "Display all types"
+msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/edit/shapewidget.py:404
+#: ../lib/advene/gui/views/timeline.py:506
 #, python-format
-msgid "Properties of %s"
-msgstr "Proprietà di %s"
-
-#: ../lib/advene/gui/edit/shapewidget.py:451
-msgid "Rectangle"
-msgstr "Rettangolo"
-
-#: ../lib/advene/gui/edit/shapewidget.py:532
-#: ../lib/advene/gui/edit/shapewidget.py:652
-msgid "Text"
-msgstr "Testo"
+msgid ""
+"There are %d annotations.\n"
+"The current timeline may take a long time to display them, so only the first "
+"two annotation types are displayed. Use the annotation type selector (second "
+"button in the timeline) to select other annotations types to display, or "
+"click on the 'Display all types' button below."
+msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:663
-msgid "Textsize"
+#: ../lib/advene/gui/views/timeline.py:979
+msgid "Split at current player position"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:677
-msgid "Image"
+#: ../lib/advene/gui/views/timeline.py:983
+msgid "Center and zoom"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:761
-msgid "Href"
+#: ../lib/advene/gui/views/timeline.py:1087
+msgid "Create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:771
-msgid "Line"
-msgstr "Linea"
+#: ../lib/advene/gui/views/timeline.py:1097
+msgid "Create a new relation-type."
+msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:872
-msgid "Draw an arrow"
+#: ../lib/advene/gui/views/timeline.py:1123
+msgid "Merge with this annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:883
-msgid "Arrow size"
+#: ../lib/advene/gui/views/timeline.py:1132
+msgid "Align both begin times"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:935
-#: ../lib/advene/gui/views/browser.py:359
-msgid "Path"
+#: ../lib/advene/gui/views/timeline.py:1133
+msgid "Align both end times"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1102
-#, fuzzy
-msgid "Close path"
-msgstr "Nessun pacchetto"
+#: ../lib/advene/gui/views/timeline.py:1134
+msgid "Align end time to selected begin time"
+msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1181
-msgid "Circle"
-msgstr "Cerchio"
+#: ../lib/advene/gui/views/timeline.py:1135
+msgid "Align begin time to selected end time"
+msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1239
-msgid "Ellipse"
+#: ../lib/advene/gui/views/timeline.py:1136
+msgid "Align all times"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:1589
-msgid "SVG"
-msgstr "SVG"
+#: ../lib/advene/gui/views/timeline.py:1174
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:2172
-msgid "Load SVG"
+#: ../lib/advene/gui/views/timeline.py:1249
+msgid "Select the appropriate relation type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/shapewidget.py:2178
-#, fuzzy
-msgid "Save SVG"
-msgstr "Salva"
+#: ../lib/advene/gui/views/timeline.py:1268
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:74
-#: ../lib/advene/gui/widget.py:1063
-#, fuzzy
-msgid "Refresh snapshot"
-msgstr "Visualizza %s"
+#: ../lib/advene/gui/views/timeline.py:1271
+#, fuzzy, python-format
+msgid "Move selection to type %s"
+msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/views/timeline.py:1280
 #, python-format
-msgid "Decrement value by %.2f s"
+msgid "Duplicate annotation to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:104
+#: ../lib/advene/gui/views/timeline.py:1284
 #, python-format
-msgid "Increment value by %.2f s"
+msgid "Move annotation to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:130
-msgid ""
-"Click to play\n"
-"Control+click to set to current time\n"
-"Scroll to modify value (with control/shift)\n"
-"Right-click to invalidate screenshot"
+#: ../lib/advene/gui/views/timeline.py:1291
+#, python-format
+msgid "Duplicate to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:145
-msgid ""
-"Enter a timecode.\n"
-"An integer value will be considered as milliseconds.\n"
-"A float value (12.2) will be considered as seconds.\n"
-"HH:MM:SS.sss values are possible."
+#: ../lib/advene/gui/views/timeline.py:1297
+#, python-format
+msgid "Move to type %(type)s at %(position)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/timeadjustment.py:159
-msgid "Set to current player position"
+#: ../lib/advene/gui/views/timeline.py:1307
+msgid "Duplicate and create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:81
+#: ../lib/advene/gui/views/timeline.py:1318
 #, python-format
-msgid "%s creation"
+msgid "Duplicate at %s and create a relation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:82
-#, python-format
-msgid ""
-"To create a new element of type %s,\n"
-"you must give the following information."
+#: ../lib/advene/gui/views/timeline.py:1349
+msgid "Annotation filter"
 msgstr ""
 
-#: ../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:659
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:251
-#: ../lib/advene/gui/views/table.py:558
-msgid "Type"
+#: ../lib/advene/gui/views/timeline.py:1350
+msgid "Enter the searched string"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:111
-msgid "Dynamic view"
-msgstr "Vista dinamica"
-
-#: ../lib/advene/gui/edit/create.py:112
-msgid "HTML template"
-msgstr "template HTML"
-
-#: ../lib/advene/gui/edit/create.py:113
-msgid "Plain XML"
+#: ../lib/advene/gui/views/timeline.py:1458
+#, python-format
+msgid "Duplicate all annotations to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:114
-msgid "SVG template"
-msgstr "template SVG"
-
-#: ../lib/advene/gui/edit/create.py:115
-msgid "Plain text template"
+#: ../lib/advene/gui/views/timeline.py:1460
+#, python-format
+msgid "Move all annotations to type %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:118
-msgid "Simple query"
-msgstr "Ricerca semplice"
-
-#: ../lib/advene/gui/edit/create.py:120
-msgid "Directory"
-msgstr "Cartella"
+#: ../lib/advene/gui/views/timeline.py:1462
+#, python-format
+msgid "Duplicate all annotations matching a string to type %s"
+msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:128
-msgid "No available type."
-msgstr "Nessun tipo disponibile"
+#: ../lib/advene/gui/views/timeline.py:1464
+#, python-format
+msgid "Move all annotations matching a string to type %s"
+msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:172
+#: ../lib/advene/gui/views/timeline.py:1466
 #, python-format
-msgid ""
-"The identifier %s is not valid.\n"
-"It must be composed of non-accentuated alphabetic characters\n"
-"Underscore is allowed."
+msgid "Align all annotation time codes using %s as reference."
 msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:177
+#: ../lib/advene/gui/views/timeline.py:1468
 #, python-format
-msgid "The identifier %s is already defined."
-msgstr "L'identificatore %s è già stato definito"
+msgid "Align all annotation contents using %s as reference"
+msgstr ""
 
-#: ../lib/advene/gui/edit/create.py:310
-msgid "New resource data"
+#: ../lib/advene/gui/views/timeline.py:1960
+#: ../lib/advene/gui/views/timeline.py:1989
+#, fuzzy, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Trascrizione delle annotazioni"
+
+#: ../lib/advene/gui/views/timeline.py:1971
+#, fuzzy
+msgid "Displaying done."
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/views/timeline.py:2463
+msgid "Create a new annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
-msgid "Schemas"
-msgstr "Schemi"
+#: ../lib/advene/gui/views/timeline.py:2464
+#, fuzzy
+msgid "Zoom on region"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
-#: ../lib/advene/gui/views/interactivequery.py:464
-msgid "Annotations"
+#: ../lib/advene/gui/views/timeline.py:2465
+msgid "Restrict display to region"
 msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
-#: ../lib/advene/gui/edit/elements.py:517
-msgid "Relations"
-msgstr "Relazioni"
+#: ../lib/advene/gui/views/timeline.py:2578
+#: ../lib/advene/gui/edit/transcribe.py:494
+#, python-format
+msgid "Position %s"
+msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
-msgid "Queries"
-msgstr "Ricerche"
+#: ../lib/advene/gui/views/timeline.py:2588
+#, fuzzy
+msgid "New annotation at player time"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/edit/imports.py:320
-msgid "Imported?"
-msgstr "Importato?"
+#: ../lib/advene/gui/views/timeline.py:2592
+#, fuzzy
+msgid "New annotation at mouse position"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/edit/imports.py:337
-#: ../lib/advene/gui/edit/elements.py:509
-#: ../lib/advene/gui/edit/elements.py:558
-#: ../lib/advene/gui/edit/elements.py:645
-#: ../lib/advene/gui/edit/elements.py:725
-#: ../lib/advene/gui/edit/elements.py:782
-#: ../lib/advene/gui/edit/elements.py:874
-#: ../lib/advene/gui/edit/elements.py:943
-#: ../lib/advene/gui/edit/elements.py:1055
-#: ../lib/advene/gui/edit/elements.py:1117
-msgid "URI"
-msgstr "URI"
+#: ../lib/advene/gui/views/timeline.py:2596
+msgid "Selection"
+msgstr ""
 
-#: ../lib/advene/gui/edit/imports.py:359
-msgid "Choose the package to import, and its alias"
-msgstr "Scegli il pacchetto da importare, e il suo alias"
+#: ../lib/advene/gui/views/timeline.py:2718
+msgid "Cannot zoom more"
+msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:47
-msgid "Montage"
+#: ../lib/advene/gui/views/timeline.py:2933
+#, python-format
+msgid "From schema %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:49
-msgid "Dynamic montage of annotations"
+#: ../lib/advene/gui/views/timeline.py:2996
+msgid "Restrict playing to this annotation-type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:55
-#: ../lib/advene/gui/views/logwindow.py:50
-#: ../lib/advene/gui/views/tagbag.py:60
-#: ../lib/advene/gui/views/activebookmarks.py:59
-#: ../lib/advene/gui/views/bookmarks.py:77
-msgid "Clear"
+#: ../lib/advene/gui/views/timeline.py:3003
+msgid "Goto previous annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:56
-#: ../lib/advene/gui/views/transcription.py:472
-#: ../lib/advene/gui/widget.py:1059
-msgid "Play"
+#: ../lib/advene/gui/views/timeline.py:3014
+msgid "Goto next annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:57
-msgid "Render"
+#: ../lib/advene/gui/views/timeline.py:3025
+msgid "+"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:171
-msgid "Remove from montage"
+#: ../lib/advene/gui/views/timeline.py:3084
+msgid "Open an annotation display view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:303 ../lib/advene/gui/popup.py:444
-#, fuzzy, python-format
-msgid "Extracting %s"
-msgstr "Modifica %s"
+#: ../lib/advene/gui/views/timeline.py:3091
+msgid "Open a slave montage view (coordinated zoom level)"
+msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:304
-#, python-format
+#: ../lib/advene/gui/views/timeline.py:3126
 msgid ""
-"Exporting montage %(title)s\n"
-"to %%(filename)s"
+"<b>Statistics about current selection</b>\n"
+"\n"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:396
-msgid "Drop an annotation here to remove it from the list"
+#: ../lib/advene/gui/views/timeline.py:3133
+msgid "No selected annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:407
-msgid "Play the montage"
+#: ../lib/advene/gui/views/timeline.py:3137
+#, python-format
+msgid "%d selected annotation(s)"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:412
+#: ../lib/advene/gui/views/timeline.py:3144
+msgid "Unselect all annotations"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3145
 #, fuzzy
-msgid "Save the view in the package"
-msgstr "Salva il pacchetto attuale"
+msgid "Create a static view"
+msgstr "Vista statica predefinita"
 
-#: ../lib/advene/gui/edit/montage.py:460
-msgid "Set zoom level"
+#: ../lib/advene/gui/views/timeline.py:3146
+msgid "Highlight selection in other views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:465
-msgid "Set 100% zoom"
+#: ../lib/advene/gui/views/timeline.py:3147
+#: ../lib/advene/gui/views/timeline.py:3736
+msgid "Tag selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:471
-#: ../lib/advene/gui/views/interactivequery.py:439
-msgid "Unhighlight annotations"
+#: ../lib/advene/gui/views/timeline.py:3148
+msgid "Delete selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:475 ../lib/advene/gui/edit/montage.py:484
-#: ../lib/advene/gui/views/interactivequery.py:443
-#: ../lib/advene/gui/views/interactivequery.py:480
-msgid "Highlight annotations"
+#: ../lib/advene/gui/views/timeline.py:3149
+msgid "Display selection in a table"
 msgstr ""
 
-#: ../lib/advene/gui/edit/montage.py:545
-msgid "Total duration:"
+#: ../lib/advene/gui/views/timeline.py:3150
+msgid "Center and zoom on selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/frameselector.py:43
-msgid "Click on a frame to select its time."
+#: ../lib/advene/gui/views/timeline.py:3151
+msgid "Edit selected annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/frameselector.py:177
-msgid "Select the appropriate snapshot"
+#: ../lib/advene/gui/views/timeline.py:3152
+msgid "Merge annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/frameselector.py:230
-#: ../lib/advene/gui/edit/frameselector.py:283
-msgid "Click to see more frames or scroll with the mouse wheel"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3153
+#, fuzzy
+msgid "Display statistics"
+msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/edit/transcribe.py:67
-msgid "Transcription importer"
+#: ../lib/advene/gui/views/timeline.py:3269
+msgid "Goto previous page"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:78
-msgid "Note taking"
+#: ../lib/advene/gui/views/timeline.py:3281
+msgid "Goto next page"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:80
-msgid "Take notes on the fly as a timestamped transcription"
+#: ../lib/advene/gui/views/timeline.py:3337
+msgid "Inspector locked. Click here or in the timeline background to unlock."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:87
-#: ../lib/advene/gui/views/activebookmarks.py:60
-msgid "Export as static view"
+#: ../lib/advene/gui/views/timeline.py:3365
+msgid ""
+"Delete the selected annotations or drop an annotation here to delete it."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Timestamp"
+#: ../lib/advene/gui/views/timeline.py:3387
+msgid ""
+"Drag an annotation type here to remove it from display.\n"
+"Click to edit all displayed types"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:148
-msgid "Click inserts timestamp marks"
+#: ../lib/advene/gui/views/timeline.py:3399
+msgid "Selection actions"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "Insert on single-click"
+#: ../lib/advene/gui/views/timeline.py:3414
+msgid "Display relations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:149
-msgid "A single click will insert the mark (else a double click is needed)"
-msgstr ""
+#: ../lib/advene/gui/views/timeline.py:3420
+#, fuzzy
+msgid "Display all relations"
+msgstr "Visualizza cronologia di navigazione"
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play on scroll"
+#: ../lib/advene/gui/views/timeline.py:3497
+msgid "Center on current player position."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:150
-msgid "Play the new position upon timestamp modification"
+#: ../lib/advene/gui/views/timeline.py:3513
+msgid "Automatically activate loop when clicking on an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:151
-msgid "Generate empty annotations"
+#: ../lib/advene/gui/views/timeline.py:3537
+msgid "Displayed"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:151
-msgid "If checked, generate annotations for empty text"
+#: ../lib/advene/gui/views/timeline.py:3545
+msgid "Not displayed"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid "Reaction time"
-msgstr "Tempo di reazione"
+#: ../lib/advene/gui/views/timeline.py:3594
+msgid "< All <"
+msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:152
-msgid ""
-"Reaction time (substracted from current player time, except when paused.)"
+#: ../lib/advene/gui/views/timeline.py:3598
+msgid "> All >"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Auto-insert"
+#: ../lib/advene/gui/views/timeline.py:3622
+msgid "Displayed annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:153
-msgid "Automatic timestamp mark insertion"
+#: ../lib/advene/gui/views/timeline.py:3648
+msgid "Relation type"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:154
-msgid "Automatic insertion delay"
+#: ../lib/advene/gui/views/timeline.py:3648
+msgid "Display relation types"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:154
-msgid ""
-"If autoinsert is active, timestamp marks will be automatically inserted when "
-"text is entered after no interaction since this delay (in ms).\n"
-"1000 is typically a good value."
+#: ../lib/advene/gui/views/timeline.py:3649
+msgid "Relation content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:155 ../lib/advene/gui/main.py:4368
-msgid "Font size"
+#: ../lib/advene/gui/views/timeline.py:3649
+msgid "Display relation content"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:155
-msgid "Font size for text (0 for standard size)"
+#: ../lib/advene/gui/views/timeline.py:3650 ../lib/advene/gui/popup.py:516
+msgid "Highlight"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:215
-#: ../lib/advene/gui/edit/transcribe.py:219
-#: ../lib/advene/gui/edit/transcribe.py:379
-#: ../lib/advene/gui/edit/transcribe.py:383
-msgid "Invalid timestamp mark"
+#: ../lib/advene/gui/views/timeline.py:3650
+msgid "Highlight active annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:496
-#: ../lib/advene/gui/views/timeline.py:2550
-#, python-format
-msgid "Position %s"
+#: ../lib/advene/gui/views/timeline.py:3737
+msgid "Enter the tag for the selection"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:506 ../lib/advene/gui/popup.py:456
-msgid "Edit"
+#: ../lib/advene/gui/views/timeline.py:3743
+#: ../lib/advene/gui/views/tagbag.py:165
+msgid "The tag contains invalid characters"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:510
-msgid "Ignore the following text (toggle)"
+#: ../lib/advene/gui/views/relation.py:71
+msgid "Relations view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:514
-msgid "Remove mark"
-msgstr "Rimuovi marchio"
+#: ../lib/advene/gui/views/editionhistory.py:40
+#, fuzzy
+msgid "Edition History"
+msgstr "_Cronologia di Navigazione"
 
-#: ../lib/advene/gui/edit/transcribe.py:518
-msgid "Reaction-time offset"
+#: ../lib/advene/gui/views/editionhistory.py:42
+msgid "Access last edited/created elements"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:522
-msgid "-1 sec"
-msgstr "-1 sec"
-
-#: ../lib/advene/gui/edit/transcribe.py:525
-msgid "-0.5 sec"
-msgstr "-0.5 sec"
-
-#: ../lib/advene/gui/edit/transcribe.py:528
-msgid "-0.1 sec"
-msgstr "-0.1 sec"
+#: ../lib/advene/gui/views/editionhistory.py:102
+#, fuzzy
+msgid "Created"
+msgstr "Crea"
 
-#: ../lib/advene/gui/edit/transcribe.py:532
-msgid "+1 sec"
-msgstr "+1 sec"
+#: ../lib/advene/gui/views/editionhistory.py:103
+#, fuzzy
+msgid "Edited"
+msgstr "_Modifica"
 
-#: ../lib/advene/gui/edit/transcribe.py:535
-msgid "+0.5 sec"
-msgstr "+0.5 sec"
+#: ../lib/advene/gui/views/tagbag.py:55
+msgid "Tag Bag"
+msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:538
-msgid "+0.1 sec"
-msgstr "+0.1 sec"
+#: ../lib/advene/gui/views/tagbag.py:62
+msgid "New tag"
+msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:629
-msgid "Invalid timestamp"
+#: ../lib/advene/gui/views/tagbag.py:125
+msgid "New tag name"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:762
-#, python-format
-msgid "Invalid timestamp mark in conversion: %s"
+#: ../lib/advene/gui/views/tagbag.py:131
+msgid "Enter a new tag name and select its color."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:879
-#, python-format
-msgid "Cannot save the file: %s"
-msgstr "Impossibile salvare il file: %s"
+#: ../lib/advene/gui/views/tagbag.py:135
+#: ../lib/advene/gui/edit/shapewidget.py:341
+msgid "Name"
+msgstr "Nome"
 
-#: ../lib/advene/gui/edit/transcribe.py:884
-#: ../lib/advene/gui/views/transcription.py:703
-#, python-format
-msgid "Transcription saved to %s"
+#: ../lib/advene/gui/views/tagbag.py:141
+#: ../lib/advene/gui/edit/shapewidget.py:362
+#: ../lib/advene/gui/edit/elements.py:895
+#: ../lib/advene/gui/edit/elements.py:975
+#: ../lib/advene/gui/edit/elements.py:1089 ../lib/advene/rules/actions.py:133
+msgid "Color"
+msgstr "Colore"
+
+#: ../lib/advene/gui/views/tagbag.py:178
+msgid "Tag bag options"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:890
-#: ../lib/advene/gui/edit/transcribe.py:980
-msgid "This will overwrite the current textual content. Are you sure?"
+#: ../lib/advene/gui/views/tagbag.py:179
+msgid "Update with new tags"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:893
-msgid "Select transcription file to load"
+#: ../lib/advene/gui/views/tagbag.py:179
+msgid "Automatically display new defined tags"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:910
+#: ../lib/advene/gui/views/tagbag.py:228
 #, python-format
-msgid "Cannot open %(filename)s: %(error)s"
+msgid "Choose the color for tag %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:965
-msgid "Cannot import annotations: no existing interface"
+#: ../lib/advene/gui/views/tagbag.py:252
+msgid "Set color"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:967
-msgid "Select the annotation type to import"
+#: ../lib/advene/gui/views/tagbag.py:253
+msgid "Remove"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:976
-#, fuzzy, python-format
-msgid "There are no annotations of type %s"
-msgstr "di un tipo di annotazione"
-
-#: ../lib/advene/gui/edit/transcribe.py:1005
-msgid "Cannot convert the data: no associated package"
-msgstr "Impossibile convertire il dato: nessun pacchetto associato"
-
-#: ../lib/advene/gui/edit/transcribe.py:1008
-msgid "Converting transcription"
+#: ../lib/advene/gui/views/tagbag.py:326
+msgid "Drop a tag here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1014
-msgid "Choose the annotation-type where to create annotations.\n"
-msgstr ""
+#: ../lib/advene/gui/views/tagbag.py:336
+#, fuzzy
+msgid "Save as adhoc view"
+msgstr "Vista statica predefinita"
 
-#: ../lib/advene/gui/edit/transcribe.py:1022
-msgid "Delete existing annotations in this type"
+#: ../lib/advene/gui/views/tagbag.py:337
+msgid "Add a new tag"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1027
-#: ../lib/advene/gui/views/timeline.py:3009 ../lib/advene/gui/main.py:3222
-msgid "Create a new annotation type"
+#: ../lib/advene/gui/views/tagbag.py:338
+msgid "Display all defined tags"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1045
-msgid "Select type"
+#: ../lib/advene/gui/views/__init__.py:194
+msgid "Invalid view id"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1049
-msgid "You want to create a new type. Please specify its schema and title."
+#: ../lib/advene/gui/views/__init__.py:240
+#, python-format
+msgid "Cannot save default options: %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1061
-msgid "Containing schema"
+#: ../lib/advene/gui/views/__init__.py:251
+#, python-format
+msgid "Default options saved for view %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1074
-msgid "Export options"
+#: ../lib/advene/gui/views/__init__.py:283
+#, python-format
+msgid "Saving %s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1079
-msgid "Generate annotations for empty contents"
+#: ../lib/advene/gui/views/__init__.py:286
+msgid "Enter a view name to save this parametered view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1104
+#: ../lib/advene/gui/views/__init__.py:304
 #, python-format
-msgid "The %s identifier already exists. Choose another one."
+msgid "Error: the view %s is not an adhoc view."
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1143
-msgid "Notes converted"
+#: ../lib/advene/gui/views/__init__.py:329
+msgid "HTML export"
+msgstr ""
+
+#: ../lib/advene/gui/views/__init__.py:330
+msgid "Specify a name for the export view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1147
-#: ../lib/advene/gui/views/bookmarks.py:169
+#: ../lib/advene/gui/views/__init__.py:349
 #, python-format
 msgid ""
-"Conversion completed.\n"
-"%s annotations generated."
+"View successfully exported as %s.\n"
+"Open it in the web browser ?"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1163
-#: ../lib/advene/gui/views/activebookmarks.py:546
-msgid "Smallish"
+#: ../lib/advene/gui/views/__init__.py:428
+msgid "Actions"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1167
-#: ../lib/advene/gui/views/activebookmarks.py:550
-msgid "Larger"
+#: ../lib/advene/gui/views/__init__.py:453
+msgid "Click or drag-and-drop to reattach view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1168
-#: ../lib/advene/gui/views/activebookmarks.py:551
-msgid "Huge"
+#: ../lib/advene/gui/views/finder.py:105 ../lib/advene/util/helper.py:402
+msgid "Package"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1190
-msgid "Open"
-msgstr "Apri"
-
-#: ../lib/advene/gui/edit/transcribe.py:1191
-msgid "Save"
-msgstr "Salva"
-
-#: ../lib/advene/gui/edit/transcribe.py:1192
-msgid "Save As"
-msgstr "Salva con Nome"
-
-#: ../lib/advene/gui/edit/transcribe.py:1193
-msgid "Import"
-msgstr "Importa"
+#: ../lib/advene/gui/views/finder.py:106
+msgid "List of views"
+msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1193
-msgid "Import from annotations"
+#: ../lib/advene/gui/views/finder.py:107
+msgid "Static views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
-msgid "Convert"
-msgstr "Converti"
+#: ../lib/advene/gui/views/finder.py:108
+msgid "Dynamic views"
+msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1194
-msgid "Convert to annotations"
+#: ../lib/advene/gui/views/finder.py:109
+msgid "Admin views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1196
-msgid "Center on the current mark"
+#: ../lib/advene/gui/views/finder.py:110
+msgid "Adhoc views"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1197
-msgid "Find"
+#: ../lib/advene/gui/views/finder.py:515
+#, python-format
+msgid ""
+"View <b>%(title)s</b>\n"
+"Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1197
-msgid "Search a string"
+#: ../lib/advene/gui/views/finder.py:522
+msgid "Open in webbrowser"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-msgid "Scale"
+#: ../lib/advene/gui/views/finder.py:523
+#, python-format
+msgid "View applied to %s\n"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1198
-#: ../lib/advene/gui/views/activebookmarks.py:564
-msgid "Set the size of snaphots"
+#: ../lib/advene/gui/views/finder.py:528 ../lib/advene/gui/popup.py:496
+msgid "Activate"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1221
-msgid "Automatically scroll to the mark position when playing"
+#: ../lib/advene/gui/views/finder.py:531
+msgid "Open in GUI"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1223
-msgid "Autoscroll"
+#: ../lib/advene/gui/views/finder.py:533
+msgid "Unknown type of view??"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1230
-msgid "Autoinsert"
+#: ../lib/advene/gui/views/finder.py:558
+msgid "Edit view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/transcribe.py:1232
-msgid "Automatically insert marks"
+#: ../lib/advene/gui/views/finder.py:567
+msgid "Open view"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:74
+#: ../lib/advene/gui/views/finder.py:607 ../lib/advene/gui/views/finder.py:673
 #, python-format
-msgid "No edit popup available for element %s"
+msgid ""
+"%(type)s <b>%(title)s</b>\n"
+"Id: %(id)s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:95
-msgid "Edit Window"
-msgstr "Modifica Finestra"
+#: ../lib/advene/gui/views/finder.py:622
+#: ../lib/advene/gui/views/interactivequery.py:400
+msgid "Edit query"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:134
-msgid "Apply changes and close the edit window"
+#: ../lib/advene/gui/views/finder.py:630
+msgid "Try to apply the query on..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:139
-msgid "Apply changes"
+#: ../lib/advene/gui/views/finder.py:650 ../lib/advene/gui/popup.py:829
+msgid "the package"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:273
-msgid "Content has been modified. Close anyway and lose data?"
+#: ../lib/advene/gui/views/finder.py:651 ../lib/advene/gui/popup.py:830
+msgid "all annotations of the package"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:331
-#: ../lib/advene/gui/views/viewbook.py:234
-#: ../lib/advene/gui/views/viewbook.py:240
-#, python-format
-msgid "Edit %s"
-msgstr "Modifica %s"
+#: ../lib/advene/gui/views/finder.py:652 ../lib/advene/gui/popup.py:831
+msgid "the first annotation of the package"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:333
-#, python-format
-msgid "View %s (read-only)"
-msgstr "Visualizza %s (sola-lettura)"
+#: ../lib/advene/gui/views/finder.py:697
+msgid "Edit resource"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:369
+#: ../lib/advene/gui/views/finder.py:732 ../lib/advene/util/helper.py:565
 #, python-format
-msgid "Display %s"
-msgstr "Visualizza %s"
+msgid ""
+"Package %(title)s:\n"
+"%(schema)s\n"
+"%(annotation)s in %(annotation_type)s\n"
+"%(relation)s in %(relation_type)s\n"
+"%(query)s\n"
+"%(view)s\n"
+"\n"
+"Description:\n"
+"%(description)s\n"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:453
-#, fuzzy
-msgid "Apply changes and edit previous annotation of same type"
-msgstr "di un tipo di annotazione"
+#: ../lib/advene/gui/views/finder.py:753
+#, python-format
+msgid "%(type)s %(title)s"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:457
-#, fuzzy
-msgid "Apply changes and edit next annotation of same type"
-msgstr "di un tipo di annotazione"
+#: ../lib/advene/gui/views/finder.py:756 ../lib/advene/gui/edit/elements.py:517
+#: ../lib/advene/gui/edit/elements.py:566
+#: ../lib/advene/gui/edit/elements.py:653
+#: ../lib/advene/gui/edit/elements.py:733
+#: ../lib/advene/gui/edit/elements.py:791
+#: ../lib/advene/gui/edit/elements.py:882
+#: ../lib/advene/gui/edit/elements.py:952
+#: ../lib/advene/gui/edit/elements.py:1064
+msgid "Metadata"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:463
-msgid "Unhighlight annotation"
+#: ../lib/advene/gui/views/finder.py:773
+msgid "Column-based package finder"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:467
-msgid "Highlight annotation"
+#: ../lib/advene/gui/views/editaccumulator.py:45
+msgid "EditAccumulator"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:498
-msgid "Fragment"
+#: ../lib/advene/gui/views/activebookmarks.py:55
+#: ../lib/advene/gui/views/activebookmarks.py:57
+msgid "ActiveBookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:510
-#: ../lib/advene/gui/edit/elements.py:559
-#: ../lib/advene/gui/edit/elements.py:646
-#: ../lib/advene/gui/edit/elements.py:726
-#: ../lib/advene/gui/edit/elements.py:783
-#: ../lib/advene/gui/edit/elements.py:875
-#: ../lib/advene/gui/edit/elements.py:944
-#: ../lib/advene/gui/edit/elements.py:1056
-#: ../lib/advene/gui/edit/elements.py:1118 ../lib/advene/gui/main.py:4174
-msgid "Author"
-msgstr "Autore"
+#: ../lib/advene/gui/views/activebookmarks.py:63
+#: ../lib/advene/gui/edit/transcribe.py:88
+msgid "Export as static view"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:511
-#: ../lib/advene/gui/edit/elements.py:560
-#: ../lib/advene/gui/edit/elements.py:647
-#: ../lib/advene/gui/edit/elements.py:727
-#: ../lib/advene/gui/edit/elements.py:784
-#: ../lib/advene/gui/edit/elements.py:876
-#: ../lib/advene/gui/edit/elements.py:945
-#: ../lib/advene/gui/edit/elements.py:1057
-#: ../lib/advene/gui/edit/elements.py:1119 ../lib/advene/gui/main.py:4175
-msgid "Date"
-msgstr "Data"
+#: ../lib/advene/gui/views/activebookmarks.py:443
+msgid "Chronological order"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:513
-#: ../lib/advene/gui/edit/elements.py:562
-#: ../lib/advene/gui/edit/elements.py:649
-#: ../lib/advene/gui/edit/elements.py:729
-#: ../lib/advene/gui/edit/elements.py:787
-#: ../lib/advene/gui/edit/elements.py:878
-#: ../lib/advene/gui/edit/elements.py:948
-#: ../lib/advene/gui/edit/elements.py:1060
-msgid "Metadata"
+#: ../lib/advene/gui/views/activebookmarks.py:444
+msgid "Completeness and chronological order"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:582
-#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/views/relationdisplay.py:113
-msgid "Members"
-msgstr "Membri"
+#: ../lib/advene/gui/views/activebookmarks.py:460
+msgid "Bookmark duration"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:600
-#: ../lib/advene/gui/edit/elements.py:677
-#: ../lib/advene/gui/edit/elements.py:737
-#: ../lib/advene/gui/edit/elements.py:1128
-#: ../lib/advene/gui/views/table.py:250
-msgid "Content"
+#: ../lib/advene/gui/views/activebookmarks.py:461
+msgid "Enter the duration (in ms) to convert bookmarks into annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:617
-msgid "Apply changes and visualise in web browser"
+#: ../lib/advene/gui/views/activebookmarks.py:483
+msgid "User-specified duration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:622
-msgid "Apply changes and activate the view"
+#: ../lib/advene/gui/views/activebookmarks.py:484
+msgid "2s duration"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:630
-#: ../lib/advene/gui/edit/elements.py:711
-#: ../lib/advene/gui/edit/elements.py:768
-#: ../lib/advene/gui/edit/elements.py:859
-#: ../lib/advene/gui/edit/elements.py:928
-#: ../lib/advene/gui/edit/elements.py:1030
-#, fuzzy
-msgid "Title (name)"
-msgstr "Nome file"
+#: ../lib/advene/gui/views/activebookmarks.py:485
+msgid "Complete coverage"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:634
-msgid "Name of the view"
+#: ../lib/advene/gui/views/activebookmarks.py:503
+msgid "Drop a bookmark here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:658
-msgid "Class"
-msgstr "Classe"
+#: ../lib/advene/gui/views/activebookmarks.py:530
+msgid "Type of the annotations that will be created"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:661
-msgid "Match Filter"
+#: ../lib/advene/gui/views/activebookmarks.py:548
+#: ../lib/advene/gui/edit/transcribe.py:1155
+msgid "Smallish"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:699 ../lib/advene/gui/popup.py:821
-#, python-format
-msgid "Exception in query: %s"
+#: ../lib/advene/gui/views/activebookmarks.py:549
+#: ../lib/advene/gui/edit/transcribe.py:1156 ../lib/advene/rules/actions.py:167
+msgid "Small"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:704
-#, fuzzy
-msgid "Validate and run query on package"
-msgstr "Crea un nuovo pacchetto"
-
-#: ../lib/advene/gui/edit/elements.py:715
-msgid "Name of the query"
+#: ../lib/advene/gui/views/activebookmarks.py:550
+#: ../lib/advene/gui/edit/transcribe.py:1157 ../lib/advene/rules/actions.py:168
+msgid "Normal"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:772
-#, fuzzy
-msgid "Name of the package"
-msgstr "Tutte le visualizzazioni del pacchetto"
-
-#: ../lib/advene/gui/edit/elements.py:790
-#: ../lib/advene/gui/edit/elements.py:881
-#: ../lib/advene/gui/edit/elements.py:960
-#: ../lib/advene/gui/edit/elements.py:1074
-msgid "Description"
-msgstr "Descrizione"
-
-#: ../lib/advene/gui/edit/elements.py:794
-#: ../lib/advene/gui/edit/elements.py:885
-#: ../lib/advene/gui/edit/elements.py:964
-#: ../lib/advene/gui/edit/elements.py:1078
-msgid "Textual description of the package"
-msgstr "Descrizione testuale del pacchetto"
-
-#: ../lib/advene/gui/edit/elements.py:799
-msgid "Default dynamic view"
-msgstr "Vista dinamica predefinita"
-
-#: ../lib/advene/gui/edit/elements.py:803
-msgid "Dynamic view to activate on package load"
+#: ../lib/advene/gui/views/activebookmarks.py:551
+#: ../lib/advene/gui/edit/transcribe.py:1158 ../lib/advene/rules/actions.py:169
+msgid "Large"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:808
-msgid "Default static view"
-msgstr "Vista statica predefinita"
-
-#: ../lib/advene/gui/edit/elements.py:812
-msgid "Static view to open on package load"
+#: ../lib/advene/gui/views/activebookmarks.py:552
+#: ../lib/advene/gui/edit/transcribe.py:1159
+msgid "Larger"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:817
-msgid "Default adhoc view"
+#: ../lib/advene/gui/views/activebookmarks.py:553
+#: ../lib/advene/gui/edit/transcribe.py:1160
+msgid "Huge"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:821
-msgid "Adhoc view to open on package load"
+#: ../lib/advene/gui/views/activebookmarks.py:563
+msgid "Reorder active bookmarks"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:826
-msgid "Cached duration"
+#: ../lib/advene/gui/views/activebookmarks.py:564
+msgid "Complete bookmarks into annotations"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:830
-msgid "Cached duration in ms"
+#: ../lib/advene/gui/views/activebookmarks.py:565
+msgid "Save the current state"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:835
-msgid "Mediafile"
+#: ../lib/advene/gui/views/activebookmarks.py:566
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Set the size of snaphots"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:839
-msgid "Location of associated media file"
+#: ../lib/advene/gui/views/activebookmarks.py:833
+msgid "Remove end timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:863
-#, fuzzy
-msgid "Name of the schema"
-msgstr "Schema"
-
-#: ../lib/advene/gui/edit/elements.py:895
-#: ../lib/advene/gui/edit/elements.py:975
-msgid "TALES expression returning a color for the element"
+#: ../lib/advene/gui/views/activebookmarks.py:1041
+msgid ""
+"Error: cannot find an appropriate schema to create the Active-bookmark type."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:902
-#: ../lib/advene/gui/edit/elements.py:993
-msgid "Item color"
-msgstr "Colore oggetto"
-
-#: ../lib/advene/gui/edit/elements.py:906
-#: ../lib/advene/gui/edit/elements.py:997
-msgid ""
-"TALES expression returning a color for the items contained by the element"
+#: ../lib/advene/gui/views/activebookmarks.py:1046
+msgid "Active bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:932
-#: ../lib/advene/gui/edit/elements.py:1034
-msgid "Name of the type"
+#: ../lib/advene/gui/views/activebookmarks.py:1084
+msgid "Validate the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:950
-#: ../lib/advene/gui/edit/elements.py:1039
-#: ../lib/advene/gui/edit/elements.py:1308
-msgid "MIME Type"
-msgstr "Tipo MIME"
+#: ../lib/advene/gui/views/activebookmarks.py:1228
+msgid "Duplicate bookmark"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:954
-#: ../lib/advene/gui/edit/elements.py:1043
-#, fuzzy
-msgid "MIMEType of the content"
-msgstr "Aggiorna il contenuto"
+#: ../lib/advene/gui/views/activebookmarks.py:1229
+msgid "Remove bookmark"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:982
-#: ../lib/advene/gui/views/transcription.py:165
-msgid "Representation"
+#: ../lib/advene/gui/views/activebookmarks.py:1238
+msgid "Remove begin timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:986
-msgid ""
-"TALES expression used to get a compact representation of the annotations"
+#: ../lib/advene/gui/views/activebookmarks.py:1245
+msgid "Complete bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:987
-#, fuzzy, python-format
-msgid "Display %s key"
-msgstr "Visualizza %s"
+#: ../lib/advene/gui/views/activebookmarks.py:1249
+msgid "Change type to"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1003
-#, fuzzy
-msgid "Completions"
-msgstr "Relazioni"
+#: ../lib/advene/gui/views/logwindow.py:43
+msgid "Links"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1007
-msgid "Space-separated list of words used for content completion"
+#: ../lib/advene/gui/views/logwindow.py:45
+msgid "URL stack"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1013
-#, fuzzy
-msgid "Advanced"
-msgstr "Advene"
+#: ../lib/advene/gui/views/logwindow.py:123
+#, python-format
+msgid "Go to %s"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1063
-msgid "Any annotation type"
+#: ../lib/advene/gui/views/logwindow.py:129 ../lib/advene/rules/actions.py:63
+msgid "Go to the given position"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1089
-msgid "TALES expression specifying a color"
+#: ../lib/advene/gui/views/logwindow.py:157
+msgid "Push a URL on the stack"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1116
-msgid "MIMEType"
-msgstr "TipoMIME"
+#: ../lib/advene/gui/views/logwindow.py:158
+msgid "Description of the URL"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1341
-#, python-format
-msgid "Error: cannot find a content handler for %s"
+#: ../lib/advene/gui/views/interactivequery.py:51
+#: ../lib/advene/gui/views/interactivequery.py:99
+msgid "Interactive query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1457
-#: ../lib/advene/gui/edit/elements.py:1682
-#, python-format
-msgid ""
-"Cannot read the data:\n"
-"%s"
+#: ../lib/advene/gui/views/interactivequery.py:53
+msgid "Interactive query dialog"
 msgstr ""
-"Impossibile leggere il dato:\n"
-"%s"
 
-#: ../lib/advene/gui/edit/elements.py:1481
-#: ../lib/advene/gui/edit/elements.py:1707
-msgid "Save content to..."
-msgstr "Salva contenuto in..."
+#: ../lib/advene/gui/views/interactivequery.py:59
+#: ../lib/advene/gui/views/interactivequery.py:256
+msgid "Save query"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1492
-#: ../lib/advene/gui/edit/elements.py:1720
+#: ../lib/advene/gui/views/interactivequery.py:122
+#: ../lib/advene/gui/views/interactivequery.py:172
 #, python-format
 msgid ""
-"Cannot save the data:\n"
+"Invalid query.\n"
+"The following fields have an invalid value:\n"
 "%s"
 msgstr ""
-"Impossibile salvare il dato:\n"
-"%s"
-
-#: ../lib/advene/gui/edit/elements.py:1511
-#: ../lib/advene/gui/edit/elements.py:1734
-msgid "Open a file (C-o)"
-msgstr "Apri un file (C-o)"
-
-#: ../lib/advene/gui/edit/elements.py:1516
-#: ../lib/advene/gui/edit/elements.py:1739
-msgid "Save to a file (C-s)"
-msgstr "Salva in un file (C-s)"
-
-#: ../lib/advene/gui/edit/elements.py:1521
-#: ../lib/advene/gui/edit/elements.py:1744
-msgid "Reload the file (C-r)"
-msgstr "Ricarica il file (C-r)"
-
-#: ../lib/advene/gui/edit/elements.py:1527
-msgid "Insert a value from the browser (C-i)"
-msgstr "Inserisci un valore dal browser (C-i)"
 
-#: ../lib/advene/gui/edit/elements.py:1773
-msgid "Begin time is greater than end time"
-msgstr "Il tempo di inizio è più grande di quello finale"
-
-#: ../lib/advene/gui/edit/elements.py:1803
-#: ../lib/advene/gui/views/table.py:252
-msgid "Begin"
+#: ../lib/advene/gui/views/interactivequery.py:136
+#: ../lib/advene/gui/views/interactivequery.py:296
+msgid "Saving the query..."
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:1812
-#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/main.py:628
-msgid "End"
+#: ../lib/advene/gui/views/interactivequery.py:137
+#: ../lib/advene/gui/views/interactivequery.py:297
+msgid "Give a title and identifier for saving the query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2044
-msgid "Expecting an integer."
+#: ../lib/advene/gui/views/interactivequery.py:180
+msgid "Expert search"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2076
+#: ../lib/advene/gui/views/interactivequery.py:186
 #, python-format
 msgid ""
-"The %(attribute)s attribute could not be updated:\n"
-"\n"
-"%(error)s\n"
-"\n"
-"Resetting to the original value."
+"TALES error in interactive expression:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2103
-#, python-format
-msgid ""
-"The following attributes cannot be updated:\n"
-"\n"
-"%s"
+#: ../lib/advene/gui/views/interactivequery.py:247
+msgid "Interactive result"
 msgstr ""
-"I seguenti attributi non possono essere aggiornati:\n"
-"\n"
-"%s"
 
-#: ../lib/advene/gui/edit/elements.py:2143
-#, python-format
-msgid ""
-"The following attributes could not be updated:\n"
-"\n"
-"%s"
+#: ../lib/advene/gui/views/interactivequery.py:249
+msgid "Interactive result display"
 msgstr ""
-"I seguenti attributi potrebbero non essere aggiornati:\n"
-"\n"
-"%s"
 
-#: ../lib/advene/gui/edit/elements.py:2160
-msgid "Attribute"
-msgstr "Attributo"
+#: ../lib/advene/gui/views/interactivequery.py:274
+msgid "Result of interactive query"
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2168
-#: ../lib/advene/gui/views/browser.py:366
-msgid "Value"
+#: ../lib/advene/gui/views/interactivequery.py:278
+msgid "Result of a query"
 msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2259
-msgid "Insert an element"
-msgstr "Inserisci un elemento"
+#: ../lib/advene/gui/views/interactivequery.py:333
+#, fuzzy, python-format
+msgid "Comment on annotations containing %s"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/edit/elements.py:2260
-msgid "Choose the element to insert."
-msgstr "Scegli un elemento da inserire."
+#: ../lib/advene/gui/views/interactivequery.py:352
+msgid "Choose the annotation type where annotations will be created."
+msgstr ""
 
-#: ../lib/advene/gui/edit/elements.py:2330
-#: ../lib/advene/gui/edit/elements.py:2373
+#: ../lib/advene/gui/views/interactivequery.py:356
 #, python-format
-msgid "Some tags contain invalid characters: %s"
-msgstr "Qualche tag contiene caratteri invalidi: %s"
-
-#: ../lib/advene/gui/edit/elements.py:2353
-msgid "Tags:"
+msgid "Copied result of the '%s' query"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:163
-#: ../lib/advene/gui/views/browser.py:165
-msgid "TALES browser"
-msgstr ""
+#: ../lib/advene/gui/views/interactivequery.py:368
+#, fuzzy, python-format
+msgid "Search/replace content in %d elements"
+msgstr "Elementi cercati"
 
-#: ../lib/advene/gui/views/browser.py:170
-msgid "Display result in table"
+#: ../lib/advene/gui/views/interactivequery.py:396
+msgid "Edit query again"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:193
-msgid "Insert path"
+#: ../lib/advene/gui/views/interactivequery.py:410
+msgid "Search again"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:194
-msgid "Insert value"
+#: ../lib/advene/gui/views/interactivequery.py:416
+msgid "Empty result"
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:249
-msgid "Expression returned None (there was an exception)"
+#: ../lib/advene/gui/views/interactivequery.py:425
+#, python-format
+msgid "Result is a list of %d annotations."
 msgstr ""
 
-#: ../lib/advene/gui/views/browser.py:302
-msgid "Result is not a list"
+#: ../lib/advene/gui/views/interactivequery.py:427
+#, python-format
+msgid "Result is a list of  %(number)d elements with %(elements)s."
 msgstr ""
 
-#: ../lib/advene/gui/views/accumulatorpopup.py:49
-msgid "PopupAccumulator"
+#: ../lib/advene/gui/views/interactivequery.py:439
+#: ../lib/advene/gui/edit/montage.py:478
+msgid "Unhighlight annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/editionhistory.py:40
-#, fuzzy
-msgid "Edition History"
-msgstr "_Cronologia di Navigazione"
-
-#: ../lib/advene/gui/views/editionhistory.py:42
-msgid "Access last edited/created elements"
+#: ../lib/advene/gui/views/interactivequery.py:443
+#: ../lib/advene/gui/views/interactivequery.py:480
+#: ../lib/advene/gui/edit/montage.py:482 ../lib/advene/gui/edit/montage.py:491
+msgid "Highlight annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/editionhistory.py:102
-#, fuzzy
-msgid "Created"
-msgstr "Crea"
-
-#: ../lib/advene/gui/views/editionhistory.py:103
-#, fuzzy
-msgid "Edited"
-msgstr "_Modifica"
-
-#: ../lib/advene/gui/views/logwindow.py:43
-msgid "Links"
+#: ../lib/advene/gui/views/interactivequery.py:464
+#: ../lib/advene/gui/edit/imports.py:181 ../lib/advene/gui/edit/imports.py:182
+msgid "Annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:45
-msgid "URL stack"
+#: ../lib/advene/gui/views/interactivequery.py:470
+msgid "Other elements"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:123
-#, python-format
-msgid "Go to %s"
+#: ../lib/advene/gui/views/interactivequery.py:474
+msgid "Display annotations in timeline"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:157
-msgid "Push a URL on the stack"
+#: ../lib/advene/gui/views/interactivequery.py:475
+msgid "Display annotations as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/logwindow.py:158
-msgid "Description of the URL"
+#: ../lib/advene/gui/views/interactivequery.py:481
+#: ../lib/advene/gui/views/interactivequery.py:503
+msgid "Export table"
 msgstr ""
 
-#: ../lib/advene/gui/views/checker.py:37
-msgid "Checker"
+#: ../lib/advene/gui/views/interactivequery.py:482
+msgid "Create annotations from the result"
 msgstr ""
 
-#: ../lib/advene/gui/views/checker.py:39
-#, fuzzy
-msgid "Check various package properties"
-msgstr "Modifica proprietà pacchetto"
+#: ../lib/advene/gui/views/interactivequery.py:483
+msgid "Define a montage with the result"
+msgstr ""
 
-#: ../lib/advene/gui/views/checker.py:90
+#: ../lib/advene/gui/views/interactivequery.py:484
 #, fuzzy
-msgid "List of possible issues in the current package"
-msgstr "Salva il pacchetto attuale"
+msgid "Create a comment view with the result"
+msgstr "Vista statica predefinita"
 
-#: ../lib/advene/gui/views/checker.py:108
-msgid "Overlapping"
+#: ../lib/advene/gui/views/interactivequery.py:485
+msgid "Search and replace strings in the annotations content"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:52
-msgid "Tag Bag"
+#: ../lib/advene/gui/views/interactivequery.py:510
+msgid "Edit elements"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
-msgid "Bag of tags"
-msgstr "Raccolta di tag"
-
-#: ../lib/advene/gui/views/tagbag.py:59
-msgid "New tag"
+#: ../lib/advene/gui/views/interactivequery.py:516
+msgid "Open in python evaluator"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:122
-msgid "New tag name"
+#: ../lib/advene/gui/views/interactivequery.py:519
+#, python-format
+msgid ""
+"Result:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:128
-msgid "Enter a new tag name and select its color."
+#: ../lib/advene/gui/views/interactivequery.py:561
+msgid "Results of _interactive query"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3720
-msgid "The tag contains invalid characters"
+#: ../lib/advene/gui/popup.py:138
+msgid "Choose the file to insert"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:175
-msgid "Tag bag options"
+#: ../lib/advene/gui/popup.py:146
+msgid "Select a valid identifier"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:176
-msgid "Update with new tags"
+#: ../lib/advene/gui/popup.py:147
+#, python-format
+msgid ""
+"The filename %s contains invalid characters\n"
+"that have been replaced.\n"
+"You can modify this identifier if necessary:"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:176
-msgid "Automatically display new defined tags"
-msgstr ""
+#: ../lib/advene/gui/popup.py:158
+#, fuzzy
+msgid "Choose the soundclip to insert"
+msgstr "Scegli un elemento da inserire."
 
-#: ../lib/advene/gui/views/tagbag.py:225
-#, python-format
-msgid "Choose the color for tag %s"
+#: ../lib/advene/gui/popup.py:162
+msgid "Choose the directory to insert"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:249
-msgid "Set color"
+#: ../lib/advene/gui/popup.py:177
+msgid "Named-Entity extraction using NERD"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:250
-msgid "Remove"
+#: ../lib/advene/gui/popup.py:181
+msgid ""
+"Give the offset to use\n"
+"on specified element.\n"
+"It is in ms and can be\n"
+"either positive or negative."
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:324
-msgid "Drop a tag here to remove it from the list"
+#: ../lib/advene/gui/popup.py:225
+#, python-format
+msgid "Replace content in %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/tagbag.py:333
-#, fuzzy
-msgid "Save as adhoc view"
-msgstr "Vista statica predefinita"
+#: ../lib/advene/gui/popup.py:228
+#, fuzzy, python-format
+msgid "Replace content in annotations of type %s"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/views/tagbag.py:334
-msgid "Add a new tag"
-msgstr ""
+#: ../lib/advene/gui/popup.py:231
+#, fuzzy
+msgid "Replace content in all annotations"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/views/tagbag.py:335
-msgid "Display all defined tags"
+#: ../lib/advene/gui/popup.py:324
+#, python-format
+msgid "Copy id %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:48
-msgid "Transcription"
+#: ../lib/advene/gui/popup.py:358
+#, python-format
+msgid ""
+"<b>Statistics about %s</b>\n"
+"\n"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:50
-#, fuzzy
-msgid "Display annotations as a text transcription"
-msgstr "Visualizza le annotazione come una trascrizione"
-
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/popup.py:364
 #, python-format
-msgid "Error in source evaluation %(source)s: %(error)s"
+msgid "Renumbering annotations of type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:163
-msgid "Transcription options"
+#: ../lib/advene/gui/popup.py:371
+msgid ""
+"<b>Renumber all annotations according to their order.</b>\n"
+"\n"
+"<i>Note that this action cannot be undone.</i>\n"
+"Replace the first numeric value of the annotation content with the new "
+"annotation number.\n"
+"If no numeric value is found and the annotation is structured, it will "
+"insert the number.\n"
+"If no numeric value is found and the annotation is of type text/plain, it "
+"will overwrite the annotation content.\n"
+"The offset parameter allows you to renumber from a given annotation."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
-msgid "Default representation"
+#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
+msgid "Offset"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:164
-msgid "Use the default representation for annotations"
-msgstr ""
+#: ../lib/advene/gui/popup.py:399
+#, fuzzy, python-format
+msgid "Renumbering %d annotations"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/popup.py:408
+#, fuzzy, python-format
+msgid "Annotation #%d"
+msgstr "Tipo di Annotazione"
+
+#: ../lib/advene/gui/popup.py:444 ../lib/advene/gui/edit/montage.py:309
+#, fuzzy, python-format
+msgid "Extracting %s"
+msgstr "Modifica %s"
+
+#: ../lib/advene/gui/popup.py:445
+#, python-format
 msgid ""
-"If default representation is unchecked,\n"
-"this TALES expression that will be used to format the annotations."
+"Exporting annotation %(title)s\n"
+"from %(begin)s to %(end)s\n"
+"to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:166
-msgid "Separator"
+#: ../lib/advene/gui/popup.py:456 ../lib/advene/gui/edit/transcribe.py:504
+msgid "Edit"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:167
-msgid "This separator will be inserted between the annotations."
+#: ../lib/advene/gui/popup.py:458
+msgid "Browse"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:168
-msgid "Whitespace"
+#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
+msgid "Open in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:169
-msgid "Newline"
-msgstr ""
+#: ../lib/advene/gui/popup.py:472 ../lib/advene/gui/popup.py:476
+#: ../lib/advene/gui/edit/shapewidget.py:1598
+msgid "Delete"
+msgstr "Elimina"
 
-#: ../lib/advene/gui/views/transcription.py:170
-msgid "Tabulation"
+#: ../lib/advene/gui/popup.py:479
+#, fuzzy
+msgid "Search/replace content"
+msgstr "Elementi cercati"
+
+#: ../lib/advene/gui/popup.py:497
+msgid "Desactivate"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:171
-msgid "Dash"
+#: ../lib/advene/gui/popup.py:514
+msgid "Loop"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:172
-msgid "User defined"
+#: ../lib/advene/gui/popup.py:515
+msgid "Duplicate"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid "User-defined separator"
+#: ../lib/advene/gui/popup.py:519
+#, fuzzy
+msgid "Save snapshot..."
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/popup.py:521
+#, fuzzy
+msgid "Extract video fragment"
+msgstr "Inserisci un indirizzo di un video stream"
+
+#: ../lib/advene/gui/popup.py:551
+msgid "Incoming"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:174
-msgid ""
-"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
-"a tabulation."
+#: ../lib/advene/gui/popup.py:567
+msgid "Outgoing"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Display timestamps"
+#: ../lib/advene/gui/popup.py:582
+msgid "Related annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:175
-msgid "Insert timestsamp values"
+#: ../lib/advene/gui/popup.py:589
+msgid "Incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:176
-msgid "Display annotation bounds"
+#: ../lib/advene/gui/popup.py:596
+msgid "Outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:236
+#: ../lib/advene/gui/popup.py:612
 #, python-format
-msgid ""
-"Cannot convert the following annotations,\n"
-"the representation pattern is too complex.\n"
-"%s"
+msgid "Begin: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:247
-msgid ""
-"Cannot validate the update.\n"
-"The representation pattern is too complex."
+#: ../lib/advene/gui/popup.py:614
+#, python-format
+msgid "End: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:273
-msgid "Save transcription to a text file"
-msgstr ""
+#: ../lib/advene/gui/popup.py:615
+#, fuzzy, python-format
+msgid "Duration: %s"
+msgstr "Relazioni"
 
-#: ../lib/advene/gui/views/transcription.py:274
-msgid "Apply the modifications"
+#: ../lib/advene/gui/popup.py:622
+msgid "Members:"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:275
-msgid "Find text"
+#: ../lib/advene/gui/popup.py:635
+msgid "Edit package properties..."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:276
-msgid "Quickly switch display options"
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
+#, python-format
+msgid "%d annotations(s) - statistics"
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:277
-msgid "Refresh the transcription"
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
+msgid "Create a new static view..."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:278
-msgid "Edit preferences"
+#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:865
+msgid "Create a new dynamic view..."
 msgstr ""
 
-#: ../lib/advene/gui/views/transcription.py:697
-#, python-format
-msgid "Cannot write to %(filename)s: %(error)s:"
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
+msgid "Create a new annotation..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:52
-#: ../lib/advene/gui/views/activebookmarks.py:54
-msgid "ActiveBookmarks"
+#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
+msgid "Create a new schema..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:441
-msgid "Chronological order"
+#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
+msgid "Create a new query..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:442
-msgid "Completeness and chronological order"
+#: ../lib/advene/gui/popup.py:651
+msgid "Create a new folder..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:458
-msgid "Bookmark duration"
+#: ../lib/advene/gui/popup.py:652
+msgid "Create a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:459
-msgid "Enter the duration (in ms) to convert bookmarks into annotations"
+#: ../lib/advene/gui/popup.py:653
+msgid "Insert a new resource file..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:481
-msgid "User-specified duration"
+#: ../lib/advene/gui/popup.py:654
+msgid "Insert a new resource directory..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:482
-msgid "2s duration"
+#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
+msgid "Insert a soundclip..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:483
-msgid "Complete coverage"
+#: ../lib/advene/gui/popup.py:676
+msgid "Play sound"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:501
-msgid "Drop a bookmark here to remove it from the list"
+#: ../lib/advene/gui/popup.py:686
+msgid "Create a new annotation type..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:520
-#: ../lib/advene/gui/views/bookmarks.py:243
-msgid "Insert a bookmark for the current video time"
+#: ../lib/advene/gui/popup.py:688
+msgid "Create a new relation type..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:528
-msgid "Type of the annotations that will be created"
+#: ../lib/advene/gui/popup.py:690 ../lib/advene/gui/popup.py:750
+#: ../lib/advene/gui/popup.py:803
+msgid "Select a color"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:561
-msgid "Reorder active bookmarks"
+#: ../lib/advene/gui/popup.py:699
+#, python-format
+msgid "A caption dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:562
-msgid "Complete bookmarks into annotations"
-msgstr ""
+#: ../lib/advene/gui/popup.py:708
+#, fuzzy, python-format
+msgid "Caption %s annotations"
+msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/gui/views/activebookmarks.py:563
-msgid "Save the current state"
+#: ../lib/advene/gui/popup.py:718 ../lib/advene/rules/actions.py:119
+msgid "Caption the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:863
-msgid "Remove end timestamp"
+#: ../lib/advene/gui/popup.py:740
+#, fuzzy
+msgid "Create a comment view"
+msgstr "Vista statica predefinita"
+
+#: ../lib/advene/gui/popup.py:741
+#, fuzzy
+msgid "Generate a caption dynamic view..."
+msgstr "Vista dinamica predefinita"
+
+#: ../lib/advene/gui/popup.py:742
+msgid "Display as transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1071
-msgid ""
-"Error: cannot find an appropriate schema to create the Active-bookmark type."
+#: ../lib/advene/gui/popup.py:743
+msgid "Display annotations in table"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1076
-msgid "Active bookmark"
+#: ../lib/advene/gui/popup.py:744
+msgid "Export to another format..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1114
-msgid "Validate the annotation"
+#: ../lib/advene/gui/popup.py:746
+msgid "Extract Named Entities..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1260
-msgid "Duplicate bookmark"
+#: ../lib/advene/gui/popup.py:752
+#, fuzzy
+msgid "Delete all annotations"
+msgstr "Tutte le annotazioni"
+
+#: ../lib/advene/gui/popup.py:753
+#, fuzzy
+msgid "Renumber annotations..."
+msgstr "Tutte le annotazioni"
+
+#: ../lib/advene/gui/popup.py:754
+#, fuzzy
+msgid "Shot validation view..."
+msgstr "Seleziona un'azione"
+
+#: ../lib/advene/gui/popup.py:766
+#, python-format
+msgid "A follow dynamic view for %s already seems to exist."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1261
-msgid "Remove bookmark"
+#: ../lib/advene/gui/popup.py:775
+#, fuzzy, python-format
+msgid "Follow %s relation-type"
+msgstr "Tipo di Annotazione"
+
+#: ../lib/advene/gui/popup.py:784
+msgid "Follow the relation"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1270
-msgid "Remove begin timestamp"
+#: ../lib/advene/gui/popup.py:804
+msgid "Delete all relations..."
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1277
-msgid "Complete bookmark"
+#: ../lib/advene/gui/popup.py:805
+#, fuzzy
+msgid "Create montage from related annotations"
+msgstr "Trascrizione delle annotazioni"
+
+#: ../lib/advene/gui/popup.py:806
+msgid "Create dynamic view following relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/activebookmarks.py:1281
-msgid "Change type to"
+#: ../lib/advene/gui/popup.py:821 ../lib/advene/gui/edit/elements.py:703
+#, python-format
+msgid "Exception in query: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:48
-msgid "Bookmarks importer"
+#: ../lib/advene/gui/popup.py:824
+msgid "Apply query on..."
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:69
-msgid "Bookmarks"
+#: ../lib/advene/gui/popup.py:849
+msgid "Activate view"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:71
-msgid "Bookmark timecodes with their corresponding screenshots"
+#: ../lib/advene/gui/popup.py:851
+msgid "Open adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:142
-msgid "Select the annotation type to generate"
+#: ../lib/advene/gui/util/initialconfig.py:82
+msgid "Initial Advene configuration"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:147
-msgid "Choose a duration"
+#: ../lib/advene/gui/util/initialconfig.py:83
+msgid ""
+"<span size='large'><b>Welcome in Advene</b>\n"
+"This is the first time that you run Advene. Please answer some basic "
+"configuration questions. You will be able to modify these choices from the "
+"Advene interface, in the Edit/Preferences menu.</span>"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:148
-msgid "Enter the standard duration (in ms) of created annotations."
+#: ../lib/advene/gui/util/initialconfig.py:84
+msgid "Interface language"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:165
-msgid "Converted from bookmarks"
+#: ../lib/advene/gui/util/initialconfig.py:84
+msgid "Language used for the interface"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:223
-msgid "Drop a position here to remove it from the list"
+#: ../lib/advene/gui/util/initialconfig.py:90
+msgid "Weekly check for Advene updates on the Advene website"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:244
-msgid "Convert bookmarks to annotations"
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for data files"
 msgstr ""
 
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3609
-msgid "Comment here"
+#: ../lib/advene/gui/util/initialconfig.py:92
+msgid "Preferred directory for storing data files (Advene packages)"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewplugin.py:60
-msgid "Generic view plugin"
+#: ../lib/advene/gui/util/initialconfig.py:94
+msgid "Directories to search for movies"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewplugin.py:62
-msgid "You should not ever see this tooltip..."
+#: ../lib/advene/gui/util/initialconfig.py:94
+#, python-format
+msgid ""
+"List of directories (separated by %(pathsep)s) to search for movie files."
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:51
-#: ../lib/advene/gui/views/interactivequery.py:99
-msgid "Interactive query"
+#: ../lib/advene/gui/util/initialconfig.py:95
+msgid "First look for movie file in the same directory as the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:53
-msgid "Interactive query dialog"
+#: ../lib/advene/gui/util/initialconfig.py:95
+msgid ""
+"If checked, the movie file will be searched for in the same directory as the "
+"referencing package."
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:59
-#: ../lib/advene/gui/views/interactivequery.py:256
-msgid "Save query"
+#: ../lib/advene/gui/util/__init__.py:44 ../lib/advene/gui/edit/create.py:106
+msgid "Plain text content"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:122
-#: ../lib/advene/gui/views/interactivequery.py:172
-#, python-format
-msgid ""
-"Invalid query.\n"
-"The following fields have an invalid value:\n"
-"%s"
+#: ../lib/advene/gui/util/__init__.py:45
+#, fuzzy
+msgid "HTML content"
+msgstr "template HTML"
+
+#: ../lib/advene/gui/util/__init__.py:46 ../lib/advene/gui/edit/create.py:107
+msgid "Simple-structured content"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:136
-#: ../lib/advene/gui/views/interactivequery.py:296
-msgid "Saving the query..."
+#: ../lib/advene/gui/util/__init__.py:47
+msgid "List of numeric values"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:137
-#: ../lib/advene/gui/views/interactivequery.py:297
-msgid "Give a title and identifier for saving the query"
+#: ../lib/advene/gui/util/__init__.py:48 ../lib/advene/gui/edit/create.py:108
+msgid "SVG graphics content"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:180
-msgid "Expert search"
+#: ../lib/advene/gui/util/__init__.py:389
+#, python-format
+msgid ""
+"Annotation Type %(title)s:\n"
+"%(count)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:186
+#: ../lib/advene/gui/util/__init__.py:395
 #, python-format
 msgid ""
-"TALES error in interactive expression:\n"
-"%s"
+"Relation Type %(title)s:\n"
+"%(count)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:247
-msgid "Interactive result"
+#: ../lib/advene/gui/util/dialog.py:414 ../lib/advene/gui/util/dialog.py:453
+msgid "Name the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:249
-msgid "Interactive result display"
+#: ../lib/advene/gui/util/dialog.py:417 ../lib/advene/gui/util/dialog.py:454
+msgid "Choose a name for the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:274
-msgid "Result of interactive query"
+#: ../lib/advene/gui/util/dialog.py:492
+msgid "Open a file"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:278
-msgid "Result of a query"
+#: ../lib/advene/gui/util/dialog.py:517 ../lib/advene/gui/util/dialog.py:553
+msgid "N/C"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3188
-#, python-format
-msgid "'%s'"
-msgstr ""
-
-#: ../lib/advene/gui/views/interactivequery.py:333
-#, fuzzy, python-format
-msgid "Comment on annotations containing %s"
-msgstr "Tutte le annotazioni"
-
-#: ../lib/advene/gui/views/interactivequery.py:352
-msgid "Choose the annotation type where annotations will be created."
-msgstr ""
-
-#: ../lib/advene/gui/views/interactivequery.py:356
-#, python-format
-msgid "Copied result of the '%s' query"
-msgstr ""
-
-#: ../lib/advene/gui/views/interactivequery.py:368
-#, fuzzy, python-format
-msgid "Search/replace content in %d elements"
-msgstr "Elementi cercati"
-
-#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3185
-msgid "Empty quicksearch string"
+#: ../lib/advene/gui/util/dialog.py:522
+msgid "Alias"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:396
-msgid "Edit query again"
+#: ../lib/advene/gui/util/dialog.py:542
+msgid ""
+"Press to\n"
+"display\n"
+"information"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:400
-#: ../lib/advene/gui/views/finder.py:436
-msgid "Edit query"
+#: ../lib/advene/gui/util/dialog.py:561
+msgid "Wait..."
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:537
-msgid "String to search"
+#: ../lib/advene/gui/util/dialog.py:565
+#, python-format
+msgid "Error: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:410
-msgid "Search again"
+#: ../lib/advene/gui/util/dialog.py:585
+msgid "Any type of file"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:416
-msgid "Empty result"
+#: ../lib/advene/gui/util/dialog.py:587
+msgid "Advene files (.xml, .azp, .apl)"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:425
-#, python-format
-msgid "Result is a list of %d annotations."
+#: ../lib/advene/gui/util/dialog.py:589
+msgid "Advene session (.apl)"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:427
-#, python-format
-msgid "Result is a list of  %(number)d elements with %(elements)s."
-msgstr ""
+#: ../lib/advene/gui/util/dialog.py:590
+#, fuzzy
+msgid "Audio files"
+msgstr "Aggiungi file..."
 
-#: ../lib/advene/gui/views/interactivequery.py:470
-msgid "Other elements"
+#: ../lib/advene/gui/util/dialog.py:591
+msgid "Video files"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:474
-msgid "Display annotations in timeline"
-msgstr ""
+#: ../lib/advene/gui/util/dialog.py:636
+#: ../lib/advene/gui/edit/properties.py:423
+msgid "Choose a directory"
+msgstr "Scegliere una cartella"
 
-#: ../lib/advene/gui/views/interactivequery.py:475
-msgid "Display annotations as transcription"
+#: ../lib/advene/gui/util/dialog.py:689
+msgid "Select an element"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:481
-#: ../lib/advene/gui/views/interactivequery.py:503
-msgid "Export table"
+#: ../lib/advene/gui/edit/rules.py:88 ../lib/advene/gui/edit/rules.py:90
+#: ../lib/advene/gui/edit/create.py:252
+msgid "Rule"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:482
-msgid "Create annotations from the result"
+#: ../lib/advene/gui/edit/rules.py:99 ../lib/advene/gui/edit/create.py:242
+msgid "Subviews"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:483
-msgid "Define a montage with the result"
+#: ../lib/advene/gui/edit/rules.py:126
+msgid "Add a new rule"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:484
-#, fuzzy
-msgid "Create a comment view with the result"
-msgstr "Vista statica predefinita"
-
-#: ../lib/advene/gui/views/interactivequery.py:485
-msgid "Search and replace strings in the annotations content"
+#: ../lib/advene/gui/edit/rules.py:130
+msgid "Subview"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:510
-msgid "Edit elements"
+#: ../lib/advene/gui/edit/rules.py:133
+msgid "Add a subview list"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:516
-msgid "Open in python evaluator"
+#: ../lib/advene/gui/edit/rules.py:139
+msgid "Remove the current rule"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:519
-#, python-format
-msgid ""
-"Result:\n"
-"%s"
+#: ../lib/advene/gui/edit/rules.py:279
+msgid "Source expression"
 msgstr ""
 
-#: ../lib/advene/gui/views/interactivequery.py:561
-msgid "Results of _interactive query"
+#: ../lib/advene/gui/edit/rules.py:281
+msgid "Return expression"
 msgstr ""
 
-#: ../lib/advene/gui/views/relationdisplay.py:34
-msgid "RelationDisplay"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:355
+msgid "For all elements in "
+msgstr "Per tutti gli elementi in "
 
-#: ../lib/advene/gui/views/relationdisplay.py:36
-msgid "Display the contents of a relation"
+#: ../lib/advene/gui/edit/rules.py:356
+msgid "All annotations of the package"
 msgstr ""
 
-#: ../lib/advene/gui/views/relationdisplay.py:79
-msgid "No relation"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:357
+msgid "All views of the package"
+msgstr "Tutte le visualizzazioni del pacchetto"
 
-#: ../lib/advene/gui/views/relationdisplay.py:104
-#: ../lib/advene/gui/views/annotationdisplay.py:253
-msgid "Contents"
+#: ../lib/advene/gui/edit/rules.py:358 ../lib/advene/gui/edit/rules.py:802
+msgid "The context annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:62
-msgid "Cannot go back: first item in history"
+#: ../lib/advene/gui/edit/rules.py:359 ../lib/advene/gui/edit/rules.py:803
+msgid "The annotations of the context type"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:220
+#: ../lib/advene/gui/edit/rules.py:362 ../lib/advene/core/controller.py:584
 #, python-format
-msgid "%s%% loaded"
+msgid "Annotations of type %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:223
-#, fuzzy, python-format
-msgid "Title %s"
-msgstr "Modifica %s"
-
-#: ../lib/advene/gui/views/html.py:287
-msgid "HTML Viewer"
+#: ../lib/advene/gui/edit/rules.py:374
+msgid "Return "
 msgstr ""
 
-#: ../lib/advene/gui/views/html.py:289
-msgid "Embedded HTML widget"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:376 ../lib/advene/gui/edit/rules.py:791
+msgid "The element"
+msgstr "L'elemento"
 
-#: ../lib/advene/gui/views/html.py:319
-msgid "No available HTML rendering component"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:377 ../lib/advene/gui/edit/rules.py:792
+msgid "The element's content"
+msgstr "Il contenuto dell'elemento"
 
-#: ../lib/advene/gui/views/viewbook.py:36
-msgid "ViewBook"
+#: ../lib/advene/gui/edit/rules.py:392
+msgid "If the element matches "
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:57
-#: ../lib/advene/gui/views/viewbook.py:64
-msgid "Cannot remove this widget, it is essential."
+#: ../lib/advene/gui/edit/rules.py:394
+msgid "Return the element if it matches "
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:135
-msgid "Detach"
+#: ../lib/advene/gui/edit/rules.py:412 ../lib/advene/gui/edit/rules.py:621
+msgid "All conditions must be met"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:139
-#: ../lib/advene/gui/views/editaccumulator.py:76
-msgid "Close"
+#: ../lib/advene/gui/edit/rules.py:413 ../lib/advene/gui/edit/rules.py:622
+msgid "Any condition can be met"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:157
-msgid "Rename the view"
+#: ../lib/advene/gui/edit/rules.py:497 ../lib/advene/gui/edit/rules.py:567
+#, python-format
+msgid "Rule <b>%s</b>"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:158
-msgid "Please enter the new name of the view"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:578
+msgid "Rule name"
+msgstr "Nome della regola"
 
-#: ../lib/advene/gui/views/viewbook.py:197
-msgid "Detach view in its own window, or drag-and-drop to another zone"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:595
+msgid "Event"
+msgstr "Evento"
 
-#: ../lib/advene/gui/views/viewbook.py:211
-#, fuzzy
-msgid "Close view"
-msgstr "Scegliere un file"
+#: ../lib/advene/gui/edit/rules.py:603
+msgid "If"
+msgstr "Se"
 
-#: ../lib/advene/gui/views/viewbook.py:286
-msgid "Open a new transcription for..."
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:642
+msgid "Then"
+msgstr "Quindi"
 
-#: ../lib/advene/gui/views/viewbook.py:298
-#, fuzzy
-msgid "Create a new comment view"
-msgstr "Vista statica predefinita"
+#: ../lib/advene/gui/edit/rules.py:687
+msgid "When the "
+msgstr "Quando il "
 
-#: ../lib/advene/gui/views/viewbook.py:300
-msgid "Open a new view"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:700
+msgid " occurs,"
+msgstr " succede,"
 
-#: ../lib/advene/gui/views/viewbook.py:375
+#: ../lib/advene/gui/edit/rules.py:727 ../lib/advene/gui/edit/rules.py:730
 #, python-format
-msgid "Use annotation-type %s :"
-msgstr ""
-
-#: ../lib/advene/gui/views/viewbook.py:378
-#: ../lib/advene/gui/views/viewbook.py:404
-msgid "to edit it"
+msgid "Condition expression: %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:379
-#: ../lib/advene/gui/views/viewbook.py:405
-#: ../lib/advene/gui/views/viewbook.py:437
+#: ../lib/advene/gui/edit/rules.py:769
 #, fuzzy
-msgid "to create a new static view"
-msgstr "Vista statica predefinita"
+msgid "The annotation type"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/views/viewbook.py:381
-msgid "in a timeline"
+#: ../lib/advene/gui/edit/rules.py:772
+#, python-format
+msgid "The value of the %s attribute"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:382
-msgid "as a montage"
+#: ../lib/advene/gui/edit/rules.py:774
+msgid "The annotation fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:383
-#: ../lib/advene/gui/views/viewbook.py:436
-msgid "in a table"
+#: ../lib/advene/gui/edit/rules.py:775
+msgid "The annotation begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
-msgid "in a query"
+#: ../lib/advene/gui/edit/rules.py:776
+msgid "The annotation end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:384
-#: ../lib/advene/gui/views/viewbook.py:406
-#, python-format
-msgid "Query %s"
+#: ../lib/advene/gui/edit/rules.py:778
+msgid "The annotation MIME-type"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:385
-#: ../lib/advene/gui/views/viewbook.py:407
-msgid "in the TALES browser"
+#: ../lib/advene/gui/edit/rules.py:779
+msgid "The annotation's incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:385
-#, python-format
-msgid "Browsing %s"
+#: ../lib/advene/gui/edit/rules.py:780
+msgid "The annotation's outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:401
+#: ../lib/advene/gui/edit/rules.py:783
 #, python-format
-msgid "Use annotation %s :"
+msgid "The %s-related incoming annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:407
+#: ../lib/advene/gui/edit/rules.py:787
 #, python-format
-msgid "Browse %s"
+msgid "The %s-related outgoing annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:408
-msgid "to display its contents"
+#: ../lib/advene/gui/edit/rules.py:793
+msgid "The element fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:408
-#, python-format
-msgid "%s"
+#: ../lib/advene/gui/edit/rules.py:794
+msgid "The element begin time"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:409
-msgid "as a bookmark"
+#: ../lib/advene/gui/edit/rules.py:795
+msgid "The element end time"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:427
-msgid "as the context for the query..."
+#: ../lib/advene/gui/edit/rules.py:796
+msgid "The element duration"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:431
-#, fuzzy
-msgid "Set of annotations"
-msgstr "Tutte le annotazioni"
-
-#: ../lib/advene/gui/views/viewbook.py:432
+#: ../lib/advene/gui/edit/rules.py:797
 #, fuzzy
-msgid "Use annotations:"
-msgstr "Tutte le annotazioni"
+msgid "The element type"
+msgstr "L'elemento"
 
-#: ../lib/advene/gui/views/viewbook.py:435
-msgid "to edit them"
+#: ../lib/advene/gui/edit/rules.py:798
+msgid "The element's incoming relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/viewbook.py:438
-msgid "as bookmarks"
+#: ../lib/advene/gui/edit/rules.py:799
+msgid "The element's outgoing relations"
 msgstr ""
 
-#: ../lib/advene/gui/views/singletonpopup.py:32
-msgid "SingletonPopup"
+#: ../lib/advene/gui/edit/rules.py:800
+msgid "The context"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
-msgid "Timeline"
+#: ../lib/advene/gui/edit/rules.py:801
+msgid "The context fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:123
-msgid "Display annotations on a timeline"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:813
+#, fuzzy, python-format
+msgid "annotation-type %s"
+msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/views/timeline.py:137
-msgid "Limit display to current area"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:816
+#, fuzzy, python-format
+msgid "relation-type %s"
+msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/views/timeline.py:138
-#: ../lib/advene/gui/views/timeline.py:3265
-msgid "Display whole movie"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:838
+msgid "Select a condition"
+msgstr "Seleziona una condizione"
 
-#: ../lib/advene/gui/views/timeline.py:168
+#: ../lib/advene/gui/edit/rules.py:882
 #, python-format
-msgid "Cannot find annotation type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:218
-msgid "No scrolling"
-msgstr ""
+msgid "Parameter %s"
+msgstr "Parametro %s"
 
-#: ../lib/advene/gui/views/timeline.py:219
-msgid "Continuous scrolling"
-msgstr ""
+#: ../lib/advene/gui/edit/rules.py:996
+msgid "Select an action"
+msgstr "Seleziona un'azione"
 
-#: ../lib/advene/gui/views/timeline.py:220
-msgid "Discrete scrolling"
+#: ../lib/advene/gui/edit/rules.py:1087
+msgid "Activate?"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:221
-#, fuzzy
-msgid "Annotation scrolling"
-msgstr "Tipo di Annotazione"
+#: ../lib/advene/gui/edit/properties.py:37
+#: ../lib/advene/gui/edit/shapewidget.py:1599
+msgid "Properties"
+msgstr "Proprietà"
 
-#: ../lib/advene/gui/views/timeline.py:483
-#, fuzzy, python-format
-msgid "%d annotations"
-msgstr "Tutte le annotazioni"
+#: ../lib/advene/gui/edit/properties.py:376
+msgid "Choose a file"
+msgstr "Scegliere un file"
 
-#: ../lib/advene/gui/views/timeline.py:486
-#, fuzzy
-msgid "Display all types"
-msgstr "Visualizza %s"
+#: ../lib/advene/gui/edit/frameselector.py:44
+msgid "Click on a frame to select its time."
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:488
-#, python-format
-msgid ""
-"There are %d annotations.\n"
-"The current timeline may take a long time to display them, so only the first "
-"two annotation types are displayed. Use the annotation type selector (second "
-"button in the timeline) to select other annotations types to display, or "
-"click on the 'Display all types' button below."
+#: ../lib/advene/gui/edit/frameselector.py:181
+msgid "Select the appropriate snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:963
-msgid "Split at current player position"
+#: ../lib/advene/gui/edit/frameselector.py:234
+#: ../lib/advene/gui/edit/frameselector.py:287
+msgid "Click to see more frames or scroll with the mouse wheel"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:967
-msgid "Center and zoom"
+#: ../lib/advene/gui/edit/create.py:81
+#, python-format
+msgid "%s creation"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1058
-#: ../lib/advene/gui/views/tree.py:808 ../lib/advene/gui/main.py:4563
+#: ../lib/advene/gui/edit/create.py:82
+#, python-format
 msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
+"To create a new element of type %s,\n"
+"you must give the following information."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1071
-#: ../lib/advene/gui/views/tree.py:821
-msgid "Create a relation"
-msgstr ""
+#: ../lib/advene/gui/edit/create.py:111
+msgid "Dynamic view"
+msgstr "Vista dinamica"
 
-#: ../lib/advene/gui/views/timeline.py:1081
-#: ../lib/advene/gui/views/tree.py:831
-msgid "Create a new relation-type."
-msgstr ""
+#: ../lib/advene/gui/edit/create.py:112
+msgid "HTML template"
+msgstr "template HTML"
 
-#: ../lib/advene/gui/views/timeline.py:1107
-msgid "Merge with this annotation"
+#: ../lib/advene/gui/edit/create.py:113
+msgid "Plain XML"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1116
-msgid "Align both begin times"
-msgstr ""
+#: ../lib/advene/gui/edit/create.py:114
+msgid "SVG template"
+msgstr "template SVG"
 
-#: ../lib/advene/gui/views/timeline.py:1117
-msgid "Align both end times"
+#: ../lib/advene/gui/edit/create.py:115
+msgid "Plain text template"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1118
-msgid "Align end time to selected begin time"
-msgstr ""
+#: ../lib/advene/gui/edit/create.py:118
+msgid "Simple query"
+msgstr "Ricerca semplice"
 
-#: ../lib/advene/gui/views/timeline.py:1119
-msgid "Align begin time to selected end time"
-msgstr ""
+#: ../lib/advene/gui/edit/create.py:120
+msgid "Directory"
+msgstr "Cartella"
 
-#: ../lib/advene/gui/views/timeline.py:1120
-msgid "Align all times"
+#: ../lib/advene/gui/edit/create.py:122 ../lib/advene/util/helper.py:411
+msgid "Resource File"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1158
-#: ../lib/advene/gui/views/tree.py:700
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
+#: ../lib/advene/gui/edit/create.py:128
+msgid "No available type."
+msgstr "Nessun tipo disponibile"
 
-#: ../lib/advene/gui/views/timeline.py:1233
-msgid "Select the appropriate relation type"
+#: ../lib/advene/gui/edit/create.py:172
+#, python-format
+msgid ""
+"The identifier %s is not valid.\n"
+"It must be composed of non-accentuated alphabetic characters\n"
+"Underscore is allowed."
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1252
-#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/edit/create.py:177
 #, python-format
-msgid "Duplicate selection to type %s"
+msgid "The identifier %s is already defined."
+msgstr "L'identificatore %s è già stato definito"
+
+#: ../lib/advene/gui/edit/create.py:310
+msgid "New resource data"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1255
-#: ../lib/advene/gui/views/tree.py:760
-#, fuzzy, python-format
-msgid "Move selection to type %s"
-msgstr "Tipo di Annotazione"
+#: ../lib/advene/gui/edit/imports.py:129 ../lib/advene/gui/edit/imports.py:130
+#: ../lib/advene/core/controller.py:585
+msgid "Views"
+msgstr "Visualizzazioni"
 
-#: ../lib/advene/gui/views/timeline.py:1264
-#: ../lib/advene/gui/views/tree.py:769
-#, python-format
-msgid "Duplicate annotation to type %s"
-msgstr ""
+#: ../lib/advene/gui/edit/imports.py:143 ../lib/advene/gui/edit/imports.py:144
+msgid "Schemas"
+msgstr "Schemi"
 
-#: ../lib/advene/gui/views/timeline.py:1268
-#: ../lib/advene/gui/views/tree.py:773
-#, python-format
-msgid "Move annotation to type %s"
-msgstr ""
+#: ../lib/advene/gui/edit/imports.py:195 ../lib/advene/gui/edit/imports.py:196
+#: ../lib/advene/gui/edit/elements.py:521
+msgid "Relations"
+msgstr "Relazioni"
 
-#: ../lib/advene/gui/views/timeline.py:1275
-#, python-format
-msgid "Duplicate to type %(type)s at %(position)s"
-msgstr ""
+#: ../lib/advene/gui/edit/imports.py:209 ../lib/advene/gui/edit/imports.py:210
+msgid "Queries"
+msgstr "Ricerche"
+
+#: ../lib/advene/gui/edit/imports.py:320
+msgid "Imported?"
+msgstr "Importato?"
+
+#: ../lib/advene/gui/edit/imports.py:337 ../lib/advene/gui/edit/elements.py:513
+#: ../lib/advene/gui/edit/elements.py:562
+#: ../lib/advene/gui/edit/elements.py:649
+#: ../lib/advene/gui/edit/elements.py:729
+#: ../lib/advene/gui/edit/elements.py:786
+#: ../lib/advene/gui/edit/elements.py:878
+#: ../lib/advene/gui/edit/elements.py:947
+#: ../lib/advene/gui/edit/elements.py:1059
+#: ../lib/advene/gui/edit/elements.py:1121
+msgid "URI"
+msgstr "URI"
+
+#: ../lib/advene/gui/edit/imports.py:359
+msgid "Choose the package to import, and its alias"
+msgstr "Scegli il pacchetto da importare, e il suo alias"
 
-#: ../lib/advene/gui/views/timeline.py:1281
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
 #, python-format
-msgid "Move to type %(type)s at %(position)s"
-msgstr ""
+msgid "Package %s"
+msgstr "Pacchetto %s"
 
-#: ../lib/advene/gui/views/timeline.py:1291
-#: ../lib/advene/gui/views/tree.py:784
-msgid "Duplicate and create a relation"
-msgstr ""
+#: ../lib/advene/gui/edit/imports.py:405 ../lib/advene/gui/edit/merge.py:230
+msgid "No title"
+msgstr "Nessun titolo"
+
+#: ../lib/advene/gui/edit/shapewidget.py:89
+msgid "Generic shape"
+msgstr "Forma generica"
 
-#: ../lib/advene/gui/views/timeline.py:1302
+#: ../lib/advene/gui/edit/shapewidget.py:254
+#: ../lib/advene/gui/edit/shapewidget.py:753
 #, python-format
-msgid "Duplicate at %s and create a relation"
+msgid "Link to %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1333
-msgid "Annotation filter"
+#: ../lib/advene/gui/edit/shapewidget.py:346
+#: ../lib/advene/gui/edit/shapewidget.py:1301
+msgid "Link"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1334
-msgid "Enter the searched string"
+#: ../lib/advene/gui/edit/shapewidget.py:351
+msgid "Link label"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1442
-#, python-format
-msgid "Duplicate all annotations to type %s"
-msgstr ""
+#: ../lib/advene/gui/edit/shapewidget.py:369
+msgid "Linewidth"
+msgstr "LarghezzaLinea"
 
-#: ../lib/advene/gui/views/timeline.py:1444
-#, python-format
-msgid "Move all annotations to type %s"
-msgstr ""
+#: ../lib/advene/gui/edit/shapewidget.py:374
+msgid "Filled"
+msgstr "Riempito"
 
-#: ../lib/advene/gui/views/timeline.py:1446
-#, python-format
-msgid "Duplicate all annotations matching a string to type %s"
+#: ../lib/advene/gui/edit/shapewidget.py:382
+msgid "Opacity"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1448
+#: ../lib/advene/gui/edit/shapewidget.py:424
 #, python-format
-msgid "Move all annotations matching a string to type %s"
+msgid "Properties of %s"
+msgstr "Proprietà di %s"
+
+#: ../lib/advene/gui/edit/shapewidget.py:471
+msgid "Rectangle"
+msgstr "Rettangolo"
+
+#: ../lib/advene/gui/edit/shapewidget.py:551
+#: ../lib/advene/gui/edit/shapewidget.py:664
+msgid "Text"
+msgstr "Testo"
+
+#: ../lib/advene/gui/edit/shapewidget.py:675
+msgid "Textsize"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1450
-#, python-format
-msgid "Align all annotation time codes using %s as reference."
+#: ../lib/advene/gui/edit/shapewidget.py:689
+msgid "Image"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1452
-#, python-format
-msgid "Align all annotation contents using %s as reference"
+#: ../lib/advene/gui/edit/shapewidget.py:773
+msgid "Href"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1642
-#: ../lib/advene/gui/views/table.py:240
-msgid "Cannot update the annotation, its representation is too complex"
+#: ../lib/advene/gui/edit/shapewidget.py:783
+msgid "Line"
+msgstr "Linea"
+
+#: ../lib/advene/gui/edit/shapewidget.py:879
+msgid "Draw an arrow"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1936
-#: ../lib/advene/gui/views/timeline.py:1965
-#, fuzzy, python-format
-msgid "Displaying %(count)d / %(total)d annotations..."
-msgstr "Trascrizione delle annotazioni"
+#: ../lib/advene/gui/edit/shapewidget.py:890
+msgid "Arrow size"
+msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:1947
+#: ../lib/advene/gui/edit/shapewidget.py:1105
 #, fuzzy
-msgid "Displaying done."
-msgstr "Visualizza %s"
+msgid "Close path"
+msgstr "Nessun pacchetto"
 
-#: ../lib/advene/gui/views/timeline.py:2439
-msgid "Create a new annotation"
+#: ../lib/advene/gui/edit/shapewidget.py:1184
+msgid "Circle"
+msgstr "Cerchio"
+
+#: ../lib/advene/gui/edit/shapewidget.py:1239
+msgid "Ellipse"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2440
-#, fuzzy
-msgid "Zoom on region"
-msgstr "Tutte le annotazioni"
+#: ../lib/advene/gui/edit/shapewidget.py:1600
+msgid "SVG"
+msgstr "SVG"
 
-#: ../lib/advene/gui/views/timeline.py:2441
-msgid "Restrict display to region"
+#: ../lib/advene/gui/edit/shapewidget.py:2158
+msgid "Load SVG"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2560
+#: ../lib/advene/gui/edit/shapewidget.py:2164
 #, fuzzy
-msgid "New annotation at player time"
-msgstr "di un tipo di annotazione"
+msgid "Save SVG"
+msgstr "Salva"
 
-#: ../lib/advene/gui/views/timeline.py:2564
-#, fuzzy
-msgid "New annotation at mouse position"
-msgstr "di un tipo di annotazione"
+#: ../lib/advene/gui/edit/importer.py:46
+msgid "Importer"
+msgstr "Importatore"
 
-#: ../lib/advene/gui/views/timeline.py:2568
-msgid "Selection"
-msgstr ""
+#: ../lib/advene/gui/edit/importer.py:102
+#: ../lib/advene/gui/edit/importer.py:112
+#, fuzzy
+msgid "Advene package importer"
+msgstr "Modifica proprietà pacchetto"
 
-#: ../lib/advene/gui/views/timeline.py:2694
-msgid "Cannot zoom more"
+#: ../lib/advene/gui/edit/importer.py:116
+msgid "Not likely"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2915
+#: ../lib/advene/gui/edit/importer.py:138
 #, python-format
-msgid "From schema %s"
+msgid "Completed conversion: %(statistics)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:2977
-msgid "Restrict playing to this annotation-type"
-msgstr ""
+#: ../lib/advene/gui/edit/importer.py:144
+#: ../lib/advene/gui/edit/dvdselect.py:73
+msgid "Stop"
+msgstr "Stop"
 
-#: ../lib/advene/gui/views/timeline.py:2984
-msgid "Goto previous annotation"
-msgstr ""
+#: ../lib/advene/gui/edit/importer.py:254
+msgid "Choose the file to import"
+msgstr "Scegli un file da importare"
 
-#: ../lib/advene/gui/views/timeline.py:2995
-msgid "Goto next annotation"
-msgstr ""
+#: ../lib/advene/gui/edit/importer.py:273
+#, fuzzy
+msgid "Filter"
+msgstr "_File"
 
-#: ../lib/advene/gui/views/timeline.py:3006
-msgid "+"
-msgstr ""
+#: ../lib/advene/gui/edit/importer.py:277
+#, fuzzy
+msgid "Options"
+msgstr "Relazioni"
 
-#: ../lib/advene/gui/views/timeline.py:3064
-msgid "Open an annotation display view"
+#: ../lib/advene/gui/edit/importer.py:287
+msgid "Start"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3071
-msgid "Open a slave montage view (coordinated zoom level)"
-msgstr ""
+#: ../lib/advene/gui/edit/dvdselect.py:82
+#: ../lib/advene/gui/edit/dvdselect.py:112
+msgid "Preview"
+msgstr "Anteprima"
 
-#: ../lib/advene/gui/views/timeline.py:3106
+#: ../lib/advene/gui/edit/dvdselect.py:91
 msgid ""
-"<b>Statistics about current selection</b>\n"
-"\n"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:3113
-msgid "No selected annotation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:3117
-#, python-format
-msgid "%d selected annotation(s)"
+"Select the correct\n"
+"title and chapter\n"
+"of the DVD"
 msgstr ""
+"Seleziona il capitolo \n"
+"e il titolo corretto\n"
+"del DVD"
 
-#: ../lib/advene/gui/views/timeline.py:3124
-msgid "Unselect all annotations"
-msgstr ""
+#: ../lib/advene/gui/edit/dvdselect.py:104
+msgid "Chapter"
+msgstr "Capitolo"
 
-#: ../lib/advene/gui/views/timeline.py:3125
-#, fuzzy
-msgid "Create a static view"
-msgstr "Vista statica predefinita"
+#: ../lib/advene/gui/edit/merge.py:33
+msgid "Create element"
+msgstr "Crea elemento"
 
-#: ../lib/advene/gui/views/timeline.py:3126
-msgid "Highlight selection in other views"
+#: ../lib/advene/gui/edit/merge.py:34
+msgid "Create annotation (duplicate id)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3127
-#: ../lib/advene/gui/views/timeline.py:3713
-msgid "Tag selection"
+#: ../lib/advene/gui/edit/merge.py:35
+msgid "Create relation (duplicate id)"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3128
-msgid "Delete selected annotations"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:36
+msgid "Update the color"
+msgstr "Aggiorna il colore"
 
-#: ../lib/advene/gui/views/timeline.py:3129
-msgid "Display selection in a table"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:37
+msgid "Update the representation"
+msgstr "Aggiorna la rappresentazione"
 
-#: ../lib/advene/gui/views/timeline.py:3130
-msgid "Center and zoom on selection"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:38
+msgid "Update the description"
+msgstr "Aggiorna la descrizione"
 
-#: ../lib/advene/gui/views/timeline.py:3131
-msgid "Edit selected annotations"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:39
+msgid "Update the title"
+msgstr "Aggiorna il titolo"
 
-#: ../lib/advene/gui/views/timeline.py:3132
-msgid "Merge annotations"
+#: ../lib/advene/gui/edit/merge.py:40
+msgid "Update the mimetype"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3133
-#, fuzzy
-msgid "Display statistics"
-msgstr "Visualizza %s"
-
-#: ../lib/advene/gui/views/timeline.py:3258
-msgid "Goto previous page"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:41
+msgid "Update the begin time"
+msgstr "Aggiorna il tempo di inizio"
 
-#: ../lib/advene/gui/views/timeline.py:3270
-msgid "Goto next page"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:42
+msgid "Update the end time"
+msgstr "Aggiorna il tempo di fine"
 
-#: ../lib/advene/gui/views/timeline.py:3324
-msgid "Inspector locked. Click here or in the timeline background to unlock."
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:43
+msgid "Update the content"
+msgstr "Aggiorna il contenuto"
 
-#: ../lib/advene/gui/views/timeline.py:3352
-msgid ""
-"Delete the selected annotations or drop an annotation here to delete it."
+#: ../lib/advene/gui/edit/merge.py:44
+msgid "Update the matchFilter"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3374
-msgid ""
-"Drag an annotation type here to remove it from display.\n"
-"Click to edit all displayed types"
+#: ../lib/advene/gui/edit/merge.py:45
+msgid "Update the member types"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3386
-msgid "Selection actions"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:46
+msgid "Update tags"
+msgstr "Aggiorna tag"
 
-#: ../lib/advene/gui/views/timeline.py:3401
-msgid "Display relations"
+#: ../lib/advene/gui/edit/merge.py:90
+msgid "Difference between original and merged elements"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3407
-#, fuzzy
-msgid "Display all relations"
-msgstr "Visualizza cronologia di navigazione"
+#: ../lib/advene/gui/edit/merge.py:136
+msgid "Current element"
+msgstr "Elemento attuale"
 
-#: ../lib/advene/gui/views/timeline.py:3484
-msgid "Center on current player position."
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:141
+msgid "Updated element"
+msgstr "Elemento aggiornato"
 
-#: ../lib/advene/gui/views/timeline.py:3500
-msgid "Automatically activate loop when clicking on an annotation"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:147
+msgid "Show diff"
+msgstr "Mostra diff"
 
-#: ../lib/advene/gui/views/timeline.py:3524
-msgid "Displayed"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:180
+msgid "Merge?"
+msgstr "Unire?"
 
-#: ../lib/advene/gui/views/timeline.py:3532
-msgid "Not displayed"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:197
+msgid "Element"
+msgstr "Elemento"
 
-#: ../lib/advene/gui/views/timeline.py:3580
-msgid "< All <"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:215
+#, fuzzy, python-format
+msgid "Merge elements from %s into %s"
+msgstr "Unisci elementi da un altro pacchetto"
 
-#: ../lib/advene/gui/views/timeline.py:3584
-msgid "> All >"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:267
+msgid "All"
+msgstr "Tutto"
 
-#: ../lib/advene/gui/views/timeline.py:3600
-msgid "Displayed annotation types"
-msgstr ""
+#: ../lib/advene/gui/edit/merge.py:272 ../lib/advene/core/controller.py:1152
+msgid "None"
+msgstr "Nessuno"
 
-#: ../lib/advene/gui/views/timeline.py:3625
-msgid "Relation type"
+#: ../lib/advene/gui/edit/montage.py:51
+msgid "Montage"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3625
-msgid "Display relation types"
+#: ../lib/advene/gui/edit/montage.py:53
+msgid "Dynamic montage of annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3626
-msgid "Relation content"
+#: ../lib/advene/gui/edit/montage.py:61
+msgid "Render"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3626
-msgid "Display relation content"
+#: ../lib/advene/gui/edit/montage.py:176
+msgid "Remove from montage"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3627 ../lib/advene/gui/popup.py:516
-msgid "Highlight"
+#: ../lib/advene/gui/edit/montage.py:310
+#, python-format
+msgid ""
+"Exporting montage %(title)s\n"
+"to %%(filename)s"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3627
-msgid "Highlight active annotations"
+#: ../lib/advene/gui/edit/montage.py:402
+msgid "Drop an annotation here to remove it from the list"
 msgstr ""
 
-#: ../lib/advene/gui/views/timeline.py:3714
-msgid "Enter the tag for the selection"
+#: ../lib/advene/gui/edit/montage.py:414
+msgid "Play the montage"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:248
-msgid "No children in on_iter_children()!"
-msgstr ""
+#: ../lib/advene/gui/edit/montage.py:419
+#, fuzzy
+msgid "Save the view in the package"
+msgstr "Salva il pacchetto attuale"
 
-#: ../lib/advene/gui/views/tree.py:263
-msgid "No children in on_iter_nth_child()"
+#: ../lib/advene/gui/edit/montage.py:467
+msgid "Set zoom level"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:317
-msgid "List of views"
+#: ../lib/advene/gui/edit/montage.py:472
+msgid "Set 100% zoom"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:318
-msgid "Static views"
+#: ../lib/advene/gui/edit/montage.py:551
+msgid "Total duration:"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:319
-msgid "Dynamic views"
+#: ../lib/advene/gui/edit/timeadjustment.py:97
+#, python-format
+msgid "Decrement value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:320
-msgid "Admin views"
+#: ../lib/advene/gui/edit/timeadjustment.py:99
+#, python-format
+msgid "Increment value by %.2f s"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:321
-msgid "Adhoc views"
+#: ../lib/advene/gui/edit/timeadjustment.py:125
+msgid ""
+"Click to play\n"
+"Control+click to set to current time\n"
+"Scroll to modify value (with control/shift)\n"
+"Right-click to invalidate screenshot"
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
-msgid "Tree view"
+#: ../lib/advene/gui/edit/timeadjustment.py:140
+msgid ""
+"Enter a timecode.\n"
+"An integer value will be considered as milliseconds.\n"
+"A float value (12.2) will be considered as seconds.\n"
+"HH:MM:SS.sss values are possible."
 msgstr ""
 
-#: ../lib/advene/gui/views/tree.py:453
-msgid "Package View"
+#: ../lib/advene/gui/edit/timeadjustment.py:154
+msgid "Set to current player position"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:42
-msgid "EditAccumulator"
+#: ../lib/advene/gui/edit/elements.py:78
+#, python-format
+msgid "No edit popup available for element %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/editaccumulator.py:70
-#: ../lib/advene/gui/views/annotationdisplay.py:256
-msgid "Validate"
-msgstr ""
+#: ../lib/advene/gui/edit/elements.py:99
+msgid "Edit Window"
+msgstr "Modifica Finestra"
 
-#: ../lib/advene/gui/views/relation.py:68
-msgid "Relations view"
+#: ../lib/advene/gui/edit/elements.py:138
+msgid "Apply changes and close the edit window"
 msgstr ""
 
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4339
-msgid "Caption"
+#: ../lib/advene/gui/edit/elements.py:143
+msgid "Apply changes"
 msgstr ""
 
-#: ../lib/advene/gui/views/caption.py:32
-msgid "Display a text caption below the video output"
+#: ../lib/advene/gui/edit/elements.py:277
+msgid "Content has been modified. Close anyway and lose data?"
 msgstr ""
 
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4338
-msgid "Scroller"
-msgstr ""
+#: ../lib/advene/gui/edit/elements.py:337
+#, python-format
+msgid "View %s (read-only)"
+msgstr "Visualizza %s (sola-lettura)"
 
-#: ../lib/advene/gui/views/finder.py:329
+#: ../lib/advene/gui/edit/elements.py:373
 #, python-format
-msgid ""
-"View <b>%(title)s</b>\n"
-"Id: %(id)s"
-msgstr ""
+msgid "Display %s"
+msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/views/finder.py:336
-msgid "Open in webbrowser"
-msgstr ""
+#: ../lib/advene/gui/edit/elements.py:457
+#, fuzzy
+msgid "Apply changes and edit previous annotation of same type"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/views/finder.py:337
-#, python-format
-msgid "View applied to %s\n"
-msgstr ""
+#: ../lib/advene/gui/edit/elements.py:461
+#, fuzzy
+msgid "Apply changes and edit next annotation of same type"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/views/finder.py:342 ../lib/advene/gui/popup.py:496
-msgid "Activate"
+#: ../lib/advene/gui/edit/elements.py:467
+msgid "Unhighlight annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:345
-msgid "Open in GUI"
+#: ../lib/advene/gui/edit/elements.py:471
+msgid "Highlight annotation"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:347
-msgid "Unknown type of view??"
+#: ../lib/advene/gui/edit/elements.py:502
+msgid "Fragment"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:372
-msgid "Edit view"
-msgstr ""
+#: ../lib/advene/gui/edit/elements.py:525 ../lib/advene/core/controller.py:585
+msgid "Tags"
+msgstr "Tag"
 
-#: ../lib/advene/gui/views/finder.py:381
-msgid "Open view"
+#: ../lib/advene/gui/edit/elements.py:621
+msgid "Apply changes and visualise in web browser"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:421 ../lib/advene/gui/views/finder.py:487
-#, python-format
-msgid ""
-"%(type)s <b>%(title)s</b>\n"
-"Id: %(id)s"
+#: ../lib/advene/gui/edit/elements.py:626
+msgid "Apply changes and activate the view"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:444
-msgid "Try to apply the query on..."
-msgstr ""
+#: ../lib/advene/gui/edit/elements.py:634
+#: ../lib/advene/gui/edit/elements.py:715
+#: ../lib/advene/gui/edit/elements.py:772
+#: ../lib/advene/gui/edit/elements.py:863
+#: ../lib/advene/gui/edit/elements.py:932
+#: ../lib/advene/gui/edit/elements.py:1034
+#, fuzzy
+msgid "Title (name)"
+msgstr "Nome file"
 
-#: ../lib/advene/gui/views/finder.py:464 ../lib/advene/gui/popup.py:829
-msgid "the package"
+#: ../lib/advene/gui/edit/elements.py:638
+msgid "Name of the view"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:465 ../lib/advene/gui/popup.py:830
-msgid "all annotations of the package"
-msgstr ""
+#: ../lib/advene/gui/edit/elements.py:662
+msgid "Class"
+msgstr "Classe"
 
-#: ../lib/advene/gui/views/finder.py:466 ../lib/advene/gui/popup.py:831
-msgid "the first annotation of the package"
+#: ../lib/advene/gui/edit/elements.py:665
+msgid "Match Filter"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:509
-msgid "Edit resource"
+#: ../lib/advene/gui/edit/elements.py:708
+#, fuzzy
+msgid "Validate and run query on package"
+msgstr "Crea un nuovo pacchetto"
+
+#: ../lib/advene/gui/edit/elements.py:719
+msgid "Name of the query"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
-msgid "Package finder"
+#: ../lib/advene/gui/edit/elements.py:776
+#, fuzzy
+msgid "Name of the package"
+msgstr "Tutte le visualizzazioni del pacchetto"
+
+#: ../lib/advene/gui/edit/elements.py:794
+#: ../lib/advene/gui/edit/elements.py:885
+#: ../lib/advene/gui/edit/elements.py:964
+#: ../lib/advene/gui/edit/elements.py:1078
+msgid "Description"
+msgstr "Descrizione"
+
+#: ../lib/advene/gui/edit/elements.py:798
+#: ../lib/advene/gui/edit/elements.py:889
+#: ../lib/advene/gui/edit/elements.py:968
+#: ../lib/advene/gui/edit/elements.py:1082
+msgid "Textual description of the package"
+msgstr "Descrizione testuale del pacchetto"
+
+#: ../lib/advene/gui/edit/elements.py:803
+msgid "Default dynamic view"
+msgstr "Vista dinamica predefinita"
+
+#: ../lib/advene/gui/edit/elements.py:807
+msgid "Dynamic view to activate on package load"
 msgstr ""
 
-#: ../lib/advene/gui/views/finder.py:525
-msgid "Column-based package finder"
+#: ../lib/advene/gui/edit/elements.py:812
+msgid "Default static view"
+msgstr "Vista statica predefinita"
+
+#: ../lib/advene/gui/edit/elements.py:816
+msgid "Static view to open on package load"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:41
-msgid "AnnotationDisplay"
+#: ../lib/advene/gui/edit/elements.py:821
+msgid "Default adhoc view"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:43
-msgid "Display the contents of an annotation"
+#: ../lib/advene/gui/edit/elements.py:825
+msgid "Adhoc view to open on package load"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:84
-msgid "No annotation"
+#: ../lib/advene/gui/edit/elements.py:830
+msgid "Cached duration"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:110
-#, python-format
-msgid ""
-"Schema %(schema)s (id %(id)s)\n"
-"%(description)s\n"
-"%(stats)s"
+#: ../lib/advene/gui/edit/elements.py:834
+msgid "Cached duration in ms"
 msgstr ""
 
-#: ../lib/advene/gui/views/annotationdisplay.py:231
-msgid "Screenshot"
+#: ../lib/advene/gui/edit/elements.py:839
+msgid "Mediafile"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:193
-msgid "Invalid view id"
+#: ../lib/advene/gui/edit/elements.py:843
+msgid "Location of associated media file"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:239
-#, python-format
-msgid "Cannot save default options: %s"
+#: ../lib/advene/gui/edit/elements.py:867
+#, fuzzy
+msgid "Name of the schema"
+msgstr "Schema"
+
+#: ../lib/advene/gui/edit/elements.py:899
+#: ../lib/advene/gui/edit/elements.py:979
+msgid "TALES expression returning a color for the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:250
-#, python-format
-msgid "Default options saved for view %s"
+#: ../lib/advene/gui/edit/elements.py:906
+#: ../lib/advene/gui/edit/elements.py:997
+msgid "Item color"
+msgstr "Colore oggetto"
+
+#: ../lib/advene/gui/edit/elements.py:910
+#: ../lib/advene/gui/edit/elements.py:1001
+msgid ""
+"TALES expression returning a color for the items contained by the element"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:282
-#, python-format
-msgid "Saving %s"
+#: ../lib/advene/gui/edit/elements.py:936
+#: ../lib/advene/gui/edit/elements.py:1038
+msgid "Name of the type"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:285
-msgid "Enter a view name to save this parametered view"
+#: ../lib/advene/gui/edit/elements.py:954
+#: ../lib/advene/gui/edit/elements.py:1043
+#: ../lib/advene/gui/edit/elements.py:1312
+msgid "MIME Type"
+msgstr "Tipo MIME"
+
+#: ../lib/advene/gui/edit/elements.py:958
+#: ../lib/advene/gui/edit/elements.py:1047
+#, fuzzy
+msgid "MIMEType of the content"
+msgstr "Aggiorna il contenuto"
+
+#: ../lib/advene/gui/edit/elements.py:990
+msgid ""
+"TALES expression used to get a compact representation of the annotations"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4630
-#, python-format
-msgid "Error: the identifier %s contains invalid characters."
+#: ../lib/advene/gui/edit/elements.py:991
+#, fuzzy, python-format
+msgid "Display %s key"
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/edit/elements.py:1007
+#, fuzzy
+msgid "Completions"
+msgstr "Relazioni"
+
+#: ../lib/advene/gui/edit/elements.py:1011
+msgid "Space-separated list of words used for content completion"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:303
-#, python-format
-msgid "Error: the view %s is not an adhoc view."
+#: ../lib/advene/gui/edit/elements.py:1017
+#, fuzzy
+msgid "Advanced"
+msgstr "Advene"
+
+#: ../lib/advene/gui/edit/elements.py:1067
+msgid "Any annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:328
-msgid "HTML export"
+#: ../lib/advene/gui/edit/elements.py:1093
+msgid "TALES expression specifying a color"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:329
-msgid "Specify a name for the export view"
+#: ../lib/advene/gui/edit/elements.py:1120
+msgid "MIMEType"
+msgstr "TipoMIME"
+
+#: ../lib/advene/gui/edit/elements.py:1345
+#, python-format
+msgid "Error: cannot find a content handler for %s"
 msgstr ""
 
-#: ../lib/advene/gui/views/__init__.py:348
+#: ../lib/advene/gui/edit/elements.py:1461
+#: ../lib/advene/gui/edit/elements.py:1686
 #, python-format
 msgid ""
-"View successfully exported as %s.\n"
-"Open it in the web browser ?"
+"Cannot read the data:\n"
+"%s"
 msgstr ""
+"Impossibile leggere il dato:\n"
+"%s"
 
-#: ../lib/advene/gui/views/__init__.py:427
-msgid "Actions"
-msgstr ""
+#: ../lib/advene/gui/edit/elements.py:1485
+#: ../lib/advene/gui/edit/elements.py:1711
+msgid "Save content to..."
+msgstr "Salva contenuto in..."
 
-#: ../lib/advene/gui/views/__init__.py:452
-msgid "Click or drag-and-drop to reattach view"
+#: ../lib/advene/gui/edit/elements.py:1496
+#: ../lib/advene/gui/edit/elements.py:1724
+#, python-format
+msgid ""
+"Cannot save the data:\n"
+"%s"
 msgstr ""
+"Impossibile salvare il dato:\n"
+"%s"
 
-#: ../lib/advene/gui/views/table.py:55
-msgid "Annotation table view"
-msgstr ""
+#: ../lib/advene/gui/edit/elements.py:1515
+#: ../lib/advene/gui/edit/elements.py:1738
+msgid "Open a file (C-o)"
+msgstr "Apri un file (C-o)"
 
-#: ../lib/advene/gui/views/table.py:57
-msgid "Display annotations in a table"
+#: ../lib/advene/gui/edit/elements.py:1520
+#: ../lib/advene/gui/edit/elements.py:1743
+msgid "Save to a file (C-s)"
+msgstr "Salva in un file (C-s)"
+
+#: ../lib/advene/gui/edit/elements.py:1525
+#: ../lib/advene/gui/edit/elements.py:1748
+msgid "Reload the file (C-r)"
+msgstr "Ricarica il file (C-r)"
+
+#: ../lib/advene/gui/edit/elements.py:1531
+msgid "Insert a value from the browser (C-i)"
+msgstr "Inserisci un valore dal browser (C-i)"
+
+#: ../lib/advene/gui/edit/elements.py:1777
+msgid "Begin time is greater than end time"
+msgstr "Il tempo di inizio è più grande di quello finale"
+
+#: ../lib/advene/gui/edit/elements.py:2049
+msgid "Expecting an integer."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:227 ../lib/advene/gui/views/table.py:452
-msgid "Snapshot"
+#: ../lib/advene/gui/edit/elements.py:2081
+#, python-format
+msgid ""
+"The %(attribute)s attribute could not be updated:\n"
+"\n"
+"%(error)s\n"
+"\n"
+"Resetting to the original value."
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:254 ../lib/advene/gui/main.py:4178
-msgid "Duration"
+#: ../lib/advene/gui/edit/elements.py:2108
+#, python-format
+msgid ""
+"The following attributes cannot be updated:\n"
+"\n"
+"%s"
 msgstr ""
+"I seguenti attributi non possono essere aggiornati:\n"
+"\n"
+"%s"
 
-#: ../lib/advene/gui/views/table.py:382 ../lib/advene/gui/views/table.py:511
-msgid "Export data to file..."
+#: ../lib/advene/gui/edit/elements.py:2148
+#, python-format
+msgid ""
+"The following attributes could not be updated:\n"
+"\n"
+"%s"
 msgstr ""
+"I seguenti attributi potrebbero non essere aggiornati:\n"
+"\n"
+"%s"
+
+#: ../lib/advene/gui/edit/elements.py:2165
+msgid "Attribute"
+msgstr "Attributo"
 
-#: ../lib/advene/gui/views/table.py:391 ../lib/advene/gui/views/table.py:520
+#: ../lib/advene/gui/edit/elements.py:2264
+msgid "Insert an element"
+msgstr "Inserisci un elemento"
+
+#: ../lib/advene/gui/edit/elements.py:2265
+msgid "Choose the element to insert."
+msgstr "Scegli un elemento da inserire."
+
+#: ../lib/advene/gui/edit/elements.py:2335
+#: ../lib/advene/gui/edit/elements.py:2378
 #, python-format
-msgid "Error while exporting data to %(filename)s: %(error)s"
+msgid "Some tags contain invalid characters: %s"
+msgstr "Qualche tag contiene caratteri invalidi: %s"
+
+#: ../lib/advene/gui/edit/elements.py:2358
+msgid "Tags:"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "id"
+#: ../lib/advene/gui/edit/transcribe.py:68
+msgid "Transcription importer"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "type"
+#: ../lib/advene/gui/edit/transcribe.py:79
+msgid "Note taking"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "begin"
+#: ../lib/advene/gui/edit/transcribe.py:81
+msgid "Take notes on the fly as a timestamped transcription"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "end"
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:402
-msgid "content"
+#: ../lib/advene/gui/edit/transcribe.py:148
+msgid "Click inserts timestamp marks"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:460
-msgid "Generic table view"
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "Insert on single-click"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:462
-msgid "Display Advene elements in a table."
+#: ../lib/advene/gui/edit/transcribe.py:149
+msgid "A single click will insert the mark (else a double click is needed)"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element title"
+#: ../lib/advene/gui/edit/transcribe.py:150
+msgid "Play on scroll"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element type"
+#: ../lib/advene/gui/edit/transcribe.py:150
+msgid "Play the new position upon timestamp modification"
 msgstr ""
 
-#: ../lib/advene/gui/views/table.py:532
-msgid "Element id"
+#: ../lib/advene/gui/edit/transcribe.py:151
+msgid "Generate empty annotations"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:327
-#, fuzzy, python-format
-msgid "Set of %s annotations"
-msgstr "Tutte le annotazioni"
+#: ../lib/advene/gui/edit/transcribe.py:151
+msgid "If checked, generate annotations for empty text"
+msgstr ""
 
-#: ../lib/advene/gui/widget.py:1067
-#, fuzzy
-msgid "Save as..."
-msgstr "Pacchetto %s"
+#: ../lib/advene/gui/edit/transcribe.py:152
+msgid "Reaction time"
+msgstr "Tempo di reazione"
 
-#: ../lib/advene/gui/widget.py:1072
-msgid "Use current player position"
+#: ../lib/advene/gui/edit/transcribe.py:152
+msgid ""
+"Reaction time (substracted from current player time, except when paused.)"
 msgstr ""
 
-#: ../lib/advene/gui/widget.py:1078
-msgid "Adjust timestamp"
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Auto-insert"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
-#, fuzzy
-msgid "_Select player"
-msgstr "Seleziona un DVD"
+#: ../lib/advene/gui/edit/transcribe.py:153
+msgid "Automatic timestamp mark insertion"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
-msgid "_View"
-msgstr "_Visualizza"
-
-#: ../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)"
+#: ../lib/advene/gui/edit/transcribe.py:154
+msgid "Automatic insertion delay"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:243
-msgid "_File"
-msgstr "_File"
+#: ../lib/advene/gui/edit/transcribe.py:154
+msgid ""
+"If autoinsert is active, timestamp marks will be automatically inserted when "
+"text is entered after no interaction since this delay (in ms).\n"
+"1000 is typically a good value."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:244
-#, fuzzy
-msgid "_New package"
-msgstr "Nessun pacchetto"
+#: ../lib/advene/gui/edit/transcribe.py:155
+msgid "Font size for text (0 for standard size)"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:244
-msgid "Create a new package"
-msgstr "Crea un nuovo pacchetto"
+#: ../lib/advene/gui/edit/transcribe.py:215
+#: ../lib/advene/gui/edit/transcribe.py:219
+#: ../lib/advene/gui/edit/transcribe.py:377
+#: ../lib/advene/gui/edit/transcribe.py:381
+msgid "Invalid timestamp mark"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:245
-#, fuzzy
-msgid "_Open package"
-msgstr "Apri un file pacchetto"
+#: ../lib/advene/gui/edit/transcribe.py:508
+msgid "Ignore the following text (toggle)"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:245
-#, fuzzy
-msgid "Open a package"
-msgstr "Apri un file pacchetto"
+#: ../lib/advene/gui/edit/transcribe.py:512
+msgid "Remove mark"
+msgstr "Rimuovi marchio"
 
-#: ../lib/advene/gui/main.py:246
-msgid "Show recently opened packages"
+#: ../lib/advene/gui/edit/transcribe.py:516
+msgid "Reaction-time offset"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:247
-#, fuzzy
-msgid "_Save package"
-msgstr "Nessun pacchetto"
-
-#: ../lib/advene/gui/main.py:247
-#, fuzzy
-msgid "Save the package"
-msgstr "Tutte le visualizzazioni del pacchetto"
+#: ../lib/advene/gui/edit/transcribe.py:520
+msgid "-1 sec"
+msgstr "-1 sec"
 
-#: ../lib/advene/gui/main.py:248
-#, fuzzy
-msgid "Save package as..."
-msgstr "Pacchetto %s"
+#: ../lib/advene/gui/edit/transcribe.py:523
+msgid "-0.5 sec"
+msgstr "-0.5 sec"
 
-#: ../lib/advene/gui/main.py:248
-#, fuzzy
-msgid "Save the package as..."
-msgstr "Salva il pacchetto attuale"
+#: ../lib/advene/gui/edit/transcribe.py:526
+msgid "-0.1 sec"
+msgstr "-0.1 sec"
 
-#: ../lib/advene/gui/main.py:249
-#, fuzzy
-msgid "Close package"
-msgstr "Nessun pacchetto"
+#: ../lib/advene/gui/edit/transcribe.py:530
+msgid "+1 sec"
+msgstr "+1 sec"
 
-#: ../lib/advene/gui/main.py:249
-#, fuzzy
-msgid "Close the package"
-msgstr "Tutte le visualizzazioni del pacchetto"
+#: ../lib/advene/gui/edit/transcribe.py:533
+msgid "+0.5 sec"
+msgstr "+0.5 sec"
 
-#: ../lib/advene/gui/main.py:251
-msgid "Save session"
-msgstr "Salva sessione"
+#: ../lib/advene/gui/edit/transcribe.py:536
+msgid "+0.1 sec"
+msgstr "+0.1 sec"
 
-#: ../lib/advene/gui/main.py:251
-msgid "Save the current session (list of opened packages)"
+#: ../lib/advene/gui/edit/transcribe.py:627
+msgid "Invalid timestamp"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:252
-msgid "Save workspace"
+#: ../lib/advene/gui/edit/transcribe.py:760
+#, python-format
+msgid "Invalid timestamp mark in conversion: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:253
-msgid "...as package view"
-msgstr ""
+#: ../lib/advene/gui/edit/transcribe.py:877
+#, python-format
+msgid "Cannot save the file: %s"
+msgstr "Impossibile salvare il file: %s"
 
-#: ../lib/advene/gui/main.py:254
-msgid "...as standard workspace"
+#: ../lib/advene/gui/edit/transcribe.py:888
+#: ../lib/advene/gui/edit/transcribe.py:972
+msgid "This will overwrite the current textual content. Are you sure?"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:254
-msgid "Use the current layout as standard workspace in the future"
+#: ../lib/advene/gui/edit/transcribe.py:891
+msgid "Select transcription file to load"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:256
-#, fuzzy
-msgid "Associate a video _File"
-msgstr "Seleziona un file video"
-
-#: ../lib/advene/gui/main.py:256
-#, fuzzy
-msgid "Associate a video file"
-msgstr "Seleziona un file video"
-
-#: ../lib/advene/gui/main.py:257
-#, fuzzy
-msgid "Associate a _DVD"
-msgstr "Seleziona un capitolo da un DVD"
-
-#: ../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:258
-#, fuzzy
-msgid "Associate a _Video stream"
-msgstr "Seleziona un video stream"
-
-#: ../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:260
-msgid "_Import File"
-msgstr "_Importa file"
-
-#: ../lib/advene/gui/main.py:260
-msgid "Import data from an external source"
-msgstr "Importa dati da una sorgente esterna"
+#: ../lib/advene/gui/edit/transcribe.py:908
+#, python-format
+msgid "Cannot open %(filename)s: %(error)s"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:261
-#, fuzzy
-msgid "_Process video"
-msgstr "Modifica %s"
+#: ../lib/advene/gui/edit/transcribe.py:957
+msgid "Cannot import annotations: no existing interface"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:261
-#, fuzzy
-msgid "Import data from video processing algorithms"
-msgstr "Importa dati da una sorgente esterna"
+#: ../lib/advene/gui/edit/transcribe.py:959
+msgid "Select the annotation type to import"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:263
-msgid "Merge package"
-msgstr "Unisci pacchetto"
+#: ../lib/advene/gui/edit/transcribe.py:968
+#, fuzzy, python-format
+msgid "There are no annotations of type %s"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/main.py:263
-msgid "Merge elements from another package"
-msgstr "Unisci elementi da un altro pacchetto"
+#: ../lib/advene/gui/edit/transcribe.py:997
+msgid "Cannot convert the data: no associated package"
+msgstr "Impossibile convertire il dato: nessun pacchetto associato"
 
-#: ../lib/advene/gui/main.py:264
-msgid "Import _DVD chapters"
-msgstr "Importa capitoli _DVD"
+#: ../lib/advene/gui/edit/transcribe.py:1000
+msgid "Converting transcription"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:264
-msgid "Create annotations based on DVD chapters"
-msgstr "Crea annotazioni basate sui capitoli DVD"
+#: ../lib/advene/gui/edit/transcribe.py:1006
+msgid "Choose the annotation-type where to create annotations.\n"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:266
-#, fuzzy
-msgid "_Export..."
-msgstr "Importatore"
+#: ../lib/advene/gui/edit/transcribe.py:1014
+msgid "Delete existing annotations in this type"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:266
-msgid "Export data to another format"
+#: ../lib/advene/gui/edit/transcribe.py:1037
+msgid "Select type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:267
-msgid "_Website export..."
+#: ../lib/advene/gui/edit/transcribe.py:1041
+msgid "You want to create a new type. Please specify its schema and title."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:267
-msgid "Export views to a website"
+#: ../lib/advene/gui/edit/transcribe.py:1053
+msgid "Containing schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:269
-#, fuzzy
-msgid "_Quit"
-msgstr "_Modifica"
+#: ../lib/advene/gui/edit/transcribe.py:1066
+msgid "Export options"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:271
-msgid "_Edit"
-msgstr "_Modifica"
+#: ../lib/advene/gui/edit/transcribe.py:1071
+msgid "Generate annotations for empty contents"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:272
-msgid "_Undo"
+#: ../lib/advene/gui/edit/transcribe.py:1096
+#, python-format
+msgid "The %s identifier already exists. Choose another one."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:273
-#, fuzzy
-msgid "_Find"
-msgstr "_File"
+#: ../lib/advene/gui/edit/transcribe.py:1135
+msgid "Notes converted"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:274
-#, fuzzy
-msgid "_Delete"
-msgstr "Elimina"
+#: ../lib/advene/gui/edit/transcribe.py:1182
+msgid "Open"
+msgstr "Apri"
 
-#: ../lib/advene/gui/main.py:275
-msgid "Create"
-msgstr "Crea"
+#: ../lib/advene/gui/edit/transcribe.py:1183
+msgid "Save"
+msgstr "Salva"
 
-#: ../lib/advene/gui/main.py:284
-msgid "P_ackage properties"
-msgstr "Proprietà P_acchetto"
+#: ../lib/advene/gui/edit/transcribe.py:1184
+msgid "Save As"
+msgstr "Salva con Nome"
 
-#: ../lib/advene/gui/main.py:284
-msgid "Edit package properties"
-msgstr "Modifica proprietà pacchetto"
+#: ../lib/advene/gui/edit/transcribe.py:1185
+msgid "Import"
+msgstr "Importa"
 
-#: ../lib/advene/gui/main.py:285
-msgid "P_references"
-msgstr "P_referenze"
+#: ../lib/advene/gui/edit/transcribe.py:1185
+msgid "Import from annotations"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:285
-msgid "Interface preferences"
-msgstr "Preference interfaccia"
+#: ../lib/advene/gui/edit/transcribe.py:1186
+msgid "Convert"
+msgstr "Converti"
 
-#: ../lib/advene/gui/main.py:289
-msgid "_Start Web Browser"
+#: ../lib/advene/gui/edit/transcribe.py:1186
+msgid "Convert to annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:289
-msgid "Start the web browser"
+#: ../lib/advene/gui/edit/transcribe.py:1188 ../lib/advene/rules/actions.py:685
+msgid "Center"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:291
-msgid "Simplify interface"
+#: ../lib/advene/gui/edit/transcribe.py:1188
+msgid "Center on the current mark"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:291
-#, fuzzy
-msgid "Simplify the application interface (toggle)"
-msgstr "Visualizza cronologia di navigazione"
+#: ../lib/advene/gui/edit/transcribe.py:1189
+msgid "Find"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:292
-msgid "Evaluator"
+#: ../lib/advene/gui/edit/transcribe.py:1189
+msgid "Search a string"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:292
-msgid "Open python evaluator window"
+#: ../lib/advene/gui/edit/transcribe.py:1190
+msgid "Scale"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4022
-msgid "Webserver log"
+#: ../lib/advene/gui/edit/transcribe.py:1213
+msgid "Automatically scroll to the mark position when playing"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:296
-msgid "_Player"
+#: ../lib/advene/gui/edit/transcribe.py:1215
+msgid "Autoscroll"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:297
-msgid "Go to _Time"
+#: ../lib/advene/gui/edit/transcribe.py:1222
+msgid "Autoinsert"
+msgstr ""
+
+#: ../lib/advene/gui/edit/transcribe.py:1224
+msgid "Automatically insert marks"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:51
+msgid "The webserver requires version 3.0 of CherryPy at least."
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:167
+#, python-format
+msgid ""
+"\n"
+"            <p>\n"
+"            <a href=\"/admin\">Server administration</a> |\n"
+"            <a href=\"/media\">Media control</a> |\n"
+"            <a href=\"%(path)s?mode=raw\">Raw view</a>\n"
+"            </p>\n"
+"            Location: %(locationbar)s\n"
+"            <hr>\n"
+"            "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:227
+msgid "Unspecified Error"
+msgstr "Errore non Specificato"
+
+#: ../lib/advene/core/webcherry.py:228
+#, python-format
+msgid ""
+"\n"
+"        <h1>Error</h1>\n"
+"        <p>An error occurred:</p>\n"
+"        %s\n"
+"        "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:261
+msgid "<h1>No available mediaplayer</h1>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:265
+#, python-format
+msgid ""
+"\n"
+"            <h1>Current STBV: %(currentstbv)s</h1>\n"
+"\n"
+"            <h1>Player status</h1>\n"
+"            <table border=\"1\">\n"
+"            <tr>\n"
+"            <td>Current position</td><td>%(position)s</td>\n"
+"            <td>Duration</td><td>%(duration)s</td>\n"
+"            <td>Player status</td><td>%(status)s</td>\n"
+"            </tr>\n"
+"            </table>\n"
+"            "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:284
+msgid "<h1>No playlist</h1>"
+msgstr "<h1>Nessuna playlist</h1>"
+
+#: ../lib/advene/core/webcherry.py:286
+#, python-format
+msgid ""
+"<h1>Current playlist</h1>\n"
+"                <ul>%s</ul>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:288
+msgid ""
+"\n"
+"                <form action=\"/media/play\" method=\"GET\">\n"
+"                Starting pos: <input type=\"text\" name=\"position\" value="
+"\"0\">\n"
+"                <input type=\"submit\" value=\"Play\">\n"
+"                </form>\n"
+"                <a href=\"/media/stop\">Stop</a> | <a href=\"/media/pause"
+"\">Pause</a><br>\n"
+"                "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:295
+msgid ""
+"<hr />\n"
+"            <form action=\"/media/load\" method=\"GET\">\n"
+"            Add a new file (<em>dvd</em> to play a DVD):\n"
+"            <input type=\"text\" name=\"filename\">\n"
+"            <input type=\"submit\" value=\"Add\">\n"
+"            </form>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:301
+msgid ""
+"<h3><a href=\"/media/snapshot\">Access to current packages snapshots</h3>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:310
+#, python-format
+msgid "Unknown STBV identifier: %s"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:385
+msgid "Media information"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:398
+msgid "File added"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:399
+#, python-format
+msgid "<p><strong>%s has been added to the playlist</strong></p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:410 ../lib/advene/core/webcherry.py:472
+msgid "Access to packages snapshots"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:420 ../lib/advene/core/webcherry.py:482
+msgid "Unknown package alias"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:426
+#, python-format
+msgid "Available snapshots for %s"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:432
+#, python-format
+msgid ""
+"<p><a href=\"/media/snapshot/%s?mode=inline\">Display with inline images</"
+"a></p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:439
+msgid "Done"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:441
+msgid "Pending"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:487
+#, fuzzy, python-format
+msgid "Unknown annotation id: %s"
+msgstr "Tutte le annotazioni"
+
+#: ../lib/advene/core/webcherry.py:610 ../lib/advene/core/webcherry.py:728
+#, python-format
+msgid "Cannot activate stbvid %(stbvid)s: %(error)s"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:675
+msgid "<p>No GUI is available."
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:677
+#, python-format
+msgid "<p>Opened adhoc views: %s</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:678
+msgid "<p>Available adhoc views:</p><ul>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:699
+#, python-format
+msgid "<p>Current stbv: %s</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:700
+#, python-format
+msgid "<p>You can activate the following STBV:</p><ul>%s</ul>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:702
+msgid "Activate and play"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:708
+msgid "Application information"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:778
+msgid "Missing element id parameter"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:782
+#, python-format
+msgid "No existing element with id %s"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:791
+#, python-format
+msgid "<p>The GUI view %s does not exist.</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:798
+msgid "Invalid request"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:803
+msgid "Invalid configuration variable name"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:815
+msgid "Invalid value"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:819
+#, python-format
+msgid "Unsupported method %s"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:845
+#, python-format
+msgid ""
+"\n"
+"        <h1>Authorized hosts</h1>\n"
+"        <table border=\"1\">\n"
+"        <tr><th>Host</th><th>IP Addr</th><th>Action</th></tr>\n"
+"        %s\n"
+"        </table>\n"
+"        <form method=\"GET\">\n"
+"        Add a new hostname to the list :<br>\n"
+"        <input type=\"text\" name=\"hostname\"><input type=\"submit\" value="
+"\"Add\">\n"
+"        </form>\n"
+"        "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:859
+msgid "Access control"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:864
+msgid "Access control - add a hostname"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:872 ../lib/advene/core/webcherry.py:886
+#, python-format
+msgid "<strong>Error: %s is an invalid hostname.</strong>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:875
+#, python-format
+msgid "<p>Added %s to authorized hosts list.</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:881
+msgid "Access control - delete a hostname"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:889
+msgid "<strong>Cannot remove the localhost access.</strong>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:894
+#, python-format
+msgid "<p>Removed %s from authorized hosts list.</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:896
+#, python-format
+msgid "<p>%s is not in authorized hosts list.</p>"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:945
+msgid "Server Administration"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:953
+#, python-format
+msgid ""
+"\n"
+"        <p><a href=\"/admin/access\">Update the access list</a></p>\n"
+"        <p><a href=\"/admin/methods\">List available TALES methods</a></p>\n"
+"        <p><a href=\"/action\">List available actions</a></p>\n"
+"        <p><a href=\"/admin/reset\">Reset the server</a></p>\n"
+"        <p><a href=\"/media\">Media control</a></p>\n"
+"        <p><a href=\"/application\">Display GUI status</a></p>\n"
+"        <p><a href=\"/admin/list\">List available files</a></p>\n"
+"        <p><a href=\"/packages\">List loaded packages</a> (%(packagelist)s)</"
+"p>\n"
+"        <p>Display mode : %(displaymode)s</p>\n"
+"        <hr>\n"
+"        <p>Load a package :\n"
+"        <form action=\"/admin/load\" method=\"GET\">\n"
+"        Alias: <input type=\"text\" name=\"alias\" /><br>\n"
+"        URI:   <input type=\"text\" name=\"uri\" /><br>\n"
+"        <input type=\"submit\" value=\"Load\" />\n"
+"        </form>\n"
+"        </body></html>\n"
+"        "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:983
+msgid "Available files"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1009
+msgid "You should specify an alias"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1014
+msgid "You should specify an uri"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1020
+#, python-format
+msgid "Package %s loaded"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1021 ../lib/advene/core/webcherry.py:1057
+#, python-format
+msgid ""
+"<p>Go to the <a href=\"/packages/%(alias)s\">%(alias)s</a> package, or to "
+"the <a href=\"/packages\">package list</a>."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:297
-msgid "Goto a specified time code"
+#: ../lib/advene/core/webcherry.py:1024
+#, python-format
+msgid "<p>Cannot load package %(alias)s : %(error)s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save _ImageCache"
+#: ../lib/advene/core/webcherry.py:1035
+#, python-format
+msgid "Package %s deleted"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:298
-msgid "Save the contents of the ImageCache to disk"
+#: ../lib/advene/core/webcherry.py:1036
+msgid "<p>Go to the <a href=\"/packages\">package list</a>."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:299
-msgid "Reset ImageCache"
+#: ../lib/advene/core/webcherry.py:1039
+#, python-format
+msgid "<p>Cannot delete package %(alias)s : %(error)s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:299
-msgid "Reset the ImageCache"
+#: ../lib/advene/core/webcherry.py:1056
+#, python-format
+msgid "Package %s saved"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:300
-msgid "_Restart player"
+#: ../lib/advene/core/webcherry.py:1060
+#, python-format
+msgid "<p>Cannot save package %(alias)s : %(error)s</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:300
-msgid "Restart the player"
+#: ../lib/advene/core/webcherry.py:1070
+msgid "Server reset"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:302
-#, fuzzy
-msgid "Update annotation screenshots"
-msgstr "Tutte le annotazioni"
+#: ../lib/advene/core/webcherry.py:1076
+msgid "Available TALES methods"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:302
-msgid "Update screenshots for annotation bounds"
+#: ../lib/advene/core/webcherry.py:1117
+msgid "Loaded package(s)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:303
-msgid "Detect shots"
+#: ../lib/advene/core/webcherry.py:1119
+msgid ""
+"\n"
+"        <h1>Loaded package(s)</h1>\n"
+"        <table border=\"1\" width=\"50%\">\n"
+"        <tr>\n"
+"        <th>Alias</th>\n"
+"        <th>Action</th>\n"
+"        <th>URI</th>\n"
+"        <th>Annotations</th>\n"
+"        </tr>\n"
+"        "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:303
-msgid "Automatically detect shots"
+#: ../lib/advene/core/webcherry.py:1131
+#, python-format
+msgid ""
+"<tr>\n"
+"            <td><a href=\"/packages/%(alias)s\">%(alias)s</a></td>\n"
+"            <td align=\"center\"><a href=\"/admin/load?alias=%(alias)s&uri="
+"%(uri)s\">Reload</a>|<a href=\"/admin/delete?alias=%(alias)s\">Drop</a>|<a "
+"href=\"/admin/save?alias=%(alias)s\">Save</a></td>\n"
+"            <td>%(uri)s</td>\n"
+"            <td>%(size)d</td>\n"
+"            </tr>\n"
+"            "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:304
-msgid "Select the player plugin"
+#: ../lib/advene/core/webcherry.py:1204 ../lib/advene/core/webcherry.py:1279
+#: ../lib/advene/core/webcherry.py:1288 ../lib/advene/core/webcherry.py:1296
+#: ../lib/advene/core/webcherry.py:1454 ../lib/advene/core/webcherry.py:1462
+#: ../lib/advene/core/webcherry.py:1470 ../lib/advene/core/webcherry.py:2032
+#: ../lib/advene/core/webcherry.py:2039
+msgid "Error"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:307
-msgid "No package"
-msgstr "Nessun pacchetto"
+#: ../lib/advene/core/webcherry.py:1205
+#, python-format
+msgid "The TALES expression %s is not valid."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:309
-msgid "_Help"
-msgstr "_Aiuto"
+#: ../lib/advene/core/webcherry.py:1256
+msgid "Content mode not available on non-content data"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:310
-#, fuzzy
-msgid "Help"
-msgstr "_Aiuto"
+#: ../lib/advene/core/webcherry.py:1280 ../lib/advene/core/webcherry.py:1289
+#: ../lib/advene/core/webcherry.py:1297 ../lib/advene/core/webcherry.py:1317
+#: ../lib/advene/core/webcherry.py:1321 ../lib/advene/core/webcherry.py:1455
+#: ../lib/advene/core/webcherry.py:1463 ../lib/advene/core/webcherry.py:1471
+#: ../lib/advene/core/webcherry.py:1530 ../lib/advene/core/webcherry.py:1607
+#: ../lib/advene/core/webcherry.py:1727 ../lib/advene/core/webcherry.py:1777
+msgid "<h1>Error</h1>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:311
-msgid "Get support"
+#: ../lib/advene/core/webcherry.py:1281 ../lib/advene/core/webcherry.py:1322
+#, python-format
+msgid ""
+"<p>There was an error in the template code.</p>\n"
+"                <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"                <p>Error message: <em>%(message)s</em></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:312
-msgid "Check for updates"
+#: ../lib/advene/core/webcherry.py:1290
+#, python-format
+msgid ""
+"<p>An invalid character is in the Context:</p>\n"
+"                <p>Error message: <em>%(error)s</em></p><pre>%(message)s</"
+"pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:313
-msgid "Display shortcuts"
+#: ../lib/advene/core/webcherry.py:1298
+#, python-format
+msgid ""
+"<p>There was an error in the TALES expression.</p>\n"
+"                <pre>%s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:314
-#, fuzzy
-msgid "Display logfile"
-msgstr "Visualizza %s"
+#: ../lib/advene/core/webcherry.py:1318
+#, python-format
+msgid ""
+"<p>There was an error.</p>\n"
+"                <pre>%s</pre>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:314
-#, fuzzy
-msgid "Display log file"
-msgstr "Visualizza %s"
+#: ../lib/advene/core/webcherry.py:1342
+#, python-format
+msgid ""
+"\n"
+"            <hr>\n"
+"            <p>\n"
+"            Location: %(location)s<br>\n"
+"            <form name=\"navigation\" method=\"GET\">\n"
+"            <a href=\"%(levelup)s\">Up one level</a> |\n"
+"            Next level :\n"
+"            <select name=\"path\" onchange=\"submit()\">\n"
+"            "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:315
-#, fuzzy
-msgid "Open logfile folder"
-msgstr "Apri un file (C-o)"
+#: ../lib/advene/core/webcherry.py:1360
+msgid ""
+"\n"
+"            </select> View: <select name=\"view\" onchange=\"submit()\">\n"
+"            <option selected></option>\n"
+"            "
+msgstr ""
 
-#: ../lib/advene/gui/main.py:315
+#: ../lib/advene/core/webcherry.py:1378
+#, python-format
 msgid ""
-"Display logfile folder. It can help when sending the advene.log file by e-"
-"mail."
+"<hr>\n"
+"            <p>Evaluating expression \"<strong>%(expression)s</strong>\" on "
+"package %(uri)s returns %(value)s</p>\n"
+"            "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:316
-msgid "_About"
-msgstr "_Informazioni"
+#: ../lib/advene/core/webcherry.py:1414
+#, python-format
+msgid "<p>Package <strong>%s</strong> not loaded</p>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3750
+#: ../lib/advene/core/webcherry.py:1456
 #, python-format
 msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
+"<p>There was an error in the template code.</p>\n"
+"            <p>Tag name: <strong>%(tagname)s</strong></p>\n"
+"            <p>Error message: <em>%(message)s</em></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:344
-msgid "Open a package file"
-msgstr "Apri un file pacchetto"
+#: ../lib/advene/core/webcherry.py:1464
+#, python-format
+msgid ""
+"<p>There was an error in the expression.</p>\n"
+"            <pre>%s</pre>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:345
-msgid "Save the current package"
-msgstr "Salva il pacchetto attuale"
+#: ../lib/advene/core/webcherry.py:1472
+#, python-format
+msgid ""
+"<p>Cannot resolve TALES expression %(expr)s on package %(package)s<p><pre>\n"
+"            %(type)s\n"
+"            %(value)s\n"
+"            %(traceback)s</pre>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:346
-msgid "Save the package with a new name"
-msgstr "Salva il pacchetto con un nuovo nome"
+#: ../lib/advene/core/webcherry.py:1531 ../lib/advene/core/webcherry.py:1728
+msgid "<p>Cannot set the value : invalid path</p>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:347
-msgid "Select movie file..."
+#: ../lib/advene/core/webcherry.py:1593 ../lib/advene/core/webcherry.py:1846
+#, python-format
+msgid ""
+"<h1>Error</h1><p>When creating resource %(path)s, the resource folder "
+"%(folder)s could not be created.</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:348
-msgid "Select DVD"
-msgstr "Seleziona DVD"
+#: ../lib/advene/core/webcherry.py:1602 ../lib/advene/core/webcherry.py:1856
+msgid "Resource successfuly created/updated"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:352
-#, fuzzy
-msgid "Create a text annotation"
-msgstr "Trascrizione delle annotazioni"
+#: ../lib/advene/core/webcherry.py:1611
+msgid "Value successfuly updated"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:353
-#, fuzzy
-msgid "Create a graphical annotation"
-msgstr "Trascrizione delle annotazioni"
+#: ../lib/advene/core/webcherry.py:1613
+#, python-format
+msgid ""
+"Unable to update the attribute %(attribute)s for element %(element)s: "
+"%(error)s."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:359
-msgid "List recently opened packages"
+#: ../lib/advene/core/webcherry.py:1724
+msgid "<p>Invalid request</p>."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:389
-msgid "Snapshotter activity"
+#: ../lib/advene/core/webcherry.py:1788 ../lib/advene/core/webcherry.py:1805
+msgid "Value updated"
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1789
+#, python-format
+msgid ""
+"\n"
+"                <h1>Value updated</h1>\n"
+"                The value of %(path)s has been updated to\n"
+"                <pre>\n"
+"                %(value)s\n"
+"                </pre>\n"
+"                "
+msgstr ""
+
+#: ../lib/advene/core/webcherry.py:1806
+#, python-format
+msgid ""
+"\n"
+"                    <h1>Value updated</h1>\n"
+"                    The value of %(path)s has been updated to\n"
+"                    <pre>\n"
+"                    %(value)s\n"
+"                    </pre>\n"
+"                    "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/core/webcherry.py:1817
 #, python-format
-msgid "%d queued requests"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:392
-msgid "Cancel all requests"
+msgid ""
+"Malformed request: cannot update the value of %(attribute)s in %(tales)s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:397
-#, fuzzy
-msgid "No snapshotter"
-msgstr "Visualizza %s"
-
-#: ../lib/advene/gui/main.py:419
-msgid "No snapshotting activity"
+#: ../lib/advene/core/webcherry.py:1860
+msgid "Cannot create an element in something else than a package."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:423
-msgid "Snapshotting"
+#: ../lib/advene/core/webcherry.py:1877
+#, python-format
+msgid "The identifier %s already exists."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:440
-#, fuzzy
-msgid "Display application log messages"
-msgstr "Visualizza %s"
-
-#: ../lib/advene/gui/main.py:482
-msgid "Quicksearch lists"
+#: ../lib/advene/core/webcherry.py:1889
+#, python-format
+msgid "<p>Error while creating view %(id)s</p><pre>%(error)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:488
-msgid "Please specify the lists of elements to be searched."
+#: ../lib/advene/core/webcherry.py:1895
+msgid "View created"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:507
+#: ../lib/advene/core/webcherry.py:1896
 #, python-format
 msgid ""
-"Searching on %s.\n"
-"Left click to launch the search, right-click to set the quicksearch options"
+"\n"
+"                 <h1>View <em>%(id)s</em> created</h1>\n"
+"                 <p>The view <a href=\"%(url)s\">%(id)s</a> was successfully "
+"created.</p>\n"
+"                 "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:508
+#: ../lib/advene/core/webcherry.py:1912
 #, python-format
-msgid "String to search in %s"
+msgid "Missing %s parameter"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
-msgid "Tracing : "
+#: ../lib/advene/core/webcherry.py:1915
+#, python-format
+msgid "Relation type %s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:521
-msgid "off"
+#: ../lib/advene/core/webcherry.py:1922 ../lib/advene/core/webcherry.py:1925
+#, python-format
+msgid "Annotation %s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:525
-#, fuzzy
-msgid "on"
-msgstr "Nessuno"
-
-#: ../lib/advene/gui/main.py:545
-msgid "Launch search"
+#: ../lib/advene/core/webcherry.py:1928
+#, python-format
+msgid ""
+"<p>Cannot create relation between %(member1)s and %(member2)s: invalid type</"
+"p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:550
-msgid "Ignore case"
+#: ../lib/advene/core/webcherry.py:1940
+#, python-format
+msgid ""
+"<p>Error while creating relation between %(member1)s and %(member2)s :</"
+"p><pre>%(error)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:555
-msgid "Searched elements"
-msgstr "Elementi cercati"
-
-#: ../lib/advene/gui/main.py:625
-msgid "Playing"
+#: ../lib/advene/core/webcherry.py:1943
+msgid "Relation created"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:626
-msgid "Pause"
+#: ../lib/advene/core/webcherry.py:1944
+#, python-format
+msgid "<h1>Relation <em>%s</em> created</h1>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:627
-msgid "Init"
+#: ../lib/advene/core/webcherry.py:1954
+#, python-format
+msgid "Annotation type %s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:629
-msgid "Undefined"
+#: ../lib/advene/core/webcherry.py:1971
+#, python-format
+msgid ""
+"<p>Error while creating annotation of type %(type)s :<pre>\n"
+"                    %(errortype)s\n"
+"                    %(value)s\n"
+"                    %(traceback)s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:901
-msgid "Enter the new time value"
+#: ../lib/advene/core/webcherry.py:1983
+#, python-format
+msgid "Annotation %s created"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:925
+#: ../lib/advene/core/webcherry.py:1985
 #, python-format
-msgid "Replace content in %d elements"
+msgid "Error: Cannot create an object of type %s."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:938
-msgid "Find word"
+#: ../lib/advene/core/webcherry.py:1988
+#, python-format
+msgid ""
+"Error: Cannot perform the action <em>%(action)s</em> on <code>%(object)s</"
+"code></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:945
-msgid "Replace by"
+#: ../lib/advene/core/webcherry.py:2001
+msgid "Available actions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:973
+#: ../lib/advene/core/webcherry.py:2010
 #, python-format
-msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
+msgid "<li>%(name)s: %(value)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:982
-msgid "The video extracting feature is not available."
+#: ../lib/advene/core/webcherry.py:2033
+#, python-format
+msgid "<p>Unknown action</p><pre>Action: %s</pre>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:985
-#, fuzzy
-msgid "Video export"
-msgstr "Seleziona un DVD"
+#: ../lib/advene/core/webcherry.py:2040
+msgid "Missing parameter(s) :<ul>"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:987
-#, python-format
-msgid "Exporting video montage/fragment to %%(filename)s"
+#: ../lib/advene/core/webcherry.py:2076
+msgid "Advene web resources"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:989
-msgid "Please choose a destination filename"
+#: ../lib/advene/core/webcherry.py:2082
+msgid "Advene webserver"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/core/webcherry.py:2083
+#, python-format
 msgid ""
-"No media association is defined in the package. Please use the 'File/"
-"Associate a video file' menu item to associate a media file."
+"<p>Welcome on the <a href=\"http://liris.cnrs.fr/advene/\">Advene</a> "
+"webserver run by %(userid)s on %(serveraddress)s.</p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1069
-#, python-format
+#: ../lib/advene/core/webcherry.py:2090
 msgid ""
-"The associated media %s could not be found. Please use the 'File/Associate a "
-"video file' menu item to associate a media file."
+" <p>No package is loaded. You can access the <a href=\"/admin\">server "
+"administration page</a>.<p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1071
+#: ../lib/advene/core/webcherry.py:2100
 #, python-format
 msgid ""
-"You are now working with the following video:\n"
-"%s"
+"the <a href=\"/packages/%(alias)s/view/%(view)s\">loaded package's default "
+"view</a>"
 msgstr ""
 
-#: ../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"
+#: ../lib/advene/core/webcherry.py:2102
+#, python-format
+msgid "the <a href=\"/packages/%s\">loaded package's data</a>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1228
-msgid "Active bookmarks"
+#: ../lib/advene/core/webcherry.py:2104
+msgid "the <a href=\"/packages\">loaded packages' data</a>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1229
-#, fuzzy
-msgid "Schema editor"
-msgstr "Schema"
-
-#: ../lib/advene/gui/main.py:1233
-msgid "TALES explorer"
+#: ../lib/advene/core/webcherry.py:2105
+#, python-format
+msgid ""
+" <p>You can either access %s or the <a href=\"/admin\">server administration "
+"page</a>.<p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1234
-msgid "Dynamic montage"
+#: ../lib/advene/core/webcherry.py:2107
+#, python-format
+msgid ""
+"<hr><p align=\"right\"><em>Document generated by <a href=\"http://liris.cnrs."
+"fr/advene/\">Advene</a> v. %s.</em></p>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1238
-msgid "Open a comment view in the web browser"
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
+#, python-format
+msgid "Cannot start HTTP server: %s"
 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)"
+#: ../lib/advene/core/controller.py:375
+msgid "Exception (traceback in console):"
 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"
+#: ../lib/advene/core/controller.py:408
+msgid "No available GUI"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1245
-msgid "Visualise the activity trace as a timeline"
+#: ../lib/advene/core/controller.py:427
+msgid "No available event handler"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1274
-msgid "The webserver could not be started. Static views cannot be accessed."
+#: ../lib/advene/core/controller.py:435
+msgid "No available gui"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1352
+#: ../lib/advene/core/controller.py:451
 #, python-format
-msgid ""
-"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
-"released</b> on %(date)s, but you are running version %(current)s.\n"
-"You can download the latest version from the Advene website: http://liris."
-"cnrs.fr/advene/</span>"
+msgid "Warning: redefining an existing feature %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1357
-msgid "Go to the website"
-msgstr ""
+#: ../lib/advene/core/controller.py:583
+msgid "All annotations"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/main.py:1363
-msgid "Advene release"
+#: ../lib/advene/core/controller.py:585
+msgid "Ids"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/core/controller.py:773
 #, python-format
-msgid "You are using a up-to-date version of Advene (%(current)s)."
+msgid ""
+"Cannot start the webserver\n"
+"The following processes seem to use the %(port)s port: %(processes)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1369
-msgid "Advene is up-to-date"
+#: ../lib/advene/core/controller.py:822 ../lib/advene/core/controller.py:833
+#, python-format
+msgid "Loaded %(uri)s as %(alias)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1383
-msgid "Choose a color"
+#: ../lib/advene/core/controller.py:824 ../lib/advene/core/controller.py:836
+#, python-format
+msgid "Cannot load package from file %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1415
-msgid "Select an annotation to loop on it"
+#: ../lib/advene/core/controller.py:875
+msgid "Deactivating web server"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1417
+#: ../lib/advene/core/controller.py:992
 #, python-format
-msgid "Looping on %s"
+msgid "Cannot get audio volume: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1476 ../lib/advene/gui/main.py:2367
-msgid "No active dynamic view"
+#: ../lib/advene/core/controller.py:1042
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1487
-msgid "Create a new dynamic view."
+#: ../lib/advene/core/controller.py:1246
+#, python-format
+msgid "Found matching video file in moviepath: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1506
-msgid "Edit the current dynamic view."
+#: ../lib/advene/core/controller.py:1287 ../lib/advene/core/controller.py:1289
+msgid "Analysis of "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1518
-#, fuzzy
-msgid "No dynamic view"
-msgstr "Vista dinamica"
-
-#: ../lib/advene/gui/main.py:1550
-msgid "Playing rate"
+#: ../lib/advene/core/controller.py:1489
+msgid "Cannot split the annotation: the given position is outside."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1698
-msgid "History"
+#: ../lib/advene/core/controller.py:1654
+#, python-format
+msgid "Cannot find the template package %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1705
-msgid "Popups"
+#: ../lib/advene/core/controller.py:1697
+#, python-format
+msgid "Cannot read the imported package %(uri)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1709
-msgid ""
-"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"notebooks to embed various views."
+#: ../lib/advene/core/controller.py:1932
+msgid "Package URI has changed. Reloading package with new URI."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:1709
-msgid "Information"
+#: ../lib/advene/core/controller.py:1950
+msgid ""
+"Cannot load package: the following annotations do not have Millisecond "
+"fragments:"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2004
-msgid "Cannot create annotation. There is no schema to put it in."
+#: ../lib/advene/core/controller.py:1977
+#, python-format
+msgid "Cannot handle master attribute, the package %s is not imported."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2013
-#, fuzzy
-msgid "Default annotation type"
-msgstr "di un tipo di annotazione"
+#: ../lib/advene/core/controller.py:1979
+#, python-format
+msgid "Checking master package %s for not yet imported elements."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:2025
-#, fuzzy
-msgid "Annotation created"
-msgstr "Tipo di Annotazione"
+#: ../lib/advene/core/controller.py:2019
+msgid "Standard summary"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:2057
-msgid "Play/Pause [Control-Tab / Control-Space]"
+#: ../lib/advene/core/controller.py:2024
+msgid "Default view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2058
+#: ../lib/advene/core/controller.py:2066
 #, python-format
-msgid "Rewind (%.02f s) [Control-Left]"
+msgid ""
+"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2059
+#: ../lib/advene/core/controller.py:2156
 #, python-format
-msgid "Forward (%.02f s) [Control-Right]"
+msgid "Got exception %s when stopping player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2060
-msgid "Previous frame [Control-Down]"
+#: ../lib/advene/core/controller.py:2242
+#, python-format
+msgid "Raised exception in update_status: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2061
-msgid "Next frame [Control-Up]"
+#: ../lib/advene/core/controller.py:2269
+msgid "Unable to start the player."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2062
-msgid "Fullscreen"
-msgstr ""
+#: ../lib/advene/core/controller.py:2478
+#, fuzzy, python-format
+msgid "Comment on set of %d annotations"
+msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/gui/main.py:2214
+#: ../lib/advene/core/controller.py:2480
 #, python-format
-msgid "Screenshot saved to %s"
+msgid "Comment on %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2216
+#: ../lib/advene/core/controller.py:2484
 #, python-format
 msgid ""
-"Screenshot saved in\n"
-" %s"
+"<h1>Comment on %(title)s</h1>\n"
+"<span class=\"advene:annotation\" advene:annotation=\"%(id)s\" advene:"
+"presentation=\"link:snapshot\"><a title=\"Click to play the movie in Advene"
+"\" tal:attributes=\"href package/annotations/%(id)s/player_url\" href="
+"\"%(href)s\"><img title=\"Click here to play\" width=\"160\" height=\"100\" "
+"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
+"\"%(imgurl)s\" ></img></a></span>"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2218
+#: ../lib/advene/core/controller.py:2494
 #, fuzzy, python-format
-msgid ""
-"Could not save screenshot:\n"
-" %s"
+msgid "List of %s annotations"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/main.py:2226
-#, fuzzy
-msgid "Save screenshot to..."
-msgstr "Salva contenuto in..."
+#: ../lib/advene/core/controller.py:2529
+#, fuzzy, python-format
+msgid "Cannot export to %(filename)s: %(e)s"
+msgstr "Impossibile salvare il file: %s"
 
-#: ../lib/advene/gui/main.py:2244
-msgid "Could not take snapshot with enough precision"
+#: ../lib/advene/core/controller.py:2544 ../lib/advene/core/controller.py:2553
+#, python-format
+msgid "Error when exporting: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2282
-#, fuzzy
-msgid "Export package data"
-msgstr "Nessun pacchetto"
+#: ../lib/advene/plugins/featuredetect.py:42
+msgid "Feature detection (face...)"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:2284
-#, fuzzy, python-format
-msgid "Export annotation type %s"
-msgstr "di un tipo di annotazione"
+#: ../lib/advene/plugins/featuredetect.py:57
+msgid "Sensitivity level."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:2286
-#, fuzzy, python-format
-msgid "Export element %s"
-msgstr "Crea elemento"
+#: ../lib/advene/plugins/featuredetect.py:60
+msgid ""
+"Scale. Original image size will be divided by this factor, in order to speed "
+"up detection."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:2312
-msgid "Export format"
+#: ../lib/advene/plugins/featuredetect.py:63
+#, fuzzy
+msgid "Classifier"
+msgstr "Classe"
+
+#: ../lib/advene/plugins/featuredetect.py:77
+#, python-format
+msgid "Feature %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2349
-msgid " (modified)"
+#: ../lib/advene/plugins/featuredetect.py:79
+#, python-format
+msgid "Detected %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2352
+#: ../lib/advene/plugins/featuredetect.py:81
+#, fuzzy
+msgid "Detection started"
+msgstr "Tempo di reazione"
+
+#: ../lib/advene/plugins/featuredetect.py:171
 #, python-format
-msgid "Activate %s"
+msgid "Detected %(count)d feature(s) until %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2523
-msgid "Saved workspace"
+#: ../lib/advene/plugins/ted.py:39
+#, fuzzy
+msgid "TED importer"
+msgstr "Importatore"
+
+#: ../lib/advene/plugins/cutter.py:39
+msgid "Audio segmentation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2575
-msgid "Restoring workspace..."
+#: ../lib/advene/plugins/cutter.py:53
+msgid "Volume threshold (in dB, can be negative) before trigger."
+msgstr ""
+
+#: ../lib/advene/plugins/cutter.py:56
+#: ../lib/advene/plugins/soundenveloppe.py:62
+msgid "Channel selection."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2581
+#: ../lib/advene/plugins/cutter.py:101
 #, python-format
-msgid "Do you wish to restore the %s workspace ?"
+msgid "Detected %(count)d segments until %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2586
-msgid "Clear the current workspace"
+#: ../lib/advene/plugins/cutter.py:119
+msgid "Sound segment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2607
+#: ../lib/advene/plugins/cutter.py:120
 #, python-format
-msgid "View %s is not an adhoc view"
+msgid ""
+"Sound segmentation with a threshold of %(threshold)d dB - channel: "
+"%(channel)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2618
-#, python-format
-msgid "Cannot identify the adhoc view %s"
+#: ../lib/advene/plugins/cutter.py:138
+msgid "Starting silence detection"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2632
-msgid "Choose the annotation type to display as transcription."
+#: ../lib/advene/plugins/ttl.py:41
+#, fuzzy
+msgid "TurTLe (RDF) importer"
+msgstr "Importatore"
+
+#: ../lib/advene/plugins/shotdetect.py:35
+msgid "Shotdetect importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2667
-#, python-format
-msgid ""
-"Error: unable to find an edit popup for %(element)s:\n"
-"%(error)s"
+#: ../lib/advene/plugins/shotdetect.py:79
+msgid "No shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2675
-#, fuzzy, python-format
-msgid "Editing %s"
-msgstr "Modifica %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 ""
 
-#: ../lib/advene/gui/main.py:2687
-#, python-format
-msgid "Comment view (%s)"
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2754
-#, python-format
-msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2765
-#, python-format
-msgid "Activating package %s"
+#: ../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/gui/main.py:2793
-#, python-format
-msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2826
-msgid "Do you want to restore the saved workspace ?"
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:2833
-msgid "Advene"
-msgstr "Advene"
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:3038
-#, python-format
-msgid "Got exception %s. Trying to continue."
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3062 ../lib/advene/gui/main.py:3083
-#: ../lib/advene/gui/main.py:4033
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:86
+#: ../lib/advene/plugins/barcode.py:58
 #, fuzzy
-msgid "Unknown"
+msgid "Generating annotations"
 msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/main.py:3153
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#: ../lib/advene/plugins/barcode.py:83
 #, python-format
-msgid ""
-"The package(s) %s are modified.\n"
-"Save them now?"
+msgid "%(count)d utterances until %(time)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3203
-msgid "Choose an annotation type."
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3247
-msgid "No annotation type is defined."
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3256
-msgid "Creating a new type."
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3260
-msgid "Title of the new type"
+#: ../lib/advene/plugins/brltty.py:62
+msgid "Input from the braille table."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3261
-msgid ""
-"Id of the new type. It is generated from the title, but you may change it if "
-"necessary."
+#: ../lib/advene/plugins/brltty.py:66
+msgid "BrlTTY not installed. There will be no braille support."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3265
-msgid "Specify the content-type for the annotation type"
+#: ../lib/advene/plugins/brltty.py:78
+msgid "Could not initialize BrlTTY. No braille support."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3267
-msgid "Content type"
+#: ../lib/advene/plugins/brltty.py:84
+msgid "Display a message in Braille"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3274 ../lib/advene/gui/main.py:3383
-msgid "Create a new schema"
+#: ../lib/advene/plugins/brltty.py:85
+msgid "Message to display."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3287
-msgid "Choose an existing schema for the new type, or create a new one"
+#: ../lib/advene/plugins/brltty.py:256
+#, python-format
+msgid "BrlTTY connection error: %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3290 ../lib/advene/gui/main.py:3398
-msgid "Specify the schema title"
+#: ../lib/advene/plugins/brltty.py:273
+msgid "Braille display: "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3294
-msgid "Title of the new schema"
+#: ../lib/advene/plugins/brltty.py:279
+msgid "No message"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3295
-msgid ""
-"Id of the new schema. It is generated from the title, but you may change it "
-"if necessary."
+#: ../lib/advene/plugins/transcript.py:32
+msgid "Youtube XML importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3318
-msgid ""
-"You specified a annotation-type identifier that already exists. Aborting."
-msgstr ""
+#: ../lib/advene/plugins/transcript.py:69
+#, fuzzy
+msgid "Importing transcript"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/main.py:3336
-msgid "You specified a existing schema identifier. Using the existing schema."
+#: ../lib/advene/plugins/aeidon_import.py:48
+msgid "Aeidon (subtitles) importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3338
-msgid ""
-"You specified an existing identifier that does not reference a schema. "
-"Aborting."
+#: ../lib/advene/plugins/anvil.py:35
+msgid "Anvil importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3365
-msgid "Choose a schema."
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3425
-msgid "You specified an existing identifier. Aborting."
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3445
-#, python-format
-msgid "Package %s modified"
-msgstr ""
+#: ../lib/advene/plugins/fcp.py:75
+#, fuzzy
+msgid "Importing subtitles"
+msgstr "_Importa file"
 
-#: ../lib/advene/gui/main.py:3446
-#, python-format
-msgid ""
-"The package %s has been modified but not saved.\n"
-"Save it now?"
+#: ../lib/advene/plugins/fcp.py:90
+msgid "Importing clips"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3456
-#, python-format
-msgid "%s snapshots"
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3457
+#: ../lib/advene/plugins/tracebuilder.py:219
 #, python-format
-msgid "Do you want to save the snapshots for media %s?"
+msgid "Cannot export to %(fname)s: %(e)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3464 ../lib/advene/gui/main.py:3473
-#: ../lib/advene/gui/main.py:4449
+#: ../lib/advene/plugins/tracebuilder.py:1129
+#: ../lib/advene/plugins/tracebuilder.py:1168
 #, fuzzy, python-format
-msgid "Cannot save imagecache for %(media)s: %(e)s"
+msgid "Cannot export to %(host)s:%(port)s %(error)s"
 msgstr "Impossibile salvare il file: %s"
 
-#: ../lib/advene/gui/main.py:3487
-msgid "first frame"
+#: ../lib/advene/plugins/tracebuilder.py:1143
+#, fuzzy, python-format
+msgid "Cannot send data to %(host)s:%(port)s %(error)s"
+msgstr "Impossibile salvare il file: %s"
+
+#: ../lib/advene/plugins/tracebuilder.py:1191
+#, fuzzy, python-format
+msgid "Cannot send event %(nb)s to %(host)s:%(port)s %(error)s"
+msgstr "Impossibile salvare il file: %s"
+
+#: ../lib/advene/plugins/tracebuilder.py:1197
+#, python-format
+msgid "%(nb)s events sent to %(host)s:%(port)s during session."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3488
-msgid "last frame"
+#: ../lib/advene/plugins/goodshotdetector.py:45
+msgid "Shot detection (Delakis version)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3496
-#, fuzzy, python-format
-msgid "Click on %(bound)s of %(annotation)s"
-msgstr "Trascrizione delle annotazioni"
+#: ../lib/advene/plugins/goodshotdetector.py:60
+msgid "Cache histogram alongside video files."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:3499
-#, fuzzy, python-format
-msgid "Update %(bound)s of %(annotation)s"
-msgstr "Trascrizione delle annotazioni"
+#: ../lib/advene/plugins/goodshotdetector.py:63
+msgid ""
+"Parameter profile: safe will detect less cuts, aggressive will detect more "
+"cuts (but more false ones too). default is a compromise."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:3518
-msgid "Click on the frame corresponding to the timestamp value"
+#: ../lib/advene/plugins/goodshotdetector.py:77
+#, python-format
+msgid "Shot (%s profile)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3520
-msgid "Set new timestamp value"
+#: ../lib/advene/plugins/goodshotdetector.py:78
+#: ../lib/advene/plugins/shotdetectapp.py:87
+msgid "Detected shots"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3527
-msgid ""
-"<b>Annotation statistics</b>\n"
-"\n"
+#: ../lib/advene/plugins/goodshotdetector.py:83
+msgid "Loading histogram"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3599
+#: ../lib/advene/plugins/goodshotdetector.py:146
 #, fuzzy
-msgid "Text annotation"
-msgstr "Tutte le annotazioni"
+msgid "Computing hdiff"
+msgstr "Relazioni"
+
+#: ../lib/advene/plugins/goodshotdetector.py:153
+msgid "Detecting cuts"
+msgstr ""
+
+#: ../lib/advene/plugins/goodshotdetector.py:180
+msgid "Detecting dissolves"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:3607 ../lib/advene/gui/main.py:3632
+#: ../lib/advene/plugins/goodshotdetector.py:265
 #, fuzzy
-msgid "Cannot find an appropriate annotation type"
-msgstr "di un tipo di annotazione"
+msgid "Extracting histogram"
+msgstr "Modifica %s"
 
-#: ../lib/advene/gui/main.py:3625
+#: ../lib/advene/plugins/webannotation_import.py:45
 #, fuzzy
-msgid "Graphical annotation"
-msgstr "Trascrizione delle annotazioni"
+msgid "WebAnnotation importer"
+msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/main.py:3677
-msgid ""
-"An unsaved template package exists\n"
-"Save it first."
+#: ../lib/advene/plugins/webannotation_import.py:63
+#: ../lib/advene/plugins/owl_import.py:58 ../lib/advene/util/importer.py:363
+#, python-format
+msgid "Converted from %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3686
-msgid "Package modified"
+#: ../lib/advene/plugins/montagerenderer.py:43
+msgid "Cannot register montage renderer: Gnonlin plugins are not present."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3687
-msgid ""
-"The package that you want to close has been modified but not saved.\n"
-"Save it now?"
+#: ../lib/advene/plugins/transcriber.py:40
+msgid "Transcriber importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3718
-msgid "Load a package"
+#: ../lib/advene/plugins/transcriber.py:86
+msgid "Parsing section information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3727
-msgid ""
-"A video file was selected. Pretend that the user selected 'Select a video "
-"file'..."
+#: ../lib/advene/plugins/transcriber.py:254 ../lib/advene/util/importer.py:1520
+msgid "Creating package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3732
-#, 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?"
+#: ../lib/advene/plugins/transcriber.py:260 ../lib/advene/util/importer.py:1527
+msgid "Creating annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3741
-msgid ""
-"You are trying to load a session file, but there are unsaved packages. "
-"Proceed anyway?"
+#: ../lib/advene/plugins/transcriber.py:265 ../lib/advene/util/importer.py:1533
+msgid "Parsing header information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3769 ../lib/advene/gui/main.py:3825
-msgid "Do you want to save the current workspace ?"
+#: ../lib/advene/plugins/transcriber.py:276
+msgid "Parsing topic and speaker tables information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3784 ../lib/advene/gui/main.py:3840
-#, python-format
-msgid "Could not save the package: %s"
+#: ../lib/advene/plugins/tts.py:77
+msgid "Pronounce a text"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3797
-#, python-format
-msgid "Save the package %s"
+#: ../lib/advene/plugins/tts.py:78
+msgid "String to pronounce."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3810
-msgid "Invalid file extension"
+#: ../lib/advene/plugins/tts.py:156
+msgid "TTS disabled. Cannot find the application 'festival' in PATH"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3811
-#, python-format
-msgid ""
-"Your package contains resources,\n"
-"the filename (%s) should have a .azp extension.\n"
-"Should I put the correct extension?"
+#: ../lib/advene/plugins/tts.py:158
+msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3815
-msgid "OK, the resources will be lost."
+#: ../lib/advene/plugins/soundenveloppe.py:40
+#: ../lib/advene/plugins/soundenveloppe.py:139
+#: ../lib/advene/plugins/soundenveloppe.py:141
+msgid "Sound enveloppe"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3817
-msgid "Aborting package saving"
+#: ../lib/advene/plugins/soundenveloppe.py:56
+msgid "Interval (in ms) at which to take samples."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3851
-msgid "Save the session in..."
+#: ../lib/advene/plugins/soundenveloppe.py:59
+msgid "Maximum number of samples per annotation."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3862
-#, python-format
-msgid "Session saved in %s"
+#: ../lib/advene/plugins/soundenveloppe.py:111
+#, fuzzy, python-format
+msgid "At %s"
+msgstr "Modifica %s"
+
+#: ../lib/advene/plugins/soundenveloppe.py:158
+#, fuzzy
+msgid "Extracting sound enveloppe"
+msgstr "Modifica %s"
+
+#: ../lib/advene/plugins/barcode.py:36
+msgid "Cannot register barcode extraction: zbar plugin not found."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3871
-msgid "Do you confirm the creation of annotations matching the DVD chapters?"
+#: ../lib/advene/plugins/barcode.py:40
+msgid "Barcode (qr-code) extraction"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3877
-msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
+#: ../lib/advene/plugins/barcode.py:95
+msgid "Barcode"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3885
-msgid "The associated media is not a DVD."
+#: ../lib/advene/plugins/barcode.py:97
+msgid "Extracted barcode information"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:3896
-#, fuzzy, python-format
-msgid "Processing %s video"
+#: ../lib/advene/plugins/barcode.py:115
+#, fuzzy
+msgid "Extraction barcodes"
 msgstr "Modifica %s"
 
-#: ../lib/advene/gui/main.py:3899
+#: ../lib/advene/plugins/dcp.py:65
 #, fuzzy
-msgid "No associated video file"
-msgstr "Seleziona un file video"
+msgid "DCP importer"
+msgstr "Importatore"
 
-#: ../lib/advene/gui/main.py:3926
-msgid "Standard RuleSet"
+#: ../lib/advene/plugins/dcp.py:120
+#, python-format
+msgid "Converting #%(num)d / %(count)d"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4042
-#, python-format
-msgid ""
-"Player not active - cached duration   : %(duration)s (%(durationms)d ms)"
+#: ../lib/advene/plugins/nerd_plugin.py:47
+msgid "NERD (Named Entity Recognition and Disambiguation)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4054
-msgid ""
-"GNU General Public License v. 2\n"
-"See http://www.gnu.org/copyleft/gpl.html for more details"
+#: ../lib/advene/plugins/nerd_plugin.py:68
+msgid "NERD API key"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4056
-msgid "Visit the Advene web site for examples and documentation."
+#: ../lib/advene/plugins/nerd_plugin.py:82
+msgid "NER service to use"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4089 ../lib/advene/gui/main.py:4177
-msgid "Select a movie file"
+#: ../lib/advene/plugins/nerd_plugin.py:88
+#, fuzzy
+msgid "Type of annotation to analyze"
+msgstr "di un tipo di annotazione"
+
+#: ../lib/advene/plugins/nerd_plugin.py:93
+msgid "Language to analyze"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4101
-msgid "Title/Chapter selection"
+#: ../lib/advene/plugins/nerd_plugin.py:98
+msgid "Minimum confidence level (between 0.0 and 1.0)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4143
-msgid "Select a video stream"
-msgstr "Seleziona un video stream"
+#: ../lib/advene/plugins/nerd_plugin.py:103
+#, fuzzy
+msgid "Interpolate position of annotations"
+msgstr "Trascrizione delle annotazioni"
 
-#: ../lib/advene/gui/main.py:4144
-msgid "Enter the address of a video stream"
+#: ../lib/advene/plugins/nerd_plugin.py:108
+msgid "Split by entity type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4148
-#, python-format
-msgid "Successfully extracted the video stream address (%s) from the url.\n"
+#: ../lib/advene/plugins/nerd_plugin.py:113
+msgid "Store results as markup in the annotation text"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4173
-msgid "Package properties"
+#: ../lib/advene/plugins/nerd_plugin.py:118
+msgid "Create relations between the original annotations and the new ones"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4174
-msgid "Author name"
+#: ../lib/advene/plugins/nerd_plugin.py:150
+#, python-format
+msgid "NERD applied to %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4175
-msgid "Package creation date"
+#: ../lib/advene/plugins/nerd_plugin.py:208
+#, python-format
+msgid "NERD %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4176
-msgid "Package title"
+#: ../lib/advene/plugins/annotationgraph.py:40
+msgid "AnnotationGraph importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4177
-msgid "Associated media"
-msgstr ""
+#: ../lib/advene/plugins/shotdetectapp.py:48
+#, fuzzy
+msgid "ShotdetectApp importer"
+msgstr "Importatore"
 
-#: ../lib/advene/gui/main.py:4178
-msgid "Media duration in ms"
+#: ../lib/advene/plugins/shotdetectapp.py:59
+msgid ""
+"Sensitivity of the algorithm. It should typically be between 50 and 80. If "
+"too many shots are detected, try to increase its value."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4237
-msgid "Paths"
+#: ../lib/advene/plugins/shotdetectapp.py:146
+#, python-format
+msgid "Detected shot #%(num)d at %(pos)s "
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4239
-msgid "Data"
+#: ../lib/advene/plugins/mpeg7.py:54
+msgid "MPEG7 importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4239
-msgid "Standard directory for data files"
-msgstr ""
+#: ../lib/advene/plugins/cinelab.py:76
+#, fuzzy
+msgid "Cinelab importer"
+msgstr "Importatore"
 
-#: ../lib/advene/gui/main.py:4240
-msgid "Movie path"
+#: ../lib/advene/plugins/cinelab.py:119 ../lib/advene/plugins/cinelab.py:121
+#, python-format
+msgid "File %s is not an Advene2 zip package."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4240
-#, python-format
-msgid ""
-"List of directories (separated by %s) to search for movie files (_ means "
-"package directory)"
-msgstr ""
+#: ../lib/advene/plugins/cinelab.py:176
+#, fuzzy
+msgid "Converting annotation types"
+msgstr "di un tipo di annotazione"
+
+#: ../lib/advene/plugins/cinelab.py:217
+#, fuzzy
+msgid "Converting views"
+msgstr "Vista statica predefinita"
+
+#: ../lib/advene/plugins/cinelab.py:249
+#, fuzzy
+msgid "Importing annotations"
+msgstr "Tutte le annotazioni"
+
+#: ../lib/advene/plugins/owl_import.py:40
+#, fuzzy
+msgid "OWL (schema) importer"
+msgstr "Importatore"
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Imagecache"
+#: ../lib/advene/player/gstreamer.py:421
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4241
-msgid "Directory for storing the snapshot cache"
+#: ../lib/advene/rules/actions.py:37 ../lib/advene/rules/actions.py:102
+#: ../lib/advene/rules/actions.py:120
+msgid "Message to display"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Player"
+#: ../lib/advene/rules/actions.py:48
+msgid "Start the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4242
-msgid "Directory of the video player"
+#: ../lib/advene/rules/actions.py:49
+msgid "Start position (in ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4243
-msgid "Shotdetect"
+#: ../lib/advene/rules/actions.py:52 ../lib/advene/rules/actions.py:384
+msgid "The movie start"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4243
-#, fuzzy
-msgid "Shotdetect application"
-msgstr "Seleziona un'azione"
-
-#: ../lib/advene/gui/main.py:4245
-msgid "GUI"
+#: ../lib/advene/rules/actions.py:53 ../lib/advene/rules/actions.py:385
+msgid "The annotation begin"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4246
-msgid "Interface language (after restart)"
+#: ../lib/advene/rules/actions.py:54 ../lib/advene/rules/actions.py:386
+msgid "The annotation end"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4246
-msgid ""
-"Language used for the interface (necessitates to restart the application)"
+#: ../lib/advene/rules/actions.py:64
+msgid "Goto position (in ms)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4252
-msgid "Record activity trace"
+#: ../lib/advene/rules/actions.py:73
+msgid "Stop the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Expert mode"
+#: ../lib/advene/rules/actions.py:80
+msgid "Pause the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4253
-msgid "Offer advanced possibilities"
+#: ../lib/advene/rules/actions.py:87
+msgid "Resume the player"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Prefer WYSIWYG"
+#: ../lib/advene/rules/actions.py:94
+msgid "Take a snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4254
-msgid "Use WYSIWYG editors when possible (HTML, SVG)"
+#: ../lib/advene/rules/actions.py:101
+msgid "Display a caption"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
-msgid "Player control in edit popups"
+#: ../lib/advene/rules/actions.py:103
+msgid "Duration of the caption"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4255
-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/rules/actions.py:131
+#, fuzzy
+msgid "Display a graphical shape"
+msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/main.py:4257
-msgid "Open popups"
+#: ../lib/advene/rules/actions.py:132
+msgid "Shape (square, circle, triangle)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4258
-msgid "Where should we open adhoc views?"
+#: ../lib/advene/rules/actions.py:134
+msgid "x-position (percentage of screen)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4259
-msgid "as a popup window"
+#: ../lib/advene/rules/actions.py:135
+msgid "y-position (percentage of screen)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4260
-msgid "embedded east of the video"
+#: ../lib/advene/rules/actions.py:136
+msgid "Size (arbitrary units)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4261
-msgid "embedded west of the video"
+#: ../lib/advene/rules/actions.py:137
+msgid "Duration of the display in ms"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4262
-msgid "embedded south of the video"
+#: ../lib/advene/rules/actions.py:145
+msgid "A square"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4263
-msgid "embedded at the right of the window"
+#: ../lib/advene/rules/actions.py:146
+msgid "A circle"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History size"
+#: ../lib/advene/rules/actions.py:147
+msgid "A triangle"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4266
-msgid "History filelist size limit"
+#: ../lib/advene/rules/actions.py:150
+msgid "White"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember window size"
+#: ../lib/advene/rules/actions.py:151
+msgid "Black"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4268
-msgid "Remember the size of opened windows"
+#: ../lib/advene/rules/actions.py:152
+msgid "Red"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Bookmark snapshot width"
+#: ../lib/advene/rules/actions.py:153
+msgid "Green"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4269
-msgid "Width of the snapshots representing bookmarks"
+#: ../lib/advene/rules/actions.py:154
+msgid "Blue"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Bookmark snapshot precision"
+#: ../lib/advene/rules/actions.py:155
+msgid "Yellow"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4270
-msgid "Precision (in ms) of the displayed bookmark snapshots."
+#: ../lib/advene/rules/actions.py:158
+msgid "At the top of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4272
-msgid "General"
+#: ../lib/advene/rules/actions.py:159 ../lib/advene/rules/actions.py:164
+msgid "In the middle of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4273
-msgid "Weekly update check"
+#: ../lib/advene/rules/actions.py:160
+msgid "At the bottom of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4274
-msgid "On exit,"
+#: ../lib/advene/rules/actions.py:163
+msgid "At the left of the screen"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4275
-msgid "How to handle screenshots on exit"
+#: ../lib/advene/rules/actions.py:181
+msgid "Zero the volume during the annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4276
-msgid "never save screenshots"
+#: ../lib/advene/rules/actions.py:188
+msgid "Zero the volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4277
-msgid "always save screenshots"
+#: ../lib/advene/rules/actions.py:195
+msgid "Restore the volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4278
-msgid "ask before saving screenshots"
+#: ../lib/advene/rules/actions.py:203
+msgid "Activate a STBV"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4280
-msgid "Auto-save"
+#: ../lib/advene/rules/actions.py:204
+msgid "STBV id"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4281
-msgid "Data auto-save functionality"
+#: ../lib/advene/rules/actions.py:213
+msgid "Send a user event"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4282
-msgid "is desactivated"
+#: ../lib/advene/rules/actions.py:214
+msgid "Identifier"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4283
-msgid "is done automatically"
+#: ../lib/advene/rules/actions.py:215
+msgid "Delay in ms before sending the event."
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4284
-msgid "is done after confirmation"
+#: ../lib/advene/rules/actions.py:225
+msgid "Open a URL in the web browser"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Auto-save interval (in s)"
+#: ../lib/advene/rules/actions.py:235
+msgid "Open a static view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4286
-msgid "Interval (in seconds) between package auto-saves"
+#: ../lib/advene/rules/actions.py:246
+msgid "Set the audio volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4288
-#, fuzzy
-msgid "Workspace"
-msgstr "Vista statica predefinita"
-
-#: ../lib/advene/gui/main.py:4290
-msgid "On package saving,"
+#: ../lib/advene/rules/actions.py:247
+msgid "Volume level (from 0 to 100)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4291
-msgid "Do you wish to save the default workspace with the package?"
+#: ../lib/advene/rules/actions.py:256
+msgid "Set the playing rate"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4292
-msgid "never save the current workspace"
+#: ../lib/advene/rules/actions.py:257
+msgid "Rate (100: normal rate, 200: twice slower)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4293
-msgid "always save the current workspace"
+#: ../lib/advene/rules/actions.py:266
+msgid "Play a sound resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4294
-msgid "ask before saving the current workspace"
+#: ../lib/advene/rules/actions.py:267
+msgid "Clip id"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4296
-msgid "Auto-validation of edited elements"
+#: ../lib/advene/rules/actions.py:268 ../lib/advene/rules/actions.py:282
+msgid "Volume (0..100)"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4296
-msgid "Automatically validate modified elements when saving the package."
+#: ../lib/advene/rules/actions.py:269 ../lib/advene/rules/actions.py:283
+msgid "Left-right balance: -1 -> full left, 0 -> center, 1 -> full right"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4298
+#: ../lib/advene/rules/actions.py:280
 #, fuzzy
-msgid "On package load,"
-msgstr "Apri un file pacchetto"
+msgid "Play a sound file"
+msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/main.py:4299
-msgid "Do you wish to load the workspace saved with the package?"
+#: ../lib/advene/rules/actions.py:281
+msgid "Sound filename"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4300
-msgid "never load the saved workspace"
+#: ../lib/advene/rules/actions.py:293
+msgid "Set a state variable"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4301
-msgid "always load the saved workspace"
+#: ../lib/advene/rules/actions.py:294 ../lib/advene/rules/actions.py:306
+msgid "State variable name"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4302
-msgid "ask before loading the saved workspace"
+#: ../lib/advene/rules/actions.py:295
+msgid "State value"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4305
-#, fuzzy
-msgid "Video Player"
-msgstr "Seleziona un DVD"
-
-#: ../lib/advene/gui/main.py:4306
-#, fuzzy
-msgid "Autostart"
-msgstr "Autore"
+#: ../lib/advene/rules/actions.py:305
+msgid "Increment a state variable"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4306
-msgid ""
-"Automatically start the player when loading a media file (either directly or "
-"through a package)"
+#: ../lib/advene/rules/actions.py:315
+msgid "Clear all state variables"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4307
-msgid "Fulscreen timestamp"
+#: ../lib/advene/rules/actions.py:330
+#, python-format
+msgid "Error in the evaluation of the parameter %s:"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4307
-msgid "Display the timestamp over the video when in fullscreen mode"
+#: ../lib/advene/rules/actions.py:551
+#, python-format
+msgid "Cannot find the stbv %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4308
-#, fuzzy
-msgid "Enable captions"
-msgstr "Relazioni"
+#: ../lib/advene/rules/actions.py:647
+msgid "The set_rate method is unavailable."
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4308
-msgid "Enable captions over the video"
+#: ../lib/advene/rules/actions.py:657
+msgid "No 'soundclips' resource folder in the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4309
-msgid "Caption font"
+#: ../lib/advene/rules/actions.py:683
+msgid "Full volume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4309
-msgid "TrueType font for captions"
+#: ../lib/advene/rules/actions.py:684
+msgid "Left"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG"
+#: ../lib/advene/rules/actions.py:686
+msgid "Right"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4310
-msgid "Enable SVG captions over the video"
+#: ../lib/advene/rules/importer.py:29
+msgid "Event history importer"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4312
-msgid "Enable snapshots"
+#: ../lib/advene/rules/elements.py:141
+msgid "is equal to"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width"
+#: ../lib/advene/rules/elements.py:142
+msgid "is different from"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4313
-msgid "Snapshot width in pixels."
+#: ../lib/advene/rules/elements.py:143
+msgid "contains"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity"
+#: ../lib/advene/rules/elements.py:144
+msgid "is greater than"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4314
-msgid "Verbosity level. -1 for no messages."
+#: ../lib/advene/rules/elements.py:145
+msgid "is lower than"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4317
-msgid "Devices"
+#: ../lib/advene/rules/elements.py:146
+msgid "matches the regexp"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4319
-msgid "Standard"
+#: ../lib/advene/rules/elements.py:147
+msgid "is before"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4321
-msgid "DVD drive"
+#: ../lib/advene/rules/elements.py:148
+msgid "meets"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4321
-msgid "Drive letter for the DVD"
+#: ../lib/advene/rules/elements.py:149
+msgid "overlaps"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4322
-msgid "GDI"
+#: ../lib/advene/rules/elements.py:150
+msgid "during"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4323
-msgid "Direct X"
+#: ../lib/advene/rules/elements.py:151
+msgid "starts"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4325
-msgid "DVD device"
+#: ../lib/advene/rules/elements.py:152
+msgid "finishes"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4325
-msgid "Device for the DVD"
+#: ../lib/advene/rules/elements.py:157
+msgid "is not true"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4326
-msgid "X11"
+#: ../lib/advene/rules/elements.py:158
+msgid "is true"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4327
-msgid "XVideo"
+#: ../lib/advene/rules/elements.py:162
+msgid "Basic conditions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4328
-msgid "GL"
+#: ../lib/advene/rules/elements.py:163
+msgid "Allen relations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output"
+#: ../lib/advene/rules/elements.py:226 ../lib/advene/rules/elements.py:232
+msgid "Unknown type for overlaps comparison"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4330
-msgid "Video output module"
+#: ../lib/advene/rules/elements.py:240 ../lib/advene/rules/elements.py:246
+msgid "Unknown type for during comparison"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4332
-msgid "Recorder options"
+#: ../lib/advene/rules/elements.py:515 ../lib/advene/rules/elements.py:521
+#, python-format
+msgid "Unknown action %s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4333
+#: ../lib/advene/rules/elements.py:522
+#, fuzzy, python-format
+msgid "Unknown parameter %s"
+msgstr "Parametro %s"
+
+#: ../lib/advene/rules/elements.py:527
 #, fuzzy
-msgid "Audio input"
-msgstr "Aggiungi file..."
+msgid "Unknown actions"
+msgstr "Tutte le annotazioni"
 
-#: ../lib/advene/gui/main.py:4333
-msgid "Device name for audio input (with gstrecorder plugin)"
+#: ../lib/advene/rules/elements.py:972
+msgid "Start of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record video"
+#: ../lib/advene/rules/elements.py:973
+msgid "Cancel of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4334
-msgid "Record both video and audio"
+#: ../lib/advene/rules/elements.py:974
+msgid "Destruction of the edit window of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4337
-msgid "<i>Experimental</i>"
+#: ../lib/advene/rules/elements.py:975
+msgid "Validation of the editing of an element"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4338
-msgid "Embed the caption scroller below the video"
+#: ../lib/advene/rules/elements.py:976
+msgid "Ending editing of a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4339
-msgid "Embed the caption view below the video"
+#: ../lib/advene/rules/elements.py:977
+msgid "Beginning of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4341
-msgid "Time-related"
+#: ../lib/advene/rules/elements.py:978
+msgid "End of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4342
-msgid "Time format"
+#: ../lib/advene/rules/elements.py:979
+msgid "Creation of a new annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4342
-msgid "Format used to display timecodes"
+#: ../lib/advene/rules/elements.py:980
+msgid "Ending editing of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4356
-msgid "Default FPS"
+#: ../lib/advene/rules/elements.py:981
+msgid "Suppression of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4357
-msgid ""
-"Default FPS (frame-per-second) value, when entering or displaying timestamps "
-"with frame numbers."
+#: ../lib/advene/rules/elements.py:982
+msgid "Activation of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4358
-msgid "Time increment"
+#: ../lib/advene/rules/elements.py:983
+msgid "Deactivation of an annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4358
-msgid ""
-"Skip duration, when using control-left/right or forward/rewind buttons (in "
-"ms)."
+#: ../lib/advene/rules/elements.py:984
+msgid "Merging of two annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4359
-msgid "Second time increment"
-msgstr ""
+#: ../lib/advene/rules/elements.py:985
+#, fuzzy
+msgid "Moving an annotation"
+msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/main.py:4359
-msgid "Skip duration, when using control-shift-left/right (in ms)."
+#: ../lib/advene/rules/elements.py:986
+msgid "Activation of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4360
-msgid "Third time increment"
+#: ../lib/advene/rules/elements.py:987
+msgid "Deactivation of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4360
-msgid "Skip duration, when using control-shift-up/down (in ms)."
+#: ../lib/advene/rules/elements.py:988
+msgid "Creation of a new relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4361
-msgid "Custom Up/Down"
+#: ../lib/advene/rules/elements.py:989
+msgid "Ending editing of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4361
-msgid ""
-"Use third time increment for up/down navigation without having to hold shift."
+#: ../lib/advene/rules/elements.py:990
+msgid "Suppression of a relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4363
-msgid "Scroll increment"
+#: ../lib/advene/rules/elements.py:991
+msgid "Creation of a new view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4363
-msgid ""
-"On most annotations, control+scrollwheel will increment/decrement their "
-"bounds by this value (in ms)."
+#: ../lib/advene/rules/elements.py:992
+msgid "Ending editing of a view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4364
-msgid "Second scroll increment"
+#: ../lib/advene/rules/elements.py:993
+msgid "Suppression of a view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4364
-msgid ""
-"On most annotations, control+shift+scrollwheel will increment/decrement "
-"their bounds by this value (in ms)."
+#: ../lib/advene/rules/elements.py:994
+msgid "Creation of a new query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4366
-msgid "Player sync"
+#: ../lib/advene/rules/elements.py:995
+msgid "Ending editing of a query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4366
-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."
+#: ../lib/advene/rules/elements.py:996
+msgid "Suppression of a query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4367
-msgid "Timeline parameters"
+#: ../lib/advene/rules/elements.py:997
+msgid "Creation of a new schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4368
-msgid "Font size for annotation widgets"
+#: ../lib/advene/rules/elements.py:998
+msgid "Ending editing of a schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4369
-msgid "Button height"
+#: ../lib/advene/rules/elements.py:999
+msgid "Suppression of a schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4369
-msgid "Height of annotation widgets"
+#: ../lib/advene/rules/elements.py:1001
+msgid "Ending editing an annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Interline height"
+#: ../lib/advene/rules/elements.py:1002
+msgid "Suppression of an annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4370
-msgid "Height of interlines"
+#: ../lib/advene/rules/elements.py:1003
+msgid "Creation of a new relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4372
-#, fuzzy
-msgid "Text content"
-msgstr "template HTML"
-
-#: ../lib/advene/gui/main.py:4373
-#, fuzzy
-msgid "Completion mode"
-msgstr "Relazioni"
-
-#: ../lib/advene/gui/main.py:4373
-#, fuzzy
-msgid "Enable dynamic completion mode"
-msgstr "Relazioni"
-
-#: ../lib/advene/gui/main.py:4374
-#, fuzzy
-msgid "Abbreviation mode"
-msgstr "Tempo di reazione"
-
-#: ../lib/advene/gui/main.py:4374
-#, fuzzy
-msgid "Enable abbreviation mode"
-msgstr "Relazioni"
+#: ../lib/advene/rules/elements.py:1004
+msgid "Ending editing a relation type"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4375
-#, fuzzy
-msgid "Abbreviations"
-msgstr "Relazioni"
+#: ../lib/advene/rules/elements.py:1005
+msgid "Suppression of a relation type"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4375
-msgid ""
-"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
-"followed by its replacement."
+#: ../lib/advene/rules/elements.py:1006
+msgid "Creation of a new resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4377
-msgid "Text-To-Speech"
+#: ../lib/advene/rules/elements.py:1007
+msgid "Ending editing of a resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4378
-msgid "TTS language"
+#: ../lib/advene/rules/elements.py:1008
+msgid "Suppression of a resource"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4379
-msgid "What language settings should be used for text-to-speech"
+#: ../lib/advene/rules/elements.py:1009
+msgid "Modification of the tag"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4380
-msgid "English"
+#: ../lib/advene/rules/elements.py:1010
+msgid "Activating a link"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4381
-msgid "French"
+#: ../lib/advene/rules/elements.py:1011
+msgid "Player start"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4382
-msgid "Spanish"
+#: ../lib/advene/rules/elements.py:1012
+msgid "Player stop"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4384
-msgid "TTS Encoding"
+#: ../lib/advene/rules/elements.py:1013
+msgid "Player pause"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4385
-msgid "What encoding should be used to communicate with the TTS engine"
+#: ../lib/advene/rules/elements.py:1014
+msgid "Player resume"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4386
-msgid "TTS Engine"
+#: ../lib/advene/rules/elements.py:1015
+msgid "Going to a given position"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4387
-msgid ""
-"Which TTS engine should be used (modification requires restarting Advene to "
-"take into account)"
+#: ../lib/advene/rules/elements.py:1016
+msgid "Loading a new package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4388
-#, fuzzy
-msgid "Automatic"
-msgstr "Autore"
-
-#: ../lib/advene/gui/main.py:4389
-msgid "eSpeak"
+#: ../lib/advene/rules/elements.py:1017
+msgid "Activating a package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4390
-msgid "Custom script with standard input"
+#: ../lib/advene/rules/elements.py:1018
+msgid "Saving the package"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4391
-msgid "Custom script with arguments"
+#: ../lib/advene/rules/elements.py:1019
+msgid "Start of the dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4392
-msgid "SAPI"
+#: ../lib/advene/rules/elements.py:1020
+msgid "End of the dynamic view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4393
-msgid "MacOS X say"
+#: ../lib/advene/rules/elements.py:1021
+msgid "Start of the application"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4394
-msgid "Generic (text output)"
+#: ../lib/advene/rules/elements.py:1022
+msgid "End of the application"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4438
-msgid "You should restart Advene to take some options into account."
+#: ../lib/advene/rules/elements.py:1023
+msgid "User-defined event"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4447
-#, python-format
-msgid "Imagecache saved to %s"
+#: ../lib/advene/rules/elements.py:1024
+msgid "Modification of the associated media"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4460
-msgid "Restarting player..."
+#: ../lib/advene/rules/elements.py:1025
+msgid "Highlight a bookmark"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4512
-#, fuzzy
-msgid "Advene log"
-msgstr "Advene"
+#: ../lib/advene/rules/elements.py:1026
+msgid "Unhighlight a bookmark"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4581
-msgid "Select the package to merge"
+#: ../lib/advene/rules/elements.py:1027
+msgid "Updating duration of the movie"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4602
-msgid "Saving workspace"
+#: ../lib/advene/rules/elements.py:1028
+msgid "Displaying a popup"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4605
-msgid "Enter a view name to save the workspace"
+#: ../lib/advene/rules/elements.py:1029
+msgid "Updating a snapshot"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4606
-#, fuzzy
-msgid "Default workspace"
-msgstr "Vista statica predefinita"
+#: ../lib/advene/rules/elements.py:1067
+msgid "Player control"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4607
-msgid "Open this workspace when opening the package"
+#: ../lib/advene/rules/elements.py:1068
+msgid "Audio enrichment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4641
-#, python-format
-msgid "Error: the view %s exists and is not a workspace view."
+#: ../lib/advene/rules/elements.py:1069
+msgid "Image enrichment"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4672
-#, python-format
-msgid "Cannot save default workspace: %s"
+#: ../lib/advene/rules/elements.py:1070
+msgid "External display control"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4682
-msgid "Standard workspace has been saved"
+#: ../lib/advene/rules/elements.py:1071
+msgid "Popup"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4689
-msgid "Website export"
+#: ../lib/advene/rules/elements.py:1073
+msgid "State"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4690
-msgid "Exporting views to a website"
+#: ../lib/advene/rules/elements.py:1074
+msgid "GUI actions"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4693
+#: ../lib/advene/rules/elements.py:1075
 #, fuzzy
-msgid "Output directory"
-msgstr "Cartella"
+msgid "Expert"
+msgstr "Relazioni"
 
-#: ../lib/advene/gui/main.py:4702
-msgid "Specify the output directory"
+#: ../lib/advene/util/helper.py:403
+msgid "Annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4711
-msgid "Maximum recursion depth"
+#: ../lib/advene/util/helper.py:404
+msgid "Relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4718
-msgid "Video URL"
+#: ../lib/advene/util/helper.py:410
+msgid "Resource Folder"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4720
-msgid ""
-"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."
+#: ../lib/advene/util/helper.py:446
+msgid "---- Elements ----"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4770
-#, fuzzy
-msgid "Could not export data: "
-msgstr "Impossibile salvare il file: %s"
+#: ../lib/advene/util/helper.py:452
+msgid "---- Attributes ----"
+msgstr ""
 
-#: ../lib/advene/gui/main.py:4772
-#, python-format
-msgid "Website export to %s completed"
+#: ../lib/advene/util/helper.py:455
+msgid "---- Methods ----"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4811
-msgid "This video player is not able to grab specific screenshots"
+#: ../lib/advene/util/helper.py:531
+#, python-format
+msgid "Cannot read %(filename)s: %(error)s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4821
+#: ../lib/advene/util/helper.py:555
 #, python-format
-msgid "Updating %d snapshots"
+msgid ""
+"Error:\n"
+"%s"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4826
-msgid "No snapshot to update"
+#: ../lib/advene/util/helper.py:637
+msgid "schema"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4835 ../lib/advene/gui/main.py:4947
-msgid "You first must load a movie into Advene"
+#: ../lib/advene/util/helper.py:637
+msgid "schemas"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4838 ../lib/advene/gui/main.py:4950
-#, python-format
-msgid "The movie %s does not seem to exist."
+#: ../lib/advene/util/helper.py:638
+msgid "annotation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4895
-msgid "Generating screenshots"
+#: ../lib/advene/util/helper.py:638
+msgid "annotations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4900
-msgid ""
-"<b>Screenshot generation</b>\n"
-"\n"
-"Screenshots will be captured approximately every 500ms.\n"
-"\n"
-"If the movie was paused or playing, the capture will begin at the current "
-"position. Else, it will begin at the beginning of the movie.\n"
-"Note that the main interface will not be refreshed as long as this window is "
-"open."
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4941
-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."
+#: ../lib/advene/util/helper.py:639 ../lib/advene/util/helper.py:640
+msgid "annotation types"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4981
-msgid ""
-"Cannot import shotdetect output. Did you install the shotdetect software?"
+#: ../lib/advene/util/helper.py:641
+msgid "relation"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:4998
-msgid "Incomplete shots"
+#: ../lib/advene/util/helper.py:641
+msgid "relations"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5001
-#, python-format
-msgid "Detected %s shots"
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation type"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5103
-#, python-format
-msgid "Could not run shotdetect: %s"
+#: ../lib/advene/util/helper.py:642 ../lib/advene/util/helper.py:643
+msgid "relation types"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5107
-#, python-format
-msgid "Detecting shots from %s"
+#: ../lib/advene/util/helper.py:644
+msgid "query"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5160
-msgid "Shot detection"
+#: ../lib/advene/util/helper.py:644
+msgid "queries"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5166
-msgid ""
-"<b>Shot detection</b>\n"
-"\n"
-"Advene will try to detect shots from the currently loaded movie. The "
-"threshold parameter is used to specify the sensitivity of the algorithm, and "
-"should typically be between 50 and 80. If too many shots are detected, try "
-"to augment its value."
+#: ../lib/advene/util/helper.py:645
+msgid "view"
 msgstr ""
 
-#: ../lib/advene/gui/main.py:5182
-msgid "Sensitivity"
+#: ../lib/advene/util/helper.py:645
+msgid "views"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:138
-msgid "Choose the file to insert"
+#: ../lib/advene/util/helper.py:646
+msgid "package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:146
-msgid "Select a valid identifier"
+#: ../lib/advene/util/helper.py:646
+msgid "packages"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:147
+#: ../lib/advene/util/helper.py:658
 #, python-format
-msgid ""
-"The filename %s contains invalid characters\n"
-"that have been replaced.\n"
-"You can modify this identifier if necessary:"
+msgid "No %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:158
-#, fuzzy
-msgid "Choose the soundclip to insert"
-msgstr "Scegli un elemento da inserire."
+#: ../lib/advene/util/helper.py:660
+#, python-format
+msgid "1 %s"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:162
-msgid "Choose the directory to insert"
+#: ../lib/advene/util/helper.py:662
+#, python-format
+msgid "%(count)d %(plural)s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:177
-msgid "Named-Entity extraction using NERD"
+#: ../lib/advene/util/website_export.py:61
+#, python-format
+msgid "%s exists but is not a directory. Cancelling website export"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:181
-msgid ""
-"Give the offset to use\n"
-"on specified element.\n"
-"It is in ms and can be\n"
-"either positive or negative."
+#: ../lib/advene/util/website_export.py:67
+#, python-format
+msgid "%s does not exist"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:225
+#: ../lib/advene/util/website_export.py:422
+msgid "Starting export"
+msgstr ""
+
+#: ../lib/advene/util/website_export.py:451
 #, python-format
-msgid "Replace content in %s"
+msgid "Depth %d"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:228
-#, fuzzy, python-format
-msgid "Replace content in annotations of type %s"
-msgstr "di un tipo di annotazione"
+#: ../lib/advene/util/website_export.py:455
+#, python-format
+msgid "Depth %(depth)d: processing %(url)s"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:231
-#, fuzzy
-msgid "Replace content in all annotations"
-msgstr "Tutte le annotazioni"
+#: ../lib/advene/util/website_export.py:477
+msgid "Finalizing"
+msgstr ""
+
+#: ../lib/advene/util/website_export.py:511
+#, 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:554
+msgid "Export complete"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:324
-#, python-format
-msgid "Copy id %s"
+#: ../lib/advene/util/importer.py:138
+msgid "Generic importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:358
-#, python-format
-msgid ""
-"<b>Statistics about %s</b>\n"
-"\n"
+#: ../lib/advene/util/importer.py:165
+msgid "Usage: %prog [options] source-file destination-file"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:364
-#, python-format
-msgid "Renumbering annotations of type %s"
+#: ../lib/advene/util/importer.py:169
+msgid "Specify the offset in ms"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:371
+#: ../lib/advene/util/importer.py:229
 msgid ""
-"<b>Renumber all annotations according to their order.</b>\n"
-"\n"
-"<i>Note that this action cannot be undone.</i>\n"
-"Replace the first numeric value of the annotation content with the new "
-"annotation number.\n"
-"If no numeric value is found and the annotation is structured, it will "
-"insert the number.\n"
-"If no numeric value is found and the annotation is of type text/plain, it "
-"will overwrite the annotation content.\n"
-"The offset parameter allows you to renumber from a given annotation."
+"Import filter error. The asynchronous API should be used, please report a "
+"bug."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:377 ../lib/advene/gui/popup.py:484
-msgid "Offset"
+#: ../lib/advene/util/importer.py:231
+msgid ""
+"Import filter error. No conversion method is defined,  please report a bug."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:399
-#, fuzzy, python-format
-msgid "Renumbering %d annotations"
-msgstr "Tutte le annotazioni"
-
-#: ../lib/advene/gui/popup.py:408
-#, fuzzy, python-format
-msgid "Annotation #%d"
-msgstr "Tipo di Annotazione"
+#: ../lib/advene/util/importer.py:488
+#, fuzzy
+msgid "ExternalApp importer"
+msgstr "Importatore"
 
-#: ../lib/advene/gui/popup.py:445
+#: ../lib/advene/util/importer.py:502
 #, python-format
 msgid ""
-"Exporting annotation %(title)s\n"
-"from %(begin)s to %(end)s\n"
-"to %%(filename)s"
+"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/gui/popup.py:458
-msgid "Browse"
+#: ../lib/advene/util/importer.py:504
+#, python-format
+msgid "The file %s does not seem to exist."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:466 ../lib/advene/gui/popup.py:853
-msgid "Open in web browser"
-msgstr ""
+#: ../lib/advene/util/importer.py:526
+#, fuzzy, python-format
+msgid "Could not run %(appname)s: %(msg)s"
+msgstr "Impossibile salvare il file: %s"
 
-#: ../lib/advene/gui/popup.py:479
-#, fuzzy
-msgid "Search/replace content"
-msgstr "Elementi cercati"
+#: ../lib/advene/util/importer.py:528
+#, fuzzy, python-format
+msgid "Processing %s"
+msgstr "Modifica %s"
 
-#: ../lib/advene/gui/popup.py:497
-msgid "Desactivate"
+#: ../lib/advene/util/importer.py:532
+msgid "Cleaning up..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:514
-msgid "Loop"
+#: ../lib/advene/util/importer.py:652
+msgid "Text importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:515
-msgid "Duplicate"
+#: ../lib/advene/util/importer.py:665 ../lib/advene/util/importer.py:1195
+msgid "Specify the encoding of the input file (latin1, utf8...)"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:519
-#, fuzzy
-msgid "Save snapshot..."
-msgstr "Visualizza %s"
-
-#: ../lib/advene/gui/popup.py:521
-#, fuzzy
-msgid "Extract video fragment"
-msgstr "Inserisci un indirizzo di un video stream"
-
-#: ../lib/advene/gui/popup.py:551
-msgid "Incoming"
+#: ../lib/advene/util/importer.py:668
+msgid "Should the timestamps be encoded relative to the first timestamp?"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:567
-msgid "Outgoing"
+#: ../lib/advene/util/importer.py:671
+msgid "Unit to consider for integers"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:582
-msgid "Related annotations"
+#: ../lib/advene/util/importer.py:674
+msgid ""
+"What timestamps are present in a line (only begin, both begin and end, or "
+"automatic recognition)"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:589
-msgid "Incoming relations"
+#: ../lib/advene/util/importer.py:817
+msgid "lsdvd importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:596
-msgid "Outgoing relations"
+#: ../lib/advene/util/importer.py:844
+msgid "Processing data"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:612
-#, python-format
-msgid "Begin: %s"
-msgstr ""
+#: ../lib/advene/util/importer.py:862 ../lib/advene/util/importer.py:922
+#, fuzzy
+msgid "DVD Chapter"
+msgstr "Capitolo"
 
-#: ../lib/advene/gui/popup.py:614
-#, python-format
-msgid "End: %s"
+#: ../lib/advene/util/importer.py:866
+msgid "Launching lsdvd..."
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:615
-#, fuzzy, python-format
-msgid "Duration: %s"
-msgstr "Relazioni"
+#: ../lib/advene/util/importer.py:878
+msgid "chaplin importer"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:622
-msgid "Members:"
+#: ../lib/advene/util/importer.py:936
+msgid "Xi importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:635
-msgid "Edit package properties..."
+#: ../lib/advene/util/importer.py:1005
+msgid "ELAN importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:756
+#: ../lib/advene/util/importer.py:1058
 #, python-format
-msgid "%d annotations(s) - statistics"
+msgid "Converting tier %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:864
-msgid "Create a new static view..."
+#: ../lib/advene/util/importer.py:1159
+msgid "Processing time slots"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:865
-msgid "Create a new dynamic view..."
+#: ../lib/advene/util/importer.py:1174
+msgid "Fixing forward references"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:751
-msgid "Create a new annotation..."
+#: ../lib/advene/util/importer.py:1176
+msgid "Creating relations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:867
-msgid "Create a new schema..."
+#: ../lib/advene/util/importer.py:1188
+msgid "Subtitle (SRT) importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:643 ../lib/advene/gui/popup.py:862
-msgid "Create a new query..."
+#: ../lib/advene/util/importer.py:1257
+#, python-format
+msgid "Subtitles from %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:651
-msgid "Create a new folder..."
+#: ../lib/advene/util/importer.py:1270
+msgid "PRAAT importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:652
-msgid "Create a new resource file..."
+#: ../lib/advene/util/importer.py:1360
+msgid "CMML importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:653
-msgid "Insert a new resource file..."
+#: ../lib/advene/util/importer.py:1423
+msgid "Parsing clip information"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:654
-msgid "Insert a new resource directory..."
+#: ../lib/advene/util/importer.py:1523
+msgid "Creating CMML schema"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:663 ../lib/advene/gui/popup.py:665
-msgid "Insert a soundclip..."
+#: ../lib/advene/util/importer.py:1547
+msgid "Parsing stream information"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:676
-msgid "Play sound"
+#: ../lib/advene/util/importer.py:1581
+msgid "IRI importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:686
-msgid "Create a new annotation type..."
+#: ../lib/advene/util/importer.py:1590
+msgid "Generate one type per view"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:688
-msgid "Create a new relation type..."
+#: ../lib/advene/util/importer.py:1610
+#, python-format
+msgid "Parsing ensemble %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:699
+#: ../lib/advene/util/importer.py:1621
 #, python-format
-msgid "A caption dynamic view for %s already seems to exist."
+msgid "Parsing decoupage %s"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:708
-#, fuzzy, python-format
-msgid "Caption %s annotations"
-msgstr "Trascrizione delle annotazioni"
-
-#: ../lib/advene/gui/popup.py:740
-#, fuzzy
-msgid "Create a comment view"
-msgstr "Vista statica predefinita"
-
-#: ../lib/advene/gui/popup.py:741
-#, fuzzy
-msgid "Generate a caption dynamic view..."
-msgstr "Vista dinamica predefinita"
+#: ../lib/advene/util/importer.py:1657
+msgid "Parsing views"
+msgstr ""
 
-#: ../lib/advene/gui/popup.py:742
-msgid "Display as transcription"
+#: ../lib/advene/util/importer.py:1705 ../lib/advene/util/importer.py:1794
+msgid "Initializing package"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:743
-msgid "Display annotations in table"
+#: ../lib/advene/util/importer.py:1743
+msgid "IRIData importer"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:744
-msgid "Export to another format..."
+#: ../lib/advene/util/importer.py:1757
+msgid "Parsing sound values"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:746
-msgid "Extract Named Entities..."
+#: ../lib/advene/util/importer.py:1769
+msgid "Creating annotations"
 msgstr ""
 
-#: ../lib/advene/gui/popup.py:752
 #, fuzzy
-msgid "Delete all annotations"
-msgstr "Tutte le annotazioni"
+#~ msgid "Schema editor"
+#~ msgstr "Schema"
 
-#: ../lib/advene/gui/popup.py:753
 #, fuzzy
-msgid "Renumber annotations..."
-msgstr "Tutte le annotazioni"
+#~ msgid "Mean duration"
+#~ msgstr "Seleziona un'azione"
 
-#: ../lib/advene/gui/popup.py:754
 #, fuzzy
-msgid "Shot validation view..."
-msgstr "Seleziona un'azione"
-
-#: ../lib/advene/gui/popup.py:766
-#, python-format
-msgid "A follow dynamic view for %s already seems to exist."
-msgstr ""
-
-#: ../lib/advene/gui/popup.py:775
-#, fuzzy, python-format
-msgid "Follow %s relation-type"
-msgstr "Tipo di Annotazione"
-
-#: ../lib/advene/gui/popup.py:784
-msgid "Follow the relation"
-msgstr ""
-
-#: ../lib/advene/gui/popup.py:804
-msgid "Delete all relations..."
-msgstr ""
+#~ msgid "Display"
+#~ msgstr "Visualizza %s"
 
-#: ../lib/advene/gui/popup.py:805
 #, fuzzy
-msgid "Create montage from related annotations"
-msgstr "Trascrizione delle annotazioni"
+#~ msgid "Remove relation type"
+#~ msgstr "Tipo di Annotazione"
 
-#: ../lib/advene/gui/popup.py:806
-msgid "Create dynamic view following relations"
-msgstr ""
+#, fuzzy
+#~ msgid "Remove annotation type"
+#~ msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/popup.py:824
-msgid "Apply query on..."
-msgstr ""
+#, fuzzy
+#~ msgid "New schema"
+#~ msgstr "Schema"
 
-#: ../lib/advene/gui/popup.py:849
-msgid "Activate view"
-msgstr ""
+#, fuzzy
+#~ msgid "New annotation type"
+#~ msgstr "di un tipo di annotazione"
 
-#: ../lib/advene/gui/popup.py:851
-msgid "Open adhoc view"
-msgstr ""
+#, fuzzy
+#~ msgid "New relation type"
+#~ msgstr "Tipo di Annotazione"
 
 #, fuzzy
 #~ msgid "Adjust annotation bounds..."
@@ -9186,10 +9101,6 @@ msgstr ""
 #~ msgid "Info"
 #~ msgstr "Se"
 
-#, fuzzy
-#~ msgid "Export trace"
-#~ msgstr "Importatore"
-
 #~ msgid "No valid importer"
 #~ msgstr "Nessun importatore valido"
 
diff --git a/pyinstaller/advene-bin.spec b/pyinstaller/advene-bin.spec
index 6476253..a6401ab 100644
--- a/pyinstaller/advene-bin.spec
+++ b/pyinstaller/advene-bin.spec
@@ -3,10 +3,10 @@ Name: advene-bin
 Version: 0.21
 Release: 1
 License: GPL
-Packager: Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+Packager: Olivier Aubert <contact at olivieraubert.net>
 Group: Video
-URL: http://liris.cnrs.fr/advene/
-Source: http://liris.cnrs.fr/advene/download/
+URL: http://advene.org/
+Source: http://advene.org/download/
 Buildroot: FIXME
 
 %define _rpmdir ../
diff --git a/scripts/dummy_server.py b/scripts/dummy_server.py
new file mode 100755
index 0000000..930efbc
--- /dev/null
+++ b/scripts/dummy_server.py
@@ -0,0 +1,52 @@
+#!/usr/bin/python
+
+import BaseHTTPServer
+import json
+import random
+import urlparse
+
+concepts = [ "dog", "cat", "bird", "tree", "human" ]
+
+HOST_NAME = 'localhost'
+PORT_NUMBER = 9000
+
+class RESTHandler(BaseHTTPServer.BaseHTTPRequestHandler):
+    def do_HEAD(s):
+        s.send_response(200)
+        s.send_header("Content-type", "application/json")
+        s.end_headers()
+
+    def do_GET(s):
+        s.send_response(200)
+        s.send_header("Content-type", "application/json")
+        s.end_headers()
+        json.dump({"status": 200, "message": "OK"}, s.wfile)
+
+    def do_POST(s):
+        length = int(s.headers['Content-Length'])
+        body = s.rfile.read(length).decode('utf-8')
+        if s.headers['Content-type'] == 'application/json':
+            post_data = json.loads(body)
+        else:
+            post_data = urlparse.parse_qs(body)
+        s.send_response(200)
+        s.send_header("Content-type", "application/json")
+        s.end_headers()
+        json.dump({"status": 200, "message": "OK", "data": [
+            {
+                'confidence': random.random(),
+                'timecode': random.randrange(post_data['begin'], post_data['end']),
+                'label': random.choice(concepts),
+                'uri': 'http://concept.org/%s' % random.choice(concepts)
+            } for c in range(3)
+        ]}, s.wfile)
+
+if __name__ == '__main__':
+    server_class = BaseHTTPServer.HTTPServer
+    httpd = server_class((HOST_NAME, PORT_NUMBER), RESTHandler)
+    print "Starting dummy REST server on %s:%d" % (HOST_NAME, PORT_NUMBER)
+    try:
+        httpd.serve_forever()
+    except KeyboardInterrupt:
+        pass
+    httpd.server_close()
diff --git a/scripts/update_doc b/scripts/update_doc
index 818da2e..87d5b74 100755
--- a/scripts/update_doc
+++ b/scripts/update_doc
@@ -12,11 +12,11 @@ then
 fi
 
 # Shortcuts
-wget --quiet 'http://liris.cnrs.fr/advene/wiki/index.php/AdveneShortcuts' -O $shortcuts
+wget --quiet 'http://advene.org/wiki/index.php/AdveneShortcuts' -O $shortcuts
 
 if [ $? == 0 ]
 then
-    perl -pi -e 's/<(style|link|script).+?<\/\1>//; s/<span class=.editsection.+?<\/span>//; s/<div id=.jump-to-nav.+?<\/div>//; s/.+siteSub.+//; s!<head>!<head><link rel="stylesheet" type="text/css"  href="http://liris.cnrs.fr/advene/advene.css" />!; exit(0) if /Retrieved/' $shortcuts
+    perl -pi -e 's/<(style|link|script).+?<\/\1>//; s/<span class=.editsection.+?<\/span>//; s/<div id=.jump-to-nav.+?<\/div>//; s/.+siteSub.+//; s!<head>!<head><link rel="stylesheet" type="text/css"  href="http://advene.org/advene.css" />!; exit(0) if /Retrieved/' $shortcuts
 	echo "Shortcuts help updated in $shortcuts"
 else
 	echo "Wget error. $shortcuts is now corrupted."
diff --git a/setup.cfg b/setup.cfg
index 633e152..fe8394b 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,5 @@
 [bdist_rpm]
-packager = Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+packager = Olivier Aubert <contact at olivieraubert.net>
 doc_files = CHANGES.txt
 	    doc/
 group = Video
diff --git a/setup.py b/setup.py
index 9206fff..24b0122 100755
--- a/setup.py
+++ b/setup.py
@@ -172,14 +172,14 @@ def generate_data_files():
     return r
 
 myname = "Olivier Aubert"
-myemail = "olivier.aubert at liris.cnrs.fr"
+myemail = "contact at olivieraubert.net"
 
 setup (name = "advene",
        version = _version,
        description = "Annotate DVds, Exchange on the NEt",
        keywords = "dvd,video,annotation",
        author = "Advene project team",
-       author_email = "advene at liris.cnrs.fr",
+       author_email = "contact at olivieraubert.net",
        maintainer = myname,
        maintainer_email = myemail,
        url = "http://www.advene.org/",
diff --git a/share/advene.css b/share/advene.css
new file mode 100644
index 0000000..8d841eb
--- /dev/null
+++ b/share/advene.css
@@ -0,0 +1,31 @@
+#fullscreen_player {
+    background-color: #000;
+    color: #fff;
+}
+
+.advene_drag_icon {
+    background-color: #000;
+    color: #fff;
+}
+
+.black_on_black {
+    background-color: #000;
+    color: #000;
+}
+
+.advene_caption {
+    background-color: #000;
+    color: #fff;
+}
+
+.restrict_playing_button {
+    margin: 0;
+    padding: 0;
+}
+
+.frameselector_before {
+    background-color: #fcc;
+}
+.frameselector_after {
+    background-color: #000;
+}
diff --git a/share/exporters.xml b/share/exporters.xml
index b6167b2..614989a 100644
--- a/share/exporters.xml
+++ b/share/exporters.xml
@@ -722,6 +722,51 @@ ktbs:hasSubject "<span tal:replace="package/author"></sp
     </span>
     ]
  }
+ </content></view><view dc:creator="oaubert" dc:date="2017-02-02" id="WebAnnotation" viewable-class="*"><meta><title xmlns="http://purl.org/dc/elements/1.1/">WebAnnotation</title>
+	<extension xmlns="http://experience.univ-lyon1.fr/advene/ns/advenetool">json</extension>
+ </meta><content encoding="utf-8" mime-type="text/plain">{
+  "@context": [ 
+       "http://www.w3.org/ns/anno.jsonld",
+        { "local": "http://advene.org/ns/local#" } 
+        ],
+  "id": "<span tal:omit-tag="" tal:replace="here/uri">container_uri</span>",
+  "type": "AnnotationCollection",
+  "label": <span tal:omit-tag="" tal:replace="here/representation/json">container_title</span>,
+  "total": <span tal:omit-tag="" tal:replace="here/annotations/length">annotation_count</span>,
+  "first": {
+    "id": ""<span tal:omit-tag="" tal:replace="here/uri">container_uri</span>/page1",
+    "type": "AnnotationPage",
+    "startIndex": 0,
+    "items": [
+         <span tal:omit-tag="" tal:repeat="a here/annotations/sorted" >
+         {
+            "@context": "http://www.w3.org/ns/anno.jsonld",
+            "id": "<span tal:omit-tag="" tal:replace="a/uri/json">annotation_uri</span>",
+            "type": [ "Annotation", "local:<span tal:omit-tag="" tal:replace="a/type/id">type</span>" ],
+            "creator": {
+                "id": <span tal:omit-tag="" tal:replace="a/author/json">author</span>,
+                "type": "Person",
+                "nick": <span tal:omit-tag="" tal:replace="a/author/json">author</span>
+            },
+            "created": <span tal:omit-tag="" tal:replace="a/date/json">created</span>,
+            "body": {
+                "type": "TextualBody",
+                "value": <span tal:omit-tag="" tal:replace="a/content/data/json">annotation_data</span>,
+                "format": <span tal:omit-tag="" tal:replace="a/content/mimetype">content type</span>
+            },
+            "target": {
+                "source": "<span tal:omit-tag="" tal:replace="package/meta/advenetool/mediafile/urlquote">movie</span>",
+                "selector": {
+                    "type": "FragmentSelector",
+                    "conformsTo": "http://www.w3.org/TR/media-frags/",
+                    "value": "t=<span tal:omit-tag="" tal:replace="a/fragment/begin/formatted">begin</span>,<span tal:omit-tag="" tal:replace="a/fragment/end/formatted">end</span>"
+                }
+            }
+        }<span tal:omit-tag="" tal:condition="not:repeat/a/end">,</span>
+        </span>
+     ]
+  }
+}
 </content></view>
   </views>
 </package>

-- 
advene packaging



More information about the pkg-multimedia-commits mailing list