[SCM] advene/master: Imported Upstream version 1.0
oaubert-guest at users.alioth.debian.org
oaubert-guest at users.alioth.debian.org
Tue Dec 20 16:41:38 UTC 2011
The following commit has been merged in the master branch:
commit 9298ea6151428a12ac6f726724b5c639aec97fcd
Author: Olivier Aubert <olivier.aubert at liris.cnrs.fr>
Date: Tue Dec 20 17:27:17 2011 +0100
Imported Upstream version 1.0
diff --git a/AUTHORS b/AUTHORS
index e764067..8533c8e 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,26 +1,29 @@
# The format of this file was inspired by the Linux kernel CREDITS file.
# Authors are listed alphabetically.
#
-# The fields are: name (N), email (E), web-address (W), CVS account login (C),
+# The fields are: name (N), email (E), web-address (W),
# PGP key ID and fingerprint (P), description (D), and snail-mail address (S).
N: Olivier Aubert
-C: oaubert
-E: oaubert at liris dot cnrs dot fr
+E: olivier.aubert at liris dot cnrs dot fr
D: Design
-D: Main application
+D: Overall development and coordination
D: Debian packaging
S: France
N: Pierre-Antoine Champin
-C: champin
-E: chapin at liris dot cnrs dot fr
+E: pierre-antoine.champin at liris dot cnrs dot fr
D: Design
D: Advene model implementation
S: France
N: Yannick Prié
-C: yprie
-E: yprie at liris dot cnrs dot fr
+E: yannick.prie at liris dot cnrs dot fr
D: Design
S: France
+
+N: Bertrand Richard
+E: bertrand.richard at liris dot cnrs dot fr
+D: Activity trace visualisation
+D: Win32 installer
+S: France
diff --git a/CHANGES.txt b/CHANGES.txt
index 725fd43..8dec41e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,8 +1,70 @@
+advene (1.0) unstable; urgency=low
+
+ * This release marks the end of a series that has been stable for a long
+ time, but never earned its major release number. This version now
+ enters a maintenance state, while development focuses on the next
+ major version (new data model, interface revamp to handle simultaneous
+ analysis of multiple video files...).
+
+ * See the following 0.47 notes for more details about changes from
+ previous release.
+
+ -- Olivier Aubert <olivier.aubert at liris.cnrs.fr> Tue, 20 Dec 2011 16:31:19 +0100
+
+advene (0.48) unstable; urgency=low
+
+ * New stable release, candidate for 1.0. See the following 0.47 notes for more details.
+
+ -- Olivier Aubert <olivier.aubert at liris.cnrs.fr> Wed, 14 Dec 2011 15:54:20 +0100
+
+advene (0.47) unstable; urgency=low
+
+ * Main GUI:
+
+ * Left-clicking on the video slider jumps to the designated position.
+
+ * Note-taking view - new shortcut: Ctrl-C to convert to annotations
+
+ * Timeline:
+
+ * The annotation inspector can be locked on an annotation by clicking
+ on it. Clicking on the lock icon or in the timeline background unlocks
+ the inspector. The annotation content can be edited through the
+ inspector, and validated either with an icon, or with the
+ Control-Return shortcut.
+
+ * Annotation table view:
+
+ * Annotation contents can be modified from the table view.
+
+ * New shortcut: Ctrl-Return to play current annotation.
+
+ * Transcription view - new shortcut: Ctrl-Return to play current annotation.
+
+ * Importers:
+
+ * WebVTT files can be imported.
+
+ * Speech recognition has been implemented through the pocketsphinx
+ speech recognition software. The pocketsphinx software is not bundled
+ with Advene and has to be installed separately to enable this
+ feature. See http://cmusphinx.sourceforge.net/wiki/gstreamer for
+ details.
+
+ * The additional videoplayer offset can be customized by drag and drop
+ of an annotation.
+
+ * The popup menu on screenshot and annotations now offers to save the
+ screenshot as a PNG file. If the player supports it, the screenshot
+ will be in video-resolution.
+
+ -- Olivier Aubert <olivier.aubert at liris.cnrs.fr> Thu, 13 Oct 2011 14:29:49 +0200
+
advene (0.46) unstable; urgency=low
* Stable release. See the following 0.45 notes for more details.
- -- Olivier Aubert <olivier.aubert at liris.cnrs.fr> Tue, 05 Apr 2011 18:00:07 +0200
+ -- Olivier Aubert <olivier.aubert at liris.cnrs.fr> Tue, 04 Oct 2011 17:14:25 +0200
advene (0.45) unstable; urgency=low
@@ -58,9 +120,9 @@ advene (0.45) unstable; urgency=low
for an example).
* Braille table:
-
+
* Long text can be scrolled with left/right buttons in scroll mode.
-
+
* Actions:
* New parameters (balance, volume) for PlaySound / PlaySoundClip actions
diff --git a/INSTALL.txt b/INSTALL.txt
index acedded..750931b 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -4,24 +4,20 @@ How to install the Advene prototype
** Video player
-The only supported cross-platform player for the moment is VLC through
-a native VLC plugin. You have to install the python-vlc plugin (see
-http://liris.cnrs.fr/advene/download/) to access movies.
-
-Linux users may use the gstreamer framework, through the
-python-gstreamer module (>= 0.10).
+The video player is implemented on all platforms with the gstreamer
+framework, through the python-gstreamer module (>= 0.10).
** Linux version
You will need the following python packages (the package names are from
Debian, they may slightly vary on other distributions) :
-python >= 2.4
+python >= 2.5
python-gtk2 (>=2.12)
-python-cherrypy3 (>=3.0.0) [for convenience, a copy of cherrypy is included in
+python-cherrypy3 (>=3.0.0) [for convenience, a copy of cherrypy may be included in
this Advene distribution]
-python-simpletal (>=3.12) [for convenience, a copy of simpletal is included in
-this Advene distribution]
+python-simpletal (>=3.12) [for convenience, a copy of simpletal may be
+included in this Advene distribution]
For the gstreamer plugin:
python-gst0.10
@@ -30,23 +26,24 @@ gstreamer0.10-x
+ other gstreamer packages needed to decode various formats
(esp. gstreamer0.10-plugins-good and gstreamer0.10-plugins-ugly).
+Optionaly:
+python-opencv (for some feature-extraction filters)
+
Note that all these dependencies are already available in Debian and
in standard installations of the Ubuntu Feisty Fawn (and later)
distribution.
** Windows version
-You should install in this order (note the version numbers) :
+If you want to run Advene from sources on win32, you should install in this order (note the version numbers) :
Gtk/win32 v. >= 2.12 : http://gladewin32.sourceforge.net/ (runtime environment)
-v2.12 recommended to avoid problems with Vista environment.
-Python v. 2.4 : http://www.python.org/ftp/python/2.4.4/Python-2.4.4.exe
-[ From http://python.org/ ]
+Python >= v. 2.5 : http://python.org/
-PyGtk for python2.4: http://www.pcpm.ucl.ac.be/~gustin/win32_ports/ [ From http://www.pygtk.org ]
+PyGtk for python2.5: http://www.pygtk.org/
-CherryPy: http://download.cherrypy.org/cherrypy/3.0.1/ [for
+CherryPy: http://download.cherrypy.org/cherrypy/ [for
convenience, a copy of cherrypy is included in this Advene
distribution]
@@ -55,46 +52,49 @@ http://www.owlfish.com/software/simpleTAL/download.html [for
convenience, a copy of simpletal is included in this Advene
distribution]
-VLC + python-vlc mediacontrol extension (cf
-http://download.gna.org/advene/win32/ )
+Optionally, python-opencv
** Mac OS X version
From macports (http://www.macports.org/), install :
- * python24 [Note: after its install, make sure that
+ * python26 or later [Note: after its install, make sure that
/opt/local/bin/python exists, and that your path begins with
/opt/local/bin. Else, the installation of the other packages
could use the /usr/bin/python version]
- * py-gtk2 >= 2.12
-
-You will also need the vlc.so python module to control VLC. You can
-download a precompiled version for vlc0.8.6c/i3386 from
-http://liris.cnrs.fr/advene/download/mac/vlc-bindings/ or compile it
-by yourself (which is hard for vlc <= 0.8.6, and should work better
-for vlc >= 0.9.0).
+ * py26-gtk (>= 2.12)
+ * py26-goocanvas
+ * librsvg (optional)
+ * py26-pyobjc2 (optional)
+ * py26-gst-python
+ * gst-plugins-base
+ * gst-plugins-good gst-plugins-bad gst-plugins-ugly
+ * gst-ffmpeg
* Testing
You can run the script ./bin/advene directly from the source
-directory. It will adapt its paths to its location.
+directory. It will adapt its paths to this location.
In a first step, you can try the Advene application without movie player
support by using the "-pdummy" parameter :
-advene -pdummy
+
+ advene -pdummy
To force the use of the gstreamer player, specify:
-advene -pgstreamer
+
+ advene -pgstreamer
To force the use of the vlc player, specify:
-advene -pvlcnative
+
+ advene -pvlctypes
* Installing
To install the application, you can run the setup.py script with
appropriate options. For a standard installation, run
-python setup.py install
+ python setup.py install
Note that it is not necessary to install the application to run it. It
can be used directly from its sources directory.
diff --git a/Makefile b/Makefile
index 774f07d..0bb6449 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@ doc: FORCE
PYTHONPATH=$(shell pwd)/lib find lib/advene -name '*.py' | xargs -n 500 epydoc -o doc/html -n Advene --inheritance=grouped
archive:
- tar -C .. --exclude=lib/simpletal --exclude=lib/cherrypy --exclude=\*.pyc --exclude=build/ --exclude=.git --exclude=.svn --exclude=\*~ -cvzf ../$(name).tgz $(name)
+ tar -C .. --exclude=locale --exclude=lib/simpletal --exclude=lib/cherrypy --exclude=\*.pyc --exclude=build/ --exclude=.git --exclude=.svn --exclude=\*~ -cvzf ../$(name).tgz $(name)
FORCE:
diff --git a/README.txt b/README.txt
index 8ba152a..fd4d640 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,5 @@
-* Purpose of the software
+Purpose of the software
+=======================
The Advene project (Annotate Digital Video, Exchange on the NEt) aims
at providing a model and a format to share annotations about digital
@@ -6,15 +7,16 @@ video documents (movies, courses, conferences...), as well as tools to
edit and visualize the hypervideos generated from both the annotations
and the audiovisual documents.
-Teachers, moviegoers, etc. can use them to exchange multimedia
-comments and analyses about video documents. The project also aims at
-studying the way that communities of users (teachers, moviegoers,
-students...) will use these self-publishing tools to share their
-audiovisual "readings", and to envision new editing and viewing
+With the Advene software, teachers, moviegoers, etc. can exchange
+multimedia comments and analyses about video documents. The project
+also aims at studying the way that communities of users (teachers,
+moviegoers, students...) will use these self-publishing tools to share
+their audiovisual "readings", and to envision new editing and viewing
interfaces for interactive comment and analysis of audiovisual
content.
-* Design
+Design
+======
The software consists in a graphical user interface, integrating a
video player and an embedded webserver. The graphical user interface
@@ -38,9 +40,9 @@ dynamic views and adhoc-views.
Static views are X(HT)ML templates that, applied on the annotations,
generate a HTML document. The HTML document is served through the
embedded webserver to a standard web browser. Snapshots from the video
-(extracted on the fly) can be addressed in the template. It is also
+(extracted on the fly) can be used in the template. It is also
possible to control the application (video player control, adhoc view
-opening...).
+opening...) though URLs.
Dynamic views are augmented video renderings, guided by the
annotations. It is possible to caption the video, control the video
@@ -51,13 +53,22 @@ Adhoc-views are programmed views available from the GUI. Among
available views are a timeline, a transcription view synchronized with
the video...
-* Basic use
+Basic use
+=========
Sample packages are provided on the Advene website:
-http://liris.cnrs.fr/advene/examples.html
+
+ http://liris.cnrs.fr/advene/examples.html
Both the Nosferatu analysis and the Ted Nelson speech analysis can be
used as tutorials to go through the Advene features.
-A user manual is also available:
+A user manual is also available at:
+
http://liris.cnrs.fr/advene/wiki/index.php/Main_Page
+
+Copyright Information
+=====================
+
+This software is covered by the GNU General Public Licence
+(version 2, or if you choose, a later version).
diff --git a/adveneAllInOne.iss b/adveneAllInOne.iss
index 870bfc8..336224e 100644
--- a/adveneAllInOne.iss
+++ b/adveneAllInOne.iss
@@ -9,7 +9,7 @@ Source: dist\doc\*; DestDir: {app}\doc; Flags: recursesubdirs; Components: adven
Source: dist\locale\*; DestDir: {app}\locale; Flags: recursesubdirs; Components: advene
Source: share\pixmaps\advene.ico; DestDir: {app}; DestName: advene.ico; Components: advene
Source: c:\gtk\etc\*; DestDir: {app}\etc; Flags: recursesubdirs; Components: advene
-Source: examples\*v11.azp; DestDir: {app}\examples; Components: advene
+Source: examples\Nosferatu_v12.azp; DestDir: {app}\examples; Components: advene
Source: c:\gtk\lib\gtk-2.0\*; DestDir: {app}\lib\gtk-2.0; Flags: recursesubdirs; Components: advene
Source: c:\gtk\lib\gdk-pixbuf-2.0\*; DestDir: {app}\lib\gdk-pixbuf-2.0; Flags: recursesubdirs; Components: advene
Source: c:\gtk\share\locale\fr\*; DestDir: {app}\lib\locale\fr; Flags: recursesubdirs; Components: advene
@@ -45,10 +45,6 @@ Source: vcredist_x86.exe; DestDir: {tmp}; Components: advene
Source: c:\gtk\bin\gdk-pixbuf-query-loaders.exe; DestDir: {app}; Components: advene
Source: post_install.bat; DestDir: {app}; Components: advene
-Source: c:\Program Files (x86)\VLC\libvlccore.dll; DestDir: {app}; Components: vlc
-Source: c:\Program Files (x86)\VLC\libvlc.dll; DestDir: {app}; Components: vlc
-Source: c:\Program Files (x86)\VLC\plugins\*; DestDir: {app}\vlcplugins; Components: vlc
-
Source: gst\*; DestDir: {app}\gst; Flags: recursesubdirs; Components: gst
Source: gst_bindings\libgstpython-v2.6.dll; Destdir: {app}; Components: gst
@@ -60,22 +56,18 @@ En.CleanPrefs=Clean &preferences
Fr.CleanPrefs=Effacer les &préférences
En.ITadvenegst=Advene with included gstreamer
Fr.ITadvenegst=Advene et gstreamer inclus
-En.ITadvenevlc=Advene with included vlc
-Fr.ITadvenevlc=Advene et vlc inclus
-En.ITadvene=Advene without included vlc
-Fr.ITadvene=Advene sans vlc
+En.ITadvene=Advene without included gstreamer
+Fr.ITadvene=Advene sans gstreamer
En.ITcustom=Custom installation
Fr.ITcustom=Installation personnalisée
[Types]
Name: "AdveneGst"; Description: "{cm:ITadvenegst}"
-Name: "AdveneVlc"; Description: "{cm:ITadvenevlc}"
Name: "AdveneOnly"; Description: "{cm:ITadvene}"
Name: "Custom"; Description: "{cm:ITcustom}"; Flags: iscustom
[Components]
-Name: advene; Description: Advene files; Types: AdveneOnly AdveneVlc AdveneGst Custom; Flags: fixed
-Name: vlc; Description: VLC files; Types: AdveneVlc Custom
+Name: advene; Description: Advene files; Types: AdveneOnly AdveneGst Custom; Flags: fixed
Name: gst; Description: Gstreamer files; Types: AdveneGst Custom
[Languages]
@@ -85,19 +77,19 @@ Name: En; MessagesFile: "compiler:Default.isl"
[Setup]
AppCopyright=GPL
AppName=Advene
-AppVerName=Advene 0.46
+AppVerName=Advene 1.0
DefaultDirName={pf}\Advene
ShowLanguageDialog=yes
-VersionInfoVersion=0.46
+VersionInfoVersion=1.0
VersionInfoCompany=LIRIS
PrivilegesRequired=none
LicenseFile=doc\copyright
DisableFinishedPage=false
DefaultGroupName=Advene
-VersionInfoDescription=Annotate DVDs, Exchange on the NEt
+VersionInfoDescription=Annotate Digital Videos, Exchange on the NEt
InfoAfterFile=CHANGES.txt
-OutputBaseFilename=setup_advene_0.46r7211_vlc_1.0.3_gstreamer_0.10.7beta2
-VersionInfoTextVersion=0.46
+OutputBaseFilename=setup_advene_1.0
+VersionInfoTextVersion=1.0
ChangesAssociations=yes
[Registry]
@@ -116,9 +108,9 @@ Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescrip
Name: "cleanprefs"; Description: "{cm:CleanPrefs}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Icons]
-Name: {group}\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate DVDs, Exchange on the NEt; IconIndex: 0
-Name: {userdesktop}\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate DVDs, Exchange on the NEt; Tasks: desktopicon
-Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate DVDs, Exchange on the NEt; Tasks: quicklaunchicon
+Name: {group}\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate Digital Videos, Exchange on the NEt; IconIndex: 0
+Name: {userdesktop}\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate Digital Videos, Exchange on the NEt; Tasks: desktopicon
+Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Advene; Filename: {app}\advene.exe; WorkingDir: {app}; IconFilename: {app}\advene.ico; Comment: Annotate Digital Videos, Exchange on the NEt; Tasks: quicklaunchicon
[InstallDelete]
Type: files; Name: "{userappdata}\..\advene\advene.prefs"; Tasks: cleanprefs
diff --git a/advene_pad.xml b/advene_pad.xml
index 91c41d0..9d95486 100644
--- a/advene_pad.xml
+++ b/advene_pad.xml
@@ -17,30 +17,30 @@
<State_Province></State_Province>
<Zip_Postal_Code>69622</Zip_Postal_Code>
<Country>France</Country>
- <Company_WebSite_URL>http://liris.cnrs.fr/advene/</Company_WebSite_URL>
+ <Company_WebSite_URL>http://www.advene.org/</Company_WebSite_URL>
<Contact_Info>
<Author_First_Name>Olivier</Author_First_Name>
- <Author_Last_Name>Aubert</Author_Last_Name>
- <Author_Email>olivier.aubert at liris.cnrs.fr</Author_Email>
- <Contact_First_Name>Olivier</Contact_First_Name>
- <Contact_Last_Name>Aubert</Contact_Last_Name>
- <Contact_Email>advene at liris.cnrs.fr</Contact_Email>
+ <Author_Last_Name>Aubert</Author_Last_Name>
+ <Author_Email>olivier.aubert at liris.cnrs.fr</Author_Email>
+ <Contact_First_Name>Olivier</Contact_First_Name>
+ <Contact_Last_Name>Aubert</Contact_Last_Name>
+ <Contact_Email>advene at liris.cnrs.fr</Contact_Email>
</Contact_Info>
<Support_Info>
<Sales_Email>advene at liris.cnrs.fr</Sales_Email>
- <Support_Email>advene at liris.cnrs.fr</Support_Email>
- <General_Email>advene at liris.cnrs.fr</General_Email>
- <Sales_Phone></Sales_Phone><Support_Phone></Support_Phone>
- <General_Phone></General_Phone>
- <Fax_Phone></Fax_Phone>
+ <Support_Email>advene at liris.cnrs.fr</Support_Email>
+ <General_Email>advene at liris.cnrs.fr</General_Email>
+ <Sales_Phone></Sales_Phone><Support_Phone></Support_Phone>
+ <General_Phone></General_Phone>
+ <Fax_Phone></Fax_Phone>
</Support_Info>
</Company_Info>
<Program_Info>
<Program_Name>Advene</Program_Name>
- <Program_Version>0.44</Program_Version>
- <Program_Release_Month>09</Program_Release_Month>
- <Program_Release_Day>13</Program_Release_Day>
- <Program_Release_Year>2010</Program_Release_Year>
+ <Program_Version>1.0</Program_Version>
+ <Program_Release_Month>12</Program_Release_Month>
+ <Program_Release_Day>22</Program_Release_Day>
+ <Program_Release_Year>2011</Program_Release_Year>
<Program_Cost_Dollars>0</Program_Cost_Dollars>
<Program_Cost_Other_Code></Program_Cost_Other_Code>
<Program_Cost_Other></Program_Cost_Other>
@@ -50,9 +50,9 @@
<Program_OS_Support>Linux,Mac OS X,Windows2000,Windows2003,WinXP</Program_OS_Support>
<Program_Language>English,Esperanto,French</Program_Language>
<File_Info>
- <File_Size_Bytes>54831024</File_Size_Bytes>
- <File_Size_K>53545</File_Size_K>
- <File_Size_MB>53</File_Size_MB>
+ <File_Size_Bytes>62659874FIXME</File_Size_Bytes>
+ <File_Size_K>61191FIXME</File_Size_K>
+ <File_Size_MB>59FIXME</File_Size_MB>
</File_Info>
<Expire_Info>
<Has_Expire_Info>N</Has_Expire_Info><Expire_Count></Expire_Count><Expire_Based_On></Expire_Based_On><Expire_Other_Info></Expire_Other_Info><Expire_Month></Expire_Month><Expire_Day></Expire_Day><Expire_Year></Expire_Year>
@@ -108,14 +108,14 @@
</Program_Descriptions>
<Web_Info>
<Application_URLs>
- <Application_Info_URL>http://liris.cnrs.fr/advene/</Application_Info_URL>
- <Application_Order_URL>http://liris.cnrs.fr/advene/download.html</Application_Order_URL>
- <Application_Screenshot_URL>http://liris.cnrs.fr/advene/screenshots/advene-0.42.png</Application_Screenshot_URL>
- <Application_Icon_URL>http://liris.cnrs.fr/advene/img/icon_advene32.png</Application_Icon_URL>
- <Application_XML_File_URL>http://liris.cnrs.fr/advene/advene_pad.xml</Application_XML_File_URL>
+ <Application_Info_URL>http://www.advene.org/</Application_Info_URL>
+ <Application_Order_URL>http://www.advene.org/download.html</Application_Order_URL>
+ <Application_Screenshot_URL>http://www.advene.org/screenshots/advene-1.0.png</Application_Screenshot_URL>
+ <Application_Icon_URL>http://www.advene.org/img/icon_advene32.png</Application_Icon_URL>
+ <Application_XML_File_URL>http://www.advene.org/advene_pad.xml</Application_XML_File_URL>
</Application_URLs>
<Download_URLs>
- <Primary_Download_URL>http://download.gna.org/advene/win32/setup_advene_0.44_vlc_1.0.3_gstreamer_0.10.5_b.exe</Primary_Download_URL>
+ <Primary_Download_URL>http://download.gna.org/advene/win32/setup_advene_1.0.exe</Primary_Download_URL>
<Secondary_Download_URL></Secondary_Download_URL>
<Additional_Download_URL_1></Additional_Download_URL_1>
<Additional_Download_URL_2></Additional_Download_URL_2>
diff --git a/doc/TODO b/doc/TODO
index db0529e..444e608 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -1,12 +1,4 @@
-* licensecheck -R --copyright advene.git | grep UNKN
-
-* Transcribe: underline zone progress according to player position between 2 marks
-
-* Mac: pb when displaying menus (no border) and progressbar
-
-* Google API for Speech-to-text ?
-
-* gst element that buffers slices of data with rolling index
+* QRcode extractor
* Have webcherry listen on both ipv4/ipv6
@@ -20,8 +12,6 @@
* example SVG + lien -> json
-* Remove embedded ElementTree now that python2.5 is required
-
* Update default-fps value when data is available from player
* feature extraction: check against filename encoding
@@ -30,6 +20,10 @@
* finder: in Static view/dynamic view columns, add a "+" item
+* finder: filter (global or by column), grouping (by column)
+
+* finder: implement set_current_element method
+
* gst spectrum videoanalyse
* display clock cursor for lengthy actions (timeline update)
@@ -50,45 +44,23 @@
* Default caption dynamic view: make non-admin (remove _)
-* Montage: add "Save" icon
-
* MacOSX: use Cmd modifier equiv. as control
* Import youtube annotations ( http://www.google.com/reviews/y/read2?video_id=YOUR_VIDEO_ID_HERE )
-* Import/export AIFF
-
-* DND annnotation type in comment -> display transcription/table/...
-
--
-
-* Play a sound file: ask wether to keep the reference or to copy the file as resource
-
* gstreamer pipeline (videomixer) to generate 1-pixel-column sum-up of video:
gst-launch -e filesrc location=/data/video/Bataille.avi ! decodebin ! videoscale ! ffmpegcolorspace ! video/x-raw-rgb,width=320,pixel-aspect-ratio=\(fraction\)1/1 ! videocrop left=158 right=160 ! progressreport update-freq=1 ! pngenc snapshot=false ! multifilesink location=%05d.png
montage -tile x1 -mode Concatenate 0*g final.png
* montage: video export
-* integrate pyxdg RecentFiles (use gtk.RecentFiles), pyxdg.Mime
-
* transcribe: allow search/replace
-* Integrate transcription view from TBL
-
* quick edit: integrate EntryCompletion on attributes
-* Fix message log file access on win32
-
-* abbreviations: pb when missing end newline
-
-* fullscreen: optionally display information over the video (status, position)
-
* add PyDiscoverer interface, to get movie details ASAP
-* option to stop player synchronisation then use current position as time offset
-
-* trace replay mode of video navigation (replay video based on navigation events) -> trace player with controlled video player
+* trace replay mode of video navigation (replay video based on navigation events) -> trace player with controlled video player
* Customizable shortcuts
@@ -96,21 +68,13 @@ montage -tile x1 -mode Concatenate 0*g final.png
* Ldt ZIP importer
-* Make the timeline inspector editable (thus sticky display)
-
* Screen overlay interface: define a grid with sensitive areas + event
-> need to implement player.get_dimensions() method
-* default bookmarks view, used by default and auto-saved with the package.
-
-* LogMessages: pb of exclusive access on win32
-
* implement a "Stream record" feature in the player (tee+encode before imagesink)
* Generic subprocess registration (prononce, tts...) to make sure that we terminate them at Advene exit.
-* Generic metadata for packages
-
* table view: keyword occurrences + stats
* gstrecorder: option to specify wether to record from webcam
@@ -125,17 +89,11 @@ montage -tile x1 -mode Concatenate 0*g final.png
* controller.update_status: accept annotation as parameter, to allow
more precise notification
-* Generateur waveform
-
-* Generic "ImportFromApplication" module/framework (with progressbar, etc)
-
* gstreamer: multiple video syntax: path;path -> videobox
* gui.edit.rules: SimpleQuery edition will fail since TALESEntry does
not handle multiple sources
-* Note-taking: save == convert option
-
* Fix autocompletion of attribute names for annotations (should
record key=value strings)
@@ -144,17 +102,9 @@ montage -tile x1 -mode Concatenate 0*g final.png
* webcherry: use content negociation for invoking appropriate views
* Utilisation npt:/
-* Define content-types: montag <annotation>...</annotation> +
- extensions (transition...)
-
-* STBV export (captions): cf http://code.google.com/p/libkate/
* transcribe: use textbuffer.get_modified/set_modified
-* Customizable shortcuts for annotation creation
-
-* Make initial setup window an assistant (multiple steps)
-
* gui.main: simple click on Adhocview icon -> share code with viewbook
(menu New/open existing).
@@ -163,21 +113,10 @@ montage -tile x1 -mode Concatenate 0*g final.png
* timeline: fix continous scrolling. Set zoom 96%, 0h59 in Nosferatu
-* tabular adhoc view, with options to export as HTML
-
-* HTML editor: popup menu on images to refresh imagecache (and possibly code)
-
-* ssa import filter
-
-* svg editor: add a "advene_comment" field to the svg source (similar
- to label in advene zones)
-
-* finder: filter (global or by column), grouping (by column)
+* tabular adhoc view, with customizable columns and options to export as HTML
* HTMLeditor: implement basic css parsing (cf python-cssutils)
-* use HTMLeditor component as viewer if mozembed is not available.
-
* htmleditor: when suppressing a tag with tal: instructions (define,
...), recreate it ? Or delete the whole block ?
@@ -190,22 +129,14 @@ montage -tile x1 -mode Concatenate 0*g final.png
* Revamp player API (player.position, player.duration, ...)
-* fix players (vlc, gstreamer) to be able to start from a given position
-
-* finder: implement set_current_element method
-
* Bug in Advene2 export -> resources
* Template: in _package_view, propose to Open adhoc views
* Imagemap/SVG
-* LdT: handle #RRGGBB color specification
-
* improve search results navigation (cf PA post on May 2 2008)
-* streamline ask_for_relationtype method (timeline relation creation)
-
* Montage: double-click -> goto annotation
* Auto-pause in montage view
@@ -215,12 +146,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
* timeline popup menu on annotation: offer access to possibly
overlapping annotations
-* transcribe: insert begin/end marks (0, duration)
-
-* website/FAQ: justify "offline" approach (privacy, on the run, performances...)
-
-* activebookmark: DND to accumulator -> move annotation
-
* Synchronise transcribe with annotations/timeline
* create new type. On view rename -> set new type title
* create/fusion/delete annotations when modifying timestamps
@@ -228,8 +153,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
* make all simple selections (annotation, timestamp, etc) able to get
multiline data to represent element list
-* Dynamic view editing: Categorize events (annotation, player, application)
-
* Selection: extend-to-next ?
* Global timeline with frame to represent "overview + detail" (p174)
@@ -238,8 +161,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
* Data brushing p.181 -> selection in a view, highlight in others
-* Proeminently put GPL license info on the web site.
-
* timeline: memorize zoom level and position when changing package
(needs a timeline.zoom_level[package_uri] structure)
@@ -248,8 +169,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
* shapewidget: complete support for <image> element. How to deal with
images as resources ?
-* tts: send configure instructions for aplay to the pipe
-
* adhoc view: imagemap, with DND of annotation to the image
* fix timeline relation lines display
@@ -258,8 +177,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
* shotdetect: allow to specify begin/end times, to allow to redo a segmentation with a new threshold
-* Package: static export (to web site) of a set of views+resources/images
-
* Assistant for generating HTML views from annotations (propose some
common layouts: plain TOC, illustrated TOC, etc)
@@ -269,8 +186,6 @@ montage -tile x1 -mode Concatenate 0*g final.png
* gtk locale in win32
-* clearlook theme in win32 ?
-
* transcription: option to display timestamp marks and allow to modify
* Montage: extend with 2nd video (cf bout-a-bout) ?
@@ -279,13 +194,9 @@ montage -tile x1 -mode Concatenate 0*g final.png
* annotation highlight: other representation (red thick border ?)
-* Thicker frame around widgets in editaccumulator -> not so simple
-
* editaccumulator: distinguish incomplete annotations (missing entidtime)
-* edit.elements.annotation: next/prev should reuse the same window
-
-* Convert event names from strings to objects (faster comparison)
+* Convert event names from strings to objects (faster comparison?)
* Allow to lock workspace modifications (to propose a read-only version)
@@ -297,18 +208,10 @@ montage -tile x1 -mode Concatenate 0*g final.png
* highlight: blink (wait for gtk.Transition in 2.12?)
-* Short version of shortcuts/tutorial for note taking
-
-* iMovie0.8-like movie exploration (skim through the paused movie through DND in the thumbnail)
-
-* rss checking to display project news
-
* zippackage: implement a 'serialize'/'freeze' method, to save the data to the temp. directory (w/o overwriting the .azp package). This would allow regular backups of the data.
* controller.get_url_for_alias: use correct baseurl from cherrypy request when possible
-* study psyco optimizer (cf scribes)
-
* timeline
** Deactivate autoscroll when moving in the timeline
@@ -335,21 +238,13 @@ position of current marks in the video (with small lines) [cf linkmap
** rewrite importers with ElementTree
-** exmeralda importer
-
* Main GUI
** new signal: CurrentAnnotation
-** review gtk.Style for whole app (viewbook labels and comboboxes smaller, more separation...)
-
-* transcription
-
-** bug when opening a new package, the dialog "Annotations were modified" blocks the GUI
-
* New views
-** Tag cloud view (maybe in swf via python-ming)
+** Tag cloud view
* Players
@@ -377,15 +272,6 @@ position of current marks in the video (with small lines) [cf linkmap
]
Cf http://blog.hill-street.net/?p=7 for implementations comparison
-* add a progress bar for package loading -> need support in model
-
-* new query type: builtin-query, to allow to build adhoc and fast
- queries such as search_content ? or builtin-condition ?
-
-* importer GUI: when trying to import .azp, advice to use Merge instead.
-
-* importer GUI: allow to define parameters (customize checkbox => new dialog)
-
* Hook to define new events (spatial events: EnterZone, LeaveZone... for instance)
* Save dynamic view rendering: ~/src/vlc-dev/vlc --plugin-path ~/src/vlc-dev jurannessic_320x192.mpg :sout='#transcode{vcodec=mp1v,vb=4096,acodec=mpga,ab=192,scale=1,channels=2,deinterlace,audio-sync}:std{access=file,mux=ps,url="foo.mpg"}'
@@ -419,18 +305,6 @@ http://service.real.com/help/library/guides/ScriptingGuide/HTML/htmfiles/methodi
* transtyping: preserve/recreate relations
-* Study transana code
-
-* replace highlight->activate by hightlight->color->...
-
-* think about printing support
-
-* HTML action to update all displayed screenshots
-
-* bug: begin event is generated when setting position inside an annotation.
-
-* Use screen:// as input stream. Allow to parameterize (source display...)
-
* VerticalList : equiv. navigation history parameterized with 2 tales expressions: item list, representation [ history / annotation/fragment/formatted/duration ]
* component "scroller" below the vout. Parameters: text, href (optional), past duration, current
@@ -440,8 +314,6 @@ http://service.real.com/help/library/guides/ScriptingGuide/HTML/htmfiles/methodi
records. Upon release, it creates an annotation with the correct
bounds.
-* embed swfplayer
-
* import fixer: allow to edit imports without loading the package
(which fails if imported package is not accessible).
@@ -465,14 +337,10 @@ http://service.real.com/help/library/guides/ScriptingGuide/HTML/htmfiles/methodi
p.imports[0].package.views[1]._getParent().uri, p.imports[1].package.uri
that should return the same URI. The proposed solution is to enforce the importing package to explicitly import the second level imported ones. Pb: namespace clash
-* transcribe: make validity check on bounds only on demand or on export.
-
* Write a advene-openoffice binding to automate video/presentation sync.
* New action: translate ?
-* On-the-fly annotation: display as caption the edited content (for 1s)
-
* webserver: implement a wiki-like syntax in views that dynamically generates links to Advene elements/TALES expressions (define a application/x-advene-wiki that will get converted into a TAL template)
* handle wiki syntax in transcriptionedit, so that we can do simple notetaking with some markup easily.
@@ -487,15 +355,6 @@ that should return the same URI. The proposed solution is to enforce the importi
position where the link was activated. Parameters: fragment to play,
return position, or display in a new video window
-* Model: maintain creation date + modification date for elements
-
-* MediaControl.idl :
- * sound_[sg]et_volume: normalize volume in [0..100]
- * implement set_visual in API
- * implement get_aspect_ratio (or get_dimensions ?)
- * implement get_api_version()
- * implement get/set_rate
-
* navigation history: put 2 snapshots (origin, destination) to contextualize
* controller.update: implement a future_approaching and a
@@ -522,19 +381,8 @@ when there is a syntax error in a TALES expression (missing string orbadly writt
* Create a 'shapes' package which will define various SVG shapes
(moon, sun, triangle, etc) as views
-* Complete the bootstrap package
-
* Edit element popup: check that the data was not modified before closing
-* More fine-grained snapshot specification. Idea: specify a percentage
- of the annotation time. Can be implemented with an internal
- "snapshot-schema" defining "snapshot" annotation types, that would
- be linked through a "snapshot-relation" relation with the
- corresponding annotations.
-
-* Make the absolute time specification work for display_text (rather
- than relative positions) -> ok for gstreamer
-
* Model related:
** Model: Implement copy/rename of id for all elements
@@ -604,7 +452,6 @@ the current package's pwd first as default.
http://www.rexx.com/~dkuhlman/generateDS.html (XML-Schema) Or SOAPy
* Assistants:
- - shot detection
- voice recognition
- relation creation (based on criteria like "shot in sequence" -> isPartOf)
@@ -2776,6 +2623,25 @@ http://www.onlamp.com/pub/a/onlamp/2005/04/28/kupu.html
* Empty imagecache option
+* Remove embedded ElementTree now that python2.5 is required
+
+* Timestamprepresentation popup: save as...
+
+* Save screenshot: use a secondary, full resolution snapshotter
+
+* integrate pyxdg RecentFiles (use gtk.RecentFiles), pyxdg.Mime
+
+* fullscreen: optionally display information over the video (status, position)
+
+* option to stop second player synchronisation then use current position as time offset
+
+* Make the timeline inspector editable (thus sticky display)
+
+* iMovie0.8-like movie exploration (skim through the paused movie through DND in the thumbnail)
+
+* factorize transcription.update_modified.update and timeline.quick_edit.get_parsed_content, and use it in editable table.
+
+* views.table: make content editable
# Local Variables:
# auto-fill-inhibit-regexp: ".*"
diff --git a/doc/advene.1 b/doc/advene.1
index e6075a0..fe2b4b0 100644
--- a/doc/advene.1
+++ b/doc/advene.1
@@ -2,7 +2,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
-.TH ADVENE 1 "March 7, 2004"
+.TH ADVENE 1 "December 20, 2011"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@@ -16,19 +16,29 @@
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
-advene \- Annotate DVds, Exchange on the NEt
+advene \- Annotate Digital Videos, Exchange on the NEt
.SH SYNOPSIS
.B advene
.SH DESCRIPTION
-\fBadvene\fP is a program that permits to annotate a DVD and visualize
-the annotations.
+The cross-platform \fBadvene\fP application allows users to easily
+create comments and analyses of video comments, through the
+definition of time-aligned annotations and their mobilisation
+into automatically-generated or user-written comment views (HTML
+documents). Annotations can also be used to modify the rendition
+of the audiovisual document, thus providing virtual montage,
+captioning, navigation... capabilities. Users can exchange their
+comments/analyses in the form of Advene packages, independently from
+the video itself.
-No documentation exists for the moment. You can try to launch the
-program and try to make sense of the menu items. Use the \-\-help option
-to get a list of command line options.
+Use the \-\-help option to get a list of command line options.
User documentation is available from the website
-http://liris.cnrs.fr/advene/wiki/index.php/Main_Page
+http://www.advene.org/wiki/index.php/Main_Page
+
+.SH ETYMOLOGY
+\fBadvene\fP is an ancient english word, meaning "to be added to
+something or become a part of it, though not essential" (Webster
+1913). Good match for an annotation application.
.SH AUTHOR
This manual page was written by Olivier Aubert <olivier.aubert at liris.cnrs.fr>,
diff --git a/doc/controller-API.txt b/doc/controller-API.txt
new file mode 100644
index 0000000..03fccd9
--- /dev/null
+++ b/doc/controller-API.txt
@@ -0,0 +1,94 @@
+= Controller API =
+
+Extracted through
+perl -lne 'print $1 if /self.controller\.(.+?)[([. ]/' **/*py | sort -u
+
+* Attributes
+aliases
+cached_duration
+current_stbv
+event_handler
+generic_features
+gui
+package
+packages
+player
+playerfactory
+server
+soundplayer
+tracers
+undomanager
+
+* Helper functions
+build_context
+create_position
+evaluate_query
+get_default_url
+get_defined_tags
+get_element_color
+get_stbv_list
+get_timestamp
+get_title
+get_utbv_list
+log
+open_url
+
+* Model manipulation
+create_annotation
+delete_annotation
+delete_element
+duplicate_annotation
+get_default_media
+merge_annotations
+set_default_media
+split_annotation
+transmute_annotation
+
+* View manipulation
+create_static_view
+website_export
+get_export_filters
+apply_export_filter
+
+* Player handling
+move_frame
+move_position
+position_update
+player_delayed_scrub
+restart_player
+restrict_playing
+update_snapshot
+update_status
+
+* Package handling
+activate_package
+activate_stbv
+load_package
+remove_package
+save_package
+save_session
+unregister_package
+
+* Misc
+init
+notify
+queue_action
+queue_registered_action
+register_event
+register_slave_player
+unregister_slave_player
+register_usertime_action
+register_usertime_delayed_action
+register_videotime_action
+reset
+search_string
+update
+
+* Internal
+load_plugins
+on_exit
+register_gui
+locate_mediafile
+get_urlbase
+select_player
+update_package_title
diff --git a/doc/copyright b/doc/copyright
index adfc90b..6e98389 100644
--- a/doc/copyright
+++ b/doc/copyright
@@ -1,9 +1,9 @@
-This is the Debian package of Advene, a DVD annotation application.
+This is the Debian package of Advene, a Digital Video annotation application.
The latest version can be found at
-http://liris.cnrs.fr/advene/
+http://www.advene.org/
-Copyright (C) 2003 Olivier Aubert, Pierre-Antoine Champin, Yannick Prie
+Copyright (C) 2003-2011 Olivier Aubert, Pierre-Antoine Champin, Yannick Prie
This program is free software; you may redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/doc/developper.txt b/doc/developper.txt
index f0c4ae1..faf09fb 100644
--- a/doc/developper.txt
+++ b/doc/developper.txt
@@ -9,8 +9,10 @@ application, and can be reused in other applications.
The main configuration options of the applications are located in
``advene.core.config``. The module, upon load, defines a
-``advene.core.config.data`` instance which holds configuration values and is a
-singleton shared by all other modules importing ``advene.core.config``. A common idiom if then to import it through ``import advene.core.config as config`` and to access ``config.data``.
+``advene.core.config.data`` instance which holds configuration values
+and is a singleton shared by all other modules importing
+``advene.core.config``. A common idiom is to import it through
+``import advene.core.config as config`` and to access ``config.data``.
The Advene application is articulated around the
``advene.core.controller`` class. This class holds a reference to
@@ -22,7 +24,8 @@ The Advene application is articulated around the
- the GUI (``controller.gui``, may be None if we are only running the webserver)
It also maintains important state information such as
-``controller.active_annotations``
+``controller.active_annotations``, constantly updated while the player
+is running.
The controller should centralize all interaction (esp. interaction
with the player through the ``controller.update_status`` method) in order
@@ -33,9 +36,11 @@ events is defined in ``advene.rules.elements.ECACatalog``.
The update of the information implies that the ``controller.update``
method is called regularly. This is done by the GUI mainloop for the
-GUI version.
+GUI version. The ``self_loop`` method allows to start a mainloop
+without a GUI.
-The GUI starts in ``advene.gui.main``.
+The GUI code is intialized in ``advene.gui.__init__`` and starts in
+``advene.gui.main``.
Localization
------------
@@ -52,7 +57,7 @@ Release
To release a new version, you have to update :
- ``lib/advene/core/version.py`` -- the version module
- ``advene.iss`` -- the Windows installer config file
-- ``debian/changelog`` -- the changelog file
+- ``CHANGES.txt`` -- the changelog file
View plugin infrastructure
--------------------------
@@ -63,22 +68,5 @@ reference to a view (accessible through the ``widget`` attribute or
property).
A common API is defined for the views in
-``lib/advene/gui/views/viewplugin.py``
-
-Structure of the Advene code
-----------------------------
-
-Advene model
-++++++++++++
-
-- the Advene model is implemented in lib/advene/model. It offers
- access to the data, supports saving/loading data from xml packages,
- and deals with TAL/TALES issues.
-
-GUI
-+++
-
-- The GUI uses Glade to design the main interface. After editing the
- share/advene.glade file, you have to run the script
- scripts/fix_glade in order to correct references to pixmaps.
-
+``lib/advene/gui/views/viewplugin.py``. Some documentation is
+available in ``adhoc-views.txt``.
diff --git a/doc/mediacontrol.txt b/doc/mediacontrol.txt
index dda088e..0d9615e 100644
--- a/doc/mediacontrol.txt
+++ b/doc/mediacontrol.txt
@@ -16,7 +16,9 @@ method which returns a Player instance.
* Player
-It implements the various methods of the MediaControl IDL.
+It implements the various methods of the MediaControl IDL. Note that
+this API is expected to change in future version: it proved useful,
+but is too verbose and uncommon.
It defines the following methods:
- is_active(): Checks whether the player is active.
diff --git a/doc/mimetypes.txt b/doc/mimetypes.txt
index c9e5030..c663feb 100644
--- a/doc/mimetypes.txt
+++ b/doc/mimetypes.txt
@@ -7,6 +7,15 @@ Advene uses internally mimetypes to identify specific elements.
Parameters and arguments for adhoc views.
+* application/x-advene-bookmark
+
+ A bookmark structure. Used to implement drag-n-drop of bookmarks
+ (timestamp + text).
+
+* application/x-advene-timestamp
+
+ Timestamp information. Used to implement drag-n-drop of timestamps.
+
* application/x-advene-ruleset
Dynamic views (rulesets).
@@ -29,6 +38,10 @@ Advene uses internally mimetypes to identify specific elements.
Simple query language based on ECA conditions.
+* application/x-advene-quicksearch
+
+ Serialization of a quicksearch (from the searchbox).
+
* application/x-advene-zip-package
An Advene Zip Package (cf advene.model.zippackage)
@@ -46,4 +59,9 @@ Advene uses internally mimetypes to identify specific elements.
* application/x-advene-values
A space-separated list of float values,
- usually in the 0.00 - 100.0 range.
+ in the 0.00 - 100.0 range.
+
+* application/x-advene-workspace
+
+ Serialization of the workspace environment (opened adhoc views,
+ window sizes, etc).
diff --git a/doc/plugins.txt b/doc/plugins.txt
index 2bf591d..9984071 100644
--- a/doc/plugins.txt
+++ b/doc/plugins.txt
@@ -18,9 +18,9 @@ For the builtin core features: lib/advene/plugins
For the builtin GUI features: lib/advene/gui/plugins
For user-defined plugins:
- $HOME/.advene/plugins on linux
- %USERPROFILE%/advene/plugins on windows
- $HOME/Library/Preferences/Advene/plugins on MacOSX
+* $HOME/.advene/plugins on linux
+* %USERPROFILE%/advene/plugins on windows
+* $HOME/Library/Preferences/Advene/plugins on MacOSX
Implementation
==============
diff --git a/doc/win32.txt b/doc/win32.txt
deleted file mode 100644
index 2570edc..0000000
--- a/doc/win32.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-* Running from sources
-
-If you want to run Advene from sources on win32, you will need to
-install some additional packages:
-
- * Gtk/win32: gtk-dev-2.10.11-win32-1.exe [ from http://gladewin32.sourceforge.net/ ]
-
- * Python v. 2.4: [ From http://python.org/ ]
-
- * PyGtk for python2.4: pygtk-2.10.6-1.win32-py2.4.exe [ From http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.10/ ]
-
- * PyXML: PyXML-0.8.4.win32-py2.4.exe [ From http://pyxml.sourceforge.net/ ]
-
- * Pygobject: pygobject-2.12.3-1.win32-py2.4.exe [ From http://ftp.gnome.org/pub/GNOME/binaries/win32/pygobject/2.12/ ]
-
- * Pycairo: pycairo-1.2.6-1.win32-py2.4.exe [ From http://ftp.gnome.org/pub/GNOME/binaries/win32/pycairo/1.2/ ]
-
-And eventually the application sources, downloaded from
-http://liris.cnrs.fr/advene/download/index_en.html or from the
-subversion repository svn://liris.cnrs.fr/dev/advene-project/trunk
-
-The bin/advene python scripts tries to autodetect wether it is running
-from a standard location (c:\Program Files\Advene on windows) or from
-a development tree, and setups the right paths in the latter case.
-
-To try the Advene interface without any video player, you can invoke
-it with the -pdummy option, that selects a dummy video player.
-
-* Webserver reactivity
-
-The webserver reactivity problem is due to the interaction of the Gtk
-GUI with threads in python. To alleviate this problem, we try to
-mingle with an internal parameter of the python interpreter. You can
-try to tweak the values of:
-config.data.play_interval
-and
-config.data.noplay_interval
-from the python evaluator, to find values that fit your computer. The
-default value is 100. With a lower value, it seems to work better.
-
diff --git a/examples/Nosferatu_unstable.azp b/examples/Nosferatu_unstable.azp
index d89c466..c2afd8b 100644
Binary files a/examples/Nosferatu_unstable.azp and b/examples/Nosferatu_unstable.azp differ
diff --git a/examples/Nosferatu_v11.azp b/examples/Nosferatu_v12.azp
similarity index 54%
rename from examples/Nosferatu_v11.azp
rename to examples/Nosferatu_v12.azp
index f09bd95..c2afd8b 100644
Binary files a/examples/Nosferatu_v11.azp and b/examples/Nosferatu_v12.azp differ
diff --git a/lib/advene/core/config.py b/lib/advene/core/config.py
index 8e45cdb..c3ca43a 100644
--- a/lib/advene/core/config.py
+++ b/lib/advene/core/config.py
@@ -37,6 +37,14 @@ import mimetypes
import operator
import time
+APP='advene'
+
+def init_gettext():
+ import gettext
+ gettext.bindtextdomain(APP, data.path['locale'])
+ gettext.textdomain(APP)
+ gettext.install(APP, localedir=data.path['locale'], unicode=True)
+
def find_in_path(name):
"""Return the fullpath of the filename name if found in $PATH
@@ -92,13 +100,13 @@ class Config(object):
self.debug=False
self.startup_time=time.time()
-
+
self.config_file=''
self.parse_options()
if os.sys.platform in ( 'win32', 'darwin' ):
self.os=os.sys.platform
- elif 'linux' in os.sys.platform:
+ elif 'linux2' in os.sys.platform:
self.os='linux'
else:
print "Warning: undefined platform: ", os.sys.platform
@@ -398,6 +406,7 @@ class Config(object):
'.avi',
'.dv',
'.flv',
+ '.m4v',
'.mjpg', '.mjpg',
'.mkv',
'.mov',
@@ -543,7 +552,7 @@ class Config(object):
h=self.preferences['history']
if len(h) > self.preferences['history-size-limit']:
self.preferences['history']=h[-self.preferences['history-size-limit']:]
-
+
if self.os == 'darwin':
# Force display-caption disabling on darwin.
self.preferences['display-caption']=False
diff --git a/lib/advene/core/controller.py b/lib/advene/core/controller.py
index 3986981..27c4f5d 100755
--- a/lib/advene/core/controller.py
+++ b/lib/advene/core/controller.py
@@ -71,7 +71,7 @@ import advene.model.tal.context
import advene.util.helper as helper
import advene.util.importer
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
from advene.util.audio import SoundPlayer
from simpletal import simpleTAL, simpleTALES
@@ -236,7 +236,7 @@ class AdveneController(object):
# view, tracer...). Here is a placeholder for keeping their
# reference, indexed by view name. The value is a class.
self.generic_features = {}
-
+
# Event handler initialization
self.event_handler = advene.rules.ecaengine.ECAEngine (controller=self)
self.modifying_events = self.event_handler.catalog.modifying_events
@@ -432,7 +432,7 @@ class AdveneController(object):
if name in self.generic_features:
self.log(_("Warning: redefining an existing feature %s") % name)
self.generic_features[name] = feature_class
-
+
def register_slave_player(self, p):
"""Register a slave video player.
"""
@@ -561,10 +561,10 @@ class AdveneController(object):
def defined_quicksearch_sources(self):
"""Return a list of TitledElements
"""
- return [ helper.TitledElement(expression, label)
+ return [ helper.TitledElement(expression, label)
for (label, expression) in [ (_("All annotations"), "all_annotations") ] + [
(_("Annotations of type %s") % self.get_title(at),
- 'here/annotationTypes/%s/annotations' % at.id) for at in self.package.annotationTypes ] + [ (_("Views"), 'here/views'), (_("Tags"), 'tags'), (_("Ids"), 'ids') ]
+ 'here/annotationTypes/%s/annotations' % at.id) for at in self.package.annotationTypes ] + [ (_("Views"), 'here/views'), (_("Tags"), 'tags'), (_("Ids"), 'ids') ]
]
def search_string(self, searched=None, sources=None, case_sensitive=False):
@@ -597,7 +597,7 @@ class AdveneController(object):
if sources is None:
sources=[ "all_annotations" ]
-
+
# Replace standard \n/\t escape, because \ are parsed by shlex
searched=searched.replace('\\n', '%n').replace('\\t', '%t')
try:
@@ -782,16 +782,6 @@ class AdveneController(object):
self.event_handler.internal_rule (event="PackageLoad",
method=self.manage_package_load)
- if config.data.webserver['mode']:
- try:
- self.server = AdveneWebServer(controller=self, port=config.data.webserver['port'])
- serverthread = threading.Thread (target=self.server.start)
- serverthread.setName("Advene webserver")
- serverthread.start ()
- except socket.error:
- if config.data.os != 'win32':
- self.busy_port_info()
- self.log(_("Deactivating web server"))
media=None
# Arguments handling
for uri in args:
@@ -844,6 +834,17 @@ class AdveneController(object):
self.player.check_player()
+ if config.data.webserver['mode']:
+ try:
+ self.server = AdveneWebServer(controller=self, port=config.data.webserver['port'])
+ serverthread = threading.Thread (target=self.server.start)
+ serverthread.setName("Advene webserver")
+ serverthread.start ()
+ except socket.error:
+ if config.data.os != 'win32':
+ self.busy_port_info()
+ self.log(_("Deactivating web server"))
+ self.server = None
return True
def create_annotation(self, position, type, duration=None, content=None):
@@ -970,7 +971,7 @@ class AdveneController(object):
if snap is not None and snap.height != 0:
self.package.imagecache[snap.date] = helper.snapshot2png(snap)
self.notify('SnapshotUpdate', position=snap.date)
-
+
def update_snapshot (self, position=None):
"""Event handler used to take a snapshot for the given position.
@@ -1009,6 +1010,11 @@ class AdveneController(object):
Cf http://cweiske.de/howto/launch/ for details.
"""
+ if (url.startswith(self.get_urlbase()) and
+ (self.server is None or not self.server.is_running())):
+ # Cannot open a local URL: the webserver is not active
+ self.log(_("Cannot open Advene URL %s: the webserver is not running.") % url)
+ return True
if self.gui and self.gui.open_url_embedded(url):
return True
if config.data.os == 'win32' or config.data.os == 'darwin':
@@ -1090,6 +1096,14 @@ class AdveneController(object):
url=u"%s/view/%s" % (url, defaultview)
return url
+ def get_urlbase(self):
+ """Return the URL base.
+ """
+ if self.server is not None:
+ return self.server.urlbase
+ else:
+ return "http:///"
+
def get_title(self, element, representation=None, max_size=None):
"""Return the title for the given element.
"""
@@ -1398,7 +1412,7 @@ class AdveneController(object):
an.type.mimetype))
an.content.data = annotation.content.data
elif an.type.mimetype == 'image/svg+xml':
- # Use a template for text->SVG conversion.
+ # Use a template for text->SVG conversion.
# FIXME: we should be able to propose a variety of templates, passed as parameter from the GUI
an.content.data = """<svg:svg height="320pt" preserveAspectRatio="xMinYMin meet" version="1" viewBox="0 0 400 320" width="400pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg">
<text fill="green" name="Content" stroke="green" style="stroke-width:1; font-family: sans-serif; font-size: 22" x="8" y="290">%s</text>
@@ -1934,7 +1948,7 @@ class AdveneController(object):
self.log(_("Cannot handle master attribute, the package %s is not imported.") % master_uri)
else:
self.log(_("Checking master package %s for not yet imported elements.") % master_uri)
- self.handle_auto_import(self.package, i[0].package)
+ self.handle_auto_import(p, i[0].package)
return True
@@ -2142,46 +2156,6 @@ class AdveneController(object):
origin=self.player.AbsolutePosition),
notify=notify)
- def generate_sorted_lists (self, position):
- """Return two sorted lists valid for a given position.
-
- (i.e. all annotations beginning or ending after the
- position). The lists are sorted according to the begin and end
- position respectively.
-
- The elements of the list are (annotation, begin, end).
-
- The update_display method only has to check the first element
- of each list. If there is a match, it should trigger the
- events and pop the element.
-
- If there is a seek operation, we should regenerate the lists.
-
- @param position: the current position
- @type position: int
- @return: a tuple of two lists containing triplets
- @rtype: tuple
- """
- l = [ (a, a.fragment.begin, a.fragment.end)
- for a in self.package.annotations
- if a.fragment.begin >= position or a.fragment.end >= position ]
- future_begins = list(l)
- future_ends = l
- future_begins.sort(key=operator.itemgetter(1))
- future_ends.sort(key=operator.itemgetter(2))
-
- #print "Position: %s" % helper.format_time(position)
- #print "Begins: %s\nEnds: %s" % ([ a[0].id for a in future_begins[:4] ],
- # [ a[0].id for a in future_ends[:4] ])
- return future_begins, future_ends
-
- def reset_annotation_lists (self):
- """Reset the future annotations lists."""
- #print "reset annotation lists"
- self.future_begins = None
- self.future_ends = None
- self.active_annotations = []
-
def update_status (self, status=None, position=None, notify=True):
"""Update the player status.
@@ -2193,10 +2167,13 @@ class AdveneController(object):
@param position: an optional position
@type position: Position
"""
+ if isinstance(position, Annotation):
+ position = position.fragment.begin
position_before=self.player.current_position_value
#print "update status:", status, position
- if status == 'set' or status == 'start' or status == 'stop':
- self.reset_annotation_lists()
+ if (status == 'set' or status == 'start' or status == 'stop'):
+ if position != position_before:
+ self.reset_annotation_lists()
if notify:
# Bit of a hack... In a loop context, setting the
# position is done with notify=False, so we do not
@@ -2292,6 +2269,58 @@ class AdveneController(object):
return True
+ def generate_sorted_lists (self, position):
+ """Return two sorted lists and a list of active annotations valid for a given position.
+
+ (i.e. all annotations beginning or ending after the
+ position). The lists are sorted according to the begin and end
+ position respectively.
+
+ The elements of the begin/end lists are (annotation, begin,
+ end). The elements of active_annotations are annotations.
+
+ The update_display method only has to check the first element
+ of each list. If there is a match, it should trigger the
+ events and pop the element.
+
+ If there is a seek operation, we should regenerate the lists.
+
+ @param position: the current position
+ @type position: int
+ @return: a tuple of three lists containing triplets or simple annotations
+ @rtype: tuple
+ """
+ # Substract 20ms to the current position, so that in case the
+ # generate_sorted_lists is triggered due to selecting an
+ # annotation, the annotation is put in future_begins and its
+ # AnnotatioBegin gets correctly notified.
+ position -= 20
+
+ future_begins = []
+ future_ends = []
+ active = []
+
+ for a in self.package.annotations:
+ if a.fragment.begin >= position:
+ future_begins.append( (a, a.fragment.begin, a.fragment.end) )
+ future_ends.append( (a, a.fragment.begin, a.fragment.end) )
+ elif a.fragment.end >= position:
+ future_ends.append( (a, a.fragment.begin, a.fragment.end) )
+ active.append(a)
+ future_begins.sort(key=operator.itemgetter(1))
+ future_ends.sort(key=operator.itemgetter(2))
+
+ #print "Position: %s" % helper.format_time(position)
+ #print "Begins: %s\nEnds: %s" % ([ a[0].id for a in future_begins[:4] ],
+ # [ a[0].id for a in future_ends[:4] ])
+ return future_begins, future_ends, active
+
+ def reset_annotation_lists (self):
+ """Reset the future annotations lists."""
+ self.future_begins = None
+ self.future_ends = None
+ self.active_annotations = []
+
def update (self):
"""Update the information.
@@ -2305,15 +2334,16 @@ class AdveneController(object):
"""
# Process the event queue
self.process_queue()
-
+
p = self.player
pos=self.position_update ()
-
- if pos < self.last_position:
- # We did a seek compared to the last time, so we
- # invalidate the future_begins and future_ends lists
- # as well as the active_annotations
+
+ if pos < self.last_position or pos > self.last_position + 1000:
+ # We did a seek compared to the last time (backward, or
+ # more than 1s forward), so we invalidate the
+ # future_begins and future_ends lists as well as the
+ # active_annotations
self.reset_annotation_lists()
self.last_position = pos
@@ -2340,14 +2370,17 @@ class AdveneController(object):
t = 0
if self.future_begins is None or self.future_ends is None:
- self.future_begins, self.future_ends = self.generate_sorted_lists (pos)
+ self.future_begins, self.future_ends, self.active_annotations = self.generate_sorted_lists(pos)
+ #print "New lists", [a.id for a in self.active_annotations], [t[0].id for t in self.future_begins ]
- if self.future_begins and p.status == p.PlayingStatus:
+ if self.future_begins and (p.status == p.PlayingStatus or p.status == p.PauseStatus):
a, b, e = self.future_begins[0]
+ #print "Future begin", a.id, b, pos
while b <= pos:
# Ignore if we were after the annotation end
self.future_begins.pop(0)
if e > pos:
+ #print "AnnotationBegin", a.id, e, pos
self.notify ("AnnotationBegin",
annotation=a,
immediate=True)
@@ -2357,7 +2390,7 @@ class AdveneController(object):
else:
break
- if self.future_ends and p.status == p.PlayingStatus:
+ if self.future_ends and (p.status == p.PlayingStatus or p.status == p.PauseStatus):
a, b, e = self.future_ends[0]
while e <= pos:
#print "Comparing %d < %d for %s" % (e, pos, a.content.data)
@@ -2435,7 +2468,7 @@ class AdveneController(object):
<strong tal:content="a/content/data">Nom</strong>
</a><br />
<span>(<span tal:content="a/fragment/formatted/begin">Debut</span> - <span tal:content="a/fragment/formatted/end">Fin</span>)</span>
-<br />
+<br />
</div></span>""" % { 'id': elements[0].id,
'title': at_title,
}
diff --git a/lib/advene/core/imagecache.py b/lib/advene/core/imagecache.py
index 5591525..70b3826 100644
--- a/lib/advene/core/imagecache.py
+++ b/lib/advene/core/imagecache.py
@@ -54,7 +54,7 @@ class TypedString(str):
"""String with a mimetype and a timestamp attribute.
"""
def __new__(cls, value=""):
- s=str.__new__(cls, value)
+ s=str.__new__(cls, value)
s.contenttype='text/plain'
s.timestamp=-1
return s
diff --git a/lib/advene/core/plugin.py b/lib/advene/core/plugin.py
index 36093e3..3571f43 100755
--- a/lib/advene/core/plugin.py
+++ b/lib/advene/core/plugin.py
@@ -60,6 +60,9 @@ class PluginCollection(list):
except (PluginException, ImportError, OSError):
# Silently ignore non-plugin files
pass
+ except (SyntaxError, AttributeError), e:
+ print "!!!! Cannot load %s plugin" % fname
+ print unicode(e)
def standard_plugins(self, d):
for name in os.listdir(d):
diff --git a/lib/advene/core/version.py b/lib/advene/core/version.py
index 580057b..b1845b1 100644
--- a/lib/advene/core/version.py
+++ b/lib/advene/core/version.py
@@ -19,7 +19,7 @@
"""Versioning information.
"""
-version='0.46'
-date='20110405'
-svn='7270'
+version='1.0'
+date='20111220'
+svn='7523'
major,minor=[ long(s) for s in version.split('.') ]
diff --git a/lib/advene/core/webcherry.py b/lib/advene/core/webcherry.py
index 9d027d6..f70226c 100644
--- a/lib/advene/core/webcherry.py
+++ b/lib/advene/core/webcherry.py
@@ -459,12 +459,12 @@ class Media(Common):
"""Return the overlayed snapshot for the given annotation.
Snapshot syntax: /media/overlay/package_alias/id
-
+
The expression can be followed by a TALES expression, which is
then used to specify the element to display.
- For instance,
+ For instance,
/media/overlay/advene/a25/fragment/begin/formatted
- or
+ or
/media/overlay/advene/a25/content/parsed/name
"""
res=[]
@@ -2191,10 +2191,19 @@ class AdveneWebServer:
def start(self):
"""Start the webserver.
"""
- self.controller.queue_action(cherrypy.engine.start)
+ def protected_start():
+ try:
+ cherrypy.engine.start()
+ except Exception, e:
+ self.controller.log(_("Cannot start HTTP server: %s") % unicode(e))
+ self.controller.queue_action(protected_start)
return True
def stop(self):
"""Stop the webserver.
"""
cherrypy.engine.exit()
+
+ def is_running(self):
+ return cherrypy.engine.state == cherrypy.engine.states.STARTED
+
diff --git a/lib/advene/gui/edit/elements.py b/lib/advene/gui/edit/elements.py
index d72a7fd..7eb7d2f 100644
--- a/lib/advene/gui/edit/elements.py
+++ b/lib/advene/gui/edit/elements.py
@@ -1308,7 +1308,7 @@ class EditContentForm(EditForm):
self.mimetype=dialog.list_selector_widget(members=l,
preselect=mt,
entry=self.mimetypeeditable)
-
+
hbox.pack_start(self.mimetype)
vbox.pack_start(hbox, expand=False)
@@ -1519,30 +1519,41 @@ class TextContentHandler (ContentHandler):
textview.set_editable (self.editable)
textview.set_wrap_mode (gtk.WRAP_CHAR)
textview.set_auto_indent(True)
+ b.begin_not_undoable_action()
b.set_text (self.element.data)
+ b.end_not_undoable_action()
textview.connect('key-press-event', self.key_pressed_cb)
- def undo(b):
- b=textview.get_buffer()
- if b.can_undo():
- b.undo()
- return True
-
- def redo(b):
- b=textview.get_buffer()
- if b.can_redo():
- b.redo()
- return True
-
if not compact:
- b=gtk.ToolButton(gtk.STOCK_UNDO)
- b.connect('clicked', undo)
- tb.insert(b, -1)
-
- b=gtk.ToolButton(gtk.STOCK_REDO)
- b.connect('clicked', redo)
- tb.insert(b, -1)
-
+ b_undo = gtk.ToolButton(gtk.STOCK_UNDO)
+ tb.insert(b_undo, -1)
+
+ b_redo = gtk.ToolButton(gtk.STOCK_REDO)
+ tb.insert(b_redo, -1)
+
+ def undo_cb(buf):
+ b_undo.set_sensitive(buf.can_undo())
+ b_redo.set_sensitive(buf.can_redo())
+ return True
+
+ def undo(b):
+ b=textview.get_buffer()
+ if b.can_undo():
+ b.undo()
+ undo_cb(b)
+ return True
+
+ def redo(b):
+ b=textview.get_buffer()
+ if b.can_redo():
+ b.redo()
+ undo_cb(b)
+ return True
+
+ textview.get_buffer().connect('changed', undo_cb)
+ b_undo.connect('clicked', undo)
+ b_redo.connect('clicked', redo)
+ undo_cb(textview.get_buffer())
else:
textview = gtk.TextView ()
textview.set_editable (self.editable)
@@ -1786,7 +1797,7 @@ class EditFragmentForm(EditForm):
class EditGenericForm(EditForm):
def __init__(self, title=None, getter=None, setter=None,
- controller=None, editable=True, tooltip=None, type=None, elements=None,
+ controller=None, editable=True, tooltip=None, type=None, elements=None,
focus=False, sizegroup=None):
self.title=title
self.getter=getter
@@ -1921,7 +1932,7 @@ class EditGenericForm(EditForm):
class EditMetaForm(EditGenericForm):
def __init__(self, title=None, element=None, name=None,
namespaceid='advenetool', controller=None,
- editable=True, tooltip=None, type=None,
+ editable=True, tooltip=None, type=None,
elements=None,
focus=False, sizegroup=None):
getter=self.metadata_get_method(element, name, namespaceid)
@@ -2359,7 +2370,7 @@ class EditRelationsForm(EditForm):
other=r.members[0]
hb=gtk.HBox()
- b=RelationRepresentation(r, controller=self.controller, direction=direction)
+ b=RelationRepresentation(r, controller=self.controller, direction=direction)
b.set_alignment(0, 0)
col1.add_widget(b)
hb.pack_start(b, expand=False)
@@ -2368,7 +2379,7 @@ class EditRelationsForm(EditForm):
a.set_alignment(0, 0)
col2.add_widget(a)
hb.pack_start(a, expand=False)
-
+
self.view.pack_start(hb, expand=False)
self.view.show_all()
return
diff --git a/lib/advene/gui/edit/frameselector.py b/lib/advene/gui/edit/frameselector.py
index d48208a..ef408b3 100644
--- a/lib/advene/gui/edit/frameselector.py
+++ b/lib/advene/gui/edit/frameselector.py
@@ -28,7 +28,7 @@ from gettext import gettext as _
class FrameSelector(object):
"""Frame selector interface.
-
+
Given a timestamp, it displays a series of snapshots around
the timestamp and allows to select the most appropriate
one.
@@ -56,7 +56,7 @@ class FrameSelector(object):
# It is initialized in build_widget()
self.frames = []
self.widget = self.build_widget()
-
+
def set_timestamp(self, timestamp):
"""Set the reference timestamp.
@@ -66,10 +66,10 @@ class FrameSelector(object):
self.timestamp = timestamp
self.selected_value = timestamp
self.update_timestamp(timestamp)
-
+
def update_timestamp(self, timestamp, focus_index=None):
"""Set the center timestamp.
-
+
If focus_index is not specified, the center timestamp will get
the focus.
@@ -86,7 +86,7 @@ class FrameSelector(object):
t = 0
else:
index_offset = 0
-
+
matching_index = -1
for (i, f) in enumerate(self.frames):
f.value = t
@@ -204,7 +204,7 @@ class FrameSelector(object):
timestamp = self.selected_value
d.destroy()
return timestamp
-
+
def select_time(self, button=None):
"""General callback.
@@ -215,7 +215,7 @@ class FrameSelector(object):
if self.callback is not None:
self.callback(self.selected_value)
return True
-
+
def build_widget(self):
vb=gtk.VBox()
@@ -265,7 +265,7 @@ class FrameSelector(object):
if self.border_mode in ('left', 'right'):
r.connect('enter-notify-event', enter_bookmark)
r.connect('leave-notify-event', leave_bookmark)
-
+
hb.pack_start(border, expand=False)
hb.pack_start(r, expand=False)
diff --git a/lib/advene/gui/edit/htmleditor.py b/lib/advene/gui/edit/htmleditor.py
index 0695ef8..0d4a65d 100755
--- a/lib/advene/gui/edit/htmleditor.py
+++ b/lib/advene/gui/edit/htmleditor.py
@@ -420,7 +420,7 @@ class HTMLEditor(textview_class, HTMLParser):
pixbuf=None
if pixbuf is None:
- pixbuf=gtk.gdk.pixbuf_new_from_xpm_data(broken_xpm)
+ pixbuf=gtk.gdk.pixbuf_new_from_xpm_data(broken_xpm)
pixbuf._tag=tag
pixbuf._attr=attr
self.insert_pixbuf(pixbuf)
diff --git a/lib/advene/gui/edit/importer.py b/lib/advene/gui/edit/importer.py
index bd1a37a..59bd922 100644
--- a/lib/advene/gui/edit/importer.py
+++ b/lib/advene/gui/edit/importer.py
@@ -45,7 +45,7 @@ class FileImporter(AdhocView):
view_name = _("Importer")
view_id = 'importerview'
- def __init__(self, controller=None, filename=None, message=None, parameters=None):
+ def __init__(self, controller=None, filename=None, message=None, display_unlikely=True, parameters=None):
super(FileImporter, self).__init__(controller=controller)
self.controller=controller
self.parameters=parameters
@@ -54,33 +54,47 @@ class FileImporter(AdhocView):
self.close_on_package_load = False
self.contextual_actions = ()
self.options={
+ 'display-unlikely': display_unlikely,
}
# Flag used to cancel import
self.should_continue = True
# Assume that the view is initialized in the current
- # thread. Store it id, so that we detect if calls
+ # thread. Store its id, so that we detect if calls
# (esp. progress_callback) are made from another thread and
# act accordingly.
self.main_thread_id = thread.get_ident()
self.importer = None
+ self.filename = filename
self.widget=self.build_widget()
- def initial_focus(w, event):
- self.filename_entry.grab_focus()
- # Returning False does not seem enough to remove signal handler.
- self.widget.disconnect(self.sig)
- del self.sig
- return False
- self.sig = self.widget.connect('expose-event', initial_focus)
-
if filename:
- self.filename_entry.set_text(filename)
+ self.fb.set_current_name(filename)
+ self.update_importers(filename=filename)
- def update_importers(self):
- n=unicode(self.filename_entry.get_text())
+ def update_importers(self, filename=None):
+ if filename is not None:
+ n = filename
+ else:
+ n=unicode(self.filename or self.fb.get_uri() or self.fb.get_filename())
+ if n.startswith('file://'):
+ n = n.replace('file://', '')
+ if not self.fb.get_filename():
+ # It was not a filename, hence the Button did not get
+ # updated. Update it explicitly.
+ b = self.fb.get_children()[0]
+ if isinstance(b, gtk.Button):
+ # Normally, the gtk.Button contains a gtk.HBox, which
+ # contains some widgets among which a gtk.Label
+ l = [ c
+ for w in b.get_children()
+ for c in w.get_children()
+ if isinstance(c, gtk.Label) ]
+ if l:
+ # Found the label
+ l[0].set_text(n)
model=self.importers.get_model()
model.clear()
if n.lower().endswith('.azp'):
@@ -97,7 +111,7 @@ class FileImporter(AdhocView):
model.append( ( _("Advene package importer"), dummy_advene_importer, None) )
if valid:
self.importers.set_active(0)
- if invalid:
+ if invalid and self.options['display-unlikely']:
model.append( ( "--- " + _("Not likely") + " ---", None, None) )
for i in invalid:
model.append( (i.name, i, None) )
@@ -124,7 +138,7 @@ class FileImporter(AdhocView):
'statistics': self.importer.statistics_formatted() }
dialog.message_dialog(msg, modal=False)
self.log(msg)
-
+
def convert_file(self, b, *p):
stop_label = _("Stop")
if b.get_label() == stop_label:
@@ -135,11 +149,12 @@ class FileImporter(AdhocView):
b.set_label(stop_label)
self.importers.set_sensitive(False)
- self.filename_entry.set_sensitive(False)
+ self.fb.set_sensitive(False)
ic = self.importers.get_current_element()
- fname = unicode(self.filename_entry.get_text())
- self.widget.get_toplevel().set_title(_('Importing %s') % os.path.basename(fname))
+ fname = unicode(self.filename or self.fb.get_uri() or self.fb.get_filename())
+ if fname.startswith('file://'):
+ fname = fname.replace('file://', '')
if ic == dummy_advene_importer:
# Invoke the package merge functionality.
try:
@@ -189,9 +204,9 @@ class FileImporter(AdhocView):
gtk.gdk.threads_enter()
try:
func(*args, **kw)
- return False
finally:
gtk.gdk.threads_leave()
+ return False
gobject.idle_add(idle_func)
def progress_callback(self, value=None, label=None):
@@ -205,8 +220,14 @@ class FileImporter(AdhocView):
self.progressbar.set_fraction(value)
if label is not None:
self.progressbar.set_text(label)
- while gtk.events_pending():
- gtk.main_iteration()
+ # We could do a "while gtk.events_pending()" but we want to
+ # avoid process lock because of too many pending events
+ # processing.
+ for i in xrange(8):
+ if gtk.events_pending():
+ gtk.main_iteration()
+ else:
+ break
return self.should_continue
def update_options(self, combo):
@@ -226,35 +247,20 @@ class FileImporter(AdhocView):
self.update_importers()
return True
- def select_filename(b):
- if config.data.path['data']:
- d=config.data.path['data']
- else:
- d=None
- filename=dialog.get_filename(title=_("Choose the file to import"),
- action=gtk.FILE_CHOOSER_ACTION_OPEN,
- button=gtk.STOCK_OPEN,
- default_dir=d,
- filter='any')
- if not filename:
- return True
- self.filename_entry.set_text(filename)
- return True
-
line=gtk.HBox()
vbox.pack_start(line, expand=False)
- self.filename_entry=gtk.Entry()
- self.filename_entry.connect('changed', updated_filename)
+ self.fb = gtk.FileChooserButton(_("Choose the file to import"))
+ self.fb.set_local_only(False)
+ self.fb.set_action(gtk.FILE_CHOOSER_ACTION_OPEN)
+ self.fb.set_current_folder(config.data.path['data'])
+ self.fb.connect('file-set', updated_filename)
+ line.pack_start(self.fb)
if self.message is not None:
line.pack_start(gtk.Label(self.message))
- else:
- line.pack_start(gtk.Label(_("Filename")), expand=False)
- line.pack_start(self.filename_entry)
- b=gtk.Button(stock=gtk.STOCK_OPEN)
- b.connect('clicked', select_filename)
- line.pack_start(b, expand=False)
+ self.fb.set_no_show_all(True)
+ self.fb.hide()
self.progressbar=gtk.ProgressBar()
vbox.pack_start(self.progressbar, expand=False)
@@ -270,8 +276,11 @@ class FileImporter(AdhocView):
exp = gtk.Expander(_("Options"))
exp.set_expanded(True)
self.options_frame = gtk.VBox()
- exp.add(self.options_frame)
- vbox.pack_start(exp, expand=False)
+ sw = gtk.ScrolledWindow()
+ sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ sw.add_with_viewport(self.options_frame)
+ exp.add(sw)
+ vbox.pack_start(exp, expand=True)
bb=gtk.HButtonBox()
diff --git a/lib/advene/gui/edit/imports.py b/lib/advene/gui/edit/imports.py
index 761a87b..e420be2 100644
--- a/lib/advene/gui/edit/imports.py
+++ b/lib/advene/gui/edit/imports.py
@@ -414,7 +414,7 @@ class Importer:
if self.controller.gui:
self.controller.gui.init_window_size(window, 'importeditor')
- window.set_icon_list(self.controller.gui.get_icon_list())
+ window.set_icon_list(*self.controller.gui.get_icon_list())
self.buttonbox = gtk.HButtonBox()
diff --git a/lib/advene/gui/edit/montage.py b/lib/advene/gui/edit/montage.py
index 4fd2e01..2537828 100644
--- a/lib/advene/gui/edit/montage.py
+++ b/lib/advene/gui/edit/montage.py
@@ -104,7 +104,7 @@ class Montage(AdhocView):
self.mainbox=None
self.widget=self.build_widget()
-
+
# Annotation widget currently played
self.current_widget = None
@@ -303,7 +303,7 @@ class Montage(AdhocView):
title = _("Extracting %s") % self.view_name,
label = _("Exporting montage %(title)s\nto %%(filename)s") % { 'title': self.view_name })
return True
-
+
def play(self, *p):
"""Play the current montage.
"""
diff --git a/lib/advene/gui/edit/properties.py b/lib/advene/gui/edit/properties.py
index 15dcc33..60b2d2e 100644
--- a/lib/advene/gui/edit/properties.py
+++ b/lib/advene/gui/edit/properties.py
@@ -215,13 +215,13 @@ class EditWidget(gtk.VBox):
combo.show()
for e in entries:
combo.append_text(e)
- combo.set_tooltip_text(help)
+ combo.set_tooltip_text(help)
self.__add_line(1, align, combo)
else:
combo = None
entry = gtk.Entry()
entry.show()
- entry.set_tooltip_text(help)
+ entry.set_tooltip_text(help)
self.__add_line(1, align, entry)
if (passwd):
@@ -318,7 +318,7 @@ class EditWidget(gtk.VBox):
align.add(lbl)
value = self.__get_config(property)
-
+
adjustment = gtk.Adjustment(value, low, up, 10 ** -digits, 1, 0)
spin_button = gtk.SpinButton(adjustment, 1, digits)
spin_button.set_numeric(True)
@@ -499,7 +499,7 @@ class OptionParserGUI(EditWidget):
self.options = {}
super(OptionParserGUI, self).__init__(self.options.__setitem__, self.options.get)
self.parse_options(parser)
-
+
def parse_options(self, parser):
for o in parser.option_list:
name = o.get_opt_string().replace('--', '')
@@ -520,7 +520,14 @@ class OptionParserGUI(EditWidget):
self.add_spin(name, o.dest, o.help, -sys.maxint, sys.maxint)
elif o.type == 'string':
self.options[o.dest] = val or ""
- self.add_entry(name, o.dest, o.help)
+ if o.help.endswith('[F]'):
+ # Filename
+ self.add_file_selector(name, o.dest, o.help)
+ elif o.help.endswith('[D]'):
+ # Directory
+ self.add_dir_selector(name, o.dest, o.help)
+ else:
+ self.add_entry(name, o.dest, o.help)
elif o.type == 'float':
self.options[o.dest] = val
self.add_float_spin(name, o.dest, o.help, -sys.maxint, sys.maxint, 2)
diff --git a/lib/advene/gui/edit/rules.py b/lib/advene/gui/edit/rules.py
index 82bb6a9..4316f40 100755
--- a/lib/advene/gui/edit/rules.py
+++ b/lib/advene/gui/edit/rules.py
@@ -762,7 +762,7 @@ class EditCondition(EditGeneric):
if self.parent is None or isinstance(self.parent, EditRule):
predefined=[
- ('annotation/type/id', _('The id of the annotation type') ),
+ ('annotation/type/id', _('The annotation type') ),
('annotation/content/data', _('The annotation content') ),
] + [
('annotation/content/parsed/%s' % p, _("The value of the %s attribute") % p)
@@ -790,7 +790,7 @@ class EditCondition(EditGeneric):
('element/fragment/begin', _('The element begin time') ),
('element/fragment/end', _('The element end time') ),
('element/fragment/duration', _('The element duration') ),
- ('element/type/id', _('The id of the element type') ),
+ ('element/type/id', _('The element type') ),
('element/incomingRelations', _("The element's incoming relations") ),
('element/outgoingRelations', _("The element's outgoing relations") ),
('here', _('The context')),
@@ -806,10 +806,10 @@ class EditCondition(EditGeneric):
if self.parent is None or isinstance(self.parent, EditRule):
predef=[ ('string:%s' % at.id,
- "id of annotation-type %s" % self.controller.get_title(at) )
+ _("annotation-type %s") % self.controller.get_title(at) )
for at in self.controller.package.annotationTypes
] + [ ('string:%s' % at.id,
- "id of relation-type %s" % self.controller.get_title(at) )
+ _("relation-type %s") % self.controller.get_title(at) )
for at in self.controller.package.relationTypes
] + predefined
elif isinstance(self.parent, EditQuery):
diff --git a/lib/advene/gui/edit/schemaeditor.py b/lib/advene/gui/edit/schemaeditor.py
index d9c9580..4e0e1d7 100644
--- a/lib/advene/gui/edit/schemaeditor.py
+++ b/lib/advene/gui/edit/schemaeditor.py
@@ -1,5 +1,6 @@
#
-# This file is part of Advene.
+# Advene: Annotate Digital Videos, Exchange on the NEt
+# Copyright (C) 2009 Bertrand Richard <bertrand.richard at liris.cnrs.fr>
#
# Advene is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
diff --git a/lib/advene/gui/edit/shapewidget.py b/lib/advene/gui/edit/shapewidget.py
index 153babb..dacd79f 100755
--- a/lib/advene/gui/edit/shapewidget.py
+++ b/lib/advene/gui/edit/shapewidget.py
@@ -46,13 +46,7 @@ import re
import types
from math import atan2, cos, sin
-try:
- import advene.util.ElementTree as ET
-except ImportError:
- try:
- import elementtree.ElementTree as ET
- except ImportError:
- import xml.etree.ElementTree as ET # python 2.5
+import xml.etree.ElementTree as ET
from gettext import gettext as _
@@ -1129,7 +1123,7 @@ class ShapeDrawer:
self.selection = [[None, None], [None, None]]
self.feedback_shape = None
self.shape_class = Rectangle
-
+
self.resize_cursor = gtk.gdk.Cursor(gtk.gdk.BOTTOM_RIGHT_CORNER)
self.inside_cursor = gtk.gdk.Cursor(gtk.gdk.HAND2)
@@ -1146,9 +1140,9 @@ class ShapeDrawer:
self.widget.connect('button-press-event', self.button_press_event)
self.widget.connect('button-release-event', self.button_release_event)
self.widget.connect('motion-notify-event', self.motion_notify_event)
- self.widget.set_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.LEAVE_NOTIFY_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK
+ self.widget.set_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.LEAVE_NOTIFY_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK
| gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.KEY_PRESS_MASK | gtk.gdk.KEY_RELEASE_MASK )
-
+
self.background=None
# FIXME: Hardcoded dimensions are bad.
self.canvaswidth=320
@@ -1493,7 +1487,7 @@ class ShapeDrawer:
def convert_unit(self, s, dimindex=0):
"""Convert a unit.
-
+
dimindex is the index of the unit in the .dimensions tuple: 0
for width, 1 for height.
"""
@@ -1510,7 +1504,7 @@ class ShapeDrawer:
return val
print 'Unhandled SVG dimension format for ', s
return 0
-
+
def parse_svg(self, et, current_path=''):
"""Parse a SVG representation
@@ -1524,7 +1518,7 @@ class ShapeDrawer:
w=et.attrib.get('width')
h=et.attrib.get('height')
if w is not None and h is not None:
- self.svg_dimensions = (self.convert_unit(w, 0),
+ self.svg_dimensions = (self.convert_unit(w, 0),
self.convert_unit(h, 0))
for c in et:
for clazz in defined_shape_classes:
diff --git a/lib/advene/gui/edit/timeadjustment.py b/lib/advene/gui/edit/timeadjustment.py
index 70d33f6..d6e4f6d 100755
--- a/lib/advene/gui/edit/timeadjustment.py
+++ b/lib/advene/gui/edit/timeadjustment.py
@@ -23,11 +23,10 @@ It depends on a Controller instance to be able to interact with the video player
import advene.core.config as config
-import re
import gtk
import advene.util.helper as helper
from advene.gui.widget import TimestampRepresentation
-from advene.gui.util import encode_drop_parameters, decode_drop_parameters, dialog
+from advene.gui.util import encode_drop_parameters, decode_drop_parameters
from gettext import gettext as _
class TimeAdjustment:
@@ -95,7 +94,10 @@ class TimeAdjustment:
al.add(i)
b.add(al)
- b.connect('clicked', self.update_value_cb, incr_value)
+ def increment_value_cb(widget, increment):
+ self.set_value(self.value + increment)
+ return True
+ b.connect('clicked', increment_value_cb, incr_value)
if incr_value < 0:
tip=_("Decrement value by %.2f s") % (incr_value / 1000.0)
else:
@@ -120,7 +122,7 @@ class TimeAdjustment:
width=50
else:
width=100
- self.image=TimestampRepresentation(self.value, self.controller, width, epsilon=1000/25, visible_label=False)
+ self.image=TimestampRepresentation(self.value, self.controller, width, epsilon=1000/25, visible_label=False, callback=self.set_value)
self.image.connect('button-press-event', image_button_press)
self.image.connect('clicked', image_button_clicked)
self.image.set_tooltip_text(_("Click to play\nControl+click to set to current time\Scroll to modify value (with control/shift)\nRight-click to invalidate screenshot"))
@@ -183,12 +185,8 @@ class TimeAdjustment:
elif event.direction == gtk.gdk.SCROLL_UP or event.direction == gtk.gdk.SCROLL_RIGHT:
incr=i
- v=self.value
- v += incr
- if self.callback and not self.callback(v):
+ if not self.set_value(self.value + incr):
return True
- self.value=v
- self.update_display()
return True
if self.editable:
@@ -210,17 +208,11 @@ class TimeAdjustment:
if targetType == config.data.target_type['annotation']:
source_uri=unicode(selection.data, 'utf8').split('\n')[0]
source=self.controller.package.annotations.get(source_uri)
- if self.callback and not self.callback(source.fragment.begin):
- return True
- self.value = source.fragment.begin
- self.update_display()
+ self.set_value(source.fragment.begin)
elif targetType == config.data.target_type['timestamp']:
data=decode_drop_parameters(selection.data)
v=long(float(data['timestamp']))
- if self.callback and not self.callback(v):
- return True
- self.value=v
- self.update_display()
+ self.set_value(v)
else:
print "Unknown target type for drop: %d" % targetType
return True
@@ -243,11 +235,7 @@ class TimeAdjustment:
return True
def use_current_position(self, button):
- v=self.controller.player.current_position_value
- if self.callback and not self.callback(v):
- return True
- self.value=v
- self.update_display()
+ self.set_value(self.controller.player.current_position_value)
return True
def update_snapshot(self, button):
@@ -259,17 +247,12 @@ class TimeAdjustment:
t=unicode(self.entry.get_text())
v=helper.parse_time(t)
if v is not None and v != self.value:
- v=self.check_bound_value(v)
- if self.callback and not self.callback(v):
+ if not self.set_value(v):
return False
- self.value = v
- if self.sync_video:
- self.controller.move_position(self.value, relative=False)
- self.update_display()
return False
def check_bound_value(self, value):
- if value < 0:
+ if value < 0 or value is None:
value = 0
elif (self.controller.cached_duration > 0
and value > self.controller.cached_duration):
@@ -284,20 +267,25 @@ class TimeAdjustment:
self.entry.set_text(helper.format_time(self.value))
self.image.value=self.value
- def update_value_cb(self, widget, increment):
- if not self.editable:
+ def get_widget(self):
+ return self.widget
+
+ def get_value(self):
+ return self.value
+
+ def set_value(self, v):
+ """Set the new value.
+
+ The method does various consistency checks, and can leave the
+ value unset if a callback is defined and returns False.
+ """
+ if self.value == v:
return True
- v=self.check_bound_value(self.value + increment)
+ v = self.check_bound_value(v)
if self.callback and not self.callback(v):
- return True
+ return False
self.value=v
+ self.update_display()
if self.sync_video:
self.controller.move_position(self.value, relative=False)
- self.update_display()
return True
-
- def get_widget(self):
- return self.widget
-
- def get_value(self):
- return self.value
diff --git a/lib/advene/gui/edit/transcribe.py b/lib/advene/gui/edit/transcribe.py
index 5987174..140f9f7 100644
--- a/lib/advene/gui/edit/transcribe.py
+++ b/lib/advene/gui/edit/transcribe.py
@@ -964,18 +964,18 @@ class TranscriptionEdit(AdhocView):
if not self.controller.gui:
self.message(_("Cannot import annotations: no existing interface"))
return True
- at=self.controller.gui.ask_for_annotation_type(text=_("Select the annotation type to import"),
- create=False,
+ at=self.controller.gui.ask_for_annotation_type(text=_("Select the annotation type to import"),
+ create=False,
default=self.controller.package.get_element_by_id(self.options['annotation-type-id']))
if at is None:
return True
self.options['annotation-type-id'] = at.id
-
+
if not at.annotations:
dialog.message_dialog(_("There are no annotations of type %s") % self.controller.get_title(at))
return True
-
+
if not self.buffer_is_empty():
if not dialog.message_dialog(_("This will overwrite the current textual content. Are you sure?"),
icon=gtk.MESSAGE_QUESTION):
@@ -1260,6 +1260,9 @@ class TranscriptionEdit(AdhocView):
elif event.keyval == gtk.keysyms.Page_Up:
self.goto_previous_mark()
return True
+ elif event.keyval == gtk.keysyms.c:
+ self.convert_transcription_cb()
+ return True
elif self.options['autoinsert'] and self.options['automatic-mark-insertion-delay']:
if (gtk.gdk.keyval_to_unicode(event.keyval)
and event.keyval != gtk.keysyms.space
diff --git a/lib/advene/gui/evaluator.py b/lib/advene/gui/evaluator.py
index e3689ad..7f070d5 100644
--- a/lib/advene/gui/evaluator.py
+++ b/lib/advene/gui/evaluator.py
@@ -31,22 +31,22 @@ import inspect
class Evaluator:
"""Evaluator window. Shortcuts:
-
+
F1: display this help
-
+
Control-Return: evaluate the expression. If a selection is
active, evaluate only the selection.
-
+
Control-l: clear the expression buffer
Control-S: save the expression buffer
Control-n: next item in history
Control-p: previous item in history
Control-b: store the expression as a bookmark
Control-space: display bookmarks
-
+
Control-PageUp/PageDown: scroll the output window
Control-s: save the output
-
+
Control-d: display completion possibilities
Tab: perform autocompletion
Control-h: display docstring for element before cursor
diff --git a/lib/advene/gui/main.py b/lib/advene/gui/main.py
index 3261823..7852b91 100755
--- a/lib/advene/gui/main.py
+++ b/lib/advene/gui/main.py
@@ -54,16 +54,13 @@ import locale
print "Using localedir %s" % config.data.path['locale']
-APP='advene'
# Locale initialisation
try:
locale.setlocale(locale.LC_ALL, '')
except locale.Error:
print "Error in locale initialization. Interface translation may be incorrect."
pass
-gettext.bindtextdomain(APP, config.data.path['locale'])
-gettext.textdomain(APP)
-gettext.install(APP, localedir=config.data.path['locale'], unicode=True)
+config.init_gettext()
# The following line is useless, since gettext.install defines _ as a
# builtin. However, code checking applications need to be explicitly
# told that _ is imported.
@@ -83,7 +80,7 @@ import advene.model.tal.context
import advene.core.mediacontrol
import advene.util.helper as helper
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
from advene.util.odict import odict
import advene.util.importer
@@ -200,6 +197,8 @@ class DummyGlade:
elif name == _("Packages"):
self.package_list_menu=gtk.Menu()
i.set_submenu(self.package_list_menu)
+ elif name == _("Open recent"):
+ self.recent_menuitem = i
menu.append(i)
return menu
@@ -231,6 +230,7 @@ class AdveneGUI(object):
"""Initializes the GUI and other attributes.
"""
self.logbuffer = gtk.TextBuffer()
+ self.busy_cursor = gtk.gdk.Cursor(gtk.gdk.WATCH)
self.controller = advene.core.controller.AdveneController()
self.controller.register_gui(self)
@@ -238,12 +238,13 @@ class AdveneGUI(object):
# available through the request/keyname TALES expression
self.controller.register_event('KeyboardInput', _("Input from the keyboard (function keys)"))
- # FIXME: we should use gtk.UIManager
+ # FIXME: we should use gtk.UIManager
menu_definition=(
(_("_File"), (
( _("_New package"), self.on_new1_activate, _("Create a new package")),
( _("_Open package"), self.on_open1_activate, _("Open a package") ),
- ( _("_Save package"), self.on_save1_activate, _("Save the package") ),
+ ( _("Open recent"), None, _("Show recently opened packages") ),
+ ( _("_Save package") + " [Ctrl-S]", self.on_save1_activate, _("Save the package") ),
( _("Save package as..."), self.on_save_as1_activate, _("Save the package as...") ),
( _("Close package"), self.on_close1_activate, _("Close the package") ),
( "", None, "" ),
@@ -257,7 +258,7 @@ class AdveneGUI(object):
( _("Associate a _Video stream"), self.on_select_a_video_stream1_activate, _("Enter a video stream address") ),
( "", None, "" ),
( _("_Import File"), self.on_import_file1_activate, _("Import data from an external source") ),
- ( _("Process video"), self.on_process_video_activate, _("Import data from video processing algorithms")),
+ ( _("_Process video"), self.on_process_video_activate, _("Import data from video processing algorithms")),
( "", None, "" ),
( _("Merge package"), self.on_merge_package_activate, _("Merge elements from another package") ),
( _("Import _DVD chapters"), self.on_import_dvd_chapters1_activate, _("Create annotations based on DVD chapters") ),
@@ -266,12 +267,11 @@ class AdveneGUI(object):
( _("_Website export..."), self.on_website_export_activate, _("Export views to a website") ),
( "", None, "" ),
( _("_Quit"), self.on_exit, "" ),
- ( "", None, "" ),
), "" ),
(_("_Edit"), (
- ( _("_Undo"), self.on_undo1_activate, "" ),
+ ( _("_Undo") + " [Ctrl-Z]", self.undo, "" ),
( _("_Find"), self.on_find1_activate, "" ),
- ( _("_Delete"), self.on_delete1_activate, "" ),
+ ( _("_Delete") + " [Del]", self.on_delete1_activate, "" ),
( _("Create"), (
( _("Schema"), self.on_create_schema_activate, "" ),
( _("View"), self.on_create_view_activate, "" ),
@@ -279,7 +279,7 @@ class AdveneGUI(object):
( _("Annotation Type"), self.on_create_annotation_type_activate, "" ),
( _("Relation Type"), self.on_create_relation_type_activate, "" ),
), "" ),
- ( _("Package _Imports"), self.on_package_imports1_activate, _("Edit imported element from other packages") ),
+# ( _("Package _Imports"), self.on_package_imports1_activate, _("Edit imported element from other packages") ),
# ( _("_Standard Ruleset"), self.on_edit_ruleset1_activate, _("Edit the standard rules") ),
( _("P_ackage properties"), self.on_package_properties1_activate, _("Edit package properties") ),
( _("P_references"), self.on_preferences1_activate, _("Interface preferences") ),
@@ -289,16 +289,16 @@ class AdveneGUI(object):
( _("_Start Web Browser"), self.on_adhoc_web_browser_activate, _("Start the web browser") ),
( "", None, "" ),
( _("Simplify interface"), self.on_simplify_interface_activate, _("Simplify the application interface (toggle)")),
- ( _("Evaluator"), self.on_evaluator2_activate, _("Open python evaluator window") ),
+ ( _("Evaluator") + " [Ctrl-e]", self.on_evaluator2_activate, _("Open python evaluator window") ),
( _("Webserver log"), self.on_webserver_log1_activate, "" ),
- ( _("_MediaInformation"), self.on_view_mediainformation_activate, _("Display information about the media") ),
+ #( _("_MediaInformation"), self.on_view_mediainformation_activate, _("Display information about the media") ),
), "" ),
(_("_Player"), (
( _("Go to _Time"), self.goto_time_dialog, _("Goto a specified time code") ),
( _("Save _ImageCache"), self.on_save_imagecache1_activate, _("Save the contents of the ImageCache to disk") ),
( _("Reset ImageCache"), self.on_reset_imagecache_activate, _("Reset the ImageCache") ),
( _("_Restart player"), self.on_restart_player1_activate, _("Restart the player") ),
- ( _("Capture screenshots"), self.generate_screenshots, _("Generate screenshots for the current video") ),
+ #( _("Capture screenshots"), self.generate_screenshots, _("Generate screenshots for the current video") ),
( _("Update annotation screenshots"), self.update_annotation_screenshots, _("Update screenshots for annotation bounds") ),
( _("Detect shots"), self.on_shotdetect_activate, _("Automatically detect shots")),
( _("_Select player"), None, _("Select the player plugin") ),
@@ -318,34 +318,66 @@ class AdveneGUI(object):
)
self.gui = DummyGlade(menu_definition)
- for (stock, callback, tip) in (
- (gtk.STOCK_OPEN, self.on_open1_activate, _("Open a package file")),
- (gtk.STOCK_SAVE, self.on_save1_activate, _("Save the current package")),
- (gtk.STOCK_SAVE_AS, self.on_save_as1_activate, _("Save the package with a new name")),
- ('moviefile.png', self.on_b_addfile_clicked, _("Select movie file...")),
- (gtk.STOCK_CDROM, self.on_b_selectdvd_clicked, _("Select DVD")),
- (gtk.STOCK_QUIT, self.on_exit, _("Quit")),
- (None, None, None),
- (gtk.STOCK_UNDO, self.undo, _("Undo")),
- (None, None, None),
- ('text_annotation.png', self.on_create_text_annotation, _("Create a text annotation")),
- ('svg_annotation.png', self.on_create_svg_annotation, _("Create a graphical annotation")),
+
+ f = gtk.RecentFilter()
+ f.add_application(gobject.get_application_name())
+ recent = gtk.RecentChooserMenu()
+ recent.add_filter(f)
+ recent.set_show_icons(False)
+ recent.set_sort_type(gtk.RECENT_SORT_MRU)
+ self.gui.recent_menuitem.set_submenu(recent)
+ def open_history_file(rec):
+ fname = rec.get_current_uri()
+ try:
+ self.set_busy_cursor(True)
+ self.controller.load_package (uri=fname)
+ except (OSError, IOError), e:
+ self.set_busy_cursor(False)
+ dialog.message_dialog(_("Cannot load package %(filename)s:\n%(error)s") % {
+ 'filename': fname,
+ 'error': unicode(e)}, gtk.MESSAGE_ERROR)
+ return True
+ recent.connect('item-activated', open_history_file)
+
+ self.toolbuttons = {}
+ for (ident, stock, callback, tip) in (
+ ('open', gtk.STOCK_OPEN, self.on_open1_activate, _("Open a package file")),
+ ('save', gtk.STOCK_SAVE, self.on_save1_activate, _("Save the current package")),
+ ('save_as', gtk.STOCK_SAVE_AS, self.on_save_as1_activate, _("Save the package with a new name")),
+ ('select_file', 'moviefile.png', self.on_b_addfile_clicked, _("Select movie file...")),
+ ('select_dvd', gtk.STOCK_CDROM, self.on_b_selectdvd_clicked, _("Select DVD")),
+ (None, None, None, None),
+ ('undo', gtk.STOCK_UNDO, self.undo, _("Undo")),
+ (None, None, None, None),
+ ('create_text_annotation', 'text_annotation.png', self.on_create_text_annotation, _("Create a text annotation")),
+ ('create_svg_annotation', 'svg_annotation.png', self.on_create_svg_annotation, _("Create a graphical annotation")),
):
if stock is None:
- b=gtk.SeparatorToolItem()
+ b = gtk.SeparatorToolItem()
+ elif ident == 'open':
+ b = gtk.MenuToolButton(stock)
+ b.set_arrow_tooltip_text(_("List recently opened packages"))
+ f = gtk.RecentFilter()
+ f.add_application(gobject.get_application_name())
+ recent = gtk.RecentChooserMenu()
+ recent.add_filter(f)
+ recent.set_show_icons(False)
+ recent.set_sort_type(gtk.RECENT_SORT_MRU)
+ b.set_menu(recent)
+ recent.connect('item-activated', open_history_file)
elif stock.startswith('gtk-'):
- b=gtk.ToolButton(stock)
+ b = gtk.ToolButton(stock)
else:
- i=gtk.Image()
+ i = gtk.Image()
i.set_from_file( config.data.advenefile( ('pixmaps', stock ) ) )
- b=gtk.ToolButton(icon_widget=i)
+ b = gtk.ToolButton(icon_widget=i)
if tip is not None:
b.set_tooltip_text(tip)
if callback is not None:
b.connect('clicked', callback)
self.gui.fileop_toolbar.insert(b, -1)
- if stock == gtk.STOCK_SAVE:
- self.save_toolbutton = b
+ if ident is not None:
+ self.toolbuttons[ident] = b
self.gui.fileop_toolbar.show_all()
# Snapshotter activity monitor
@@ -356,7 +388,7 @@ class AdveneGUI(object):
if s:
m.append(gtk.MenuItem(_("Snapshotter activity")))
m.append(gtk.SeparatorMenuItem())
- m.append(gtk.MenuItem(_("%d queued requests") % s.timestamp_queue.qsize()))
+ m.append(gtk.MenuItem(_("%d queued requests") % s.timestamp_queue.qsize()))
i = gtk.MenuItem(_("Cancel all requests"))
i.connect('activate', lambda i: s.clear() or True)
m.append(i)
@@ -371,7 +403,7 @@ class AdveneGUI(object):
'idle': gtk.image_new_from_file( config.data.advenefile( ( 'pixmaps', 'snapshotter-idle.png') )),
'running': gtk.image_new_from_file( config.data.advenefile( ( 'pixmaps', 'snapshotter-running.png') )),
}
-
+
def set_state(b, state=None):
"""Set the state of the snapshotter icon.
@@ -394,7 +426,7 @@ class AdveneGUI(object):
b = get_pixmap_button('snapshotter-idle.png', display_snapshot_monitor_menu)
b._state = None
- b.set_relief(gtk.RELIEF_NONE)
+ b.set_relief(gtk.RELIEF_NONE)
self.gui.bottombar.pack_start(b, expand=False)
self.snapshotter_monitor_icon = b
b.set_state=set_state.__get__(b)
@@ -406,7 +438,7 @@ class AdveneGUI(object):
return True
b=get_pixmap_button('logmessages.png', display_log_messages)
b.set_tooltip_text(_("Display application log messages"))
- b.set_relief(gtk.RELIEF_NONE)
+ b.set_relief(gtk.RELIEF_NONE)
self.gui.bottombar.pack_start(b, expand=False)
b.show()
@@ -443,29 +475,6 @@ class AdveneGUI(object):
except OSError:
print "OSerror"
pass
- # Adhoc view toolbuttons signal handling
- def adhoc_view_drag_sent(widget, context, selection, targetType, eventTime, name):
- if targetType == config.data.target_type['adhoc-view']:
- selection.set(selection.target, 8, encode_drop_parameters(name=name))
- return True
- return False
-
- def adhoc_view_drag_begin(widget, context, pixmap, view_name):
- w=gtk.Window(gtk.WINDOW_POPUP)
- w.set_decorated(False)
- hb=gtk.HBox()
- i=gtk.Image()
- i.set_from_file(config.data.advenefile( ( 'pixmaps', pixmap) ))
- hb.pack_start(i, expand=False)
- hb.pack_start(gtk.Label(view_name), expand=False)
- w.add(hb)
- w.show_all()
- context.set_icon_widget(w, 16, 16)
- return True
-
- def open_view(widget, name, destination='default'):
- self.open_adhoc_view(name, destination=destination)
- return True
def update_quicksearch_sources(mi):
"""Display a dialog allowing to edit quicksearch-sources setting.
@@ -500,119 +509,6 @@ class AdveneGUI(object):
d.destroy()
return True
- def open_view_menu(widget, name):
- """Open the view menu.
-
- In expert mode, directly open the view. Else, display a
- popup menu proposing the various places where the view can
- be opened.
- """
- if name == 'webbrowser':
- open_view(widget, name)
- return True
-
- if config.data.preferences['expert-mode']:
- # In expert mode, directly open the view. Experts know
- # how to use drag and drop anyway.
- open_view(widget, name)
- return True
-
- menu=gtk.Menu()
-
- for (label, destination) in (
- (_("Open this view..."), 'default'),
- (_("...in its own window"), 'popup'),
- (_("...embedded east of the video"), 'east'),
- (_("...embedded west of the video"), 'west'),
- (_("...embedded south of the video"), 'south'),
- (_("...embedded at the right of the window"), 'fareast')):
- item = gtk.MenuItem(label)
- item.connect('activate', open_view, name, destination)
- menu.append(item)
-
- menu.show_all()
- menu.popup(None, None, None, 0, gtk.get_current_event_time())
-
- return True
-
- # Populate the View submenu
- menu = self.gui.adhoc_view_menuitem.get_submenu()
- it = gtk.MenuItem(_("All available views"))
- menu.prepend(it)
- it.show()
- m = gtk.Menu()
- it.set_submenu(m)
- for name in sorted(self.registered_adhoc_views, reverse=True):
- cl=self.registered_adhoc_views[name]
- it=gtk.MenuItem(cl.view_name, use_underline=False)
- it.set_tooltip_text(cl.tooltip)
- it.connect('activate', open_view_menu, name)
- m.prepend(it)
-
- # Generate the adhoc view buttons
- hb=self.gui.adhoc_hbox
- item_index = 0
- for name, tip, pixmap in (
- ('timeline', _('Timeline'), 'timeline.png'),
- ('tree', _('Tree view'), 'treeview.png'),
- ('finder', _('Package finder'), 'finder.png'),
- ('transcription', _('Transcription of annotations'), 'transcription.png'),
-
- ('', '', ''),
- ('transcribe', _('Note-taking editor'), 'transcribe.png'),
- ('activebookmarks', _('Active bookmarks'), 'bookmarks.png'),
- ('schemaeditor', _("Schema editor"), 'schemaeditor.png'),
- ('', '', ''),
-
- ('tagbag', _("Bag of tags"), 'tagbag.png'),
- ('browser', _('TALES explorer'), 'browser.png'),
- ('montage', _("Dynamic montage"), 'montage.png'),
- ('videoplayer', _("Video player"), 'videoplayer.png'),
- ('', '', ''),
-
- ('webbrowser', _('Open a comment view in the web browser'), 'web.png'),
- ('comment', _("Create or open a comment view"), 'comment.png'),
- ('', '', ''),
-
- ('editaccumulator', _('Edit window placeholder (annotation and relation edit windows will be put here)'), 'editaccumulator.png'),
- ('editionhistory', _("Display edition history"), 'editionhistory.png'),
- ('tracepreview', _("Visualise the activity trace preview"), 'trace.png'),
- ('tracetimeline', _("Visualise the activity trace as a timeline"), 'tracetimeline.png'),
- ):
- if not name:
- # Separator
- b=gtk.VSeparator()
- hb.pack_start(b, expand=False, padding=5)
-
- it = gtk.SeparatorMenuItem()
- menu.insert(it, item_index)
- item_index = item_index + 1
- continue
- if name in ('browser', 'schemaeditor') and not config.data.preferences['expert-mode']:
- continue
- if name not in ('webbrowser', 'comment') and not name in self.registered_adhoc_views:
- self.log("Missing basic adhoc view %s" % name)
- continue
- b=gtk.Button()
- i=gtk.Image()
- i.set_from_file(config.data.advenefile( ( 'pixmaps', pixmap) ))
- b.add(i)
- b.set_tooltip_text(tip)
- b.connect('drag-begin', adhoc_view_drag_begin, pixmap, tip)
- b.connect('drag-data-get', adhoc_view_drag_sent, name)
- b.connect('clicked', open_view_menu, name)
- b.drag_source_set(gtk.gdk.BUTTON1_MASK,
- config.data.drag_type['adhoc-view'], gtk.gdk.ACTION_COPY)
- hb.pack_start(b, expand=False)
- if name in self.registered_adhoc_views:
- it = gtk.MenuItem(self.registered_adhoc_views[name].view_name, use_underline=False)
- it.connect('activate', open_view_menu, name)
- it.set_tooltip_text(tip)
- menu.insert(it, item_index)
- item_index = item_index + 1
- hb.show_all()
- menu.show_all()
-
# Trace switch button
tsb = self.gui.traces_switch
b=gtk.Button()
@@ -698,6 +594,11 @@ class AdveneGUI(object):
# Populate default STBV and type lists
self.update_gui()
+ def init_gettext(self):
+ """Proxy for the module-level init_gettext method.
+ """
+ config.init_gettext()
+
def get_icon_list(self):
"""Return the list of icon pixbuf appropriate for Window.set_icon_list.
"""
@@ -708,6 +609,11 @@ class AdveneGUI(object):
self._icon_list=[ i for i in l if i is not None ]
return self._icon_list
+ def set_busy_cursor(self, busy=False):
+ """Un/Set the busy cursor for the main window.
+ """
+ self.gui.win.window.set_cursor(self.busy_cursor if busy else None)
+
def update_player_labels(self):
"""Update the representation of player status.
@@ -1067,7 +973,7 @@ class AdveneGUI(object):
self.log(_('%(search)s has been replaced by %(replace)s in %(count)d element(s).') % locals())
d.destroy()
return True
-
+
def render_montage_dialog(self, elements, basename=None, title=None, label=None):
"""Extract a montage/annotation to a new video.
"""
@@ -1080,7 +986,7 @@ class AdveneGUI(object):
if label is None:
label = _("Exporting video montage/fragment to %%(filename)s")
- filename = dialog.get_filename(title=_("Please choose a destination filename"),
+ filename = dialog.get_filename(title=_("Please choose a destination filename"),
action=gtk.FILE_CHOOSER_ACTION_SAVE,
button=gtk.STOCK_SAVE,
default_file = basename,
@@ -1088,7 +994,7 @@ class AdveneGUI(object):
if filename is None:
return
m = MontageRenderer(self.controller, elements)
-
+
w = gtk.Window()
w.set_title(title)
v = gtk.VBox()
@@ -1097,7 +1003,7 @@ class AdveneGUI(object):
pg = gtk.ProgressBar()
v.pack_start(pg, expand=False)
-
+
hb = gtk.HButtonBox()
b = gtk.Button(stock=gtk.STOCK_CLOSE)
def close_encoder(b):
@@ -1107,7 +1013,7 @@ class AdveneGUI(object):
b.connect('clicked', close_encoder)
hb.pack_start(b, expand=False)
v.pack_start(hb, expand=False)
-
+
w.add(v)
w.show_all()
@@ -1128,7 +1034,7 @@ class AdveneGUI(object):
# FIXME: for debugging
self.renderer = m
return True
-
+
def main (self, args=None):
"""Mainloop : Gtk mainloop setup.
@@ -1214,10 +1120,6 @@ class AdveneGUI(object):
self.visual_id = None
- # Populate the file history menu
- for filename in config.data.preferences['history']:
- self.append_file_history_menu(filename)
-
def build_player_menu(menu):
if menu.get_children():
# The menu was previously populated, but the player may have changed.
@@ -1239,6 +1141,146 @@ class AdveneGUI(object):
i.show()
return True
+ # Adhoc view toolbuttons signal handling
+ def adhoc_view_drag_sent(widget, context, selection, targetType, eventTime, name):
+ if targetType == config.data.target_type['adhoc-view']:
+ selection.set(selection.target, 8, encode_drop_parameters(name=name))
+ return True
+ return False
+
+ def adhoc_view_drag_begin(widget, context, pixmap, view_name):
+ w=gtk.Window(gtk.WINDOW_POPUP)
+ w.set_decorated(False)
+ hb=gtk.HBox()
+ i=gtk.Image()
+ i.set_from_file(config.data.advenefile( ( 'pixmaps', pixmap) ))
+ hb.pack_start(i, expand=False)
+ hb.pack_start(gtk.Label(view_name), expand=False)
+ w.add(hb)
+ w.show_all()
+ context.set_icon_widget(w, 16, 16)
+ return True
+
+ def open_view(widget, name, destination='default'):
+ self.open_adhoc_view(name, destination=destination)
+ return True
+
+ def open_view_menu(widget, name):
+ """Open the view menu.
+
+ In expert mode, directly open the view. Else, display a
+ popup menu proposing the various places where the view can
+ be opened.
+ """
+ if name == 'webbrowser':
+ open_view(widget, name)
+ return True
+
+ if config.data.preferences['expert-mode']:
+ # In expert mode, directly open the view. Experts know
+ # how to use drag and drop anyway.
+ open_view(widget, name)
+ return True
+
+ menu=gtk.Menu()
+
+ for (label, destination) in (
+ (_("Open this view..."), 'default'),
+ (_("...in its own window"), 'popup'),
+ (_("...embedded east of the video"), 'east'),
+ (_("...embedded west of the video"), 'west'),
+ (_("...embedded south of the video"), 'south'),
+ (_("...embedded at the right of the window"), 'fareast')):
+ item = gtk.MenuItem(label)
+ item.connect('activate', open_view, name, destination)
+ menu.append(item)
+
+ menu.show_all()
+ menu.popup(None, None, None, 0, gtk.get_current_event_time())
+
+ return True
+
+ # Populate the View submenu
+ menu = self.gui.adhoc_view_menuitem.get_submenu()
+ it = gtk.MenuItem(_("_All available views"))
+ menu.prepend(it)
+ it.show()
+ m = gtk.Menu()
+ it.set_submenu(m)
+ for name in sorted(self.registered_adhoc_views, reverse=True):
+ cl=self.registered_adhoc_views[name]
+ it=gtk.MenuItem('_' + cl.view_name, use_underline=True)
+ it.set_tooltip_text(cl.tooltip)
+ it.connect('activate', open_view_menu, name)
+ m.prepend(it)
+
+ # Generate the adhoc view buttons
+ hb=self.gui.adhoc_hbox
+ item_index = 0
+ for name, tip, pixmap in (
+ ('timeline', _('Timeline'), 'timeline.png'),
+ ('tree', _('Tree view'), 'treeview.png'),
+ ('finder', _('Package finder'), 'finder.png'),
+ ('transcription', _('Transcription of annotations'), 'transcription.png'),
+
+ ('', '', ''),
+ ('transcribe', _('Note-taking editor'), 'transcribe.png'),
+ ('activebookmarks', _('Active bookmarks'), 'bookmarks.png'),
+ ('schemaeditor', _("Schema editor"), 'schemaeditor.png'),
+ ('', '', ''),
+
+ ('tagbag', _("Bag of tags"), 'tagbag.png'),
+ ('browser', _('TALES explorer'), 'browser.png'),
+ ('montage', _("Dynamic montage"), 'montage.png'),
+ ('videoplayer', _("Video player"), 'videoplayer.png'),
+ ('', '', ''),
+
+ ('webbrowser', _('Open a comment view in the web browser'), 'web.png'),
+ ('comment', _("Create or open a comment view"), 'comment.png'),
+ ('', '', ''),
+
+ ('editaccumulator', _('Edit window placeholder (annotation and relation edit windows will be put here)'), 'editaccumulator.png'),
+ ('editionhistory', _("Display edition history"), 'editionhistory.png'),
+ ('tracepreview', _("Visualise the activity trace preview"), 'trace.png'),
+ ('tracetimeline', _("Visualise the activity trace as a timeline"), 'tracetimeline.png'),
+ ):
+ if not name:
+ # Separator
+ b=gtk.VSeparator()
+ hb.pack_start(b, expand=False, padding=5)
+
+ it = gtk.SeparatorMenuItem()
+ menu.insert(it, item_index)
+ item_index = item_index + 1
+ continue
+ if name in ('browser', 'schemaeditor') and not config.data.preferences['expert-mode']:
+ continue
+ if name not in ('webbrowser', 'comment') and not name in self.registered_adhoc_views:
+ self.log("Missing basic adhoc view %s" % name)
+ continue
+ b=gtk.Button()
+ i=gtk.Image()
+ i.set_from_file(config.data.advenefile( ( 'pixmaps', pixmap) ))
+ b.add(i)
+ b.set_tooltip_text(tip)
+ b.connect('drag-begin', adhoc_view_drag_begin, pixmap, tip)
+ b.connect('drag-data-get', adhoc_view_drag_sent, name)
+ b.connect('clicked', open_view_menu, name)
+ b.drag_source_set(gtk.gdk.BUTTON1_MASK,
+ config.data.drag_type['adhoc-view'], gtk.gdk.ACTION_COPY)
+ hb.pack_start(b, expand=False)
+ if name == 'webbrowser' and (self.controller.server is None or not self.controller.server.is_running()):
+ b.set_sensitive(False)
+ b.set_tooltip_text(_("The webserver could not be started. Static views cannot be accessed."))
+ if name in self.registered_adhoc_views:
+ it = gtk.MenuItem(self.registered_adhoc_views[name].view_name, use_underline=False)
+ it.connect('activate', open_view_menu, name)
+ it.set_tooltip_text(tip)
+ menu.insert(it, item_index)
+ item_index = item_index + 1
+ hb.show_all()
+ menu.show_all()
+
menu=gtk.Menu()
self.gui.select_player_menuitem.set_submenu(menu)
menu.connect('map', build_player_menu)
@@ -1364,7 +1406,7 @@ class AdveneGUI(object):
def update_loop_button(self):
"""Update the loop button tooltip.
"""
- b=self.loop_toggle_button
+ b=self.player_toolbar.buttons['loop']
if self.current_annotation is None:
mes=_("Select an annotation to loop on it")
else:
@@ -1457,6 +1499,7 @@ class AdveneGUI(object):
return True
edit_stbv_button=get_small_stock_button(gtk.STOCK_EDIT, on_edit_current_stbv_clicked)
+ edit_stbv_button.set_tooltip_text(_("Edit the current dynamic view."))
hb.pack_start(edit_stbv_button, expand=False)
def on_stbv_combo_changed (combo=None):
@@ -1467,10 +1510,10 @@ class AdveneGUI(object):
return False
stbv=combo.get_model().get_value(i, 1)
if stbv is None:
- edit_stbv_button.set_tooltip_text(_("Create a new dynamic view."))
+ edit_stbv_button.set_sensitive(False)
combo.props.tooltip_text=_("No dynamic view")
else:
- edit_stbv_button.set_tooltip_text(_("Edit the current dynamic view."))
+ edit_stbv_button.set_sensitive(True)
combo.props.tooltip_text=self.controller.get_title(stbv)
self.controller.activate_stbv(stbv)
return True
@@ -1489,6 +1532,7 @@ class AdveneGUI(object):
ti.add(self.audio_volume)
self.audio_volume.connect('value-changed', volume_change)
self.player_toolbar.insert(ti, -1)
+ self.player_toolbar.buttons['volume'] = ti
# Append the volume control to the toolbar
def rate_change(spin):
@@ -1504,6 +1548,7 @@ class AdveneGUI(object):
ti.add(self.rate_control)
self.rate_control.connect('value-changed', rate_change)
self.player_toolbar.insert(ti, -1)
+ self.player_toolbar.buttons['rate'] = ti
# Append the loop checkitem to the toolbar
def loop_toggle_cb(b):
@@ -1512,7 +1557,7 @@ class AdveneGUI(object):
if b.get_active():
if self.current_annotation:
def action_loop(context, target):
- if (self.loop_toggle_button.get_active()
+ if (self.player_toolbar.buttons['loop'].get_active()
and context.globals['annotation'] == self.current_annotation):
self.controller.update_status('set', self.current_annotation.fragment.begin)
return True
@@ -1532,10 +1577,11 @@ class AdveneGUI(object):
self.controller.event_handler.remove_rule(self.annotation_loop_rule, type_="internal")
return True
- self.loop_toggle_button=gtk.ToggleToolButton(gtk.STOCK_REFRESH)
+ b = gtk.ToggleToolButton(gtk.STOCK_REFRESH)
+ self.player_toolbar.buttons['loop'] = b
self.update_loop_button()
- self.loop_toggle_button.connect('toggled', loop_toggle_cb)
- self.player_toolbar.insert(self.loop_toggle_button, -1)
+ b.connect('toggled', loop_toggle_cb)
+ self.player_toolbar.insert(b, -1)
# Append the player status label to the toolbar
ts=gtk.SeparatorToolItem()
@@ -1656,7 +1702,7 @@ class AdveneGUI(object):
self.pane['fareast'].show_all()
- self.popupwidget.display_message(_("You can drag and drop view icons (timeline, treeview, transcription...) in this notebook to embed various views."), timeout=10000, title=_("Information"))
+ self.popupwidget.display_message(_("You can drag and drop view icons (timeline, treeview, transcription...) in notebooks to embed various views."), timeout=30000, title=_("Information"))
return self.pane['fareast']
@@ -1733,7 +1779,7 @@ class AdveneGUI(object):
"""
widget.connect('key-press-event', self.process_fullscreen_shortcuts)
widget.connect('key-press-event', self.process_player_shortcuts)
- widget.connect('scroll-event', self.on_slider_scroll_event)
+ widget.connect('scroll-event', self.on_slider_scroll_event)
def updated_player_cb(self, context, parameter):
self.update_player_labels()
@@ -1889,7 +1935,7 @@ class AdveneGUI(object):
def is_focus_on_editable(self):
"""Returns True if the focus is in an editable component.
-
+
If not, we can activate control_key_shortcuts without the Control modifier.
"""
# For the moment, we only check if we are in full or simplified GUI state.
@@ -1997,7 +2043,7 @@ class AdveneGUI(object):
def get_player_control_toolbar(self):
"""Return a player control toolbar.
-
+
It has a buttons attribute, which holds references to the buttons according to an identifier.
"""
tb=gtk.Toolbar()
@@ -2074,7 +2120,7 @@ class AdveneGUI(object):
checkbox to activate/deactivate looping.
"""
self.set_current_annotation(a)
- self.loop_toggle_button.set_active(True)
+ self.player_toolbar.buttons['loop'].set_active(True)
return True
def debug_cb(self, window, event, *p):
@@ -2150,7 +2196,59 @@ class AdveneGUI(object):
except AttributeError:
pass
return True
-
+
+ def save_snapshot_as(self, position, filename=None, retry=True):
+ """Save the snapshot for the given position into a file.
+
+ If supported by the player, it will save the full-resolution screenshot.
+ """
+ def do_save_as(fname, png_data, notify=False):
+ try:
+ f = open(fname, 'wb')
+ f.write(str(png_data))
+ f.close()
+ self.controller.log(_("Screenshot saved to %s") % fname)
+ if notify:
+ self.controller.queue_action(dialog.message_dialog, _("Screenshot saved in\n %s") % unicode(fname), modal=False)
+ except (IOError, OSError), e:
+ self.controller.queue_action(dialog.message_dialog, _("Could not save screenshot:\n %s") % unicode(e), icon=gtk.MESSAGE_ERROR, modal=False)
+
+ if filename is None:
+ name = "%s-%010d.png" % (
+ os.path.splitext(
+ os.path.basename(
+ self.controller.get_default_media()))[0],
+ position)
+ filename = dialog.get_filename(title=_("Save screenshot to..."),
+ action=gtk.FILE_CHOOSER_ACTION_SAVE,
+ button=gtk.STOCK_SAVE,
+ default_file=name)
+
+ if filename is not None:
+ if hasattr(self.controller.player, 'async_fullres_snapshot'):
+ def save_callback(snapshot=None, message=None):
+ if snapshot is None and message is not None:
+ self.controller.queue_action(dialog.message_dialog, message)
+ elif snapshot:
+ if abs(snapshot.date - position) > 100:
+ # FIXME: It can be due to an
+ # initialisation issue in the snapshotter,
+ # on first invocation. Hack around the issue for now.
+ if retry:
+ self.controller.queue_action(self.save_snapshot_as, position, filename, retry=False)
+ else:
+ self.controller.queue_action(dialog.message_dialog, _("Could not take snapshot with enough precision"), modal=False)
+ else:
+ do_save_as(filename, snapshot.data, notify=True)
+ else:
+ self.controller.log("Unknown problem in full-resolution snapshot")
+ # Can capture full-res snapshot
+ self.controller.player.async_fullres_snapshot(position - 20, save_callback)
+ else:
+ do_save_as(filename,
+ self.controller.package.imagecache.get(position))
+ return True
+
def export_element(self, element):
def generate_default_filename(filter, filename=None):
"""Generate a filename for the given filter.
@@ -2278,27 +2376,6 @@ class AdveneGUI(object):
stbv_combo.show_all()
return True
- def append_file_history_menu(self, filename):
- """Add the filename at the end of the filemenu Glade widget.
- """
- def open_history_file(button, fname):
- try:
- self.controller.load_package (uri=fname)
- except (OSError, IOError), e:
- dialog.message_dialog(_("Cannot load package %(filename)s:\n%(error)s") % {
- 'filename': fname,
- 'error': unicode(e)}, gtk.MESSAGE_ERROR)
- return True
-
- # FIXME: should use gtk.RecentChooserMenu
- menu=self.gui.menubar.get_children()[0].get_submenu()
- i=gtk.MenuItem(label=unicode(os.path.basename(filename)), use_underline=False)
- i.connect('activate', open_history_file, filename)
- i.set_tooltip_text(_("Open %s") % filename)
-
- i.show()
- menu.append(i)
-
def build_utbv_menu(self, action=None):
if action is None:
action = self.controller.open_url
@@ -2381,7 +2458,8 @@ class AdveneGUI(object):
if not hasattr(v, '_destination'):
continue
# Do not save permanent widgets
- if v in self.viewbook[v._destination].permanent_widgets:
+ book = self.viewbook.get(v._destination)
+ if book and v in book.permanent_widgets:
continue
options, args = v.get_save_arguments()
if not with_arguments:
@@ -2426,10 +2504,10 @@ class AdveneGUI(object):
elif node.tag == 'layout':
layout=node
# Restore layout
- if layout and not preserve_layout:
+ if layout is not None and not preserve_layout:
w=self.gui.win
w.move(long(layout.attrib['x']), long(layout.attrib['y']))
- w.resize(min(long(layout.attrib['width']), gtk.gdk.screen_width()),
+ w.resize(min(long(layout.attrib['width']), gtk.gdk.screen_width()),
min(long(layout.attrib['height']), gtk.gdk.screen_height()))
for pane in layout:
if pane.tag == 'pane' and pane.attrib['id'] in self.pane:
@@ -2587,7 +2665,8 @@ class AdveneGUI(object):
'error': unicode(e)}).encode('latin1')
view=None
if view is not None and view.widget.get_parent() is not None:
- # Widget is already displayed.
+ # Widget is already displayed. Present it.
+ view.widget.get_toplevel().present()
view=None
label=_("Editing %s") % self.controller.get_title(element)
elif name == 'editaccumulator':
@@ -2697,7 +2776,7 @@ class AdveneGUI(object):
pass
# Reset quicksearch source value
config.data.preferences['quicksearch-sources']=[ "all_annotations" ]
- pass
+ self.set_busy_cursor(False)
def manage_package_load (self, context, parameters):
"""Event Handler executed after loading a package.
@@ -2715,13 +2794,8 @@ class AdveneGUI(object):
'relations': helper.format_element_name('relation',
len(p.relations))
})
-
- h=config.data.preferences['history']
- if not p.uri in h and not p.uri.endswith('new_pkg'):
- h.append(p.uri)
- self.append_file_history_menu(p.uri)
- # Keep the 5 last elements
- config.data.preferences['history']=h[-config.data.preferences['history-size-limit']:]
+ if not p.uri.endswith('new_pkg'):
+ gtk.recent_manager_get_default().add_item(p.uri)
# Create the content indexer
p._indexer=Indexer(controller=self.controller,
@@ -2729,6 +2803,7 @@ class AdveneGUI(object):
abbreviations=self.text_abbreviations)
p._indexer.initialize()
+ # FIXME: it should not be here, but in activate, and called only once
self.controller.queue_action(self.check_for_default_adhoc_view, p)
return True
@@ -2754,9 +2829,9 @@ class AdveneGUI(object):
t=" - ".join((_("Advene"), unicode(os.path.basename(self.controller.package.uri)), self.controller.get_title(self.controller.package)))
if self.controller.package._modified:
t += " (*)"
- self.save_toolbutton.set_sensitive(True)
+ self.toolbuttons['save'].set_sensitive(True)
else:
- self.save_toolbutton.set_sensitive(False)
+ self.toolbuttons['save'].set_sensitive(False)
self.gui.win.set_title(t)
return True
@@ -2873,7 +2948,7 @@ class AdveneGUI(object):
def create_element_popup(self, *p, **kw):
"""Wrapper for CreateElementPopup
-
+
This helps to solve a circular import dependency...
"""
return CreateElementPopup(*p, **kw)
@@ -2918,7 +2993,7 @@ class AdveneGUI(object):
# Define variables referencing the opened views
for v in self.adhoc_views:
ev.locals_[v.view_id]=v
-
+
# Hook completer
completer=Completer(textview=ev.source,
controller=self.controller,
@@ -3015,12 +3090,13 @@ class AdveneGUI(object):
This method is regularly called by the Gtk mainloop, and
updates elements with a slower rate than update_display
"""
- vol=self.controller.player.sound_get_volume() / 100.0
+ c = self.controller
+ vol = c.player.sound_get_volume() / 100.0
if self.audio_volume.get_value() != vol:
self.audio_volume.set_value(vol)
def do_save(aliases):
- for alias, p in self.controller.packages.iteritems():
+ for alias, p in c.packages.iteritems():
if alias == 'advene':
continue
if p._modified:
@@ -3028,17 +3104,22 @@ class AdveneGUI(object):
if n.startswith('http:'):
continue
if n.startswith('file://'):
- n=n[7:]
- n=n+'.backup'+e
- print "Temporarily saving ", alias, "as", n
+ n = n[7:]
+ n = n + '.backup' + e
p.save(name=n)
return True
- if self.gui.win.get_title().endswith('(*)') ^ self.controller.package._modified:
+ if self.gui.win.get_title().endswith('(*)') ^ c.package._modified:
self.update_window_title()
+ self.toolbuttons['undo'].set_sensitive(bool(c.undomanager.history))
+ is_playing = (c.player.status in (c.player.PlayingStatus, c.player.PauseStatus))
+ self.toolbuttons['create_text_annotation'].set_sensitive(is_playing)
+ self.toolbuttons['create_svg_annotation'].set_sensitive(is_playing)
+ for l in ('rewind', 'forward', 'previous_frame', 'next_frame', 'loop'):
+ self.player_toolbar.buttons[l].set_sensitive(is_playing)
# Check snapshotter activity
- s = getattr(self.controller.player, 'snapshotter', None)
+ s = getattr(c.player, 'snapshotter', None)
if s:
if s.timestamp_queue.empty():
self.snapshotter_monitor_icon.set_state('idle')
@@ -3046,7 +3127,7 @@ class AdveneGUI(object):
self.snapshotter_monitor_icon.set_state('running')
else:
self.snapshotter_monitor_icon.set_state(None)
-
+
# Check auto-save
if config.data.preferences['package-auto-save'] != 'never':
t=time.time() * 1000
@@ -3054,14 +3135,14 @@ class AdveneGUI(object):
# Need to save
l=[ alias for (alias, p) in self.controller.packages.iteritems() if p._modified and alias != 'advene' ]
if l:
- if self.controller.tracers and config.data.preferences['record-actions']:
+ if c.tracers and config.data.preferences['record-actions']:
try:
- fn = self.controller.tracers[0].export()
+ fn = c.tracers[0].export()
print "trace exported to %s" % fn
except Exception, e:
print "error exporting trace : %s" % unicode(e).encode('utf-8')
if config.data.preferences['package-auto-save'] == 'always':
- self.controller.queue_action(do_save, l)
+ c.queue_action(do_save, l)
else:
# Ask before saving. Use the non-modal dialog
# to avoid locking the interface
@@ -3072,10 +3153,10 @@ class AdveneGUI(object):
# Fix the webserver reaction time on win32
if config.data.os == 'win32':
- if self.controller.player.status in self.active_player_status:
- i=config.data.play_interval
+ if c.player.status in self.active_player_status:
+ i = config.data.play_interval
else:
- i=config.data.noplay_interval
+ i = config.data.noplay_interval
if sys.getcheckinterval() != i:
sys.setcheckinterval(i)
@@ -3426,6 +3507,15 @@ class AdveneGUI(object):
self.open_adhoc_view('shotvalidation', annotationtype=at)
return True
+ def adjust_timestamp(self, t):
+ """Display the FrameSelector and return the selected value.
+ """
+ fs = FrameSelector(self.controller, t,
+ label=_("Click on the frame corresponding to the timestamp value"),
+ border_mode='both')
+ new = fs.get_value(_("Set new timestamp value"))
+ return new
+
def display_statistics(self, annotations, label=None):
"""Display statistics about the given annotations.
"""
@@ -3433,10 +3523,11 @@ class AdveneGUI(object):
label = _("<b>Annotation statistics</b>\n\n")
msg = label
msg += "%d annotations\n" % len(annotations)
- msg += "Min duration : %s\n" % helper.format_time(min( a.fragment.duration for a in annotations))
- msg += "Max duration : %s\n" % helper.format_time(max( a.fragment.duration for a in annotations))
- msg += "Mean duration : %s\n" % helper.format_time(sum( a.fragment.duration for a in annotations) / len(annotations))
- msg += "Total duration : %s\n" % helper.format_time(sum( a.fragment.duration for a in annotations))
+ if annotations:
+ msg += "Min duration : %s\n" % helper.format_time(min( a.fragment.duration for a in annotations))
+ msg += "Max duration : %s\n" % helper.format_time(max( a.fragment.duration for a in annotations))
+ msg += "Mean duration : %s\n" % helper.format_time(sum( a.fragment.duration for a in annotations) / len(annotations))
+ msg += "Total duration : %s\n" % helper.format_time(sum( a.fragment.duration for a in annotations))
dialog.message_dialog(msg)
return True
@@ -3592,6 +3683,7 @@ class AdveneGUI(object):
# Ask to save it first.
dialog.message_dialog(_("An unsaved template package exists\nSave it first."))
else:
+ self.set_busy_cursor(True)
self.controller.load_package ()
return True
@@ -3658,8 +3750,10 @@ class AdveneGUI(object):
return True
try:
+ self.set_busy_cursor(True)
self.controller.load_package (uri=filename, alias=alias)
except (OSError, IOError), e:
+ self.set_busy_cursor(False)
dialog.message_dialog(_("Cannot load package %(filename)s:\n%(error)s") % {
'filename': filename,
'error': unicode(e)}, gtk.MESSAGE_ERROR)
@@ -3798,19 +3892,13 @@ class AdveneGUI(object):
def on_process_video_activate(self, button=None, data=None):
fname = self.controller.get_default_media()
if fname:
- self.open_adhoc_view('importerview', filename=fname, message=_("Processing %s video") % fname)
+ self.open_adhoc_view('importerview', filename=fname, message=_("Processing %s video") % fname,
+ display_unlikely=False)
else:
dialog.message_dialog(_("No associated video file"),
icon=gtk.MESSAGE_ERROR)
return False
- def on_undo1_activate (self, button=None, data=None):
- try:
- self.controller.undomanager.undo()
- except AttributeError:
- pass
- return True
-
def on_find1_activate (self, button=None, data=None):
self.open_adhoc_view('interactivequery', destination='east')
return True
@@ -4238,11 +4326,11 @@ class AdveneGUI(object):
options[_("GL")] = 'gl'
ew.add_option(_("Video output"), "player-vout", _("Video output module"), options)
-
+
ew.add_label(_("Recorder options"))
ew.add_entry(_("Audio input"), 'player-audio-record-device', _("Device name for audio input (with gstrecorder plugin)"))
ew.add_checkbox(_("Record video"), 'player-record-video', _("Record both video and audio"))
-
+
if config.data.preferences['expert-mode']:
ew.add_label(_("<i>Experimental</i>"))
ew.add_checkbox(_("Scroller"), 'display-scroller', _("Embed the caption scroller below the video"))
@@ -4303,7 +4391,7 @@ class AdveneGUI(object):
(_("MacOS X say"), 'macosx'),
(_("Generic (text output)"), 'generic'),
)))
-
+
res=ew.popup()
if res:
player_need_restart = False
@@ -4371,15 +4459,19 @@ class AdveneGUI(object):
self.controller.restart_player ()
return True
- def on_slider_button_press_event (self, button=None, data=None):
+ def on_slider_button_press_event (self, button=None, event=None):
self.slider_move = True
+ if event.button == 1:
+ event.button = 2
return False
- def on_slider_button_release_event (self, button=None, data=None):
+ def on_slider_button_release_event (self, button=None, event=None):
if self.controller.player.playlist_get_list():
p = self.controller.create_position (value = long(self.gui.slider.get_value ()))
self.controller.update_status('set', p)
self.slider_move = False
+ if event.button == 1:
+ event.button = 2
return False
def on_slider_scroll_event (self, widget=None, event=None):
@@ -4494,7 +4586,9 @@ class AdveneGUI(object):
try:
source=Package(uri=filename)
except Exception, e:
- self.log("Cannot load %s file: %s" % (filename, unicode(e)))
+ msg = "Cannot load %s file: %s" % (filename, unicode(e))
+ self.log(msg)
+ dialog.message_dialog(msg, icon=gtk.MESSAGE_ERROR)
return True
m=Merger(self.controller, sourcepackage=source, destpackage=self.controller.package)
m.popup()
@@ -4531,7 +4625,7 @@ class AdveneGUI(object):
return True
if not re.match(r'^[a-zA-Z0-9_]+$', ident):
- dialog.message_dialog(_("Error: the identifier %s contains invalid characters.") % ident)
+ dialog.message_dialog(_("Error: the identifier %s contains invalid characters.") % ident, icon=gtk.MESSAGE_ERROR)
return True
v=helper.get_id(self.controller.package.views, ident)
@@ -4542,7 +4636,7 @@ class AdveneGUI(object):
else:
# Existing view. Check that it is already an workspace-view
if v.content.mimetype != 'application/x-advene-workspace-view':
- dialog.message_dialog(_("Error: the view %s exists and is not a workspace view.") % ident)
+ dialog.message_dialog(_("Error: the view %s exists and is not a workspace view.") % ident, icon=gtk.MESSAGE_ERROR)
return True
create=False
v.title=title
@@ -4621,17 +4715,22 @@ class AdveneGUI(object):
hb=gtk.HBox()
hb.pack_start(gtk.Label(_("Video URL")), expand=False)
video_entry=gtk.Entry()
- video_entry.set_tooltip_text(_("URL for the video, if it is available on a sharing website.\nOnly for GoogleVideo and Youtube for the moment"))
+ video_entry.set_tooltip_text(_("URL for the video, if it is available on a sharing website (Only Youtube for the moment).\n It can also be a h264/ogg file, which will in this case be handled by the HTML5 video player."))
u=self.controller.package.getMetaData(config.data.namespace, 'website-export-video-url')
+ if u is None:
+ u = self.controller.get_default_media()
+ if u:
+ u = os.path.basename(u)
if u is not None:
video_entry.set_text(u)
+
hb.add(video_entry)
v.pack_start(hb, expand=False)
pb=gtk.ProgressBar()
v.pack_start(pb, expand=False)
- w.should_continue = True
+ w.should_continue = False
def cb(val, msg):
if val > 0 and val <= 1.0:
@@ -4644,15 +4743,22 @@ class AdveneGUI(object):
return w.should_continue
def do_conversion(b):
- b.set_sensitive(False)
d=unicode(dirname_entry.get_text())
if not d:
return False
- self.controller.package.setMetaData(config.data.namespace, 'website-export-directory', d)
+
video=unicode(video_entry.get_text())
+
+ if (self.controller.package.getMetaData(config.data.namespace, 'website-export-directory') != d
+ or self.controller.package.getMetaData(config.data.namespace, 'website-export-video-url') != video):
+ self.controller.package._modified = True
+ self.controller.package.setMetaData(config.data.namespace, 'website-export-directory', d)
if video:
self.controller.package.setMetaData(config.data.namespace, 'website-export-video-url', video)
+
b.set_sensitive(False)
+ w.should_continue = True
+
try:
self.controller.website_export(destination=d,
max_depth=max_depth.get_value_as_int(),
@@ -4668,7 +4774,10 @@ class AdveneGUI(object):
dirname_entry.connect('activate', do_conversion)
def do_cancel(*p):
- w.should_continue = False
+ if w.should_continue:
+ w.should_continue = False
+ else:
+ w.destroy()
return True
hb=gtk.HButtonBox()
@@ -4977,7 +5086,6 @@ class AdveneGUI(object):
'-s', str(pb._sensitivity.get_value_as_int()) ]
if config.data.os == 'win32':
- import win32process
kw = { 'creationflags': win32process.CREATE_NO_WINDOW }
else:
kw = { 'preexec_fn': subprocess_setup }
@@ -5009,7 +5117,7 @@ class AdveneGUI(object):
m=exp_re.match(ms[0])
if m:
ts=long(float(m.group(1)) * 10 ** int(m.group(2)))
-
+
pb._datapoints.append(ts)
d=self.controller.cached_duration
if d > 0:
@@ -5019,7 +5127,7 @@ class AdveneGUI(object):
do_gui_operation(pb.set_label_value,
_("Detected shot #%(num)d at %(pos)s ") % {
'num': len(pb._datapoints),
- 'pos': helper.format_time_reference(ts)
+ 'pos': helper.format_time_reference(ts)
},
prg)
diff --git a/lib/advene/gui/plugins/contenthandlers.py b/lib/advene/gui/plugins/contenthandlers.py
index 85ea112..be2e3bb 100644
--- a/lib/advene/gui/plugins/contenthandlers.py
+++ b/lib/advene/gui/plugins/contenthandlers.py
@@ -31,7 +31,7 @@ from advene.gui.util import image_from_position, dialog, decode_drop_parameters,
from advene.gui.edit.rules import EditRuleSet, EditQuery
from advene.rules.elements import RuleSet, SimpleQuery
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
name="Default content handlers"
@@ -182,7 +182,7 @@ class SVGContentHandler (ContentHandler):
dialog.message_dialog(
_("Error while parsing SVG content:\n\n%s") % unicode(e),
icon=gtk.MESSAGE_ERROR)
- if root:
+ if root is not None:
self.view.drawer.clear_objects()
path=''
if self.parent is not None and hasattr(self.parent, 'file_'):
diff --git a/lib/advene/gui/plugins/htmlcontenhandler.py b/lib/advene/gui/plugins/htmlcontenhandler.py
index 25e1ff5..8849459 100644
--- a/lib/advene/gui/plugins/htmlcontenhandler.py
+++ b/lib/advene/gui/plugins/htmlcontenhandler.py
@@ -81,17 +81,13 @@ class AnnotationPlaceholder:
return """<span advene:error="Non-existent annotation"></span>"""
ctx=self.controller.build_context(self.annotation)
- try:
- urlbase=self.controller.server.urlbase.rstrip('/')
- except AttributeError:
- urlbase='http://localhost:1234'
d={
'id': self.annotation.id,
- 'href': urlbase + ctx.evaluateValue('here/player_url'),
- 'imgurl': urlbase + ctx.evaluateValue('here/snapshot_url'),
+ 'href': self.controller.get_urlbase() + ctx.evaluateValue('here/player_url'),
+ 'imgurl': self.controller.get_urlbase() + ctx.evaluateValue('here/snapshot_url'),
'timestamp': helper.format_time(self.annotation.fragment.begin),
'content': self.controller.get_title(self.annotation),
- 'urlbase': urlbase,
+ 'urlbase': self.controller.get_urlbase().rstrip('/'),
}
data=[ """<span class="advene:annotation" advene:annotation="%s" advene:presentation="%s">""" % (self.annotation.id, ':'.join(self.presentation)) ]
@@ -179,9 +175,9 @@ class AnnotationPlaceholder:
context.fill()
pixbuf = gtk.gdk.pixbuf_new_from_data(
- surface.get_data(),
- gtk.gdk.COLORSPACE_RGB, True, 8,
- surface.get_width(), surface.get_height(),
+ surface.get_data(),
+ gtk.gdk.COLORSPACE_RGB, True, 8,
+ surface.get_width(), surface.get_height(),
surface.get_stride())
return pixbuf
@@ -202,7 +198,7 @@ class AnnotationPlaceholder:
pixbuf=png_to_pixbuf(self.annotation.rootPackage.imagecache[self.annotation.fragment.begin],
width=self.width)
elif 'timestamp' in self.presentation:
- # Generate only a timestamp
+ # Generate only a timestamp
pixbuf = self.render_text(helper.format_time(self.annotation.fragment.begin))
elif 'content' in self.presentation:
# Display text
@@ -218,7 +214,7 @@ class AnnotationPlaceholder:
class AnnotationTypePlaceholder:
"""AnnotationType representation.
-
+
presentation is a list of presentation modalities. Values include:
* list : display as a bulleted list
* transcription : display as a transcription
@@ -245,7 +241,7 @@ class AnnotationTypePlaceholder:
def process_enclosed_tags(self, typ, tag, attr=None):
"""Process enclosed data.
-
+
FIXME: what should we do here?
"""
if typ == 'start' and tag == 'span':
@@ -272,15 +268,11 @@ class AnnotationTypePlaceholder:
return """<span advene:error="Non-existent annotation type"></span>"""
ctx=self.controller.build_context(self.annotationtype)
- try:
- urlbase=self.controller.server.urlbase.rstrip('/')
- except AttributeError:
- urlbase='http://localhost:1234'
d={
'id': self.annotationtype.id,
- 'href': urlbase + ctx.evaluateValue('here/absolute_url'),
+ 'href': self.controller.get_urlbase() + ctx.evaluateValue('here/absolute_url'),
'content': self.controller.get_title(self.annotationtype),
- 'urlbase': urlbase,
+ 'urlbase': self.controller.get_urlbase().rstrip('/'),
}
data=[ """<span class="advene:annotationtype" advene:annotationtype="%s" advene:presentation="%s">""" % (self.annotationtype.id, ':'.join(self.presentation)) ]
@@ -297,7 +289,7 @@ class AnnotationTypePlaceholder:
<strong tal:content="a/content/data">Nom</strong>
</a><br />
<span>(<span tal:content="a/fragment/formatted/begin">Debut</span> - <span tal:content="a/fragment/formatted/end">Fin</span>)</span>
-<br />
+<br />
</div>""" % d)
elif 'transcription' in self.presentation:
data.append("""<span class="transcript" tal:repeat="a package/annotationTypes/%(id)s/annotations/sorted" tal:attributes="annotation-id a/id">
@@ -359,9 +351,9 @@ class AnnotationTypePlaceholder:
context.fill()
pixbuf = gtk.gdk.pixbuf_new_from_data(
- surface.get_data(),
- gtk.gdk.COLORSPACE_RGB, True, 8,
- surface.get_width(), surface.get_height(),
+ surface.get_data(),
+ gtk.gdk.COLORSPACE_RGB, True, 8,
+ surface.get_width(), surface.get_height(),
surface.get_stride())
return pixbuf
@@ -552,14 +544,14 @@ class HTMLContentHandler (ContentHandler):
def class_parser(self, tag, attr):
if attr['class'] == 'advene:annotation':
- a=AnnotationPlaceholder(annotation=None,
- controller=self.controller,
+ a=AnnotationPlaceholder(annotation=None,
+ controller=self.controller,
update_pixbuf=self.editor.update_pixbuf)
self.placeholders.append(a)
return a.parse_html(tag, attr)
elif attr['class'] == 'advene:annotationtype':
- a=AnnotationTypePlaceholder(annotationtype=None,
- controller=self.controller,
+ a=AnnotationTypePlaceholder(annotationtype=None,
+ controller=self.controller,
update_pixbuf=self.editor.update_pixbuf)
self.placeholders.append(a)
return a.parse_html(tag, attr)
@@ -616,7 +608,7 @@ class HTMLContentHandler (ContentHandler):
return None
def contextual_popup(self, ctx=None, menu=None):
- """Popup a contextual menu for the given context.
+ """Popup a contextual menu for the given context.
"""
if menu is None:
menu=gtk.Menu()
@@ -655,7 +647,7 @@ class HTMLContentHandler (ContentHandler):
new_menuitem(_("Show timestamp only"), select_presentation, ap, ['timestamp', 'link'])
new_menuitem(_("Show content only"), select_presentation, ap, ['content', 'link'])
new_menuitem(_("Show snapshot only"), select_presentation, ap, ['snapshot', 'link'])
-
+
new_menuitem(_("Show overlayed timestamp"), select_presentation, ap, ['timestamp', 'snapshot', 'link'])
new_menuitem(_("Show overlayed content"), select_presentation, ap, ['overlay', 'link'])
elif getattr(ap, 'annotationtype', None) is not None:
diff --git a/lib/advene/gui/plugins/shotvalidation.py b/lib/advene/gui/plugins/shotvalidation.py
index 561bafc..1299ecd 100644
--- a/lib/advene/gui/plugins/shotvalidation.py
+++ b/lib/advene/gui/plugins/shotvalidation.py
@@ -53,7 +53,10 @@ class ShotValidation(AdhocView):
def set_annotationtype(self, at):
self._annotationtype=at
- self.annotations = sorted(at.annotations, key=lambda a: a.fragment.begin)
+ if self._annotationtype is not None:
+ self.annotations = sorted(at.annotations, key=lambda a: a.fragment.begin)
+ else:
+ self.annotations = []
self.current_index.set_upper(len(self.annotations))
def get_annotationtype(self):
@@ -79,7 +82,7 @@ class ShotValidation(AdhocView):
# Update annotation type, which will trigger an update of self.annotations
self.annotationtype = annotation.type
self.current_index.emit('value-changed')
-
+
def goto_current(self, *p):
"""Select annotation containing current player time.
"""
@@ -135,7 +138,7 @@ class ShotValidation(AdhocView):
if self.index > 0:
self.index = self.index - 1
return True
-
+
def validate_and_next(self, new):
"""Validate the current annotation and display the next one.
"""
@@ -150,7 +153,7 @@ class ShotValidation(AdhocView):
self.controller.split_annotation(annotation, new)
self.message(_("Split annotation #%(current)d into #%(current)d and #%(next)d") % {
'current': i + 1,
- 'next': i + 2
+ 'next': i + 2
})
else:
self.message(_("Cannot split annotation #%(current)d: out of bounds.") % {
@@ -185,7 +188,7 @@ class ShotValidation(AdhocView):
return gtk.Label((_("No annotations to adjust")))
vbox = gtk.VBox()
-
+
self.title_widget = gtk.Label()
vbox.pack_start(self.title_widget)
@@ -205,7 +208,7 @@ class ShotValidation(AdhocView):
# End: display a message ?
pass
self.current_index.connect('value-changed', handle_index_change)
-
+
vbox.add(self.selector.widget)
# Button bar
diff --git a/lib/advene/gui/plugins/tracepreview.py b/lib/advene/gui/plugins/tracepreview.py
index 3b749e6..9514036 100644
--- a/lib/advene/gui/plugins/tracepreview.py
+++ b/lib/advene/gui/plugins/tracepreview.py
@@ -48,7 +48,7 @@ except ImportError:
# fail the module loading, and use them as a guard in register()
goocanvas=None
Group=object
-
+
def register(controller):
if goocanvas is None:
controller.log("Cannot register TracePreview: the goocanvas python module does not seem to be available.")
@@ -118,7 +118,8 @@ class TracePreview(AdhocView):
def scroll_win(self):
a = self.sw.get_vadjustment()
- a.value=a.upper
+ if a:
+ a.value=a.upper
return
def receive(self, trace, event=None, operation=None, action=None):
@@ -163,7 +164,7 @@ class TracePreview(AdhocView):
if l:
a=l[-1]
else:
- a=self.controller.gui.open_adhoc_view(name='tracetimeline', destination='fareast')
+ a=self.controller.gui.open_adhoc_view(name='tracetimeline', destination='fareast')
g = a.find_group(obj_evt)
if g is not None:
a.zoom_on(canvas_item=g)
@@ -194,19 +195,19 @@ class TracePreview(AdhocView):
entetestr = "%s : %s" % (ev_time, "Event not described")
if obj_evt.concerned_object['id']:
entetestr = entetestr + ' (%s)' % obj_evt.concerned_object['id']
- elif obj_evt.name.find('Player')>=0:
- txt = obj_evt.content
- if txt != None:
- # content should be of the form pos_bef \n pos
- #but if it is an old trace, we only got pos
- poss = txt.split('\n')
- if len(poss)>1 and obj_evt.name.find('PlayerSet')>=0:
- txt=poss[1]
- else:
- txt=poss[0]
- else:
- txt = time.strftime("%H:%M:%S", time.gmtime(obj_evt.movietime/1000))
- entetestr = "%s : %s %s" % (ev_time, self.incomplete_operations_names[obj_evt.name], txt)
+ elif obj_evt.name.find('Player')>=0:
+ txt = obj_evt.content
+ if txt != None:
+ # content should be of the form pos_bef \n pos
+ #but if it is an old trace, we only got pos
+ poss = txt.split('\n')
+ if len(poss)>1 and obj_evt.name.find('PlayerSet')>=0:
+ txt=poss[1]
+ else:
+ txt=poss[0]
+ else:
+ txt = time.strftime("%H:%M:%S", time.gmtime(obj_evt.movietime/1000))
+ entetestr = "%s : %s %s" % (ev_time, self.incomplete_operations_names[obj_evt.name], txt)
else:
comp = ''
if obj_evt.concerned_object['type'] == Annotation:
@@ -264,8 +265,8 @@ class TracePreview(AdhocView):
( ('pixmaps', 'traces', 'stop.png')))
elif te.find('Activation')>=0:
pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
- ( ('pixmaps', 'traces', 'web.png')), 20,20)
- else:
+ ( ('pixmaps', 'traces', 'web.png')), 20,20)
+ else:
pb = gtk.gdk.pixbuf_new_from_file_at_size(config.data.advenefile
( ('pixmaps', 'traces', 'error.png')), 20,20)
print 'No icon for %s' % te
@@ -316,18 +317,18 @@ class TracePreview(AdhocView):
anchor = gtk.ANCHOR_CENTER,
font = "Sans 5")
else:
- # no concerned object, we are in an action of navigation
-
- txt = obj_evt.content
- if txt != None:
- # content should be of the form pos_bef \n pos
- #but if it is an old trace, we only got pos
- poss = txt.split('\n')
- if len(poss)>1 and obj_evt.name.find('PlayerSet')>=0:
- txt=poss[1]
- else:
- txt=poss[0]
- else:
+ # no concerned object, we are in an action of navigation
+
+ txt = obj_evt.content
+ if txt != None:
+ # content should be of the form pos_bef \n pos
+ #but if it is an old trace, we only got pos
+ poss = txt.split('\n')
+ if len(poss)>1 and obj_evt.name.find('PlayerSet')>=0:
+ txt=poss[1]
+ else:
+ txt=poss[0]
+ else:
txt = time.strftime("%H:%M:%S", time.gmtime(obj_evt.movietime/1000))
goocanvas.Text (parent = objg,
text = txt,
diff --git a/lib/advene/gui/plugins/tracetimeline.py b/lib/advene/gui/plugins/tracetimeline.py
index 64fccbd..e07d1e0 100644
--- a/lib/advene/gui/plugins/tracetimeline.py
+++ b/lib/advene/gui/plugins/tracetimeline.py
@@ -134,7 +134,7 @@ class TraceTimeline(AdhocView):
self.timefactor = 10.0/824
self.autoscroll = True
self.auto_refresh = False # de/activate autorefresh
- self.auto_refresh_keep_100 = False # autorefresh keep 100% ratio
+ self.auto_refresh_keep_100 = False # autorefresh keep 100% ratio
self.auto_refresh_delay = 1000 # time between 2 refresh in ms
self.ar_tag = None # autorefresh id value
self.links_locked = False
@@ -146,7 +146,7 @@ class TraceTimeline(AdhocView):
for i, act in enumerate(self.tracer.tracemodel['actions']):
self.cols[act] = (None, None)
c=gdk2intrgba(gtk.gdk.color_parse(self.tracer.colormodel['actions'][act]))
- self.context_cols[act]=(i, c, None)
+ self.context_cols[act]=(i, c, None)
self.col_width = 80
self.colspacing = 5
self.active_trace = self.tracer.trace
@@ -155,22 +155,22 @@ class TraceTimeline(AdhocView):
self.populate_head_canvas()
self.realize_id = self.widget.connect_after('realize', self.widget_realized)
self.widget.show_all()
-
+
def widget_realized(self, w):
- w.disconnect(self.realize_id)
+ w.disconnect(self.realize_id)
#self.receive(self.active_trace)
self.tracer.register_view(self)
self.refresh()
def select_trace(self, trace):
"""Change the selected trace, reinitializing the current display.
-
+
Specific display values are stored in self.display_values for each opened trace.
-
+
@type trace: advene.plugins.tracebuilder.Trace
@param trace: the trace to display
-
+
"""
if isinstance(trace, (int, long)):
# Interpret it as an index into the self.tracers.traces
@@ -236,9 +236,9 @@ class TraceTimeline(AdhocView):
self.quicksearch_entry.set_text(_('Search'))
def do_search(button, options):
"""Execute a search query in the active trace.
-
+
Result is added to the selector as a new trace.
-
+
@type options: list
@param options: a list containing the different options for the search query (see tracebuilder for more infos)
"""
@@ -280,14 +280,14 @@ class TraceTimeline(AdhocView):
toolbox.set_style(gtk.TOOLBAR_ICONS)
#toolbox.set_icon_size(gtk.ICON_SIZE_MENU)
#mainbox.pack_start(toolbox, expand=False)
-
-
+
+
htb = gtk.HBox()
- htb.pack_start(toolbox, expand=True)
+ htb.pack_start(toolbox, expand=True)
htb.pack_start(self.search_box, expand=False)
-
+
mainbox.pack_start(htb, expand=False)
-
+
c = len(self.cols)
self.context_canvasX = c*(self.context_col_width+self.context_colspacing) + 5 # 1+4 for select square
@@ -296,7 +296,7 @@ class TraceTimeline(AdhocView):
self.context_canvas = goocanvas.Canvas()
self.context_canvas.set_bounds (0, 0, self.context_canvasX, self.context_canvasY)
self.context_canvas.set_size_request(self.context_canvasX, -1)
-
+
def context_resize(w, alloc):
"""Adapt context canvas on resize (it should always cover the entire allocated space)
"""
@@ -306,7 +306,7 @@ class TraceTimeline(AdhocView):
self.context_canvas.set_bounds(0,0,self.context_canvasX, self.context_canvasY)
self.context_update_time()
self.context_canvas.connect('size-allocate', context_resize)
-
+
hbt.pack_start(self.context_canvas, expand=False)
hbt.pack_start(gtk.VSeparator(), expand=False)
hbt.pack_start(bx, expand=True)
@@ -340,9 +340,9 @@ class TraceTimeline(AdhocView):
self.docgroup = DocGroup(controller=self.controller, canvas=self.doc_canvas, name="Nom du film", x = 15, y=10, w=self.doc_canvas_X-30, h=self.doc_canvas_Y-25, fontsize=8, color_c=0x00000050)
self.canvas.connect('button-press-event', self.canvas_clicked)
self.canvas.connect('button-release-event', self.canvas_release)
-
+
def canvas_resize(w, alloc):
- """Adapt the main canvas, head canvas and the drawing (Evengroups, marks, lines) according to the new allocated space.
+ """Adapt the main canvas, head canvas and the drawing (Evengroups, marks, lines) according to the new allocated space.
"""
if abs(self.canvasX-(alloc.width-20)) < 5:
# resize every 5 pixels
@@ -377,11 +377,11 @@ class TraceTimeline(AdhocView):
self.now_line.props.width *= ratio
self.head_canvas.connect('size-allocate', canvas_resize)
-
+
def doc_canvas_resize(w, alloc):
"""Adapt the doc canvas to the new allocated space and redraw the doc group
"""
- # FIXME : maybe we should not delete and recreate it
+ # FIXME : maybe we should not delete and recreate it
# as we can just move it as everything else :D
#redraw doc_canvas
self.doc_canvas_X = alloc.width
@@ -394,7 +394,7 @@ class TraceTimeline(AdhocView):
self.docgroup.redraw(self.active_trace)
self.doc_canvas.connect('size-allocate', doc_canvas_resize)
scrolled_win.add(self.canvas)
-
+
def show_tooltip(w, x, y, km, tooltip):
"""Show a tooltip according to the item under the cursor
"""
@@ -408,8 +408,8 @@ class TraceTimeline(AdhocView):
return False
scrolled_win.set_has_tooltip(True)
scrolled_win.connect("query-tooltip", show_tooltip)
-
-
+
+
timeline_box.pack_start(gtk.HSeparator(), expand=False, fill=False)
timeline_box.add(scrolled_win)
@@ -443,7 +443,7 @@ class TraceTimeline(AdhocView):
b.set_tooltip_text(_('Toggle link mode'))
toolbox.insert(b, -1)
b.connect('clicked', self.toggle_link_mode)
-
+
def open_trace(b):
"""Open a trace file, add it to the trace selector and make it active
"""
@@ -466,12 +466,12 @@ class TraceTimeline(AdhocView):
btnar.set_label('')
btnar.connect('clicked', self.toggle_auto_refresh)
toolbox.insert(btnar, -1)
-
+
s=gtk.SeparatorToolItem()
s.set_draw(True)
toolbox.insert(s, -1)
-
+
b=gtk.ToolButton(stock_id=gtk.STOCK_OPEN)
b.set_tooltip_text(_('Open an existing trace'))
toolbox.insert(b, -1)
@@ -488,16 +488,16 @@ class TraceTimeline(AdhocView):
btnopt.set_label('')
#btnopt.connect('clicked', open_options)
toolbox.insert(btnopt, -1)
-
-
-
+
+
+
self.inspector = Inspector(self.controller)
bx.pack2(self.inspector)
def on_background_scroll(widget, event):
- """Manage scrolling event on timeline.
-
+ """Manage scrolling event on timeline.
+
Zoom if <ctrl> is pressed.
Horizontal scrolling if <shift> is pressed.
Vertical scrolling if nothing special.
@@ -541,7 +541,7 @@ class TraceTimeline(AdhocView):
def on_background_motion(widget, event):
"""Manage background motion when left button is clicked.
-
+
if <shift> is pressed, draw a selection frame
if nothing is pressed, drag the canvas
"""
@@ -569,7 +569,7 @@ class TraceTimeline(AdhocView):
if self.sel_frame:
self.sel_frame.remove()
self.sel_frame=None
-
+
if not self.drag_coordinates:
self.drag_coordinates=(event.x_root, event.y_root)
self.widget.get_parent_window().set_cursor(gtk.gdk.Cursor(gtk.gdk.DIAMOND_CROSS))
@@ -592,7 +592,7 @@ class TraceTimeline(AdhocView):
def zoom_out(w, center_v=None):
"""Manage zoom when zooming out.
-
+
Verify that we won't too much dezoom.
@type center_v: number
@param center_v: the time value on which we need to center
@@ -602,13 +602,13 @@ class TraceTimeline(AdhocView):
self.zoom_100(w)
else:
self.zoom_at_ratio(w, 0.8, center_v)
-
+
btnm.connect('clicked', zoom_out)
btnp.connect('clicked', self.zoom_at_ratio, 1.25, None)
btnc.connect('clicked', self.zoom_100)
-
+
bx.set_position(self.canvasX+15)
return mainbox
@@ -618,11 +618,11 @@ class TraceTimeline(AdhocView):
h = self.canvas.get_allocation().height
ratio = (h-1.0)/self.canvasY
self.zoom_at_ratio(w, ratio, None)
-
+
def refresh_time(self):
"""Do a refresh of the timeline, extending the canvas to the current time.
-
+
Called every x seconds to refresh continuously.
Keep 100% aspect ratio if self.auto_refresh_keep_100
"""
@@ -641,7 +641,7 @@ class TraceTimeline(AdhocView):
self.zoom_100()
self.context_update_time()
return self.auto_refresh
-
+
def toggle_auto_refresh(self, w=None):
"""Activate or deactivate autorefresh
"""
@@ -655,7 +655,7 @@ class TraceTimeline(AdhocView):
#should change an icon button
source_remove(self.ar_tag)
print "auto_refresh stopped"
-
+
def show_inspector(self):
"""Expand inspector zone to show it
"""
@@ -702,7 +702,7 @@ class TraceTimeline(AdhocView):
def zoom_at_ratio(self, w=None, ratio=1, center_v=None):
"""Recalculate the canvas bounds and each element of the drawing according to the y zoom ratio
-
+
If a center value is given, keep centering the canvas on this value
"""
h = self.canvas.get_allocation().height
@@ -711,7 +711,7 @@ class TraceTimeline(AdhocView):
print "TraceTimeline: minimal zoom is 1s"
return
va=self.sw.get_vadjustment()
-
+
if center_v is None:
vc = (va.value + h/2.0) * self.timefactor
else:
@@ -720,7 +720,7 @@ class TraceTimeline(AdhocView):
self.timefactor *= 1.0/ratio
self.obj_l *= ratio
self.extend_canvas()
-
+
root = self.canvas.get_root_item()
n=root.get_n_children()-1
while n>=0:
@@ -751,7 +751,7 @@ class TraceTimeline(AdhocView):
va.value=va.lower
elif va.value>va.upper-va.page_size:
va.value=va.upper-va.page_size
-
+
def zoom_on(self, w=None, canvas_item=None):
"""Zoom on an item (ObjGroup or EventGroup) in the canvas
"""
@@ -780,14 +780,14 @@ class TraceTimeline(AdhocView):
i+=1
for c in egl:
#we take max / min Y from eventgroups only because when resizing objgroupsmight also disappear...
-
+
y_mi = c.rect.get_bounds().y1
y_ma = c.rect.get_bounds().y2 #y1 + c.rect.props.height why that ???
if min_y == -1:
min_y = y_mi
min_y = min(min_y, y_mi)
max_y = max(max_y, y_ma)
-
+
h = self.canvas.get_allocation().height
# if h < 10, the widget is not fully drawn yet, we must use an arbitrary value
if h < 10:
@@ -798,11 +798,11 @@ class TraceTimeline(AdhocView):
vc = self.timefactor * ((min_y + max_y) / 2.0) * (va.upper / self.canvasY)
self.zoom_at_ratio(None, rapp, vc)
-
+
#FIXME : types / schema / views
def recreate_item(self, w=None, obj_group=None):
"""Allows to recreate a deleted Advene object from the trace.
-
+
Currently only works for annotations and relations
"""
c = obj_group.operation.content
@@ -875,7 +875,7 @@ class TraceTimeline(AdhocView):
def goto(self, w=None, time=None):
"""Navigate in the movie to the time
-
+
@type time: number
@param time: the timestamp we want to reach
"""
@@ -888,7 +888,7 @@ class TraceTimeline(AdhocView):
def canvas_release(self, w, ev):
"""Manage the release of mouse buttons on the canvas
-
+
Remove the selection frame, and zoom if <shift> pressed
"""
if self.sel_frame:
@@ -920,7 +920,7 @@ class TraceTimeline(AdhocView):
def canvas_clicked(self, w, ev):
"""Manage mouse buttons on the canvas
-
+
Draw a selection frame if <shift> pressed and left click
Display contextual menu according to under the cursor items if right click
"""
@@ -1011,7 +1011,7 @@ class TraceTimeline(AdhocView):
def toggle_lock(self, w=None):
"""Draw or remove links between items
-
+
Blocked object handlers accordingly
"""
self.links_locked = not self.links_locked
@@ -1056,7 +1056,7 @@ class TraceTimeline(AdhocView):
tinc = 60
if not self.timemarks:
wa = self.canvas.get_parent().get_allocation().height
-
+
if wa > 100:
tinc = wa/5.0 # 5 marks in the widget
else: # when closing and reopening the view
@@ -1087,7 +1087,7 @@ class TraceTimeline(AdhocView):
y = t-5,
width = -1,
anchor = gtk.ANCHOR_W,
- fill_color_rgba=0x121212FF,
+ fill_color_rgba=0x121212FF,
font = "Sans 7")
a.props.tooltip=txt
a=goocanvas.Text(parent = mgroup,
@@ -1142,10 +1142,10 @@ class TraceTimeline(AdhocView):
def refresh(self, center = None):
"""Refresh the drawing of the main canvas
-
+
Remove everything on the main canvas and redraw them
Should only be used when opening the view / changing selected trace
-
+
@type center: number
@param center: the time value on which we need to center
"""
@@ -1156,8 +1156,9 @@ class TraceTimeline(AdhocView):
# 4/ redraw each action
# 5/ recenter the canvas according to previous centering
# 6/ reselect selected item
- # 7/ re-deactive locked_links
+ # 7/ re-deactivate locked_links
# center : the timestamp on which the display needs to be centered
+ #print "----------------REFRESH START-----------------"
if self.links_locked:
self.toggle_lock()
self.inspector.clean()
@@ -1185,10 +1186,8 @@ class TraceTimeline(AdhocView):
elif lvl == 'actions':
for i in self.active_trace.levels[lvl]:
self.receive_int(self.active_trace, event=None, operation=None, action=i)
- # operations are processed within the action
-
+ # operations are processed within the action
self.draw_marks()
-
if center:
va=self.sw.get_vadjustment()
va.value = center/self.timefactor-va.page_size/2.0
@@ -1198,14 +1197,15 @@ class TraceTimeline(AdhocView):
va.value=va.upper-va.page_size
self.context_update_time()
self.widget.get_parent_window().set_cursor(None)
+ #print "----------------REFRESH END-----------------"
return
def receive(self, trace, event=None, operation=None, action=None):
"""This function is called by the tracer to update the gui. It is registered in the trace when creating the class.
-
+
It should always return False to avoid 100% cpu consumption.
-
+
@type trace: advene.plugins.tracebuilder.Trace
@param trace: the full trace to be managed
@type event: advene.plugins.tracebuilder.Event
@@ -1215,7 +1215,6 @@ class TraceTimeline(AdhocView):
@type action: advene.plugins.tracebuilder.Action
@param action: the new or latest modified action
"""
-
if self.active_trace == trace:
self.receive_int(trace, event, operation, action)
if not (event or operation or action):
@@ -1239,7 +1238,7 @@ class TraceTimeline(AdhocView):
@param operation: the new or latest modified operation
@type action: advene.plugins.tracebuilder.Action
@param action: the new or latest modified action
-
+
@rtype: EventGroup
@return: the newly created or updated EventGroup
"""
@@ -1248,18 +1247,22 @@ class TraceTimeline(AdhocView):
if event and (event.name=='DurationUpdate' or event.name=='MediaChange'):
#new film, update duration
self.docgroup.changeMovielength(trace)
- if operation:
- # new operation, add it on docgroup
- self.docgroup.addLine(operation.movietime)
if (operation or event) and action is None:
# no action changed, return
return ev
+ if operation:
+ # new operation, add it on docgroup
+ self.docgroup.addLine(operation.movietime)
if action is None:
# no event, operation or action, this is a refresh query, redraw screen
return ev
h,l = self.cols[action.name]
+ #print "INIT %s" % l
+ if (l and not l.get_canvas()):
+ print "Tracetimeline : Synchronization between tracer and view lost - droping event"
+ #to avoid crashing when tracebuilder is calling receive of a tracetimeline being closed
+ return
color = h.color_c
-
if l and l.event == action:
# action corresponding to the last action of this type, update the drawing
#calculating old length
@@ -1278,6 +1281,7 @@ class TraceTimeline(AdhocView):
#update already existing / not existing items before adding the new one
l.update_objs(blocked=self.links_locked)
ev=l
+ #print "UPD %s" % ev
else:
#totally new action
# getting x bound from header
@@ -1292,6 +1296,7 @@ class TraceTimeline(AdhocView):
self.draw_marks()
ev = EventGroup(self.link_mode, self.controller, self.inspector, self.canvas, self.docgroup, None, action, x, y, length, self.col_width, self.obj_l, 14, color, self.links_locked)
self.cols[action.name]=(h,ev)
+ #print "NEW %s" % ev
self.update_lines()
self.canvas.show()
if self.autoscroll:
@@ -1318,10 +1323,10 @@ class TraceTimeline(AdhocView):
def find_group(self, observed):
"""Find an avent Group according to an action or operation
-
+
@type observed: advene.plugins.tracebuilder.Operation or advene.plugins.tracebuilder.Action
@param observed: an action or operation to find
-
+
@rtype: EventGroup
@return: an event group containing the operation or corresponding to the action
"""
@@ -1341,7 +1346,7 @@ class TraceTimeline(AdhocView):
"""Context related functions
"""
-
+
def context_clean(self):
"""Clean the context canvas
"""
@@ -1352,10 +1357,10 @@ class TraceTimeline(AdhocView):
self.context_frame = None
self.context_t_max = self.canvasY*self.timefactor + self.active_trace.start
for act in self.context_cols:
- (i, c, toto) = self.context_cols[act]
- self.context_cols[act]=(i, c, None)
-
-
+ (i, c, toto) = self.context_cols[act]
+ self.context_cols[act]=(i, c, None)
+
+
def context_update_time(self):
"""Update the context canvas according to current time
"""
@@ -1372,10 +1377,10 @@ class TraceTimeline(AdhocView):
l.props.y *= ratio
l.props.height *= ratio
self.context_update_sel_frame()
-
+
def context_add_line(self, action):
"""Add a line corresponding to the action in the context canvas.
-
+
@type action: advene.plugins.tracebuilder.Action
@param action: the action to add to the context
"""
@@ -1393,10 +1398,10 @@ class TraceTimeline(AdhocView):
line_width = 1.0)
self.context_cols[action.name]=(i,color,l)
return
-
+
def context_update_line(self, action=None):
""" Update a line corresponding to the action in the context canvas.
-
+
@type action: advene.plugins.tracebuilder.Action
@param action: the action to update in the context
"""
@@ -1406,7 +1411,7 @@ class TraceTimeline(AdhocView):
y2 = float(action.time[1]-self.active_trace.start)*self.context_canvasY/(self.context_t_max-self.active_trace.start)
line.props.height = y2-y1
return
-
+
def context_draw_sel_frame(self):
"""Draw the selection frame on context canvas, corresponding to what is displayed in the trace timeline
"""
@@ -1469,7 +1474,7 @@ class HeadGroup (Group):
def change_name(self, name):
"""Change the name of the head group.
-
+
@type name: string
@param name: new name, 5 max chars
"""
@@ -1479,7 +1484,7 @@ class HeadGroup (Group):
def change_font(self, font):
"""Change the font of the head group.
-
+
@type font: string
@param font: new font, whithout size
"""
@@ -1530,12 +1535,12 @@ class EventGroup (Group):
def newRect(self, color, color_c):
"""Create a new rectangle for the group
-
+
@type color: number
@param color: stroke color rgb
@type color_c: number
@param color_c: fill color rgba
-
+
@rtype: goocanvas.Rect
@return: the new rect
"""
@@ -1550,7 +1555,7 @@ class EventGroup (Group):
def addObj(self, op, blocked):
"""Add objgroups to the group, if they can be displayed.
-
+
@type op: advene.plugins.tracebuilder.Operation
@param op: the operation to add as obj
@type blocked: bool
@@ -1559,7 +1564,7 @@ class EventGroup (Group):
x=self.rect.get_bounds().x1+3
ratio = float((self.event.time[1]-self.event.time[0]))/self.rect.props.height
y = (op.time-self.event.time[0]) / ratio + self.rect.get_bounds().y1
-
+
l = self.rect.props.height
w = self.rect.props.width
ol = min(l-3, float(w)/2 - 3)
@@ -1569,7 +1574,7 @@ class EventGroup (Group):
true_y=y
if self.event.time[1] == op.time:
#last operation, need to change y to display it
- y = y - ol -5
+ y = y - ol -5
#FIXME fontsize according to object length with a min of 6 and a max of ??,
self.fontsize = ol/3
self.ol = ol
@@ -1579,13 +1584,13 @@ class EventGroup (Group):
self.objs.append( ObjGroup(self.link_mode, self.controller, self.inspector, self.canvas, self.dg, x, y, ol/2, self.fontsize, op, blocked))
if true_y != y:
#need to store true y value
- self.objs[-1].true_y = true_y
+ self.objs[-1].true_y = true_y
- return
+ return
def update_objs(self, ratiox=1,ratioy=1, blocked=False):
"""Update Objgroups belonging to the group
-
+
@type ratiox: number
@param ratiox: the x zoom ratio
@type ratioy: number
@@ -1603,7 +1608,7 @@ class EventGroup (Group):
self.objs=[]
if self.commentMark:
self.removeCommentMark()
-
+
else:
if not self.objs:
self.drawObjs(blocked)
@@ -1623,7 +1628,7 @@ class EventGroup (Group):
c.fontsize = 2*c.r/3
if self.event.time[1] == c.operation.time:
#last operation, need to change y to display it
- c.y = self.rect.get_bounds().y2 - ol -3
+ c.y = self.rect.get_bounds().y2 - ol -3
if c.y + ol >= self.rect.get_bounds().y2-2:
# not in the rectangle
to_be_removed.append(c)
@@ -1636,7 +1641,7 @@ class EventGroup (Group):
for c in to_be_removed:
self.objs.remove(c)
c.remove()
- for op in self.event.operations:
+ for op in self.event.operations:
#obj may not already exist for this op
if op not in already_existing_op:
self.addObj(op, blocked)
@@ -1645,10 +1650,10 @@ class EventGroup (Group):
self.commentMark.props.y *= ratioy
elif self.event.comment!='':
self.addCommentMark()
-
+
def drawObjs(self, blocked):
"""Add objgroup for each operation of the action of the group.
-
+
@type blocked: bool
@param blocked: True if handlers should be blocked at creation
"""
@@ -1772,10 +1777,10 @@ class ObjGroup (Group):
self.text.props.x = self.x +3 * self.r + 3
self.text.props.font = "Sans %s" % str(self.fontsize)
-
+
def update_lines(self):
"""Update lines if the group is the selected item
- """
+ """
if self.center_sel:
self.remove_rels()
self.add_rels()
@@ -1823,12 +1828,12 @@ class ObjGroup (Group):
og.deselect()
i+=1
return
-
+
def add_rels(self):
"""Add relations lines to this group, according to the link mode and raises group to top.
"""
r = self.canvas.get_root_item()
- lg=[]
+ lg=[]
i=0
while i<r.get_n_children():
eg = r.get_child(i)
@@ -1904,7 +1909,7 @@ class ObjGroup (Group):
def toggle_rels(self, on):
"""Toggle relations display
-
+
@type on: bool
@param on: True to display rels
"""
@@ -1916,7 +1921,7 @@ class ObjGroup (Group):
else:
self.add_rels()
return
-
+
def select(self):
"""Highlight selection.
@@ -1993,7 +1998,7 @@ class ObjGroup (Group):
def newText(self):
""" Create a new text representation of the advene object
-
+
@rtype: goocanvas.Text
@return: the newly created text
"""
@@ -2086,7 +2091,7 @@ class Inspector (gtk.VBox):
def fillWithItem(self, item):
"""Fill the inspector with informations concerning an object
-
+
@type item: ObjGroup
@param item: the advene object to display informations about
"""
@@ -2103,7 +2108,7 @@ class Inspector (gtk.VBox):
def fillWithAction(self, action=None, op=None):
"""Fill the inspector with informations concerning an action
-
+
@type action: EventGroup
@param action: the action to display informations about
@type op: advene.plugins.tracebuilder.Operation
@@ -2121,7 +2126,7 @@ class Inspector (gtk.VBox):
def select_operation(self, op):
"""Fill the inspector with an operation informations.
-
+
@type op: advene.plugins.tracebuilder.Operation
@param op: the operation to display informations about
"""
@@ -2130,7 +2135,7 @@ class Inspector (gtk.VBox):
def addOperations(self, op_list=[], op_sel=None):
"""Used to pack operation boxes in the inspector
-
+
@type op_list: list
@param op_list: list of operations to display
@type op_sel: advene.plugins.tracebuilder.Operation
@@ -2145,7 +2150,7 @@ class Inspector (gtk.VBox):
def addOperation(self, obj_evt=None, sel=False):
"""Build a box to display an operation
-
+
@type obj_evt: advene.plugins.tracebuilder.Operation
@param obj_evt : operation to build a box for
@type sel: bool
@@ -2310,7 +2315,7 @@ class Inspector (gtk.VBox):
box = gtk.EventBox()
def box_pressed(w, event, id):
"""Edit the element if double clicked
-
+
@type id: advene id
@param id: the id of the package element to edit
"""
@@ -2372,7 +2377,7 @@ class DocGroup (Group):
def newRect(self):
"""Create a new rectangle to represent the movie.
-
+
@rtype: goocanvas.Rect
@return: a new rectangle
"""
@@ -2456,7 +2461,7 @@ class DocGroup (Group):
#FIXME
def redraw(self, trace=None, action=None, obj=None):
"""Remove everything on the doc canvas and redraw everything.
-
+
@type trace: advene.plugins.tracebuilder.Trace
@param trace: the trace to redraw
@type action: advene.plugins.tracebuilder.Action
@@ -2483,7 +2488,7 @@ class DocGroup (Group):
def changeMarks(self, action=None, obj=None):
"""Change "v" signs to show selected items
-
+
@type action: advene.plugins.tracebuilder.Action
@param action: the action for which to draw marks
@type obj: ObjGroup
@@ -2502,7 +2507,7 @@ class DocGroup (Group):
def addMark(self, time=0, color=0x444444ff):
"""Add "v" signs to show selected items
-
+
@type time: number
@param time: the time at which to draw mark
@type color: number
@@ -2542,7 +2547,7 @@ class DocGroup (Group):
def addLine(self, time=0, color=0x00000050, offset=0):
"""Add a line to represent a movie access time.
-
+
@type time: number
@param time: the time at which to draw line
@type color: number
diff --git a/lib/advene/gui/plugins/videoplayer.py b/lib/advene/gui/plugins/videoplayer.py
index 10bc67b..a8968fd 100644
--- a/lib/advene/gui/plugins/videoplayer.py
+++ b/lib/advene/gui/plugins/videoplayer.py
@@ -25,6 +25,7 @@ import os
import advene.core.config as config
from advene.gui.views import AdhocView
import advene.gui.util.dialog as dialog
+from advene.gui.util import get_pixmap_button, enable_drag_source, decode_drop_parameters
name="Videoplayer view plugin"
@@ -39,7 +40,7 @@ class VideoPlayer(AdhocView):
def __init__(self, controller=None, uri=None, parameters=None):
super(VideoPlayer, self).__init__(controller=controller)
self.close_on_package_load = False
- self.contextual_actions = [
+ self.contextual_actions = [
(_("Save view"), self.save_view),
(_("Save default options"), self.save_default_options),
(_("Select video file"), self.select_file),
@@ -47,16 +48,18 @@ class VideoPlayer(AdhocView):
self.controller = controller
self.registered_rules = []
+ # Offset in ms
+ self.offset = 0
+ self.uri = uri
+
# Load options
opt, arg = self.load_parameters(parameters)
self.options.update(opt)
a=dict(arg)
- if uri is None and a.has_key('uri'):
- uri=a['uri']
-
- self.uri = uri
- # Offset in ms
- self.offset = 0
+ if uri is None and 'uri' in a:
+ self.uri=a['uri']
+ if 'offset' in a:
+ self.offset=long(a['offset'])
self.widget = self.build_widget()
if self.uri is None:
@@ -68,7 +71,7 @@ class VideoPlayer(AdhocView):
"""Add the event handlers.
"""
self.controller.register_slave_player(self)
- self.registered_rules.extend(
+ self.registered_rules.extend(
controller.event_handler.internal_rule(event=name,
method=self.synchronize)
for name in ('PlayerStart',
@@ -128,6 +131,9 @@ class VideoPlayer(AdhocView):
self.set_file(fname)
return True
+ def set_offset(self, offset):
+ self.offset_spin.set_value(offset)
+
def set_file(self, fname):
if self.player is None:
return True
@@ -176,6 +182,20 @@ class VideoPlayer(AdhocView):
position = position + self.offset
self.player.update_status(status, position)
+ def drag_received_cb(self, widget, context, x, y, selection, targetType, time):
+ refTime = None
+ if targetType == config.data.target_type['annotation']:
+ sources = [ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+ if sources:
+ # use first annotation as reference
+ refTime = sources[0].fragment.begin
+ elif targetType == config.data.target_type['timestamp']:
+ data = decode_drop_parameters(selection.data)
+ refTime = long(data['timestamp'])
+ if refTime is not None:
+ self.set_offset(refTime - self.controller.player.current_position_value)
+ return True
+
def _popup(self, *p):
"""Open a popup window for temporary anchoring the player video.
"""
@@ -236,20 +256,28 @@ class VideoPlayer(AdhocView):
return True
ti = gtk.ToolItem()
- spin = gtk.SpinButton(gtk.Adjustment(value = self.offset,
+ self.offset_spin = gtk.SpinButton(gtk.Adjustment(value = self.offset,
lower = - 24 * 60 * 60 * 1000,
upper = 24 * 60 * 60 * 1000,
step_incr = 1000 / 25,
page_incr = 1000))
- spin.get_adjustment().connect('value-changed', offset_changed)
- ti.add(spin)
- spin.set_tooltip_text(_("Offset in ms"))
+ self.offset_spin.get_adjustment().connect('value-changed', offset_changed)
+ ti.add(self.offset_spin)
+ self.offset_spin.set_tooltip_text(_("Offset in ms"))
self.toolbar.insert(ti, -1)
self.label = gtk.Label()
self.label.set_alignment(0, 0)
self.label.modify_font(pango.FontDescription("sans 10"))
+ timestamp_button = get_pixmap_button('set-to-now.png')
+ timestamp_button.set_tooltip_text(_("Drag and drop to get player time"))
+ enable_drag_source(timestamp_button, lambda: long(self.player.get_stream_information().position), self.controller)
+ # Cannot use a gtk.ToolButton since it cannot be drag_source
+ ti = gtk.ToolItem()
+ ti.add(timestamp_button)
+ self.toolbar.insert(ti, -1)
+
black=gtk.gdk.color_parse('black')
white=gtk.gdk.color_parse('white')
eb=gtk.EventBox()
@@ -267,5 +295,14 @@ class VideoPlayer(AdhocView):
self.drawable.connect_after('realize', self.register_drawable)
+ # Accept annotation/timestamp drop, to adjust time offset
+ vbox.connect('drag-data-received', self.drag_received_cb)
+ vbox.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
+ gtk.DEST_DEFAULT_HIGHLIGHT |
+ gtk.DEST_DEFAULT_ALL,
+ config.data.drag_type['annotation'] +
+ config.data.drag_type['timestamp'],
+ gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE)
+
vbox.show_all()
return vbox
diff --git a/lib/advene/gui/popup.py b/lib/advene/gui/popup.py
index c49f58e..1dfc76e 100644
--- a/lib/advene/gui/popup.py
+++ b/lib/advene/gui/popup.py
@@ -504,12 +504,17 @@ class Menu:
self.controller.gui.loop_on_annotation_gui(ann, goto=True)
return True
+ def save_snapshot(menu, ann):
+ self.controller.gui.save_snapshot_as(ann.fragment.begin)
+ return True
+
add_item(_("Go to..."), self.goto_annotation, element)
add_item(_("Loop"), loop_on_annotation, element)
add_item(_("Duplicate"), self.duplicate_annotation, element)
item = gtk.MenuItem(_("Highlight"), use_underline=False)
item.set_submenu(self.activate_submenu(element))
menu.append(item)
+ add_item(_("Save snapshot..."), save_snapshot, element)
if 'montagerenderer' in self.controller.generic_features:
add_item(_("Extract video fragment"), self.extract_fragment, element)
@@ -645,7 +650,7 @@ class Menu:
add_item(_('Create a new resource file...'), self.create_element, ResourceData, element)
add_item(_('Insert a new resource file...'), self.insert_resource_data, element)
add_item(_('Insert a new resource directory...'), self.insert_resource_directory, element)
- print "Menu for", id(element), id(self.controller.package.resources), element.id
+ #print "Menu for", id(element), id(self.controller.package.resources), element.id
if element.resourcepath == '':
# Resources root
@@ -731,7 +736,7 @@ class Menu:
self.controller.gui.edit_element(v)
return True
add_item(_('Create a comment view'), lambda i: create_static(element))
- add_item(_('Generate a caption dynamic view'), lambda i: self.create_dynamic_view(element))
+ add_item(_('Generate a caption dynamic view...'), lambda i: self.create_dynamic_view(element))
add_item(_('Display as transcription'), lambda i: self.controller.gui.open_adhoc_view('transcription', source='here/annotationTypes/%s/annotations/sorted' % element.id))
add_item(_('Display annotations in table'), lambda i: self.controller.gui.open_adhoc_view('table', elements=element.annotations))
add_item(_('Export to another format...'), lambda i: self.controller.gui.export_element(element))
@@ -740,9 +745,9 @@ class Menu:
add_item(None)
add_item(_('Select a color'), self.pick_color, element)
add_item(_('Create a new annotation...'), self.create_element, Annotation, element)
- add_item(_('Delete all annotations...'), self.delete_elements, element, element.annotations)
- add_item(_('Renumber annotations'), self.renumber_annotations, element)
- add_item(_('Adjust annotation bounds'), lambda m, at: self.controller.gui.adjust_annotationtype_bounds(at), element)
+ add_item(_('Delete all annotations'), self.delete_elements, element, element.annotations)
+ add_item(_('Renumber annotations...'), self.renumber_annotations, element)
+ add_item(_('Adjust annotation bounds...'), lambda m, at: self.controller.gui.adjust_annotationtype_bounds(at), element)
add_item('')
add_item(_('%d annotations(s) - statistics') % len(element.annotations), self.display_stats, element)
diff --git a/lib/advene/gui/views/__init__.py b/lib/advene/gui/views/__init__.py
index 5474ee2..2eb22c4 100644
--- a/lib/advene/gui/views/__init__.py
+++ b/lib/advene/gui/views/__init__.py
@@ -31,7 +31,7 @@ from advene.model.content import Content
from advene.gui.util import dialog, get_pixmap_button
import advene.util.helper as helper
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
class AdhocView(object):
"""Implementation of the generic parts of AdhocViews.
diff --git a/lib/advene/gui/views/accumulatorpopup.py b/lib/advene/gui/views/accumulatorpopup.py
index e8371cd..4a62009 100644
--- a/lib/advene/gui/views/accumulatorpopup.py
+++ b/lib/advene/gui/views/accumulatorpopup.py
@@ -51,7 +51,7 @@ class AccumulatorPopup(AdhocView):
tooltip = ("Stack a limited number of popup widgets")
def __init__ (self, controller=None, autohide=False, size=3,
- vertical=False, scrollable=False):
+ vertical=False, scrollable=False, parameters=None):
super(AccumulatorPopup, self).__init__(controller=controller)
self.close_on_package_load = False
diff --git a/lib/advene/gui/views/activebookmarks.py b/lib/advene/gui/views/activebookmarks.py
index d00739f..66d9c25 100644
--- a/lib/advene/gui/views/activebookmarks.py
+++ b/lib/advene/gui/views/activebookmarks.py
@@ -773,7 +773,7 @@ class ActiveBookmark(object):
end=None
else:
end=long(e)
- content=urllib.unquote(c)
+ content=urllib.unquote(c).decode('utf-8', 'ignore')
self.annotation=annotation
if annotation is not None:
@@ -914,7 +914,7 @@ class ActiveBookmark(object):
return ":".join( (ident,
str(self.begin),
str(self.end),
- urllib.quote(self.content) ) )
+ urllib.quote(self.content.encode('utf-8')) ) )
def as_html(self):
if self.annotation is not None:
diff --git a/lib/advene/gui/views/annotationdisplay.py b/lib/advene/gui/views/annotationdisplay.py
index c576a9a..b28007b 100644
--- a/lib/advene/gui/views/annotationdisplay.py
+++ b/lib/advene/gui/views/annotationdisplay.py
@@ -19,13 +19,14 @@
"""Module displaying the contents of an annotation.
"""
+import gobject
import gtk
from gettext import gettext as _
import advene.core.config as config
from advene.gui.views import AdhocView
import advene.util.helper as helper
-from advene.gui.util import overlay_svg_as_pixbuf
+from advene.gui.util import overlay_svg_as_pixbuf, get_pixmap_button
from advene.model.annotation import Annotation
from advene.model.schema import AnnotationType
from advene.gui.widget import TimestampRepresentation
@@ -207,27 +208,93 @@ class AnnotationDisplay(AdhocView):
h.pack_start(self.label['end'], expand=False)
v.pack_start(h, expand=False)
+ def handle_motion(widget, event):
+ if isinstance(self.annotation, Annotation):
+ i = self.label['image']
+ i.epsilon = self.annotation.fragment.duration / widget.allocation.width
+ v = self.annotation.fragment.begin + i.epsilon * 20 * int(event.x / 20)
+ i.set_value(v)
+ return True
+
+ def handle_leave(widget, event):
+ if isinstance(self.annotation, Annotation):
+ i = self.label['image']
+ i.epsilon = config.data.preferences['bookmark-snapshot-precision']
+ i.set_value(self.annotation.fragment.begin)
+ return True
+
fr = gtk.Expander ()
fr.set_label(_("Screenshot"))
self.label['image'] = TimestampRepresentation(-1, self.controller, width=config.data.preferences['drag-snapshot-width'], epsilon=config.data.preferences['bookmark-snapshot-precision'], visible_label=False)
+ self.label['image'].add_events(gtk.gdk.POINTER_MOTION_MASK
+ | gtk.gdk.LEAVE_NOTIFY_MASK)
+ self.label['image'].connect('motion-notify-event', handle_motion)
+ self.label['image'].connect('leave-notify-event', handle_leave)
+
fr.add(self.label['image'])
fr.set_expanded(True)
v.pack_start(fr, expand=False)
- f=gtk.Frame(label=_("Contents"))
+ # Contents frame
+ def handle_ok(b):
+ b.hide()
+ if isinstance(self.annotation, Annotation):
+ self.controller.notify('EditSessionStart', element=self.annotation, immediate=True)
+ self.annotation.content.data = self.label['contents'].get_text()
+ self.controller.notify("AnnotationEditEnd", annotation=self.annotation)
+ self.controller.notify('EditSessionEnd', element=self.annotation)
+ return True
+
+ hbox = gtk.HBox()
+ hbox.pack_start(gtk.Label(_("Contents")), expand=False)
+ ok_button=get_pixmap_button('small_ok.png', handle_ok)
+ ok_button.set_relief(gtk.RELIEF_NONE)
+ ok_button.set_tooltip_text(_("Validate"))
+ ok_button.set_no_show_all(True)
+ hbox.pack_start(ok_button, expand=False)
+
+ f=gtk.Frame()
+ f.set_label_widget(hbox)
+
+ def contents_modified(buf):
+ if buf.get_modified():
+ if not buf.ignore_modified:
+ ok_button.show()
+ else:
+ ok_button.hide()
+ return True
+
c=self.label['contents']=gtk.TextView()
c.set_wrap_mode(gtk.WRAP_WORD_CHAR)
+ c.get_buffer().ignore_modified = False
+ c.get_buffer().connect('modified-changed', contents_modified)
sw=gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
sw.add(c)
def set_text(widget, t):
b=widget.get_buffer()
+ b.ignore_modified = True
b.delete(*b.get_bounds())
b.set_text(t)
+ b.set_modified(False)
+ b.ignore_modified = False
return True
- c.set_text=set_text.__get__(c)
+ c.set_text = set_text.__get__(c)
+ def get_text(widget):
+ b=widget.get_buffer()
+ return b.get_text(*b.get_bounds())
+ c.get_text = get_text.__get__(c)
self.sw['contents']=sw
+ def handle_keypress(widget, event):
+ if (event.keyval == gtk.keysyms.Return
+ and event.state & gtk.gdk.CONTROL_MASK
+ and widget.get_buffer().get_modified()):
+ handle_ok(ok_button)
+ return True
+ return False
+ c.connect('key-press-event', handle_keypress)
+
image=self.label['imagecontents']=gtk.Image()
swi=gtk.ScrolledWindow()
diff --git a/lib/advene/gui/views/caption.py b/lib/advene/gui/views/caption.py
index f1d9e88..df2f202 100644
--- a/lib/advene/gui/views/caption.py
+++ b/lib/advene/gui/views/caption.py
@@ -31,7 +31,7 @@ class CaptionView(AdhocView):
view_id = 'caption'
tooltip = _("Display a text caption below the video output")
- def __init__(self, controller=None):
+ def __init__(self, controller=None, parameters=None):
super(CaptionView, self).__init__(controller=controller)
self.close_on_package_load = False
self.contextual_actions = ()
diff --git a/lib/advene/gui/views/checker.py b/lib/advene/gui/views/checker.py
new file mode 100644
index 0000000..95372be
--- /dev/null
+++ b/lib/advene/gui/views/checker.py
@@ -0,0 +1,114 @@
+#
+# Advene: Annotate Digital Videos, Exchange on the NEt
+# Copyright (C) 2008 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+#
+# Advene is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# Advene is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Advene; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+"""Transcription view.
+"""
+
+import itertools
+import gtk
+
+from gettext import gettext as _
+
+from advene.gui.views import AdhocView
+from advene.gui.views.table import AnnotationTable
+import advene.gui.views.table
+
+name="Checker view plugin"
+
+def register(controller):
+ controller.register_viewclass(CheckerView)
+
+class CheckerView(AdhocView):
+ view_name = _("Checker")
+ view_id = 'checker'
+ tooltip = _("Check various package properties")
+
+ def __init__ (self, controller=None, parameters=None):
+ super(CheckerView, self).__init__(controller=controller)
+ self.close_on_package_load = False
+ self.contextual_actions = (
+ )
+ self.controller=controller
+ self.options = {
+ }
+
+ opt, arg = self.load_parameters(parameters)
+ self.options.update(opt)
+ self.widget=self.build_widget()
+ self.update_model()
+
+ def overlapping_annotations(self):
+ """Return a list of overlapping annotations for each annotation type.
+
+ It returns 2 sets of elements: the ones which have a potentialy
+ bogus begin time, and the ones with a potentialy bogus end
+ time.
+ """
+ begins = set()
+ ends = set()
+ for at in self.controller.package.annotationTypes:
+ for a, b in itertools.izip(at.annotations, at.annotations[1:]):
+ if a.fragment.end > b.fragment.begin:
+ ends.add(a)
+ begins.add(b)
+ return begins, ends
+
+ def update_model(self):
+ begins, ends = self.overlapping_annotations()
+ overlap = list(begins.union(ends))
+
+ def custom_data(b):
+ if b is None:
+ return (str, str)
+ begin, end = None, None
+ if b in begins:
+ begin = "#ff6666"
+ if b in ends:
+ end = "#ff6666"
+ return (begin, end)
+ self.overlap_table.set_elements(overlap, custom_data)
+ self.overlap_table.model.set_sort_column_id(advene.gui.views.table.COLUMN_TYPE, gtk.SORT_ASCENDING)
+
+ def build_widget(self):
+ mainbox = gtk.VBox()
+
+ mainbox.pack_start(gtk.Label(_("List of possible issues in the current package")), expand=False)
+
+ notebook=gtk.Notebook()
+ notebook.set_tab_pos(gtk.POS_TOP)
+ notebook.popup_disable()
+ mainbox.add(notebook)
+
+ table=AnnotationTable(controller=self.controller)
+ self.overlap_table = table
+
+ # Set colors
+ table.columns['begin'].add_attribute(table.columns['begin'].get_cell_renderers()[0],
+ 'cell-background',
+ advene.gui.views.table.COLUMN_CUSTOM_FIRST)
+ table.columns['end'].add_attribute(table.columns['end'].get_cell_renderers()[0],
+ 'cell-background',
+ advene.gui.views.table.COLUMN_CUSTOM_FIRST + 1)
+
+ notebook.append_page(table.widget, gtk.Label(_("Overlapping")))
+
+ return mainbox
+
+ def update_annotation (self, annotation=None, event=None):
+ self.update_model()
+ return True
diff --git a/lib/advene/gui/views/finder.py b/lib/advene/gui/views/finder.py
index af9d353..2b5d18e 100644
--- a/lib/advene/gui/views/finder.py
+++ b/lib/advene/gui/views/finder.py
@@ -255,7 +255,7 @@ class ModelColumn(FinderColumn):
vbox=gtk.VBox()
sw = gtk.ScrolledWindow()
- sw.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_AUTOMATIC)
+ sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
vbox.add (sw)
self.liststore = self.get_liststore()
@@ -673,24 +673,25 @@ class Finder(AdhocView):
return True
def scroll_event(self, widget=None, event=None):
- if event.state & gtk.gdk.SHIFT_MASK:
- a=widget.get_hadjustment()
- if event.direction == gtk.gdk.SCROLL_DOWN or event.direction == gtk.gdk.SCROLL_RIGHT:
- val = a.value + a.step_increment
- if val > a.upper - a.page_size:
- val = a.upper - a.page_size
- if val != a.value:
- a.value = val
- a.value_changed ()
- return True
- elif event.direction == gtk.gdk.SCROLL_UP or event.direction == gtk.gdk.SCROLL_LEFT:
- val = a.value - a.step_increment
- if val < a.lower:
- val = a.lower
- if val != a.value:
- a.value = val
- a.value_changed ()
- return True
+ a=widget.get_hadjustment()
+ if ((event.direction == gtk.gdk.SCROLL_DOWN and event.state & gtk.gdk.SHIFT_MASK)
+ or event.direction == gtk.gdk.SCROLL_RIGHT):
+ val = a.value + a.step_increment
+ if val > a.upper - a.page_size:
+ val = a.upper - a.page_size
+ if val != a.value:
+ a.value = val
+ a.value_changed ()
+ return True
+ elif ((event.direction == gtk.gdk.SCROLL_UP and event.state & gtk.gdk.SHIFT_MASK)
+ or event.direction == gtk.gdk.SCROLL_LEFT):
+ val = a.value - a.step_increment
+ if val < a.lower:
+ val = a.lower
+ if val != a.value:
+ a.value = val
+ a.value_changed ()
+ return True
return False
def build_widget(self):
diff --git a/lib/advene/gui/views/html.py b/lib/advene/gui/views/html.py
index f707acb..1e0c4d8 100644
--- a/lib/advene/gui/views/html.py
+++ b/lib/advene/gui/views/html.py
@@ -223,7 +223,7 @@ class webkit_wrapper:
self.notify(label=_("Title %s") % title)
def _hover_link_cb(view, title, url):
-
+
if not (view and url):
url=''
self.notify(label=url)
@@ -279,7 +279,7 @@ class webkit_wrapper:
self.component=w
s=gtk.ScrolledWindow()
s.add(w)
-
+
return s
class HTMLView(AdhocView):
@@ -287,7 +287,7 @@ class HTMLView(AdhocView):
view_name = _("HTML Viewer")
view_id = 'htmlview'
tooltip = _("Embedded HTML widget")
- def __init__ (self, controller=None, url=None):
+ def __init__ (self, controller=None, parameters=None, url=None):
super(HTMLView, self).__init__(controller=controller)
self.close_on_package_load = False
self.component=None
diff --git a/lib/advene/gui/views/logwindow.py b/lib/advene/gui/views/logwindow.py
index 742d4f5..88a8eb6 100644
--- a/lib/advene/gui/views/logwindow.py
+++ b/lib/advene/gui/views/logwindow.py
@@ -43,7 +43,7 @@ class LogWindow(AdhocView):
view_name = _("Links")
view_id = 'linksview'
tooltip = _("URL stack")
- def __init__ (self, controller=None):
+ def __init__ (self, controller=None, parameters=None):
super(LogWindow, self).__init__(controller=controller)
self.close_on_package_load = False
self.contextual_actions = (
diff --git a/lib/advene/gui/views/relation.py b/lib/advene/gui/views/relation.py
index 271d7aa..e022194 100755
--- a/lib/advene/gui/views/relation.py
+++ b/lib/advene/gui/views/relation.py
@@ -28,17 +28,17 @@ import gtk
class RelationView:
"""Controller for the MVC representing a relation."""
- def popup(self, button):
- menu = advene.gui.popup.Menu(self, controller=self.controller)
- menu.popup()
- return True
-
- def __init__(self, relation=None, controller=None):
+ def __init__(self, relation=None, controller=None, parameters=None):
self.relation=relation
self.controller=controller
self.widget=self.build_widget()
self.widget.connect('clicked', self.activate)
+ def popup(self, button):
+ menu = advene.gui.popup.Menu(self, controller=self.controller)
+ menu.popup()
+ return True
+
def activate(self, button):
print "Relation %s activated" % self.relation.id
if self.controller:
diff --git a/lib/advene/gui/views/scroller.py b/lib/advene/gui/views/scroller.py
index 7a964d4..1bb30d1 100644
--- a/lib/advene/gui/views/scroller.py
+++ b/lib/advene/gui/views/scroller.py
@@ -28,7 +28,7 @@ import gtk
class ScrollerView(AdhocView):
view_name = _("Scroller")
view_id = 'scroller'
- def __init__(self, controller=None):
+ def __init__(self, controller=None, parameters=None):
super(ScrollerView, self).__init__(controller=controller)
self.close_on_package_load = False
self.contextual_actions = ()
diff --git a/lib/advene/gui/views/singletonpopup.py b/lib/advene/gui/views/singletonpopup.py
index b28eac1..405ce18 100755
--- a/lib/advene/gui/views/singletonpopup.py
+++ b/lib/advene/gui/views/singletonpopup.py
@@ -31,7 +31,7 @@ class SingletonPopup(AdhocView):
"""
view_name = _("SingletonPopup")
view_id = 'singletonpopup'
- def __init__ (self, controller=None, autohide=False):
+ def __init__ (self, controller=None, parameters=None, autohide=False):
super(SingletonPopup, self).__init__(controller=controller)
self.close_on_package_load = False
diff --git a/lib/advene/gui/views/table.py b/lib/advene/gui/views/table.py
index 8c18890..d0b6a6c 100644
--- a/lib/advene/gui/views/table.py
+++ b/lib/advene/gui/views/table.py
@@ -43,6 +43,7 @@ COLUMN_BEGIN_FORMATTED=7
COLUMN_END_FORMATTED=8
COLUMN_PIXBUF=9
COLUMN_COLOR=10
+COLUMN_CUSTOM_FIRST=11
name="Element tabular view plugin"
@@ -55,7 +56,7 @@ class AnnotationTable(AdhocView):
view_id = 'table'
tooltip=_("Display annotations in a table")
- def __init__(self, controller=None, parameters=None, elements=None):
+ def __init__(self, controller=None, parameters=None, custom_data=None, elements=None):
super(AnnotationTable, self).__init__(controller=controller)
self.registered_rules = []
self.close_on_package_load = False
@@ -66,8 +67,9 @@ class AnnotationTable(AdhocView):
self.options={}
self.mouseover_annotation = None
+ self.last_edited_path = None
- self.model=self.build_model(elements)
+ self.model = self.build_model(elements, custom_data)
self.widget = self.build_widget()
self.registered_rules.append( controller.event_handler.internal_rule (event="SnapshotUpdate",
@@ -105,11 +107,18 @@ class AnnotationTable(AdhocView):
store, paths=selection.get_selected_rows()
return [ store.get_value (store.get_iter(p), COLUMN_ELEMENT) for p in paths ]
- def build_model(self, elements):
+ def build_model(self, elements, custom_data=None):
"""Build the ListStore containing the data.
+ See set_element docstring for the custom_data method explanation.
"""
- l=gtk.ListStore(object, str, str, str, long, long, str, str, str, gtk.gdk.Pixbuf, str)
+ if custom_data is not None:
+ custom = custom_data
+ else:
+ def custom(a):
+ return tuple()
+ args = (object, str, str, str, long, long, str, str, str, gtk.gdk.Pixbuf, str) + custom(None)
+ l=gtk.ListStore(*args)
if not elements:
return l
for a in elements:
@@ -125,14 +134,42 @@ class AnnotationTable(AdhocView):
helper.format_time(a.fragment.end),
png_to_pixbuf(self.controller.package.imagecache[a.fragment.begin],
height=32),
- self.controller.get_element_color(a),
- ) )
+ self.controller.get_element_color(a)
+ ) + custom(a),
+ )
return l
- def set_elements(self, elements):
- self.elements=elements
- model=self.build_model(elements)
+ def set_elements(self, elements, custom_data=None):
+ """Use a new set of elements.
+
+ If custom_data is not None, then it is a function returning
+ tuples, that can be used to defined additional model columns.
+
+ When called with None as parameter, it must return a tuple
+ with the additional column types. It will be appended at the
+ end of the ListStore, in columns COLUMN_CUSTOM_FIRST,
+ COLUMN_CUSTOM_FIRST+1, etc.
+
+ When called with an annotation as parameter, it must return a
+ tuple with the appropriate values for the annotation in the
+ custom columns.
+ """
+ model=self.build_model(elements, custom_data)
self.widget.treeview.set_model(model)
+ self.model = model
+ self.elements=elements
+ if self.last_edited_path is not None:
+ # We just edited an annotation. This update must come from
+ # it, so let us try to set the cursor position at the next element.
+ path = str(long(self.last_edited_path) + 1)
+ try:
+ self.model.get_iter(path)
+ except ValueError:
+ path = self.last_edited_path
+ self.widget.treeview.set_cursor(path,
+ focus_column=self.columns['content'],
+ start_editing=True)
+ self.last_edited_path = None
def motion_notify_event_cb(self, tv, event):
if not event.window is tv.get_bin_window():
@@ -170,6 +207,7 @@ class AnnotationTable(AdhocView):
select.set_mode(gtk.SELECTION_MULTIPLE)
tree_view.connect('button-press-event', self.tree_view_button_cb)
+ tree_view.connect('key-press-event', self.tree_view_key_cb)
tree_view.connect('row-activated', self.row_activated_cb)
tree_view.connect('motion-notify-event', self.motion_notify_event_cb)
tree_view.connect('leave-notify-event', self.leave_notify_event_cb)
@@ -188,6 +226,24 @@ class AnnotationTable(AdhocView):
columns['snapshot'].set_reorderable(True)
tree_view.append_column(columns['snapshot'])
+ def cell_edited(cell, path_string, text):
+ it = self.model.get_iter_from_string(path_string)
+ if not it:
+ return
+ a = self.model.get_value (it, COLUMN_ELEMENT)
+ new_content = helper.title2content(text,
+ a.content.data,
+ a.type.getMetaData(config.data.namespace, "representation"))
+ if new_content is None:
+ self.log(_("Cannot update the annotation, its representation is too complex"))
+ elif a.content.data != new_content:
+ self.last_edited_path = path_string
+ self.controller.notify('EditSessionStart', element=a)
+ a.content.data = new_content
+ self.controller.notify('AnnotationEditEnd', annotation=a)
+ self.controller.notify('EditSessionEnd', element=a)
+ return True
+
for (name, label, col) in (
('content', _("Content"), COLUMN_CONTENT),
('type', _("Type"), COLUMN_TYPE),
@@ -195,7 +251,12 @@ class AnnotationTable(AdhocView):
('end', _("End"), COLUMN_END_FORMATTED),
('duration', _("Duration"), COLUMN_DURATION),
('id', _("Id"), COLUMN_ID) ):
- columns[name]=gtk.TreeViewColumn(label, gtk.CellRendererText(), text=col)
+ renderer = gtk.CellRendererText()
+ columns[name]=gtk.TreeViewColumn(label, renderer, text=col)
+ if name == 'content':
+ renderer.connect('edited', cell_edited)
+ renderer.props.editable = True
+
columns[name].set_reorderable(True)
columns[name].set_sort_column_id(col)
tree_view.append_column(columns[name])
@@ -215,6 +276,9 @@ class AnnotationTable(AdhocView):
columns[name].set_min_width(40)
columns['content'].set_expand(True)
+ # Allow user classes to tweak behaviour
+ self.columns = columns
+
# Drag and drop for annotations
tree_view.drag_source_set(gtk.gdk.BUTTON1_MASK,
config.data.drag_type['annotation']
@@ -245,6 +309,10 @@ class AnnotationTable(AdhocView):
def drag_received_cb(widget, context, x, y, selection, targetType, time):
"""Handle the drop of an annotation type.
"""
+ if context.get_source_widget().is_ancestor(self.widget):
+ # Ignore drops from our own widget
+ return False
+
if targetType == config.data.target_type['annotation']:
sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
if sources:
@@ -347,6 +415,17 @@ class AnnotationTable(AdhocView):
return True
return False
+ def tree_view_key_cb(self, widget=None, event=None):
+ if event.keyval == gtk.keysyms.Return and event.state & gtk.gdk.CONTROL_MASK:
+ # Control-return: goto annotation
+ nodes = self.get_selected_nodes ()
+ if len(nodes) == 1 and nodes[0] is not None:
+ ann = nodes[0]
+ self.controller.update_status (status="set", position=ann.fragment.begin)
+ self.controller.gui.set_current_annotation(ann)
+ return True
+ return False
+
def tree_view_button_cb(self, widget=None, event=None):
if not event.window is widget.get_bin_window():
return False
@@ -405,10 +484,11 @@ class GenericTable(AdhocView):
return [ store.get_value (store.get_iter(p), COLUMN_ELEMENT) for p in paths ]
def set_elements(self, elements):
- self.elements=elements
model=self.build_model(elements)
self.widget.treeview.set_model(model)
-
+ self.model = model
+ self.elements=elements
+
def build_model(self, elements):
"""Build the ListStore containing the data.
@@ -499,6 +579,10 @@ class GenericTable(AdhocView):
def drag_received_cb(widget, context, x, y, selection, targetType, time):
"""Handle the drop of an annotation type.
"""
+ if context.get_source_widget().is_ancestor(self.widget):
+ # Ignore drops from our own widget
+ return False
+
if targetType == config.data.target_type['annotation']:
sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
if sources:
diff --git a/lib/advene/gui/views/timeline.py b/lib/advene/gui/views/timeline.py
index 746a623..bd69a1a 100755
--- a/lib/advene/gui/views/timeline.py
+++ b/lib/advene/gui/views/timeline.py
@@ -21,10 +21,12 @@ import re
import operator
import cgi
import struct
+import gobject
import gtk
import cairo
import pango
from gettext import gettext as _
+from threading import Lock
# Advene part
import advene.core.config as config
@@ -46,19 +48,13 @@ name="Timeline view plugin"
def register(controller):
controller.register_viewclass(TimeLine)
-# Temporary workaround to timeline update performance issue
-MAX_ANNOTATIONS=1500
-
-parsed_representation = re.compile(r'^here/content/parsed/([\w\d_\.]+)$')
-
class QuickviewBar(gtk.HBox):
def __init__(self, controller=None):
gtk.HBox.__init__(self)
self.controller=controller
self.begin=gtk.Label()
self.end=gtk.Label()
- self.content=gtk.Label()
- self.content.set_single_line_mode(True)
+ self.content=gtk.ProgressBar()
self.content.set_ellipsize(pango.ELLIPSIZE_MIDDLE)
self.annotation=None
@@ -67,6 +63,12 @@ class QuickviewBar(gtk.HBox):
self.pack_start(self.begin, expand=False)
self.pack_start(self.end, expand=False)
+ def set_text(self, s, progress=0):
+ self.begin.set_text("")
+ self.end.set_text("")
+ self.content.set_text(s)
+ self.content.set_fraction(min(progress, 1.0))
+
def set_annotation(self, a=None):
if a is None:
b=""
@@ -94,7 +96,8 @@ class QuickviewBar(gtk.HBox):
self.annotation=a
self.begin.set_text(b)
self.end.set_text(e)
- self.content.set_markup(u"<b>%s</b>" % c.replace('<', '<'))
+ self.content.set_text(c)
+ self.content.set_fraction(0)
class TimeLine(AdhocView):
"""Representation of a set of annotations placed on a timeline.
@@ -120,8 +123,8 @@ class TimeLine(AdhocView):
tooltip = _("Display annotations on a timeline")
def __init__ (self, elements=None,
- minimum=None,
- maximum=None,
+ minimum=0,
+ maximum=0,
controller=None,
annotationtypes=None,
parameters=None):
@@ -145,8 +148,9 @@ class TimeLine(AdhocView):
}
self.controller=controller
- self.registered_rules=[]
+ self.update_lock = Lock()
+ self.registered_rules=[]
opt, arg = self.load_parameters(parameters)
self.options.update(opt)
ats=[]
@@ -180,58 +184,18 @@ class TimeLine(AdhocView):
self.list = elements
self.annotationtypes = annotationtypes
+ # package used when the update_model has been called from
+ # __init__. This is used to avoid a double initialization.
+ self.package_from_init = None
+
self.current_marker = None
self.current_marker_scale = None
+ self.layout = gtk.Layout ()
- # Now that self.list is initialized, we reuse the l variable
- # for various checks.
- if elements is None:
- elements = controller.package.annotations
- # Initialize annotation types if needed
- if self.annotationtypes is None:
- if self.list is None:
- # We display the whole package, so display also
- # empty annotation types
- l = len(self.controller.package.annotations)
- if l > MAX_ANNOTATIONS:
- # There are too many annotations, causing
- # performance issues. Display only the first two
- # annotation types.
- self.annotationtypes = self.controller.package.annotationTypes[:2]
- self.dialog_too_many_annotations(l)
- else:
- self.annotationtypes = list(self.controller.package.annotationTypes)
- else:
- # We specified a list. Display only the annotation
- # types for annotations present in the set
- self.annotationtypes = list(set([ a.type for a in self.list ]))
-
- if minimum is None and maximum is None and controller is not None:
- # No dimension. Get them from the controller.
- duration = controller.cached_duration
- if duration <= 0:
- if controller.package.annotations:
- duration = max([a.fragment.end for a in elements])
- else:
- duration = 0
- minimum=0
- maximum=duration
-
- if minimum is None or maximum is None:
- b, e = self.bounds ()
- if minimum is None:
- minimum = b
- if maximum is None:
- maximum = e
self.minimum = minimum
self.maximum = maximum
-
- # Ensure that self.maximum > self.minimum
- if self.maximum == self.minimum:
- self.maximum = self.minimum + 10000
-
- if self.minimum > self.maximum:
- self.minimum, self.maximum = self.maximum, self.minimum
+ if not self.maximum:
+ self.update_min_max()
if default_position is None:
default_position=self.minimum
@@ -243,6 +207,8 @@ class TimeLine(AdhocView):
'white': name2color('white'),
}
+ self.locked_inspector = False
+
def handle_autoscroll_combo(combo):
self.options['autoscroll'] = combo.get_current_element()
return True
@@ -270,13 +236,13 @@ class TimeLine(AdhocView):
# How many units does a pixel represent ?
# self.scale.value = unit by pixel
# Unit = ms
- self.scale = gtk.Adjustment (value=(self.maximum - self.minimum) / gtk.gdk.get_default_root_window().get_size()[0],
+ self.scale = gtk.Adjustment (value=((self.maximum - self.minimum) or 60 * 60 * 1000) / gtk.gdk.get_default_root_window().get_size()[0],
lower=5,
- upper=36000,
- step_incr=5,
- page_incr=1000)
+ upper=sys.maxint,
+ step_incr=20,
+ page_incr=100)
self.scale.connect('value-changed', self.scale_event)
- self.scale.connect('changed', self.scale_event)
+ #self.scale.connect('changed', self.scale_event)
# The same value in relative form
self.fraction_adj = gtk.Adjustment (value=1.0,
@@ -290,7 +256,12 @@ class TimeLine(AdhocView):
# Coordinates of the selected region.
self.layout_selection=[ [None, None], [None, None] ]
- self.layout = gtk.Layout ()
+ # Session-set variable: if we get a horizontal scroll signal,
+ # then we know that the device pointer for the session is able
+ # to do both (vertical and horizontal), and we can act
+ # accordingly.
+ self.can_do_horizontal_scroll = False
+
self.layout.add_events( gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.BUTTON1_MOTION_MASK )
self.scale_layout = gtk.Layout()
self.scale_layout.height=0
@@ -341,43 +312,38 @@ class TimeLine(AdhocView):
self.bookmarks_to_draw = []
# Current position in units
- self.current_position = minimum
+ self.current_position = self.minimum
# Holds the ref. to a newly created annotation, so that its
- # widget gets focus when it is created (cf udpate_annotation)
+ # widget gets focus when it is created (cf update_annotation)
self.transmuted_annotation = None
# Adjustment corresponding to the Virtual display
# The page_size is the really displayed area
self.adjustment = gtk.Adjustment ()
- self.update_adjustment ()
- self.adjustment.set_value(u2p(minimum, absolute=True))
# Dictionary holding the vertical position for each type
self.layer_position = {}
-
- self.update_layer_position()
-
- self.populate ()
-
- self.draw_marks ()
-
self.draw_current_mark()
self.widget = self.get_full_widget()
- self.update_legend_widget(self.legend)
# Set default parameters (zoom) and refresh the legend widget
# on the first expose signal
def set_default_parameters(widget, event, zoom, pos, pane):
+ self.update_adjustment ()
+ self.adjustment.set_value(u2p(self.minimum, absolute=True))
self.fraction_adj.value=zoom
if pos >= self.minimum and pos <= self.maximum:
self.adjustment.set_value(u2p(pos, absolute=True))
- self.resize_legend_widget(self.legend)
# Set annotation inspector width, so that it does not auto-resize
if pane is None:
w, h = self.widget.window.get_size()
pane=w - 160
self.inspector_pane.set_position(pane)
+ # Check if display is limited
+ if self.minimum > 0 and self.maximum < self.controller.package.cached_duration:
+ self.limit_navtools.show()
self.widget.disconnect(self.expose_signal)
+ self.update_model(from_init=True)
return False
# Convert values, that could be strings
if default_position is not None:
@@ -388,7 +354,6 @@ class TimeLine(AdhocView):
self.expose_signal=self.widget.connect('expose-event', set_default_parameters,
default_zoom, default_position, pane_position)
-
def get_save_arguments(self):
arguments = [ ('annotation-type', at.id) for at in self.annotationtypes ]
arguments.append( ('minimum', self.minimum ) )
@@ -415,10 +380,10 @@ class TimeLine(AdhocView):
if self.bookmarks_to_draw:
self.draw_bookmarks(layout, event)
if self.options['display-all-relations']:
- to_draw = [ (self.get_widget_for_annotation(r.members[0]),
- self.get_widget_for_annotation(r.members[1]),
- r)
- for r in self.controller.package.relations ]
+ to_draw = [ (self.get_widget_for_annotation(r.members[0]),
+ self.get_widget_for_annotation(r.members[1]),
+ r)
+ for r in self.controller.package.relations ]
else:
to_draw = self.relations_to_draw
if not to_draw:
@@ -538,52 +503,74 @@ class TimeLine(AdhocView):
d.connect('response', handle_response)
return True
- def update_model(self, package=None, partial_update=False):
+ def update_min_max(self):
+ oldmax = self.maximum
+ self.minimum=0
+ self.maximum=0
+ duration = self.controller.cached_duration
+ if duration <= 0:
+ duration = self.bounds()[1]
+ if duration:
+ self.maximum = long(duration)
+
+ if not self.maximum:
+ # self.maximum == 0, so try to compute it
+ self.maximum = self.bounds()[1]
+
+ # Ensure that self.maximum > self.minimum
+ if self.maximum == self.minimum:
+ self.maximum = self.minimum + 10000
+
+ if self.minimum > self.maximum:
+ self.minimum, self.maximum = self.maximum, self.minimum
+
+ if self.maximum != oldmax and self.layout.window is not None:
+ # Reset to display whole timeline
+ (w, h) = self.layout.window.get_size()
+ self.scale.set_value( (self.maximum - self.minimum) / float(w) )
+
+ def update_model(self, package=None, partial_update=False, from_init=False):
"""Update the whole model.
@param package: the package
@type package: Package
- @param update: it is only an update for the existing package, we do not need to rebuild everything
- @param update: boolean
+ @param partial_update: it is only an update for the existing package, we do not need to rebuild everything
+ @param partial_update: boolean
"""
+ if not self.update_lock.acquire(False) or self.layout.window is None:
+ # An update is already ongoing or the layout is not realized yet
+ return
+
if package is None:
package = self.controller.package
+ if from_init:
+ if len(self.layout.get_children()) < 3:
+ self.package_from_init = package
+ else:
+ self.update_lock.release()
+ return
+ else:
+ if package == self.package_from_init:
+ # update_model is called on the same package as in the
+ # __init__ method. This means that is is a result of
+ # the PackageActivate, so do not update it twice. Just
+ # reset package_from_init to enable future updates (in
+ # case of mass-modification of the package: merging,
+ # import...)
+ self.package_from_init = None
+ self.update_lock.release()
+ return
+
+ self.update_min_max()
if partial_update:
pos=self.get_middle_position()
else:
# It is not just an update, do a full redraw
- oldmax=self.maximum
- self.minimum=0
- self.maximum=0
- try:
- duration=package.cached_duration
- except:
- duration=0
- if duration:
- self.maximum = long(duration)
-
- if not self.maximum:
- # self.maximum == 0, so try to compute it
- self.maximum = self.bounds()[1]
-
- if self.maximum != oldmax:
- # Reset to display whole timeline
- (w, h)=self.layout.window.get_size()
- self.scale.set_value( (self.maximum - self.minimum) / float(w) )
-
- if self.list is None:
+ if self.annotationtypes is None or self.list is None:
# We display the whole package, so display also
# empty annotation types
- l=len(self.controller.package.annotations)
- if l > MAX_ANNOTATIONS:
- # There are too many annotations, causing
- # performance issues. Display only the first two
- # annotation types.
- self.annotationtypes = self.controller.package.annotationTypes[:2]
- self.dialog_too_many_annotations(l)
- else:
- self.annotationtypes = list(self.controller.package.annotationTypes)
+ self.annotationtypes = list(self.controller.package.annotationTypes)
else:
# We specified a list. Display only the annotation
# types for annotations present in the set
@@ -596,15 +583,17 @@ class TimeLine(AdhocView):
self.layer_position.clear()
self.update_layer_position()
- self.populate()
self.draw_marks()
-
self.draw_current_mark()
- self.update_legend_widget(self.legend)
- self.legend.show_all()
- self.fraction_event(widget=None)
+ def finalize_callback():
+ self.update_legend_widget(self.legend)
+ self.legend.show_all()
+ self.fraction_event(widget=None, forced_window_width=self.layout.window.get_size()[0])
+ self.update_lock.release()
+
+ self.populate(finalize_callback)
if partial_update:
self.set_middle_position(pos)
@@ -634,7 +623,9 @@ class TimeLine(AdhocView):
self.update_model(self.controller.package, partial_update=True)
return True
- def set_annotation(self, a=None):
+ def set_annotation(self, a=None, force=False):
+ if not force and self.locked_inspector:
+ return
self.quickview.set_annotation(a)
for v in self._slave_views:
m=getattr(v, 'set_annotation', None)
@@ -697,9 +688,32 @@ class TimeLine(AdhocView):
return True
def duration_update_handler(self, context, parameters):
+ """Handle DurationUpdate event.
+
+ There is a potential synchronization issue here: duration may
+ be updated while an update_model is already occuring. In this
+ case, the update_lock is held and the update_model call will
+ not do anything. However, we also will miss the correct update
+ of the timeline duration.
+
+ We should check the update_lock and if it is held, delay the
+ call to update_model intended to update the timeline duration.
+ """
if self.maximum != long(context.globals['duration']):
- # Need a refresh
- self.update_model()
+ # Need a refresh. It can happen while an update_model is
+ # already taking place. In this case, we have to wait
+ # until the update_model is done before doing our own update.
+ def duration_updated(d):
+ if not self.update_lock.locked():
+ # There is a race possibility here. Let's assume
+ # that it will be rare enough...
+ self.refresh()
+ return False
+ else:
+ print "duration_updated timeout"
+ # Try again at next timeout.
+ return True
+ gobject.timeout_add(100, duration_updated, long(context.globals['duration']))
return True
def media_change_handler(self, context, parameters):
@@ -717,7 +731,7 @@ class TimeLine(AdhocView):
# is kept.
l=sorted( ( t
for t in ( (w, abs(w.mark - pos)) for w in self.scale_layout.get_children()
- if isinstance(w, gtk.Image) )
+ if isinstance(w, gtk.Image) )
if t[1] <= epsilon and t[1] < abs(t[0].timestamp - pos) ),
key=operator.itemgetter(1))
for t in l:
@@ -1334,19 +1348,19 @@ class TimeLine(AdhocView):
bestdist = []
mindist = (abs(sa[0].fragment.begin - da[0].fragment.begin)
- + abs(sa[0].fragment.end - da[0].fragment.end)
- + abs((sa[0].fragment.end - sa[0].fragment.begin)
+ + abs(sa[0].fragment.end - da[0].fragment.end)
+ + abs((sa[0].fragment.end - sa[0].fragment.begin)
- (da[0].fragment.end - da[0].fragment.begin)))
bestdist.append(mindist)
bestpath.append([])
bestpath[0].append(0)
-
+
for j in range(1,len(sa)):
bestpath.append([])
bestpath[j].append(j)
dist = (abs(sa[j].fragment.begin - da[0].fragment.begin)
- + abs(sa[j].fragment.end - da[0].fragment.end)
+ + abs(sa[j].fragment.end - da[0].fragment.end)
+ abs((sa[j].fragment.end - sa[j].fragment.begin)
- (da[0].fragment.end - da[0].fragment.begin)))
if dist < mindist:
@@ -1356,7 +1370,7 @@ class TimeLine(AdhocView):
else:
bestpath[j] = list(bestpath[j-1])
bestdist.append(bestdist[j-1] + dist)
-
+
for i in range(1,len(da)):
currentdist = 0
prevsubdist = 0
@@ -1364,14 +1378,14 @@ class TimeLine(AdhocView):
prevsubpath = []
for j in range(0,len(sa)):
dist = (abs(sa[j].fragment.begin - da[i].fragment.begin)
- + abs(sa[j].fragment.end - da[i].fragment.end)
- + abs((sa[j].fragment.end - sa[j].fragment.begin)
+ + abs(sa[j].fragment.end - da[i].fragment.end)
+ + abs((sa[j].fragment.end - sa[j].fragment.begin)
- (da[i].fragment.end - da[i].fragment.begin)))
-
+
if j == 0:
currentpath = list(bestpath[0])
currentdist = bestdist[0]
-
+
bestpath[0].append(0)
bestdist[0] = bestdist[0] + dist
@@ -1379,10 +1393,10 @@ class TimeLine(AdhocView):
insdist = bestdist[j] + dist
deldist = bestdist[j-1] + dist
subdist = prevsubdist + dist*1.5
-
+
currentdist = bestdist[j]
currentpath = list(bestpath[j])
-
+
if insdist < deldist :
if insdist < subdist:
bestpath[j].append(j)
@@ -1398,7 +1412,7 @@ class TimeLine(AdhocView):
else:
bestpath[j] = list(bestpath[j-1])
bestdist[j] = deldist
-
+
prevsubdist = currentdist
prevsubpath = list(currentpath)
@@ -1426,13 +1440,13 @@ class TimeLine(AdhocView):
for (label, action) in (
(_("Duplicate all annotations to type %s") % dest_title,
(copy_annotations, source, dest, False) ),
- (_("Move all annotations to type %s") % dest_title,
+ (_("Move all annotations to type %s") % dest_title,
(copy_annotations, source, dest, True) ),
- (_("Duplicate all annotations matching a string to type %s") % dest_title,
+ (_("Duplicate all annotations matching a string to type %s") % dest_title,
(copy_annotations_filtered, source, dest, False) ),
- (_("Move all annotations matching a string to type %s") % dest_title,
+ (_("Move all annotations matching a string to type %s") % dest_title,
(copy_annotations_filtered, source, dest, True) ),
- (_("Align all annotation time codes using %s as reference.") % source_title,
+ (_("Align all annotation time codes using %s as reference.") % source_title,
(DTWalign_annotations, source, dest, 'time', True) ),
(_("Align all annotation contents using %s as reference") % source_title,
(DTWalign_annotations, source, dest, 'content', True) ),
@@ -1541,6 +1555,10 @@ class TimeLine(AdhocView):
"""Handle button release on annotation widgets.
"""
if event.button == 1 and getattr(widget, '_single_click_guard', None):
+ # Single click on an annotation -> lock inspector
+ self.set_annotation(annotation, force=True)
+ self.locked_inspector = True
+ self.locked_icon.show()
self.controller.gui.set_current_annotation(annotation)
# Goto annotation
c=self.controller
@@ -1614,44 +1632,21 @@ class TimeLine(AdhocView):
e.set_text(self.controller.get_title(annotation))
e.set_activates_default(True)
- def get_parsed_content(widget, ann):
- """Return the appropriate data generated from the widget content.
- """
- rep=ann.type.getMetaData(config.data.namespace, "representation")
- if rep is None or rep == '' or re.match('^\s+', rep):
- r=unicode(widget.get_text())
- else:
- m=parsed_representation.match(rep)
- if m:
- # We have a simple representation (here/content/parsed/name)
- # so we can update the name field.
- name=m.group(1)
- reg = re.compile('^' + name + '=(.+?)$', re.MULTILINE)
- if reg.search(ann.content.data):
- r = reg.sub(name + '=' + unicode(widget.get_text()).replace('\n', '\\n'), ann.content.data)
- else:
- # The key is not present, add it
- if ann.content.data:
- r = ann.content.data + "\n%s=%s" % (name,
- unicode(widget.get_text()).replace('\n', '\\n'))
- else:
- r = "%s=%s" % (name,
- unicode(widget.get_text()).replace('\n', '\\n'))
- else:
- self.controller.log("Cannot update the annotation, its representation is too complex")
- r=ann.content.data
- return r
-
def key_handler(widget, event, ann, cb, controller, close_eb):
if event.keyval == gtk.keysyms.Return:
- r=get_parsed_content(widget, ann)
- if cb:
- cb('validate', ann)
- if r != ann.content.data:
- self.controller.notify('EditSessionStart', element=ann, immediate=True)
- ann.content.data = r
- controller.notify('AnnotationEditEnd', annotation=ann)
- self.controller.notify('EditSessionEnd', element=ann)
+ r = helper.title2content(widget.get_text(),
+ ann.content.data,
+ ann.type.getMetaData(config.data.namespace, "representation"))
+ if r is None:
+ self.controller.log(_("Cannot update the annotation, its representation is too complex"))
+ else:
+ if cb:
+ cb('validate', ann)
+ if r != ann.content.data:
+ self.controller.notify('EditSessionStart', element=ann, immediate=True)
+ ann.content.data = r
+ controller.notify('AnnotationEditEnd', annotation=ann)
+ self.controller.notify('EditSessionEnd', element=ann)
close_eb(widget)
return True
elif event.keyval == gtk.keysyms.Escape:
@@ -1662,14 +1657,19 @@ class TimeLine(AdhocView):
return True
elif event.keyval == gtk.keysyms.Tab:
# Validate the current annotation and go to the previous/next one
- r=get_parsed_content(widget, ann)
- if cb:
- cb('validate', ann)
- if r != ann.content.data:
- self.controller.notify('EditSessionStart', element=ann, immediate=True)
- ann.content.data = r
- controller.notify('AnnotationEditEnd', annotation=ann)
- self.controller.notify('EditSessionEnd', element=ann)
+ r = helper.title2content(widget.get_text(),
+ ann.content.data,
+ ann.type.getMetaData(config.data.namespace, "representation"))
+ if r is None:
+ self.controller.log("Cannot update the annotation, its representation is too complex")
+ else:
+ if cb:
+ cb('validate', ann)
+ if r != ann.content.data:
+ self.controller.notify('EditSessionStart', element=ann, immediate=True)
+ ann.content.data = r
+ controller.notify('AnnotationEditEnd', annotation=ann)
+ self.controller.notify('EditSessionEnd', element=ann)
# Navigate
b=ann.fragment.begin
if event.state & gtk.gdk.SHIFT_MASK:
@@ -1905,15 +1905,71 @@ class TimeLine(AdhocView):
b.show_all()
return b
- def populate (self):
+ def populate (self, callback=None):
+ """Populate the annotations widget.
+
+ Since we do it asynchronously in the idle loop, the callback
+ can be used to execute actions at the end of the annotation
+ widgets creation.
+ """
u2p = self.unit2pixel
if self.list is None:
- l=self.controller.package.annotations
+ l = self.controller.package.annotations
else:
- l=self.list
-
- for annotation in l:
- self.create_annotation_widget(annotation)
+ l = self.list
+
+ # Use a list so that the counter variable can be modified in
+ # the closure.
+ counter = [ 0 ]
+ count = 10
+ length = len(l)
+
+ #print '----------------------------------------- populate', length
+ #import traceback; traceback.print_stack()
+ if l:
+ old_position = self.inspector_pane.get_position()
+ self.inspector_pane.set_position(2)
+ def create_annotations(annotations, length):
+ i = counter[0]
+ if i < length:
+ self.quickview.set_text(_("Displaying %(count)d / %(total)d annotations...") % {
+ 'count': min(i + count, length),
+ 'total': length },
+ 1.0 * (i+count) / length)
+ for a in annotations[i:i+count]:
+ self.create_annotation_widget(a)
+ counter[0] += count
+ return True
+ else:
+ self.layout.thaw_child_notify()
+ if hasattr(self, 'quickview'):
+ self.quickview.set_text(_("Displaying done."))
+ self.locked_inspector = False
+ self.controller.gui.set_busy_cursor(False)
+ if old_position:
+ self.inspector_pane.set_position(old_position)
+ else:
+ # old_position was = 0, because its value was
+ # obtained before the widget was realized. There
+ # is a good chance that the value is now
+ # available.
+ if self.widget.window:
+ self.inspector_pane.set_position(max((0, self.widget.window.get_size()[0] - 160)))
+ if callback:
+ callback()
+ return False
+ if l:
+ self.layout.freeze_child_notify()
+ if hasattr(self, 'quickview'):
+ self.quickview.set_text(_("Displaying %(count)d / %(total)d annotations...") % {
+ 'count': count,
+ 'total': length },
+ 1.0 * count / length)
+ self.locked_inspector = True
+ self.controller.gui.set_busy_cursor(True)
+ gobject.idle_add(create_annotations, l, length)
+ elif callback:
+ callback()
self.layout.set_size (u2p (self.maximum - self.minimum),
max(self.layer_position.values() or (0,))
@@ -2011,7 +2067,7 @@ class TimeLine(AdhocView):
"""
ic=self.controller.package.imagecache
png=ic.get(widget.mark, epsilon=step/2)
- if (png == ic.not_yet_available_image
+ if (png == ic.not_yet_available_image
and 'async-snapshot' in self.controller.player.player_capabilities):
self.controller.update_snapshot(widget.mark)
else:
@@ -2150,24 +2206,24 @@ class TimeLine(AdhocView):
def layout_drag_received(self, widget, context, x, y, selection, targetType, time):
"""Handle the drop from an annotation to the layout.
"""
- if targetType == config.data.target_type['annotation']:
- sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
- # We received a drop. Determine the location.
+ # We received a drop. Determine the location.
- # Correct y value according to scrollbar position
- y += widget.parent.get_vscrollbar().get_adjustment().get_value()
+ # Correct y value according to scrollbar position
+ y += widget.parent.get_vscrollbar().get_adjustment().get_value()
+ drop_types=[ at
+ for (at, p) in self.layer_position.iteritems()
+ if (y >= p and y <= p + self.button_height + config.data.preferences['timeline']['interline-height']) ]
- a=[ at
- for (at, p) in self.layer_position.iteritems()
- if (y >= p and y <= p + self.button_height) ]
- if a:
+ if targetType == config.data.target_type['annotation']:
+ sources=[ self.controller.package.annotations.get(uri) for uri in unicode(selection.data, 'utf8').split('\n') ]
+ if drop_types:
# Copy/Move to a[0]
if config.data.os == 'win32':
# Control/Shift mods for DND is broken on win32. Force ACTION_ASK.
ac=gtk.gdk.ACTION_ASK
else:
ac=context.actions
- self.move_or_copy_annotations(sources, a[0], position=self.pixel2unit(self.adjustment.value + x, absolute=True), action=ac)
+ self.move_or_copy_annotations(sources, drop_types[0], position=self.pixel2unit(self.adjustment.value + x, absolute=True), action=ac)
else:
# Maybe we should propose to create a new annotation-type ?
# Create a type
@@ -2178,14 +2234,10 @@ class TimeLine(AdhocView):
return True
elif targetType == config.data.target_type['annotation-type']:
source=self.controller.package.annotationTypes.get(unicode(selection.data, 'utf8'))
- # We received a drop. Determine the location.
- a=[ at
- for (at, p) in self.layer_position.iteritems()
- if (y >= p and y <= p + self.button_height) ]
- if a:
- # Copy/Move to a[0]
- if source != a[0]:
- self.copy_annotation_type(source, a[0])
+ if drop_types:
+ # Copy/Move to drop_types[0]
+ if source != drop_types[0]:
+ self.copy_annotation_type(source, drop_types[0])
else:
# Create an annotation in the type.
self.controller.create_annotation(position=self.pixel2unit(self.adjustment.value + x, absolute=True),
@@ -2202,11 +2254,8 @@ class TimeLine(AdhocView):
return True
elif targetType == config.data.target_type['timestamp']:
# We received a drop. Create an annotation.
- a=[ at
- for (at, p) in self.layer_position.iteritems()
- if (y >= p and y <= p + self.button_height) ]
- if a:
- typ=a[0]
+ if drop_types:
+ typ=drop_types[0]
else:
typ=self.create_annotation_type()
if typ is not None:
@@ -2310,6 +2359,10 @@ class TimeLine(AdhocView):
def layout_button_release_cb(self, widget=None, event=None):
"""Handle mouse button release in timeline window.
"""
+ # Any click in the layout background unlocks the inspector
+ self.locked_inspector = False
+ self.locked_icon.hide()
+
if event.button == 1:
# Left click button in the upper part of the layout
# or double-click anywhere in the background
@@ -2348,8 +2401,8 @@ class TimeLine(AdhocView):
if not isinstance(widget, AnnotationWidget):
continue
#x=self.layout.child_get_property(widget, 'x')
- #y=self.layout.child_get_property(widget, 'y')
- # memory leak in container.child_get_property
+ #y=self.layout.child_get_property(widget, 'y')
+ # memory leak in container.child_get_property
x,y = widget.window.get_position()
w,h = widget.window.get_size()
if ( x >= x1 and x + w <= x2
@@ -2362,10 +2415,9 @@ class TimeLine(AdhocView):
a=[ at
for (at, p) in self.layer_position.iteritems()
if (y1 >= p and y1 <= p + self.button_height) ]
- if not a:
- at = None
- else:
- at=a[0]
+ at = None
+ if a:
+ at = a[0]
def create(i):
self.controller.create_annotation(position=self.pixel2unit(x1, absolute=True),
@@ -2387,8 +2439,8 @@ class TimeLine(AdhocView):
(_("Zoom on region"), zoom),
(_("Restrict display to region"), restrict),
):
- if at is None and action == 'create':
- pass
+ if at is None and action == create:
+ continue
i=gtk.MenuItem(label)
i.connect('activate', action)
menu.append(i)
@@ -2541,10 +2593,13 @@ class TimeLine(AdhocView):
a.changed ()
def scale_event (self, widget=None, data=None):
+ if not self.update_lock.acquire(False) or self.layout.window is None:
+ # An update is pending. Ignore the scale event.
+ return True
self.update_adjustment ()
# Update the layout and scale_layout dimensions
- width=self.unit2pixel(self.maximum - self.minimum)
+ width = self.unit2pixel(self.maximum - self.minimum)
(w, h) = self.layout.get_size ()
self.layout.set_size (width, h)
(w, h) = self.scale_layout.get_size ()
@@ -2556,6 +2611,7 @@ class TimeLine(AdhocView):
self.scale_label.set_text('1mark=%dm%.02fs' % (int(dur / 60), dur % 60))
self.redraw_event ()
+ self.update_lock.release()
return True
def layout_resize_event(self, widget=None, event=None, *p):
@@ -2575,10 +2631,10 @@ class TimeLine(AdhocView):
def zoom_on_region(self, begin, end):
# Deactivate autoscroll...
self.set_autoscroll_mode(0)
-
+
(w, h) = self.layout.window.get_size ()
self.scale.value=1.3 * (end - begin) / w
-
+
# Center on annotation
self.center_on_position( (begin + end) / 2 )
return True
@@ -2611,7 +2667,7 @@ class TimeLine(AdhocView):
self.limit_navtools.hide()
return True
- def fraction_event (self, widget=None, *p):
+ def fraction_event (self, widget=None, forced_window_width=0, *p):
"""Set the zoom factor to display the given fraction of the movie.
fraction is > 0 and <= 1.
@@ -2620,14 +2676,17 @@ class TimeLine(AdhocView):
if not parent:
return True
(w, h) = parent.get_size ()
+ if forced_window_width != 0:
+ w = forced_window_width
- if w < 2:
+ if w < 10:
return True
if self.minimum == self.maximum:
return True
- fraction=self.fraction_adj.value
+ fraction = self.fraction_adj.value
+
v = (self.maximum - self.minimum) / float(w) * fraction
# New width in pixel
if v < 5 or (self.maximum - self.minimum) / v > 65535:
@@ -2644,6 +2703,9 @@ class TimeLine(AdhocView):
def layout_scroll_cb(self, widget=None, event=None):
"""Handle mouse scrollwheel events.
"""
+ if event.direction == gtk.gdk.SCROLL_RIGHT or event.direction == gtk.gdk.SCROLL_LEFT:
+ self.can_do_horizontal_scroll = True
+
zoom=event.state & gtk.gdk.CONTROL_MASK
if zoom:
# Control+scroll: zoom in/out
@@ -2655,8 +2717,15 @@ class TimeLine(AdhocView):
mouse_position=self.pixel2unit(event.x, absolute=True)
else:
# Plain scroll: scroll the timeline
- a = self.adjustment
- incr = a.step_increment
+ if (self.can_do_horizontal_scroll
+ and (event.direction == gtk.gdk.SCROLL_UP
+ or event.direction == gtk.gdk.SCROLL_DOWN)):
+ # Vertical scroll with a device that knows how to do horizontal. Let's scroll vertically
+ a = self.vadjustment
+ incr = a.step_increment
+ else:
+ a = self.adjustment
+ incr = a.step_increment
if event.direction == gtk.gdk.SCROLL_DOWN or event.direction == gtk.gdk.SCROLL_RIGHT:
val = a.value + incr
@@ -2732,7 +2801,7 @@ class TimeLine(AdhocView):
# Reposition the next, prev buttons
layout.foreach(move_nav, width)
- layout.get_parent().get_parent().set_position (width + 30)
+ layout.get_parent().get_parent().set_position (width + 60)
def restrict_playing(self, at, widget=None):
"""Restrict playing to the given annotation-type.
@@ -2776,12 +2845,13 @@ class TimeLine(AdhocView):
else:
l=[a
for a in typ.annotations
- if a.fragment.end < p ]
+ if a.fragment.begin < p ]
# Sort in reverse order
l.sort(key=lambda a: a.fragment.begin, reverse=True)
if l:
a=l[0]
self.controller.update_status("set", position=a.fragment.begin)
+ self.set_annotation(a)
return True
def restrict_playing(m, at, w):
@@ -3122,7 +3192,8 @@ class TimeLine(AdhocView):
sw_layout = gtk.ScrolledWindow ()
sw_layout.set_policy (gtk.POLICY_ALWAYS, gtk.POLICY_AUTOMATIC)
sw_layout.set_hadjustment (self.adjustment)
- sw_layout.set_vadjustment (sw_legend.get_vadjustment())
+ self.vadjustment = sw_legend.get_vadjustment()
+ sw_layout.set_vadjustment (self.vadjustment)
sw_layout.add (self.layout)
content_pane.add2 (sw_layout)
@@ -3162,7 +3233,7 @@ class TimeLine(AdhocView):
self.scale_label.set_no_show_all(True)
self.limit_navtools = gtk.HBox()
-
+
def navigate(button, event, direction):
# Navigate to the previous/next page, when display is limited
page_duration=self.pixel2unit(self.adjustment.page_size, absolute=False)
@@ -3238,9 +3309,21 @@ class TimeLine(AdhocView):
self.inspector_pane=gtk.HPaned()
self.inspector_pane.pack1(vbox, resize=True, shrink=True)
a=AnnotationDisplay(controller=self.controller)
- f=gtk.Frame(_('Inspector'))
- f.add(a.widget)
- self.inspector_pane.pack2(f, resize=False, shrink=True)
+ self.inspector_frame=gtk.Frame()
+ hbox = gtk.HBox()
+ hbox.pack_start(gtk.Label(_('Inspector')), expand=False)
+ def unlock(b):
+ b.hide()
+ self.locked_inspector = False
+ return True
+ self.locked_icon = get_pixmap_button('small_locked.png', unlock)
+ self.locked_icon.set_tooltip_text(_("Inspector locked. Click here or in the timeline background to unlock."))
+ self.locked_icon.set_no_show_all(True)
+ hbox.pack_start(self.locked_icon, expand=False)
+ self.inspector_frame.set_label_widget(hbox)
+
+ self.inspector_frame.add(a.widget)
+ self.inspector_pane.pack2(self.inspector_frame, resize=False, shrink=True)
self.controller.gui.register_view (a)
a.set_master_view(self)
a.widget.show_all()
@@ -3368,8 +3451,8 @@ class TimeLine(AdhocView):
(1.0 / pow(1.5, n)) for n in range(0, 10)
]
],
- entry=True,
- callback=zoom_change)
+ entry=True,
+ callback=zoom_change)
self.zoom_combobox.child.connect('activate', zoom_entry)
self.zoom_combobox.child.set_width_chars(4)
i=gtk.ToolItem()
diff --git a/lib/advene/gui/views/transcription.py b/lib/advene/gui/views/transcription.py
index 3dee9a8..bfcadc0 100755
--- a/lib/advene/gui/views/transcription.py
+++ b/lib/advene/gui/views/transcription.py
@@ -36,11 +36,10 @@ from advene.gui.views import AdhocView
from advene.gui.util import dialog, get_pixmap_button
import advene.gui.popup
-parsed_representation = re.compile(r'^here/content/parsed/([\w\d_\.]+)$')
-empty_representation = re.compile(r'^\s*$')
-
name="Transcription view plugin"
+ZERO_WIDTH_NOBREAK_SPACE = u"\uFEFF"
+
def register(controller):
controller.register_viewclass(TranscriptionView)
@@ -51,7 +50,7 @@ class TranscriptionView(AdhocView):
def __init__ (self, controller=None, source=None, elements=None, parameters=None):
super(TranscriptionView, self).__init__(controller=controller)
- self.close_on_package_load = True
+ self.close_on_package_load = False
self.contextual_actions = (
(_("Save view"), self.save_view),
(_("Save default options"), self.save_default_options),
@@ -193,29 +192,6 @@ class TranscriptionView(AdhocView):
self.generate_buffer_content()
return True
- def close(self, *p):
- l=self.check_modified()
- if l:
- if self.options['representation'] and not parsed_representation.match(self.options['representation']):
- def close_cb():
- AdhocView.close(self)
- return True
-
- dialog.message_dialog(label=_("%d annotation(s) were modified\nbut we cannot propagate the modifications\nsince the representation parameter is used.") % len(l), callback=close_cb)
- else:
- def handle_modified():
- self.log(_("Updating modified annotations"))
- self.ignore_updates = True
- self.update_modified(l)
- AdhocView.close(self)
- return True
- dialog.message_dialog(label=_("%d annotations were modified.\nDo you want to update their content?") % len(l),
- icon=gtk.MESSAGE_QUESTION,
- callback=handle_modified)
- else:
- AdhocView.close(self)
- return True
-
def check_modified(self):
b=self.textview.get_buffer()
modified = []
@@ -225,7 +201,7 @@ class TranscriptionView(AdhocView):
try:
beginiter=b.get_iter_at_mark(b.get_mark("b_%s" % a.id))
enditer =b.get_iter_at_mark(b.get_mark("e_%s" % a.id))
- if unicode(b.get_text(beginiter, enditer)) != self.representation(a):
+ if unicode(b.get_text(beginiter, enditer)).strip(ZERO_WIDTH_NOBREAK_SPACE) != self.representation(a):
modified.append(a)
except TypeError:
# Some missing annotations
@@ -233,30 +209,6 @@ class TranscriptionView(AdhocView):
return modified
def update_modified(self, l):
- def update(a, text):
- """Update an annotation content according to its representation.
-
- If the update is not possible (too complex representation), return False.
- """
- if self.options['default-representation']:
- rep=a.type.getMetaData(config.data.namespace, 'representation') or ''
- else:
- rep=self.options['representation']
- m=parsed_representation.match(rep)
- if m:
- # We have a simple representation (here/content/parsed/name)
- # so we can update the name field.
- name=m.group(1)
- reg = re.compile('^' + name + '=(.+?)$', re.MULTILINE)
- a.content.data = reg.sub(name + '=' + text, a.content.data)
- else:
- m=empty_representation.match(rep)
- if m:
- a.content.data = text
- else:
- return False
- return True
-
b=self.textview.get_buffer()
impossible=[]
batch_id=object()
@@ -269,12 +221,16 @@ class TranscriptionView(AdhocView):
if not m:
break
enditer = b.get_iter_at_mark(m)
- self.controller.notify('EditSessionStart', element=a, immediate=True)
- if update(a, unicode(b.get_text(beginiter, enditer))):
- self.controller.notify("AnnotationEditEnd", annotation=a, batch=batch_id)
- else:
+ new_content = helper.title2content(unicode(b.get_text(beginiter, enditer)).strip(ZERO_WIDTH_NOBREAK_SPACE),
+ a.content.data,
+ a.type.getMetaData(config.data.namespace, 'representation') if self.options['default-representation'] else self.options['representation'])
+ if new_content is None:
impossible.append(a)
- self.controller.notify('EditSessionEnd', element=a)
+ elif a.content.data != new_content:
+ self.controller.notify('EditSessionStart', element=a, immediate=True)
+ a.content.data = new_content
+ self.controller.notify("AnnotationEditEnd", annotation=a, batch=batch_id)
+ self.controller.notify('EditSessionEnd', element=a)
if impossible:
dialog.message_dialog(label=_("Cannot convert the following annotations,\nthe representation pattern is too complex.\n%s") % ",".join( [ a.id for a in impossible ] ))
return True
@@ -286,7 +242,7 @@ class TranscriptionView(AdhocView):
def validate(self, *p):
l=self.check_modified()
if l:
- if self.options['representation'] and not parsed_representation.match(self.options['representation']):
+ if self.options['representation'] and not helper.parsed_representation.match(self.options['representation']):
dialog.message_dialog(label=_("Cannot validate the update.\nThe representation pattern is too complex."))
return True
self.ignore_updates = True
@@ -345,6 +301,7 @@ class TranscriptionView(AdhocView):
b.create_tag("activated", background="skyblue")
b.create_tag("current", background="lightblue")
b.create_tag("searched_string", background="green")
+ b.create_tag("bound", editable=False)
self.generate_buffer_content()
@@ -411,6 +368,7 @@ class TranscriptionView(AdhocView):
mainbox.set_no_show_all(True)
mainbox.connect('key-press-event', self.key_press_event_cb)
+ self.textview.connect('key-press-event', self.key_press_event_cb)
return mainbox
@@ -427,30 +385,38 @@ class TranscriptionView(AdhocView):
def generate_buffer_content(self):
b=self.textview.get_buffer()
# Clear the buffer
- begin,end=b.get_bounds()
+ begin, end = b.get_bounds()
b.delete(begin, end)
+ def insert_at_cursor_with_tags_by_name(text, *tags):
+ b.insert_with_tags_by_name(b.get_iter_at_mark(b.get_insert()),
+ text, *tags)
+
l=list(self.model)
#l.sort(lambda a,b: cmp(a.fragment.begin, b.fragment.begin))
for a in l:
if self.options['display-time']:
- b.insert_at_cursor("[%s]" % helper.format_time(a.fragment.begin))
+ insert_at_cursor_with_tags_by_name("[%s]" % helper.format_time(a.fragment.begin),
+ "bound")
mark = b.create_mark("b_%s" % a.id,
b.get_iter_at_mark(b.get_insert()),
left_gravity=True)
mark.set_visible(self.options['display-bounds'])
+ # Put a 0-width char to make it easier to edit annotations
+ insert_at_cursor_with_tags_by_name(ZERO_WIDTH_NOBREAK_SPACE, "bound")
b.insert_at_cursor(unicode(self.representation(a)))
+ insert_at_cursor_with_tags_by_name(ZERO_WIDTH_NOBREAK_SPACE, "bound")
mark = b.create_mark("e_%s" % a.id,
b.get_iter_at_mark(b.get_insert()),
left_gravity=True)
mark.set_visible(self.options['display-bounds'])
if self.options['display-time']:
- b.insert_at_cursor("[%s]" % helper.format_time(a.fragment.end))
+ insert_at_cursor_with_tags_by_name("[%s]" % helper.format_time(a.fragment.end), "bound")
- b.insert_at_cursor(self.options['separator'])
+ insert_at_cursor_with_tags_by_name(self.options['separator'], "bound")
return
def highlight_search_forward(self, searched):
@@ -513,6 +479,11 @@ class TranscriptionView(AdhocView):
if event.keyval == gtk.keysyms.F3:
self.searchbox.show_all()
return True
+ elif event.keyval == gtk.keysyms.Return and event.state & gtk.gdk.CONTROL_MASK:
+ # Control-return: goto annotation
+ if self.currentannotation is not None:
+ self.play_annotation(self.currentannotation)
+ return True
return False
def button_press_event_cb(self, textview, event):
@@ -636,7 +607,9 @@ class TranscriptionView(AdhocView):
enditer =b.get_iter_at_mark(endmark)
b.delete(beginiter, enditer)
+ b.insert_with_tags_by_name(beginiter, ZERO_WIDTH_NOBREAK_SPACE, "bound")
b.insert(beginiter, unicode(self.representation(annotation)))
+ b.insert_with_tags_by_name(beginiter, ZERO_WIDTH_NOBREAK_SPACE, "bound")
# After insert, beginiter is updated to point to the end
# of the invalidated text.
b.move_mark(endmark, beginiter)
@@ -716,7 +689,7 @@ class TranscriptionView(AdhocView):
def save_output(self, filename=None):
b=self.textview.get_buffer()
begin,end=b.get_bounds()
- out=unicode(b.get_text(begin, end))
+ out=unicode(b.get_text(begin, end)).replace(ZERO_WIDTH_NOBREAK_SPACE, '')
try:
f=open(filename, "w")
except Exception, e:
diff --git a/lib/advene/gui/views/tree.py b/lib/advene/gui/views/tree.py
index 7a1ba06..2ea34f7 100755
--- a/lib/advene/gui/views/tree.py
+++ b/lib/advene/gui/views/tree.py
@@ -30,7 +30,7 @@ from advene.model.resources import Resources, ResourceData
from advene.model.query import Query
from advene.model.view import View
from advene.gui.views import AdhocView
-from advene.gui.util import drag_data_get_cb, get_target_types, contextual_drag_begin
+from advene.gui.util import drag_data_get_cb, get_target_types, contextual_drag_begin, dialog
import advene.gui.edit.elements
import advene.gui.popup
@@ -468,6 +468,15 @@ class TreeWidget(AdhocView):
tree_view.connect('drag-data-get', drag_data_get_cb, self.controller)
+ tree_view.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
+ gtk.DEST_DEFAULT_HIGHLIGHT |
+ gtk.DEST_DEFAULT_ALL,
+ config.data.drag_type['annotation']
+ + config.data.drag_type['annotation-type']
+ + config.data.drag_type['timestamp'],
+ gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE | gtk.gdk.ACTION_ASK )
+ tree_view.connect('drag-data-received', self.drag_received)
+
try:
# set_enable_tree_lines is available in gtk >= 2.10
tree_view.set_enable_tree_lines(True)
@@ -662,12 +671,190 @@ class TreeWidget(AdhocView):
print "Unknown target type for drag: %d" % targetType
return True
+ def create_relation(self, source, dest, rt):
+ """Create the reation of type rt between source and dest.
+ """
+ # Get the id from the idgenerator
+ p=self.controller.package
+ id_=self.controller.package._idgenerator.get_id(Relation)
+ relation=p.createRelation(ident=id_,
+ members=(source, dest),
+ type=rt)
+ p.relations.append(relation)
+ self.controller.notify("RelationCreate", relation=relation)
+ return True
+
+ def move_or_copy_annotations(self, sources, dest, action=gtk.gdk.ACTION_ASK):
+ """Display a popup menu to move or copy the sources annotation to the dest annotation type.
+
+ If action is specified, then the popup menu will be shortcircuited.
+ """
+ # FIXME: this method should be factorized with the original
+ # one (from timeline.py) and used in other views (finder...)
+ if not sources:
+ return True
+ source=sources[0]
+
+ def move_annotation(i, an, typ, position=None):
+ if an.relations and an.type != typ:
+ dialog.message_dialog(_("Cannot delete the annotation : it has relations."),
+ icon=gtk.MESSAGE_WARNING)
+ return True
+
+ self.transmuted_annotation=self.controller.transmute_annotation(an,
+ typ,
+ delete=True)
+ return self.transmuted_annotation
+
+ def copy_annotation(i, an, typ, position=None, relationtype=None):
+ self.transmuted_annotation=self.controller.transmute_annotation(an,
+ typ,
+ delete=False)
+ if relationtype is not None:
+ # Directly create a relation
+ self.create_relation(an, self.transmuted_annotation, relationtype)
+ return self.transmuted_annotation
+
+ def copy_selection(i, sel, typ, delete=False):
+ for an in sel:
+ if an.typ != typ:
+ self.transmuted_annotation=self.controller.transmute_annotation(an,
+ typ,
+ delete=delete)
+ return self.transmuted_annotation
+
+ # If there are compatible relation-types, propose to directly create a relation
+ relationtypes = helper.matching_relationtypes(self.controller.package,
+ source.type,
+ dest)
+
+ if action == gtk.gdk.ACTION_COPY:
+ # Direct copy
+ if len(sources) > 1:
+ if source.type == dest:
+ return True
+ copy_selection(None, sources, dest)
+ else:
+ copy_annotation(None, source, dest)
+ return True
+ elif action == gtk.gdk.ACTION_MOVE:
+ if len(sources) > 1:
+ if source.type == dest:
+ return True
+ copy_selection(None, sources, dest, delete=True)
+ else:
+ move_annotation(None, source, dest)
+ return True
+
+ # ACTION_ASK: Popup a menu to propose the drop options
+ menu=gtk.Menu()
+
+ dest_title=self.controller.get_title(dest)
+
+ if len(sources) > 1:
+ if source.type == dest:
+ return True
+ item=gtk.MenuItem(_("Duplicate selection to type %s") % dest_title, use_underline=False)
+ item.connect('activate', copy_selection, sources, dest)
+ menu.append(item)
+ item=gtk.MenuItem(_("Move selection to type %s") % dest_title, use_underline=False)
+ item.connect('activate', copy_selection, sources, dest, True)
+ menu.append(item)
+
+ menu.show_all()
+ menu.popup(None, None, None, 0, gtk.get_current_event_time())
+ return True
+
+ if source.type != dest:
+ item=gtk.MenuItem(_("Duplicate annotation to type %s") % dest_title, use_underline=False)
+ item.connect('activate', copy_annotation, source, dest)
+ menu.append(item)
+
+ item=gtk.MenuItem(_("Move annotation to type %s") % dest_title, use_underline=False)
+ item.connect('activate', move_annotation, source, dest)
+ menu.append(item)
+ if source.relations:
+ item.set_sensitive(False)
+
+ relationtypes=helper.matching_relationtypes(self.controller.package,
+ source.type,
+ dest)
+ if relationtypes:
+ if source.type != dest:
+ item=gtk.MenuItem(_("Duplicate and create a relation"), use_underline=False)
+ # build a submenu
+ sm=gtk.Menu()
+ for rt in relationtypes:
+ sitem=gtk.MenuItem(self.controller.get_title(rt), use_underline=False)
+ sitem.connect('activate', copy_annotation, source, dest, None, rt)
+ sm.append(sitem)
+ menu.append(item)
+ item.set_submenu(sm)
+
+ menu.show_all()
+ menu.popup(None, None, None, 0, gtk.get_current_event_time())
+
+ def create_relation_popup(self, source, dest):
+ # FIXME: Idem as above: should be factorized with the original of timeline.py
+ # Popup a menu to propose the drop options
+ menu=gtk.Menu()
+
+ def create_relation(item, s, d, t):
+ self.create_relation(s, d, t)
+ return True
+
+ def create_relation_type_and_relation(item, s, d):
+ if self.controller.gui:
+ sc=self.controller.gui.ask_for_schema(text=_("Select the schema where you want to\ncreate the new relation type."), create=True)
+ if sc is None:
+ return None
+ cr=self.controller.gui.create_element_popup(type_=RelationType,
+ parent=sc,
+ controller=self.controller)
+ rt=cr.popup(modal=True)
+ self.create_relation(s, d, rt)
+ return True
+
+ relationtypes=helper.matching_relationtypes(self.controller.package,
+ source.type,
+ dest.type)
+ item=gtk.MenuItem(_("Create a relation"))
+ menu.append(item)
+
+ sm=gtk.Menu()
+ for rt in relationtypes:
+ sitem=gtk.MenuItem(self.controller.get_title(rt), use_underline=False)
+ sitem.connect('activate', create_relation, source, dest, rt)
+ sm.append(sitem)
+ if True:
+ # Propose to create a new one
+ sitem=gtk.MenuItem(_("Create a new relation-type."), use_underline=False)
+ sitem.connect('activate', create_relation_type_and_relation, source, dest)
+ sm.append(sitem)
+ item.set_submenu(sm)
+
+ menu.show_all()
+ menu.popup(None, None, None, 0, gtk.get_current_event_time())
+
def drag_received(self, widget, context, x, y, selection, targetType, time):
- #print "drag_received event for %s" % widget.annotation.content.data
- if targetType == config.data.target_type['annotation']:
- source=self.controller.package.annotations.get(unicode(selection.data, 'utf8').split('\n')[0])
- dest=widget.annotation
- self.create_relation_popup(source, dest)
- else:
- print "Unknown target type for drop: %d" % targetType
+ widget.stop_emission("drag-data-received")
+ t = widget.get_path_at_pos(x, y)
+ if t is not None:
+ path, col, cx, cy = t
+ it = self.model.get_iter(path)
+ node = self.model.get_value(it,
+ AdveneTreeModel.COLUMN_ELEMENT)
+ if not node:
+ return True
+ if isinstance(node, Annotation):
+ # Drop on an Annotation
+ if targetType == config.data.target_type['annotation']:
+ source = self.controller.package.annotations.get(unicode(selection.data, 'utf8').split('\n')[0])
+ self.create_relation_popup(source, node)
+ elif isinstance(node, AnnotationType):
+ if targetType == config.data.target_type['annotation']:
+ sources = [ self.controller.package.annotations.get(u) for u in unicode(selection.data, 'utf8').split('\n') ]
+ if sources:
+ self.move_or_copy_annotations(sources, node)
+ return True
return True
diff --git a/lib/advene/gui/views/viewbook.py b/lib/advene/gui/views/viewbook.py
index 19fd343..f6196d6 100644
--- a/lib/advene/gui/views/viewbook.py
+++ b/lib/advene/gui/views/viewbook.py
@@ -27,7 +27,7 @@ from gettext import gettext as _
from advene.gui.views import AdhocView
import advene.util.helper as helper
from advene.gui.util import get_pixmap_button, dialog, decode_drop_parameters
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
from advene.gui.edit.elements import get_edit_popup
class ViewBook(AdhocView):
@@ -35,7 +35,7 @@ class ViewBook(AdhocView):
"""
view_name = _("ViewBook")
view_id = 'viewbook'
- def __init__ (self, controller=None, views=None, location=None):
+ def __init__ (self, controller=None, parameters=None, views=None, location=None, ):
super(ViewBook, self).__init__(controller=controller)
self.controller=controller
if views is None:
diff --git a/lib/advene/gui/widget.py b/lib/advene/gui/widget.py
index f6d69ff..a71f6be 100644
--- a/lib/advene/gui/widget.py
+++ b/lib/advene/gui/widget.py
@@ -52,11 +52,10 @@ except ImportError:
import advene.core.config as config
from advene.core.imagecache import ImageCache
-from advene.gui.util import png_to_pixbuf, enable_drag_source, name2color, get_target_types
-from advene.gui.util import encode_drop_parameters, get_color_style
+from advene.gui.util import png_to_pixbuf, enable_drag_source, name2color
+from advene.gui.util import get_color_style
import advene.util.helper as helper
from advene.model.annotation import Annotation
-
import advene.gui.popup
active_color=name2color('#fdfd4b')
@@ -139,8 +138,8 @@ class GenericColorButtonWidget(gtk.DrawingArea):
width=s[0]
if height is None:
height=s[1]
- if width < 0:
- print "Error: width ", width, " < 0 for ", self.element.id
+ if width <= 0:
+ print "Error: width ", width, " <= 0 for ", self.element.id
width=5
if (self.cached_surface
and self.cached_surface.get_width() == width
@@ -222,9 +221,8 @@ class GenericColorButtonWidget(gtk.DrawingArea):
"""Refresh the widget.
"""
if self.window and self.cached_surface:
- width = self.cached_surface.get_width()
- height = self.cached_surface.get_height()
- self.window.invalidate_rect(gtk.gdk.Rectangle(0, 0, width, height), False)
+ self.window.invalidate_rect(gtk.gdk.Rectangle(self.allocation.x, self.allocation.y,
+ self.allocation.width, self.allocation.height), False)
def expose_cb(self, widget, event):
"""Handle the expose event.
@@ -383,7 +381,7 @@ class AnnotationWidget(GenericColorButtonWidget):
c.queue_action(c.update_status, status="set", position=pos)
c.gui.set_current_annotation(annotation)
return True
- elif event.keyval == gtk.keysyms.Delete:
+ elif event.keyval == gtk.keysyms.Delete or event.keyval == gtk.keysyms.BackSpace:
# Delete annotation or selection
try:
widgets=self.container.get_selected_annotation_widgets()
@@ -454,6 +452,8 @@ class AnnotationWidget(GenericColorButtonWidget):
# 100.0) of the height (FIXME: define a scale somewhere)
l=[ (1 - v / 100.0) for v in self.annotation.content.parsed() ]
s=len(l)
+ if not s:
+ return
if width < s:
# There are more samples than available pixels. Downsample the data
l=l[::(s/width)+1]
@@ -816,7 +816,7 @@ class TimestampRepresentation(gtk.Button):
@ivar label: the label (timestamp) widget
@type label: gtk.Label
"""
- def __init__(self, value, controller, width=None, epsilon=None, comment_getter=None, visible_label=True, bgcolor=None):
+ def __init__(self, value, controller, width=None, epsilon=None, comment_getter=None, visible_label=True, bgcolor=None, callback=None):
"""Instanciate a new TimestampRepresentation.
@param value: the timestamp value
@@ -833,6 +833,8 @@ class TimestampRepresentation(gtk.Button):
@type visible_label: boolean
@param bgcolor: background color
@type bgcolor: string
+ @value callback: a callback that will be called before value modification
+ @type callback: method. If it returns False, then the modification will be cancelled
"""
super(TimestampRepresentation, self).__init__()
self._value=value
@@ -852,6 +854,7 @@ class TimestampRepresentation(gtk.Button):
self._bgcolor = None
# Displayed text.
self._text = '<span size="xx-small">%(timestamp)s</span>'
+ self.callback = callback
box=gtk.VBox()
self.image=gtk.Image()
@@ -930,6 +933,13 @@ class TimestampRepresentation(gtk.Button):
def get_value(self):
return self._value
def set_value(self, v):
+ if v == self._value:
+ return
+ if self.callback is not None and v != self._value:
+ if self.callback(v) is False:
+ # If self.callback explicitly returns False (not
+ # None), then cancel the value setting.
+ return False
if self.highlight:
self.controller.notify('BookmarkUnhighlight', timestamp=self._value, immediate=True)
self.highlight=False
@@ -1042,6 +1052,10 @@ class TimestampRepresentation(gtk.Button):
c.update_status (status="set", position=pos)
return True
+ def save_as(it):
+ self.controller.gui.save_snapshot_as(self.value)
+ return True
+
item = gtk.MenuItem(_("Play"))
item.connect('activate', goto, self.value)
menu.append(item)
@@ -1050,14 +1064,24 @@ class TimestampRepresentation(gtk.Button):
item.connect('activate', self.refresh_snapshot)
menu.append(item)
- item = gtk.MenuItem(_("Use current player position"))
- item.connect('activate', lambda i: self.set_value(p.current_position_value))
- if p.status != p.PauseStatus and p.status != p.PlayingStatus:
- item.set_sensitive(False)
+ item = gtk.MenuItem(_("Save as..."))
+ item.connect('activate', save_as)
menu.append(item)
+ if self.callback is not None:
+ item = gtk.MenuItem(_("Use current player position"))
+ item.connect('activate', lambda i: self.set_value(p.current_position_value))
+ if p.status != p.PauseStatus and p.status != p.PlayingStatus:
+ item.set_sensitive(False)
+ menu.append(item)
+
+ item = gtk.MenuItem(_("Adjust timestamp"))
+ item.connect('activate', lambda i: self.set_value(self.controller.gui.adjust_timestamp(self.get_value())))
+ menu.append(item)
+
if self.extend_popup_menu is not None:
self.extend_popup_menu(menu, self)
+
menu.show_all()
if popup:
diff --git a/lib/advene/model/.cvsignore b/lib/advene/model/.cvsignore
deleted file mode 100644
index 0d20b64..0000000
--- a/lib/advene/model/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.pyc
diff --git a/lib/advene/model/_impl.py b/lib/advene/model/_impl.py
index 81ad130..81b9438 100644
--- a/lib/advene/model/_impl.py
+++ b/lib/advene/model/_impl.py
@@ -79,7 +79,7 @@ class Metaed(object):
r = StringIO()
advene.model.util.dom.printElementText(dom_element, r)
return r.getvalue().decode('utf-8')
-
+
def getMetaData(self, namespace_uri, name):
"""Return the text content of metadata with given NS and name
"""
@@ -125,7 +125,7 @@ class Metaed(object):
return [ (e.namespaceURI, e.localName, self.elementValue(e))
for e in meta.childNodes
if e.nodeType is ELEMENT_NODE ]
-
+
class Authored(Metaed):
"""An implementation for the author property.
Inheriting classes must have a _getModel method returning a DOM element
@@ -476,7 +476,7 @@ class Aliased(object):
Inheriting classes must have a _getModel method returning a DOM element
(inheriting the modeled.Modeled class looks like a good idea).
Note that this implementation consider 'alias' to be optional.
-
+
Note: for historical reasons, this property is stored with the
name "as" in the DOM tree. This original name introduced a
clash in python2.6 with a reserved keyword. It has thus been
diff --git a/lib/advene/model/content.py b/lib/advene/model/content.py
index 58b3176..09f568e 100644
--- a/lib/advene/model/content.py
+++ b/lib/advene/model/content.py
@@ -19,7 +19,7 @@
from cStringIO import StringIO
import urllib
try:
- # In python2.6 stdlib
+ # In python2.6 stdlib
import json
except ImportError:
try:
@@ -138,7 +138,7 @@ class Content(modeled.Modeled,
if not self.isTextual():
encoding = 'base64'
else:
- encoding = 'utf-8'
+ encoding = 'utf-8'
self._getModel().setAttributeNS(None, 'encoding', encoding)
new = self._getDocument().createTextNode(data.encode(encoding))
self._getModel().appendChild(new)
diff --git a/lib/advene/model/tal/.cvsignore b/lib/advene/model/tal/.cvsignore
deleted file mode 100644
index 0d20b64..0000000
--- a/lib/advene/model/tal/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.pyc
diff --git a/lib/advene/model/util/.cvsignore b/lib/advene/model/util/.cvsignore
deleted file mode 100644
index 0d20b64..0000000
--- a/lib/advene/model/util/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-*.pyc
diff --git a/lib/advene/model/viewable.py b/lib/advene/model/viewable.py
index 56ea262..676cc57 100644
--- a/lib/advene/model/viewable.py
+++ b/lib/advene/model/viewable.py
@@ -30,7 +30,7 @@ class TypedUnicode(unicode):
"""Unicode string with a mimetype attribute.
"""
def __new__(cls, value=""):
- s=unicode.__new__(cls, value)
+ s=unicode.__new__(cls, value)
s.contenttype='text/plain'
return s
@@ -38,7 +38,7 @@ class TypedString(str):
"""String with a mimetype attribute.
"""
def __new__(cls, value=""):
- s=str.__new__(cls, value)
+ s=str.__new__(cls, value)
s.contenttype='text/plain'
return s
diff --git a/lib/advene/model/zippackage.py b/lib/advene/model/zippackage.py
index 0872c47..648f89f 100644
--- a/lib/advene/model/zippackage.py
+++ b/lib/advene/model/zippackage.py
@@ -58,7 +58,7 @@ from advene.model.exception import AdveneException
from advene.model.resources import Resources
import mimetypes
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
from gettext import gettext as _
diff --git a/lib/advene/player/gstreamer.py b/lib/advene/player/gstreamer.py
index 2c2d9a3..bcc9cee 100644
--- a/lib/advene/player/gstreamer.py
+++ b/lib/advene/player/gstreamer.py
@@ -26,6 +26,8 @@ Use appsink to get data out of a pipeline:
https://thomas.apestaart.org/thomas/trac/browser/tests/gst/crc/crc.py
"""
+from gettext import gettext as _
+
import advene.core.config as config
from advene.util.helper import format_time
import os
@@ -35,7 +37,6 @@ import gobject
gobject.threads_init()
import gtk
-import os
import sys
if config.data.os == 'win32':
@@ -50,7 +51,7 @@ if config.data.os == 'win32':
#even if gstpluginpath is defined, gst still may not be in path
gstpath = unicode(os.getenv('PATH', ""), fsenc)
h,t = os.path.split(ppath)
- binpath,t = os.path.split(h)
+ binpath,t = os.path.split(h)
os.environ['PATH'] = os.pathsep.join( (os.path.join( binpath, 'bin'), gstpath) ).encode(fsenc)
try:
@@ -170,8 +171,14 @@ class Player:
self.log(u"Could not initialize snapshotter:" + unicode(e))
self.snapshotter = None
+ self.fullres_snapshotter = None
+ # This method has the following signature:
+ # self.fullres_snapshot_callback(snapshot=None, message=None)
+ # If snapshot is None, then there should be an explanation (string) in msg.
+ self.fullres_snapshot_callback = None
+
#self.snapshotter.start()
-
+
# This method should be set by caller:
self.snapshot_notify=None
self.build_pipeline()
@@ -226,6 +233,7 @@ class Player:
if config.data.player['svg'] and svgelement:
try:
self.imageoverlay=gst.element_factory_make(svgelement, 'overlay')
+ self.imageoverlay.props.fit_to_frame = True
except:
pass
@@ -283,7 +291,7 @@ class Player:
self._audio_ghostpad = gst.GhostPad('sink', elements[0].get_pad('audio_sink') or elements[0].get_pad('sink'))
self.audio_sink.add_pad(self._audio_ghostpad)
-
+
bus = self.player.get_bus()
bus.enable_sync_message_emission()
bus.connect('sync-message::element', self.on_sync_message)
@@ -389,7 +397,9 @@ class Player:
self.player.set_property('uri', item)
if self.snapshotter:
self.snapshotter.set_uri(item)
-
+ if self.fullres_snapshotter:
+ self.fullres_snapshotter.set_uri(item)
+
def playlist_clear(self):
self.videofile=None
self.player.set_property('uri', '')
@@ -400,6 +410,37 @@ class Player:
else:
return [ ]
+ def fullres_snapshot_taken(self, buffer):
+ if self.fullres_snapshot_callback:
+ s=Snapshot( { 'data': buffer.data,
+ 'type': 'PNG',
+ 'date': buffer.timestamp / gst.MSECOND,
+ # Hardcoded size values. They are not used
+ # by the application, since they are
+ # encoded in the PNG file anyway.
+ 'width': 160,
+ 'height': 100 } )
+ self.fullres_snapshot_callback(snapshot=s)
+ self.fullres_snapshot_callback = None
+
+ def async_fullres_snapshot(self, position, callback):
+ """Take full-resolution snapshots.
+
+ This method is not reentrant: as long as there is a call
+ pending, it is not available for another position.
+ """
+ if self.fullres_snapshot_callback is not None:
+ callback(message=_("Cannot capture full-resolution snapshot, another capture is ongoing."))
+ return
+ if self.fullres_snapshotter is None:
+ # Initialise it.
+ self.fullres_snapshotter = Snapshotter(self.fullres_snapshot_taken)
+ self.fullres_snapshotter.set_uri(self.player.get_property('uri'))
+ self.fullres_snapshot_callback = callback
+ if not self.fullres_snapshotter.thread_running:
+ self.fullres_snapshotter.start()
+ self.fullres_snapshotter.enqueue(position)
+
def snapshot_taken(self, buffer):
if self.snapshot_notify:
s=Snapshot( { 'data': buffer.data,
@@ -411,7 +452,7 @@ class Player:
'width': 160,
'height': 100 } )
self.snapshot_notify(s)
-
+
def async_snapshot(self, position):
t = long(self.position2value(position))
if self.snapshotter:
@@ -424,7 +465,7 @@ class Player:
# (considering a 25f/s framerate).
for pos in sorted((t - 20, t / 25 * 25, t)):
self.snapshotter.enqueue(pos)
-
+
def snapshot(self, position):
if not self.check_uri():
return None
@@ -604,12 +645,12 @@ class Player:
self.log("Reparent " + hex(xid))
gtk.gdk.display_get_default().sync()
-
+
self.imagesink.set_xwindow_id(xid)
self.imagesink.set_property('force-aspect-ratio', True)
self.imagesink.expose()
#gtk.gdk.threads_leave()
-
+
def set_visual(self, xid):
if not xid:
return True
@@ -620,7 +661,7 @@ class Player:
def set_widget(self, widget):
self.set_visual( widget.get_id() )
#self.set_visual( None )
-
+
def restart_player(self):
# FIXME: destroy the previous player
self.player.set_state(gst.STATE_READY)
@@ -693,7 +734,7 @@ class Player:
self.unfullscreen()
return True
return False
-
+
def buttonpress(widget, event):
if event.button == 1 and event.type == gtk.gdk._2BUTTON_PRESS:
self.unfullscreen()
@@ -821,7 +862,7 @@ class Player:
if capsname: line.append( '[%s]' % capsname )
if ghostpath: line.append( "ghosts %s" % self.relpath(path, ghostpath) )
line.append( "%s %s" % (direc, peerpath) )
-
+
#if peerpath and peerpath.find('proxy')!=-1: print peer
ret.append( ''.join(line) )
if recurse and isinstance(e, gst.Bin):
diff --git a/lib/advene/player/gstrecorder.py b/lib/advene/player/gstrecorder.py
index 4b3f966..a58166e 100644
--- a/lib/advene/player/gstrecorder.py
+++ b/lib/advene/player/gstrecorder.py
@@ -138,7 +138,7 @@ class Player:
# Generate black image
videosrc = 'videotestsrc pattern=2'
- self.pipeline=gst.parse_launch('%(videosrc)s name=videosrc ! video/x-raw-yuv,width=352,pixel-aspect-ratio=(fraction)1/1 ! queue ! tee name=tee ! ffmpegcolorspace ! theoraenc drop-frames=1 ! queue ! oggmux name=mux ! filesink location=%(videofile)s %(audiosrc)s name=audiosrc ! audioconvert ! audiorate ! queue ! vorbisenc quality=0.9 ! mux. tee. ! queue ! %(videosink)s name=sink sync=false' % locals())
+ self.pipeline=gst.parse_launch('%(videosrc)s name=videosrc ! video/x-raw-yuv,width=352,pixel-aspect-ratio=(fraction)1/1 ! queue ! tee name=tee ! ffmpegcolorspace ! theoraenc drop-frames=1 ! queue ! oggmux name=mux ! filesink location=%(videofile)s %(audiosrc)s name=audiosrc ! audioconvert ! audiorate ! queue ! vorbisenc quality=0.5 ! mux. tee. ! queue ! %(videosink)s name=sink sync=false' % locals())
self.imagesink=self.pipeline.get_by_name('sink')
self.videosrc=self.pipeline.get_by_name('videosrc')
self.audiosrc=self.pipeline.get_by_name('audiosrc')
@@ -226,7 +226,7 @@ class Player:
def resume(self, position=None):
# Ignore
- return
+ return
def stop(self, position=None):
self.stream_duration=self.current_position
diff --git a/lib/advene/player/vlc.py b/lib/advene/player/vlc.py
index 58cf14b..1e5cca6 100644
--- a/lib/advene/player/vlc.py
+++ b/lib/advene/player/vlc.py
@@ -143,7 +143,7 @@ LibVLC Available Events
def __ne__(self, other):
return not self.__eq__(other)
-
+
EventType.MediaSubItemAdded=EventType(1)
EventType.MediaDurationChanged=EventType(2)
EventType.MediaPreparsedChanged=EventType(3)
@@ -214,7 +214,7 @@ LibVLC Media Meta
def __ne__(self, other):
return not self.__eq__(other)
-
+
Meta.Title=Meta(0)
Meta.Artist=Meta(1)
Meta.Genre=Meta(2)
@@ -262,7 +262,7 @@ STOPPING=5, ENDED=6, ERROR=7
def __ne__(self, other):
return not self.__eq__(other)
-
+
State.NothingSpecial=State(0)
State.Opening=State(1)
State.Buffering=State(2)
@@ -297,7 +297,7 @@ class AudioOutputDeviceTypes(ctypes.c_ulong):
def __ne__(self, other):
return not self.__eq__(other)
-
+
AudioOutputDeviceTypes.Error=AudioOutputDeviceTypes(-1)
AudioOutputDeviceTypes.Mono=AudioOutputDeviceTypes(1)
AudioOutputDeviceTypes.Stereo=AudioOutputDeviceTypes(2)
@@ -330,7 +330,7 @@ class AudioOutputChannel(ctypes.c_ulong):
def __ne__(self, other):
return not self.__eq__(other)
-
+
AudioOutputChannel.Error=AudioOutputChannel(-1)
AudioOutputChannel.Stereo=AudioOutputChannel(1)
AudioOutputChannel.RStereo=AudioOutputChannel(2)
@@ -360,7 +360,7 @@ class PositionOrigin(ctypes.c_ulong):
def __ne__(self, other):
return not self.__eq__(other)
-
+
PositionOrigin.AbsolutePosition=PositionOrigin(0)
PositionOrigin.RelativePosition=PositionOrigin(1)
PositionOrigin.ModuloPosition=PositionOrigin(2)
@@ -387,7 +387,7 @@ class PositionKey(ctypes.c_ulong):
def __ne__(self, other):
return not self.__eq__(other)
-
+
PositionKey.ByteCount=PositionKey(0)
PositionKey.SampleCount=PositionKey(1)
PositionKey.MediaTime=PositionKey(2)
@@ -418,7 +418,7 @@ libvlc_state_t and input_state_e enums.
def __ne__(self, other):
return not self.__eq__(other)
-
+
PlayerStatus.UndefinedStatus=PlayerStatus(0)
PlayerStatus.InitStatus=PlayerStatus(1)
PlayerStatus.BufferingStatus=PlayerStatus(2)
@@ -722,7 +722,7 @@ class Instance(object):
- a list of strings as first parameters
- the parameters given as the constructor parameters (must be strings)
- a MediaControl instance
-
+
"""
@staticmethod
@@ -1533,7 +1533,7 @@ class MediaControl(object):
- a list of strings as first parameters
- the parameters given as the constructor parameters (must be strings)
- a vlc.Instance
-
+
"""
@staticmethod
@@ -2049,7 +2049,7 @@ class MediaListPlayer(object):
It may take as parameter either:
- a vlc.Instance
- nothing
-
+
"""
@staticmethod
@@ -2271,7 +2271,7 @@ class MediaPlayer(object):
It may take as parameter either:
- a string (media URI). In this case, a vlc.Instance will be created.
- a vlc.Instance
-
+
"""
@staticmethod
diff --git a/lib/advene/player/vlcctypes.py b/lib/advene/player/vlcctypes.py
index a8403a6..3d2e2e4 100644
--- a/lib/advene/player/vlcctypes.py
+++ b/lib/advene/player/vlcctypes.py
@@ -95,7 +95,7 @@ class Player(object):
pass
class InternalException(Exception):
pass
-
+
def __getattribute__ (self, name):
"""
Use the defined method if necessary. Else, forward the request
@@ -159,7 +159,7 @@ class Player(object):
args.append ('--vout-filter=%s' %":".join(filters))
#print "player args", args
return [ str(i) for i in args ]
-
+
def restart_player (self):
"""Restart (cleanly) the player."""
del self.mc
diff --git a/lib/advene/plugins/aeidon.py b/lib/advene/plugins/aeidon.py
index d3d08c3..08ed050 100644
--- a/lib/advene/plugins/aeidon.py
+++ b/lib/advene/plugins/aeidon.py
@@ -18,7 +18,7 @@
#
# AEIDON importer
-# See http://home.gna.org/gaupol/
+# See http://home.gna.org/gaupol/
# Install python-aeidon on Debian
name="AEIDON importer"
@@ -32,6 +32,13 @@ try:
except ImportError:
aeidon = None
+# Reset textdomain. aeidon/gaupol improperly overwrites textdomain
+# with its own. It should follow
+# http://www.python.org/doc//current/library/gettext.html#localizing-your-module
+# instead.
+import advene.core.config as config
+config.init_gettext()
+
def register(controller=None):
if aeidon is not None:
controller.register_importer(AeidonImporter)
@@ -79,7 +86,8 @@ class AeidonImporter(GenericImporter):
incr=0.98/len(project.subtitles)
for s in project.subtitles:
progress += incr
- self.progress(progress)
+ if not self.progress(progress):
+ break
yield {
'type': self.annotationtype,
'content': s.main_text,
diff --git a/lib/advene/plugins/annotationgraph.py b/lib/advene/plugins/annotationgraph.py
index f0c0ce3..b41031a 100644
--- a/lib/advene/plugins/annotationgraph.py
+++ b/lib/advene/plugins/annotationgraph.py
@@ -25,7 +25,7 @@ from gettext import gettext as _
import advene.core.config as config
from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
def register(controller=None):
controller.register_importer(AnnotationGraphImporter)
diff --git a/lib/advene/plugins/anvil.py b/lib/advene/plugins/anvil.py
index e8a948e..a625024 100644
--- a/lib/advene/plugins/anvil.py
+++ b/lib/advene/plugins/anvil.py
@@ -25,7 +25,7 @@ from gettext import gettext as _
import advene.core.config as config
from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
def register(controller=None):
controller.register_importer(AnvilImporter)
diff --git a/lib/advene/plugins/brltty.py b/lib/advene/plugins/brltty.py
index 3172c60..7118f47 100644
--- a/lib/advene/plugins/brltty.py
+++ b/lib/advene/plugins/brltty.py
@@ -34,8 +34,8 @@ name="BrlTTY actions"
# The Alva Satellite that we are using for experiments sends strange
# keycodes. It may be a misconfiguration of brltty that should be
# fixed, but in the meantime, hardcode appropriate values.
-ALVA_LPAD_UP=536870976
-ALVA_LPAD_DOWN=536870977
+ALVA_LPAD_UP=536870976
+ALVA_LPAD_DOWN=536870977
ALVA_LPAD_LEFT=536870973
ALVA_LPAD_RIGHT=536870975
ALVA_LPAD_LEFTLEFT=536870974
@@ -66,7 +66,6 @@ def register(controller=None):
controller.log(_("BrlTTY not installed. There will be no braille support."))
else:
engine=BrlEngine(controller)
- engine.brldisplay("Advene connected")
try:
engine.init_brlapi()
if engine.brlconnection is not None:
@@ -74,6 +73,7 @@ def register(controller=None):
gobject.IO_IN,
engine.input_handler)
method=engine.action_brldisplay
+ engine.brldisplay("Advene connected")
except:
controller.log(_("Could not initialize BrlTTY. No braille support."))
@@ -145,7 +145,7 @@ class BrlEngine:
if k is None:
return True
#command=self.brlconnection.expandKey(k)['command']
- if k == brlapi.KEY_SYM_RIGHT or k == ALVA_LPAD_RIGHT or k == ALVA_MPAD_BUTTON4:
+ if k == brlapi.KEY_SYM_RIGHT or k == ALVA_LPAD_RIGHT or k == ALVA_MPAD_BUTTON4:
if self.currenttype == 'scroll':
i = self.char_index + self.brlconnection.displaySize[0]
if i <= len(self.current_message):
diff --git a/lib/advene/plugins/cinelab.py b/lib/advene/plugins/cinelab.py
index 52163db..0c7f648 100644
--- a/lib/advene/plugins/cinelab.py
+++ b/lib/advene/plugins/cinelab.py
@@ -31,7 +31,7 @@ import re
import advene.core.config as config
from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
from advene.model.exception import AdveneException
MIMETYPE = "application/x-cinelab-zip-package"
@@ -52,7 +52,7 @@ def ns(path):
"""
return prefix_re.sub(lambda m: '{%s}' % prefixes.get(m.group(1), 'FIXME'),
path)
-
+
def meta(node, t):
n = node.find(ns('cinelab:meta/%s' % t))
if n is not None:
@@ -89,11 +89,11 @@ class CinelabImporter(GenericImporter):
def tempfile(self, *names):
"""Return a tempfile name in the filesystem encoding.
-
+
Try to deal appropriately with filesystem encodings:
-
+
self._tempdir is a unicode string.
-
+
tempfile takes unicode parameters, and returns a path encoded
in sys.getfilesystemencoding()
"""
@@ -175,7 +175,7 @@ class CinelabImporter(GenericImporter):
# Finalize
self.progress(.3, _("Converting annotation types"))
ats = root.find(ns('cinelab:annotation-types'))
- # Note: do not use the shortcut ats = root.find(...) or [],
+ # Note: do not use the shortcut ats = root.find(...) or [],
# the result of root.find is always False
if ats is None:
return []
@@ -213,7 +213,7 @@ class CinelabImporter(GenericImporter):
data = dict( l.split('=') for l in c.text.splitlines() )
if data.get('mimetype'):
at.mimetype = data.get('mimetype')
-
+
self.progress(.6, _("Converting views"))
size = len(views)
for (i, node) in enumerate(views):
diff --git a/lib/advene/plugins/cutter.py b/lib/advene/plugins/cutter.py
index 1612190..bf3d7c5 100644
--- a/lib/advene/plugins/cutter.py
+++ b/lib/advene/plugins/cutter.py
@@ -77,11 +77,11 @@ class CutterImporter(GenericImporter):
'begin': begin,
'end': end,
'content': 'sound',
- }
+ }
for begin, end in self.buffer )
self.end_callback()
return True
-
+
if message.type == gst.MESSAGE_EOS:
finalize()
##elif message.type == gst.MESSAGE_STATE_CHANGED:
@@ -98,7 +98,7 @@ class CutterImporter(GenericImporter):
s=message.structure
#print "MSG " + bus.get_name() + ": " + s.to_string()
if s.get_name() == 'progress' and self.progress is not None:
- if not self.progress(s['percent-double'] / 100, _("Detected %(count)d segments until %(time)s") % { 'count': len(self.buffer),
+ if not self.progress(s['percent-double'] / 100, _("Detected %(count)d segments until %(time)s") % { 'count': len(self.buffer),
'time': helper.format_time(s['current'] * 1000) }):
finalize()
elif s.get_name() == 'cutter':
@@ -118,7 +118,7 @@ class CutterImporter(GenericImporter):
at = self.ensure_new_type('sound_segment', title=_("Sound segment"))
at.setMetaData(config.data.namespace_prefix['dc'], "description", _("Sound segmentation with a threshold of %(threshold)d dB - channel: %(channel)s") % self.__dict__)
-
+
# Build pipeline
self.pipeline = gst.parse_launch('uridecodebin name=decoder ! audioconvert ! audiopanorama method=1 panorama=%d ! audioconvert ! cutter threshold-dB=%s ! progressreport silent=true update-freq=1 name=report ! fakesink' % (self.channel_mapping[self.channel], str(self.threshold)))
self.decoder = self.pipeline.get_by_name('decoder')
diff --git a/lib/advene/plugins/dcp.py b/lib/advene/plugins/dcp.py
index 8afcec8..5b083d4 100644
--- a/lib/advene/plugins/dcp.py
+++ b/lib/advene/plugins/dcp.py
@@ -37,7 +37,7 @@ def register(controller=None):
timestamp_re = re.compile('(\d\d):(\d\d):(\d\d):(\d\d)')
# Column -> (type, attr) mapping.
-#
+#
type_mapping = {
u'Inquadratura' : (u'Inquadratura', 'num'),
u'Descrizione inquadratura' : (u'Inquadratura', 'descrizione'),
@@ -112,12 +112,12 @@ class DCPImporter(GenericImporter):
incr = 1.0 / self.row_count
# Column cache: store (in_time, content) for each column
column_cache = {}
- # Row cache: for coalesced types, store
+ # Row cache: for coalesced types, store
# (in_time, content) indexed by DCP type
row_cache = {}
for row in rows:
row_cache.clear()
- self.progress(progress, _("Converting #%(num)d / %(count)d") % { 'num': rows.line_num,
+ self.progress(progress, _("Converting #%(num)d / %(count)d") % { 'num': rows.line_num,
'count': self.row_count})
progress += incr
t = self.str2time(row[1])
diff --git a/lib/advene/plugins/aiff.py b/lib/advene/plugins/fcp.py
similarity index 88%
rename from lib/advene/plugins/aiff.py
rename to lib/advene/plugins/fcp.py
index 6ec866b..78c76d6 100644
--- a/lib/advene/plugins/aiff.py
+++ b/lib/advene/plugins/fcp.py
@@ -17,22 +17,20 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
-# AIFF importer.
-
-name="AIFF importer"
+name="Final Cut Pro XML importer"
from gettext import gettext as _
import advene.core.config as config
from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
def register(controller=None):
- controller.register_importer(AiffImporter)
+ controller.register_importer(XMLFCPImporter)
return True
-class AiffImporter(GenericImporter):
- name = _("Aiff importer")
+class XMLFCPImporter(GenericImporter):
+ name = _("Final Cut Pro XML importer")
def can_handle(fname):
"""Return a score between 0 and 100.
@@ -49,12 +47,12 @@ class AiffImporter(GenericImporter):
root=tree.getroot()
p, at = self.init_package(filename=dest,
- schemaid='aiff', annotationtypeid='aiff_subtitle')
+ schemaid='fcp', annotationtypeid='fcp_subtitle')
at.mimetype='text/plain'
- at.title = "AIFF Subtitle"
+ at.title = "FCP Subtitle"
self.at = {
- 'clipitem': self.create_annotation_type(at.schema, 'aiff_clipitem', title=_("AIFF clipitem")),
+ 'clipitem': self.create_annotation_type(at.schema, 'fcp_clipitem', title=_("FCP clipitem")),
'subtitle': at,
}
@@ -66,7 +64,7 @@ class AiffImporter(GenericImporter):
def iterator(self, root):
if root.tag != 'xmeml':
- print "Invalid AIFF file format: ", root.tag
+ print "Invalid FCP XML file format: ", root.tag
return
progress=0.01
diff --git a/lib/advene/plugins/featuredetect.py b/lib/advene/plugins/featuredetect.py
index b260683..ba941e0 100644
--- a/lib/advene/plugins/featuredetect.py
+++ b/lib/advene/plugins/featuredetect.py
@@ -168,7 +168,7 @@ class FeatureDetectImporter(GenericImporter):
start_pos = None
if not self.progress(cv.GetCaptureProperty(video,
cv.CV_CAP_PROP_POS_AVI_RATIO),
- _("Detected %(count)d feature(s) until %(time)s") % { 'count': count,
+ _("Detected %(count)d feature(s) until %(time)s") % { 'count': count,
'time': helper.format_time(pos) }):
break
pos = cv.GetCaptureProperty(video, cv.CV_CAP_PROP_POS_MSEC)
diff --git a/lib/advene/plugins/goodshotdetector.py b/lib/advene/plugins/goodshotdetector.py
index 1537c56..83d9574 100644
--- a/lib/advene/plugins/goodshotdetector.py
+++ b/lib/advene/plugins/goodshotdetector.py
@@ -136,7 +136,7 @@ class ShotDetector:
self.DISS_START_THRESHOLD = 0.16
self.DISS_END_THRESHOLD = 0.26
self.DISS_MIN_FRAMES = 3
-
+
def dummy_progress(self, prg, label):
pass
@@ -233,7 +233,7 @@ class ShotDetector:
h = (histos[i] + histos[i-1]) / 2
c = 0
for k in range(1, K):
- if i - k < 0 :
+ if i - k < 0 :
break
c += numpy.sum(numpy.abs(h - histos[i - k])) / nbpix
r.append(c / K)
diff --git a/lib/advene/plugins/montagerenderer.py b/lib/advene/plugins/montagerenderer.py
index ed0ad15..6c356f1 100644
--- a/lib/advene/plugins/montagerenderer.py
+++ b/lib/advene/plugins/montagerenderer.py
@@ -185,7 +185,7 @@ class MontageRenderer(object):
if capsname: line.append( '[%s]' % capsname )
if ghostpath: line.append( "ghosts %s" % self.relpath(path, ghostpath) )
line.append( "%s %s" % (direc, peerpath) )
-
+
#if peerpath and peerpath.find('proxy')!=-1: print peer
ret.append( ''.join(line) )
if recurse and isinstance(e, gst.Bin):
diff --git a/lib/advene/plugins/mpeg7.py b/lib/advene/plugins/mpeg7.py
index de7de98..8cc28cb 100644
--- a/lib/advene/plugins/mpeg7.py
+++ b/lib/advene/plugins/mpeg7.py
@@ -29,7 +29,7 @@ import time
import advene.core.config as config
from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
def register(controller=None):
controller.register_importer(MPEG7Importer)
diff --git a/lib/advene/plugins/pocketsphinx.py b/lib/advene/plugins/pocketsphinx.py
new file mode 100644
index 0000000..f09fe89
--- /dev/null
+++ b/lib/advene/plugins/pocketsphinx.py
@@ -0,0 +1,193 @@
+#
+# Advene: Annotate Digital Videos, Exchange on the NEt
+# Copyright (C) 2008 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
+#
+# Advene is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# Advene is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Advene; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+name="Speech recognition"
+
+from gettext import gettext as _
+
+import os
+import gobject
+import gst
+
+import advene.core.config as config
+from advene.util.importer import GenericImporter
+import advene.util.helper as helper
+
+def register(controller=None):
+ if (gst.element_factory_find('vader')
+ and gst.element_factory_find('pocketsphinx')):
+ controller.register_importer(PocketSphinxImporter)
+ else:
+ controller.log(_("Cannot register speech recognition: Pocketsphinx plugins not found. See http://cmusphinx.sourceforge.net/wiki/gstreamer for details."))
+ return True
+
+class PocketSphinxImporter(GenericImporter):
+ name = _("Speech recognition (PocketSphinx)")
+
+ def __init__(self, *p, **kw):
+ super(PocketSphinxImporter, self).__init__(*p, **kw)
+
+ # Noise level [0..1]
+ self.noise = 1.0 / 128
+ # Silence duration (in ms)
+ self.silence = 300
+ # Use default model
+ self.use_default_model = True
+ # Acoustic model (directory)
+ self.acoustic_model = "/usr/share/pocketsphinx/model/hmm/en_US/hub4wsj_sc_8k"
+ # Phonetic dictionary
+ self.phonetic_dict = "/usr/share/pocketsphinx/model/lm/en_US/cmu07a.dic"
+ # Lang model (lm)
+ self.lang_model = "/usr/share/pocketsphinx/model/lm/en_US/hub4.5000.DMP"
+
+ self.optionparser.add_option("-n", "--noise",
+ action="store", type="float", dest="noise", default=self.noise,
+ help=_("Filtering noise level [0..1]."))
+
+ self.optionparser.add_option("-s", "--silence",
+ action="store", type="int", dest="silence", default=self.silence,
+ help=_("Minimum amount (in milliseconds) of silence required to terminate the current annotation and start a new one. Decreasing this length will result in a large amount of short annotations and increasing this length will result in a small amount of long annotations."))
+
+ self.optionparser.add_option("-d", "--default-model",
+ action="store_true", dest="use_default_model", default= self.use_default_model,
+ help=_("Use default acoustic and language models."))
+
+ self.optionparser.add_option("-a", "--acoustic-model",
+ action="store", type="string", dest="acoustic_model", default=self.acoustic_model,
+ help=_("Acoustic model (directory)") + '[D]')
+
+ self.optionparser.add_option("-p", "--phonetic-dict",
+ action="store", type="string", dest="phonetic_dict", default=self.phonetic_dict,
+ help=_("Phonetic dictionary (.dic file)") + '[F]')
+
+ self.optionparser.add_option("-l", "--language-model",
+ action="store", type="string", dest="lang_model", default=self.lang_model,
+ help=_("Language model (.DMP file)") + '[F]')
+
+ self.buffer_list = []
+ self.start_position = 0
+ self.text = None
+
+ def can_handle(fname):
+ """Return a score between 0 and 100.
+
+ 100 is for the best match (specific extension), 0 is for no match at all.
+ """
+ ext = os.path.splitext(fname)[1]
+ if ext in config.data.video_extensions:
+ return 80
+ return 0
+ can_handle=staticmethod(can_handle)
+
+ def on_vader_start(self, vader, pos):
+ """Store start position.
+ """
+ self.start_position = pos / gst.MSECOND
+ return True
+
+ def on_vader_stop(self, vader, pos):
+ """Store stop position.
+ """
+ if self.start_position and self.text:
+ self.buffer_list.append( (self.start_position, pos / gst.MSECOND, self.text) )
+ self.text = None
+ self.start_position = 0
+ return True
+
+ def on_pocketsphinx_result(self, sphinx, text, uttid):
+ self.text = text
+ return True
+
+ def generate_annotations(self):
+ n = 1.0 * len(self.buffer_list)
+ self.progress(0, _("Generating annotations"))
+ for i, tup in enumerate(self.buffer_list):
+ self.progress(i / n)
+ self.convert( [ {
+ 'begin': tup[0],
+ 'end': tup[1],
+ 'content': tup[2],
+ } ])
+
+ def on_bus_message(self, bus, message):
+ def finalize():
+ """Finalize data creation.
+ """
+ gobject.idle_add(lambda: self.pipeline.set_state(gst.STATE_NULL) and False)
+ self.generate_annotations()
+ if self.end_callback:
+ self.end_callback()
+ return False
+
+ if message.type == gst.MESSAGE_EOS:
+ finalize()
+ elif message.structure:
+ s = message.structure
+ #print "MSG " + s.get_name() + ": " + s.to_string()
+ if s.get_name() == 'progress' and self.progress is not None:
+ if not self.progress(s['percent-double'] / 100, _("%(count)d utterances until %(time)s") % {
+ 'count': len(self.buffer_list),
+ 'time': helper.format_time(s['current'] * 1000) }):
+ finalize()
+ return True
+
+ def async_process_file(self, filename, end_callback=None):
+ self.end_callback = end_callback
+
+ at = self.ensure_new_type('speech', title=_("Speech"))
+ at.mimetype = 'text/plain'
+ at.setMetaData(config.data.namespace_prefix['dc'], "description", _("Recognized speech"))
+
+ if self.use_default_model:
+ args = ""
+ else:
+ args = 'hmm="%s" dict="%s" lm="%s" ' % (
+ self.acoustic_model,
+ self.phonetic_dict,
+ self.lang_model)
+
+ # Build pipeline
+ self.pipeline = gst.parse_launch('uridecodebin name=decoder ! audioconvert ! audioresample ! progressreport silent=true update-freq=1 name=report ! vader name=vader auto-threshold=false threshold=%(noise).9f run-length=%(silence)d ! pocketsphinx name=pocketsphinx %(pocketsphinxargs)s ! fakesink' % ( {
+ 'noise': self.noise,
+ 'silence': self.silence * gst.MSECOND,
+ 'pocketsphinxargs': args }))
+ self.decoder = self.pipeline.get_by_name('decoder')
+
+ vader = self.pipeline.get_by_name("vader")
+ vader.connect("vader-start", self.on_vader_start)
+ vader.connect("vader-stop", self.on_vader_stop)
+ sphinx = self.pipeline.get_by_name("pocketsphinx")
+ sphinx.connect("result", self.on_pocketsphinx_result)
+ sphinx.set_property("configured", True)
+
+ bus = self.pipeline.get_bus()
+ # Enabling sync_message_emission will in fact force the
+ # self.progress call from a thread other than the main thread,
+ # which surprisingly works better ATM.
+ bus.enable_sync_message_emission()
+ bus.add_signal_watch()
+ bus.connect('sync-message', self.on_bus_message)
+
+ if config.data.os == 'win32':
+ self.decoder.props.uri = 'file:///' + os.path.abspath(unicode(filename))
+ else:
+ self.decoder.props.uri = 'file://' + os.path.abspath(filename)
+ self.progress(0, _("Recognizing speech"))
+ self.pipeline.set_state(gst.STATE_PLAYING)
+ return self.package
diff --git a/lib/advene/plugins/shotdetect.py b/lib/advene/plugins/shotdetect.py
index 8105f5f..16c5593 100644
--- a/lib/advene/plugins/shotdetect.py
+++ b/lib/advene/plugins/shotdetect.py
@@ -25,7 +25,7 @@ from gettext import gettext as _
import advene.core.config as config
from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
def register(controller=None):
controller.register_importer(ShotdetectImporter)
diff --git a/lib/advene/plugins/ted.py b/lib/advene/plugins/ted.py
index 41d60a6..09ac0ce 100644
--- a/lib/advene/plugins/ted.py
+++ b/lib/advene/plugins/ted.py
@@ -29,7 +29,6 @@ try:
except ImportError:
import simplejson as json
-import advene.core.config as config
from advene.util.importer import GenericImporter
def register(controller=None):
@@ -60,7 +59,7 @@ class TEDImporter(GenericImporter):
f=open(filename, 'r')
data='\n'.join(f.readlines())
f.close()
-
+
p, at=self.init_package(filename=filename, schemaid='ted')
if self.package is None:
self.package=p
@@ -70,14 +69,15 @@ class TEDImporter(GenericImporter):
offset=long(offset[0])
else:
offset=0
+ m = re.findall('/talks/subtitles/id/(\d+)', data, re.MULTILINE)
+ if m:
+ ident=m[0]
+ else:
+ self.log("Cannot find talk id")
+ ident=None
podcast=re.findall('(itpc://[^"]+)', data, re.MULTILINE)
if podcast:
podcast=podcast[0]
- ident=re.findall('(\d+)$', podcast)
- if ident:
- ident=ident[0]
- else:
- ident=None
self.progress(0.2, "Fetching podcast information")
podcast=urllib.urlopen(podcast.replace('itpc:', 'http:'))
data=podcast.read()
diff --git a/lib/advene/plugins/tracebuilder.py b/lib/advene/plugins/tracebuilder.py
index 8235a9e..5076a38 100644
--- a/lib/advene/plugins/tracebuilder.py
+++ b/lib/advene/plugins/tracebuilder.py
@@ -39,7 +39,7 @@ from gettext import gettext as _
import advene.core.config as config
import advene.model.view
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
import advene.util.helper as helper
import advene.util.handyxml as handyxml
@@ -820,7 +820,7 @@ class TraceBuilder(Thread):
if typ == "Undefined":
# some operations can be mapped to different actions, we check that
typ = self.find_action_name(obj)
- if self.opened_actions[typ]:
+ if self.opened_actions.get(typ):
# an action is already opened for this event
ac = self.opened_actions[typ]
if typ == "Navigation" and (ope.name == "PlayerStop" or ope.name == "PlayerPause"):
diff --git a/lib/advene/plugins/transcriber.py b/lib/advene/plugins/transcriber.py
index 43656a7..b455e15 100644
--- a/lib/advene/plugins/transcriber.py
+++ b/lib/advene/plugins/transcriber.py
@@ -26,7 +26,7 @@ name="Transcriber importer"
from gettext import gettext as _
from advene.util.importer import GenericImporter
-import advene.util.ElementTree as ETree
+import xml.etree.ElementTree as ETree
def register(controller=None):
controller.register_importer(TrsImporter)
@@ -85,7 +85,7 @@ class TrsImporter(GenericImporter):
for s in Section:
self.progress(progress, _("Parsing section information"))
progress += incr
-
+
try:
s_begin=float(s.get('startTime')) ## 'startTime' is a "Section" required attribute
except AttributeError, e:
@@ -107,7 +107,7 @@ class TrsImporter(GenericImporter):
except AttributeError, e:
print str(e)
continue
-
+
topic = "" ## 'topic' is a "Section" optional attribute
try :
if s.get('topic') is not None:
@@ -134,7 +134,7 @@ class TrsImporter(GenericImporter):
continue
t_begin=int(t_begin*1000)
-
+
try:
t_end=float(t.get('endTime')) ## 'endTime' is a "Turn" required attribute
except AttributeError, e:
@@ -163,7 +163,7 @@ class TrsImporter(GenericImporter):
seg = None
for elem in t.getchildren():
-
+
if elem.tag == "Sync" :
try:
seg_time = float(elem.get('time'))
@@ -185,7 +185,7 @@ class TrsImporter(GenericImporter):
'end': None,
'content': "%s" % text
}
-
+
text = elem.tail.replace("\n","")
elif elem.tag == 'Background':
@@ -224,12 +224,12 @@ class TrsImporter(GenericImporter):
'end': None,
'content': None
}
-
+
if seg is not None:
seg['end'] = t_end
seg['content'] = text+"\n"
yield seg
-
+
except AttributeError,e: ## catch exception on Turn elements
print str(e)
continue
@@ -245,7 +245,7 @@ class TrsImporter(GenericImporter):
def process_file(self, filename):
trstree=ETree.parse(filename)
trs = trstree.getroot()
-
+
if trs.tag != 'Trans':
self.log("This does not look like a Transcriber file.")
return
diff --git a/lib/advene/plugins/ttl.py b/lib/advene/plugins/ttl.py
index 5a99f36..c22890e 100644
--- a/lib/advene/plugins/ttl.py
+++ b/lib/advene/plugins/ttl.py
@@ -109,7 +109,7 @@ class TTLImporter(GenericImporter):
data = data.strip('"')
item[propname] = data
-
+
continue
if l.startswith('.'):
@@ -135,7 +135,7 @@ class TTLImporter(GenericImporter):
item['_begin'] = helper.format_time_reference(item['begin'])
item['_end'] = helper.format_time_reference(item['end'])
- yield {
+ yield {
'content': "\n".join( "%s=%s" % (k, str(item[k])) for k in sorted(item.iterkeys())).encode('utf8'),
'begin': begin,
'end' : end,
diff --git a/lib/advene/plugins/undomanager.py b/lib/advene/plugins/undomanager.py
index da5986c..3e5f13c 100644
--- a/lib/advene/plugins/undomanager.py
+++ b/lib/advene/plugins/undomanager.py
@@ -119,7 +119,7 @@ class UndoHistory:
def element_edit_end(self, context, parameters):
"""Record the modified elements.
"""
- if 'undone' in context.globals:
+ if context.globals.get('undone'):
# The change is done in the context of an Undo.
# Do not record it.
#print "EditEnd in Undo context"
@@ -151,6 +151,11 @@ class UndoHistory:
def element_create(self, context, parameters):
"""Record the created element id.
"""
+ if context.globals.get('undone'):
+ # The change is done in the context of an Undo.
+ # Do not record it.
+ #print "Create in Undo context"
+ return
event=context.evaluateValue('event')
el=event.replace('Create', '').lower()
element=context.evaluateValue(el)
@@ -176,6 +181,11 @@ class UndoHistory:
def element_delete(self, context, parameters):
"""Record the deleted elements.
"""
+ if context.globals.get('undone'):
+ # The change is done in the context of an Undo.
+ # Do not record it.
+ #print "Delete in Undo context"
+ return
event=context.evaluateValue('event')
el=event.replace('Delete', '').lower()
element=context.evaluateValue(el)
diff --git a/lib/advene/rules/actions.py b/lib/advene/rules/actions.py
index 82223c2..528e56b 100644
--- a/lib/advene/rules/actions.py
+++ b/lib/advene/rules/actions.py
@@ -731,7 +731,7 @@ class DefaultActionsRepository:
except ValueError:
# Maybe it was a string value
self.controller.package.state[name]=self.controller.package.state[name]+"1"
-
+
return True
def ClearState(self, context, parameters):
diff --git a/lib/advene/rules/ecaengine.py b/lib/advene/rules/ecaengine.py
index ecb986c..381ac3f 100755
--- a/lib/advene/rules/ecaengine.py
+++ b/lib/advene/rules/ecaengine.py
@@ -35,7 +35,7 @@ import advene.rules.elements
class MyThread(threading.Thread):
"""Override the standard run() method.
-
+
Its behaviour changed in 2.6, and removed the __target, _args and
_kwargs variable. Since we keep reusing them, this broke our code.
"""
@@ -46,7 +46,7 @@ class MyThread(threading.Thread):
def run(self):
if self._target:
self._target()
-
+
class ECAEngine:
"""ECAEngine class.
@@ -340,7 +340,7 @@ class ECAEngine:
for k in sorted(self.ruledict.keys()):
res.append("%s: %s" % (k, len(self.ruledict[k])))
return res
-
+
def notify (self, event_name, *param, **kw):
"""Invoked by the application on the occurence of an event.
diff --git a/lib/advene/rules/elements.py b/lib/advene/rules/elements.py
index 8b7c403..0769c48 100755
--- a/lib/advene/rules/elements.py
+++ b/lib/advene/rules/elements.py
@@ -24,7 +24,7 @@ events that match a condition."""
import re
import StringIO
import urllib
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
import itertools
import advene.core.config as config
@@ -861,7 +861,7 @@ class Quicksearch(EtreeMixin):
@return: an ElementTree.Element
"""
qnode=ET.Element(tag('quicksearch'))
-
+
for source in self.sources:
qnode.append(ET.Element(tag('source'), { 'value': source } ))
diff --git a/lib/advene/util/ElementPath.py b/lib/advene/util/ElementPath.py
deleted file mode 100644
index 558b560..0000000
--- a/lib/advene/util/ElementPath.py
+++ /dev/null
@@ -1,196 +0,0 @@
-#
-# ElementTree
-# $Id: ElementPath.py 1858 2004-06-17 21:31:41Z Fredrik $
-#
-# limited xpath support for element trees
-#
-# history:
-# 2003-05-23 fl created
-# 2003-05-28 fl added support for // etc
-# 2003-08-27 fl fixed parsing of periods in element names
-#
-# Copyright (c) 2003-2004 by Fredrik Lundh. All rights reserved.
-#
-# fredrik at pythonware.com
-# http://www.pythonware.com
-#
-# --------------------------------------------------------------------
-# The ElementTree toolkit is
-#
-# Copyright (c) 1999-2004 by Fredrik Lundh
-#
-# By obtaining, using, and/or copying this software and/or its
-# associated documentation, you agree that you have read, understood,
-# and will comply with the following terms and conditions:
-#
-# Permission to use, copy, modify, and distribute this software and
-# its associated documentation for any purpose and without fee is
-# hereby granted, provided that the above copyright notice appears in
-# all copies, and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of
-# Secret Labs AB or the author not be used in advertising or publicity
-# pertaining to distribution of the software without specific, written
-# prior permission.
-#
-# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
-# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
-# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
-# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-# --------------------------------------------------------------------
-
-##
-# Implementation module for XPath support. There's usually no reason
-# to import this module directly; the <b>ElementTree</b> does this for
-# you, if needed.
-##
-
-import re
-
-xpath_tokenizer = re.compile(
- "(::|\.\.|\(\)|[/.*:\[\]\(\)@=])|((?:\{[^}]+\})?[^/:\[\]\(\)@=\s]+)|\s+"
- ).findall
-
-class xpath_descendant_or_self:
- pass
-
-##
-# Wrapper for a compiled XPath.
-
-class Path:
-
- ##
- # Create an Path instance from an XPath expression.
-
- def __init__(self, path):
- tokens = xpath_tokenizer(path)
- # the current version supports 'path/path'-style expressions only
- self.path = []
- self.tag = None
- if tokens and tokens[0][0] == "/":
- raise SyntaxError("cannot use absolute path on element")
- while tokens:
- op, tag = tokens.pop(0)
- if tag or op == "*":
- self.path.append(tag or op)
- elif op == ".":
- pass
- elif op == "/":
- self.path.append(xpath_descendant_or_self())
- continue
- else:
- raise SyntaxError("unsupported path syntax (%s)" % op)
- if tokens:
- op, tag = tokens.pop(0)
- if op != "/":
- raise SyntaxError(
- "expected path separator (%s)" % (op or tag)
- )
- if self.path and isinstance(self.path[-1], xpath_descendant_or_self):
- raise SyntaxError("path cannot end with //")
- if len(self.path) == 1 and isinstance(self.path[0], type("")):
- self.tag = self.path[0]
-
- ##
- # Find first matching object.
-
- def find(self, element):
- tag = self.tag
- if tag is None:
- nodeset = self.findall(element)
- if not nodeset:
- return None
- return nodeset[0]
- for elem in element:
- if elem.tag == tag:
- return elem
- return None
-
- ##
- # Find text for first matching object.
-
- def findtext(self, element, default=None):
- tag = self.tag
- if tag is None:
- nodeset = self.findall(element)
- if not nodeset:
- return default
- return nodeset[0].text or ""
- for elem in element:
- if elem.tag == tag:
- return elem.text or ""
- return default
-
- ##
- # Find all matching objects.
-
- def findall(self, element):
- nodeset = [element]
- index = 0
- while 1:
- try:
- path = self.path[index]
- index = index + 1
- except IndexError:
- return nodeset
- set = []
- if isinstance(path, xpath_descendant_or_self):
- try:
- tag = self.path[index]
- if not isinstance(tag, type("")):
- tag = None
- else:
- index = index + 1
- except IndexError:
- tag = None # invalid path
- for node in nodeset:
- new = list(node.getiterator(tag))
- if new and new[0] is node:
- set.extend(new[1:])
- else:
- set.extend(new)
- else:
- for node in nodeset:
- for node in node:
- if path == "*" or node.tag == path:
- set.append(node)
- if not set:
- return []
- nodeset = set
-
-_cache = {}
-
-##
-# (Internal) Compile path.
-
-def _compile(path):
- p = _cache.get(path)
- if p is not None:
- return p
- p = Path(path)
- if len(_cache) >= 100:
- _cache.clear()
- _cache[path] = p
- return p
-
-##
-# Find first matching object.
-
-def find(element, path):
- return _compile(path).find(element)
-
-##
-# Find text for first matching object.
-
-def findtext(element, path, default=None):
- return _compile(path).findtext(element, default)
-
-##
-# Find all matching objects.
-
-def findall(element, path):
- return _compile(path).findall(element)
-
diff --git a/lib/advene/util/ElementTree.py b/lib/advene/util/ElementTree.py
deleted file mode 100644
index 98d0208..0000000
--- a/lib/advene/util/ElementTree.py
+++ /dev/null
@@ -1,1254 +0,0 @@
-#
-# ElementTree
-# $Id: ElementTree.py 2326 2005-03-17 07:45:21Z fredrik $
-#
-# light-weight XML support for Python 1.5.2 and later.
-#
-# history:
-# 2001-10-20 fl created (from various sources)
-# 2001-11-01 fl return root from parse method
-# 2002-02-16 fl sort attributes in lexical order
-# 2002-04-06 fl TreeBuilder refactoring, added PythonDoc markup
-# 2002-05-01 fl finished TreeBuilder refactoring
-# 2002-07-14 fl added basic namespace support to ElementTree.write
-# 2002-07-25 fl added QName attribute support
-# 2002-10-20 fl fixed encoding in write
-# 2002-11-24 fl changed default encoding to ascii; fixed attribute encoding
-# 2002-11-27 fl accept file objects or file names for parse/write
-# 2002-12-04 fl moved XMLTreeBuilder back to this module
-# 2003-01-11 fl fixed entity encoding glitch for us-ascii
-# 2003-02-13 fl added XML literal factory
-# 2003-02-21 fl added ProcessingInstruction/PI factory
-# 2003-05-11 fl added tostring/fromstring helpers
-# 2003-05-26 fl added ElementPath support
-# 2003-07-05 fl added makeelement factory method
-# 2003-07-28 fl added more well-known namespace prefixes
-# 2003-08-15 fl fixed typo in ElementTree.findtext (Thomas Dartsch)
-# 2003-09-04 fl fall back on emulator if ElementPath is not installed
-# 2003-10-31 fl markup updates
-# 2003-11-15 fl fixed nested namespace bug
-# 2004-03-28 fl added XMLID helper
-# 2004-06-02 fl added default support to findtext
-# 2004-06-08 fl fixed encoding of non-ascii element/attribute names
-# 2004-08-23 fl take advantage of post-2.1 expat features
-# 2005-02-01 fl added iterparse implementation
-# 2005-03-02 fl fixed iterparse support for pre-2.2 versions
-#
-# Copyright (c) 1999-2005 by Fredrik Lundh. All rights reserved.
-#
-# fredrik at pythonware.com
-# http://www.pythonware.com
-#
-# --------------------------------------------------------------------
-# The ElementTree toolkit is
-#
-# Copyright (c) 1999-2005 by Fredrik Lundh
-#
-# By obtaining, using, and/or copying this software and/or its
-# associated documentation, you agree that you have read, understood,
-# and will comply with the following terms and conditions:
-#
-# Permission to use, copy, modify, and distribute this software and
-# its associated documentation for any purpose and without fee is
-# hereby granted, provided that the above copyright notice appears in
-# all copies, and that both that copyright notice and this permission
-# notice appear in supporting documentation, and that the name of
-# Secret Labs AB or the author not be used in advertising or publicity
-# pertaining to distribution of the software without specific, written
-# prior permission.
-#
-# SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
-# TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
-# ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
-# BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-# --------------------------------------------------------------------
-
-__all__ = [
- # public symbols
- "Comment",
- "dump",
- "Element", "ElementTree",
- "fromstring",
- "iselement", "iterparse",
- "parse",
- "PI", "ProcessingInstruction",
- "QName",
- "SubElement",
- "tostring",
- "TreeBuilder",
- "VERSION", "XML",
- "XMLTreeBuilder",
- ]
-
-##
-# The <b>Element</b> type is a flexible container object, designed to
-# store hierarchical data structures in memory. The type can be
-# described as a cross between a list and a dictionary.
-# <p>
-# Each element has a number of properties associated with it:
-# <ul>
-# <li>a <i>tag</i>. This is a string identifying what kind of data
-# this element represents (the element type, in other words).</li>
-# <li>a number of <i>attributes</i>, stored in a Python dictionary.</li>
-# <li>a <i>text</i> string.</li>
-# <li>an optional <i>tail</i> string.</li>
-# <li>a number of <i>child elements</i>, stored in a Python sequence</li>
-# </ul>
-#
-# To create an element instance, use the {@link #Element} or {@link
-# #SubElement} factory functions.
-# <p>
-# The {@link #ElementTree} class can be used to wrap an element
-# structure, and convert it from and to XML.
-##
-
-import string, sys, re
-
-class _SimpleElementPath:
- # emulate pre-1.2 find/findtext/findall behaviour
- def find(self, element, tag):
- for elem in element:
- if elem.tag == tag:
- return elem
- return None
- def findtext(self, element, tag, default=None):
- for elem in element:
- if elem.tag == tag:
- return elem.text or ""
- return default
- def findall(self, element, tag):
- if tag[:3] == ".//":
- return element.getiterator(tag[3:])
- result = []
- for elem in element:
- if elem.tag == tag:
- result.append(elem)
- return result
-
-try:
- import ElementPath
-except ImportError:
- # FIXME: issue warning in this case?
- ElementPath = _SimpleElementPath()
-
-# TODO: add support for custom namespace resolvers/default namespaces
-# TODO: add improved support for incremental parsing
-
-VERSION = "1.2.6"
-
-##
-# Internal element class. This class defines the Element interface,
-# and provides a reference implementation of this interface.
-# <p>
-# You should not create instances of this class directly. Use the
-# appropriate factory functions instead, such as {@link #Element}
-# and {@link #SubElement}.
-#
-# @see Element
-# @see SubElement
-# @see Comment
-# @see ProcessingInstruction
-
-class _ElementInterface:
- # <tag attrib>text<child/>...</tag>tail
-
- ##
- # (Attribute) Element tag.
-
- tag = None
-
- ##
- # (Attribute) Element attribute dictionary. Where possible, use
- # {@link #_ElementInterface.get},
- # {@link #_ElementInterface.set},
- # {@link #_ElementInterface.keys}, and
- # {@link #_ElementInterface.items} to access
- # element attributes.
-
- attrib = None
-
- ##
- # (Attribute) Text before first subelement. This is either a
- # string or the value None, if there was no text.
-
- text = None
-
- ##
- # (Attribute) Text after this element's end tag, but before the
- # next sibling element's start tag. This is either a string or
- # the value None, if there was no text.
-
- tail = None # text after end tag, if any
-
- def __init__(self, tag, attrib):
- self.tag = tag
- self.attrib = attrib
- self._children = []
-
- def __repr__(self):
- return "<Element %s at %x>" % (self.tag, id(self))
-
- ##
- # Creates a new element object of the same type as this element.
- #
- # @param tag Element tag.
- # @param attrib Element attributes, given as a dictionary.
- # @return A new element instance.
-
- def makeelement(self, tag, attrib):
- return Element(tag, attrib)
-
- ##
- # Returns the number of subelements.
- #
- # @return The number of subelements.
-
- def __len__(self):
- return len(self._children)
-
- ##
- # Returns the given subelement.
- #
- # @param index What subelement to return.
- # @return The given subelement.
- # @exception IndexError If the given element does not exist.
-
- def __getitem__(self, index):
- return self._children[index]
-
- ##
- # Replaces the given subelement.
- #
- # @param index What subelement to replace.
- # @param element The new element value.
- # @exception IndexError If the given element does not exist.
- # @exception AssertionError If element is not a valid object.
-
- def __setitem__(self, index, element):
- assert iselement(element)
- self._children[index] = element
-
- ##
- # Deletes the given subelement.
- #
- # @param index What subelement to delete.
- # @exception IndexError If the given element does not exist.
-
- def __delitem__(self, index):
- del self._children[index]
-
- ##
- # Returns a list containing subelements in the given range.
- #
- # @param start The first subelement to return.
- # @param stop The first subelement that shouldn't be returned.
- # @return A sequence object containing subelements.
-
- def __getslice__(self, start, stop):
- return self._children[start:stop]
-
- ##
- # Replaces a number of subelements with elements from a sequence.
- #
- # @param start The first subelement to replace.
- # @param stop The first subelement that shouldn't be replaced.
- # @param elements A sequence object with zero or more elements.
- # @exception AssertionError If a sequence member is not a valid object.
-
- def __setslice__(self, start, stop, elements):
- for element in elements:
- assert iselement(element)
- self._children[start:stop] = list(elements)
-
- ##
- # Deletes a number of subelements.
- #
- # @param start The first subelement to delete.
- # @param stop The first subelement to leave in there.
-
- def __delslice__(self, start, stop):
- del self._children[start:stop]
-
- ##
- # Adds a subelement to the end of this element.
- #
- # @param element The element to add.
- # @exception AssertionError If a sequence member is not a valid object.
-
- def append(self, element):
- assert iselement(element)
- self._children.append(element)
-
- ##
- # Inserts a subelement at the given position in this element.
- #
- # @param index Where to insert the new subelement.
- # @exception AssertionError If the element is not a valid object.
-
- def insert(self, index, element):
- assert iselement(element)
- self._children.insert(index, element)
-
- ##
- # Removes a matching subelement. Unlike the <b>find</b> methods,
- # this method compares elements based on identity, not on tag
- # value or contents.
- #
- # @param element What element to remove.
- # @exception ValueError If a matching element could not be found.
- # @exception AssertionError If the element is not a valid object.
-
- def remove(self, element):
- assert iselement(element)
- self._children.remove(element)
-
- ##
- # Returns all subelements. The elements are returned in document
- # order.
- #
- # @return A list of subelements.
- # @defreturn list of Element instances
-
- def getchildren(self):
- return self._children
-
- ##
- # Finds the first matching subelement, by tag name or path.
- #
- # @param path What element to look for.
- # @return The first matching element, or None if no element was found.
- # @defreturn Element or None
-
- def find(self, path):
- return ElementPath.find(self, path)
-
- ##
- # Finds text for the first matching subelement, by tag name or path.
- #
- # @param path What element to look for.
- # @param default What to return if the element was not found.
- # @return The text content of the first matching element, or the
- # default value no element was found. Note that if the element
- # has is found, but has no text content, this method returns an
- # empty string.
- # @defreturn string
-
- def findtext(self, path, default=None):
- return ElementPath.findtext(self, path, default)
-
- ##
- # Finds all matching subelements, by tag name or path.
- #
- # @param path What element to look for.
- # @return A list or iterator containing all matching elements,
- # in document order.
- # @defreturn list of Element instances
-
- def findall(self, path):
- return ElementPath.findall(self, path)
-
- ##
- # Resets an element. This function removes all subelements, clears
- # all attributes, and sets the text and tail attributes to None.
-
- def clear(self):
- self.attrib.clear()
- self._children = []
- self.text = self.tail = None
-
- ##
- # Gets an element attribute.
- #
- # @param key What attribute to look for.
- # @param default What to return if the attribute was not found.
- # @return The attribute value, or the default value, if the
- # attribute was not found.
- # @defreturn string or None
-
- def get(self, key, default=None):
- return self.attrib.get(key, default)
-
- ##
- # Sets an element attribute.
- #
- # @param key What attribute to set.
- # @param value The attribute value.
-
- def set(self, key, value):
- self.attrib[key] = value
-
- ##
- # Gets a list of attribute names. The names are returned in an
- # arbitrary order (just like for an ordinary Python dictionary).
- #
- # @return A list of element attribute names.
- # @defreturn list of strings
-
- def keys(self):
- return self.attrib.keys()
-
- ##
- # Gets element attributes, as a sequence. The attributes are
- # returned in an arbitrary order.
- #
- # @return A list of (name, value) tuples for all attributes.
- # @defreturn list of (string, string) tuples
-
- def items(self):
- return self.attrib.items()
-
- ##
- # Creates a tree iterator. The iterator loops over this element
- # and all subelements, in document order, and returns all elements
- # with a matching tag.
- # <p>
- # If the tree structure is modified during iteration, the result
- # is undefined.
- #
- # @param tag What tags to look for (default is to return all elements).
- # @return A list or iterator containing all the matching elements.
- # @defreturn list or iterator
-
- def getiterator(self, tag=None):
- nodes = []
- if tag == "*":
- tag = None
- if tag is None or self.tag == tag:
- nodes.append(self)
- for node in self._children:
- nodes.extend(node.getiterator(tag))
- return nodes
-
-# compatibility
-_Element = _ElementInterface
-
-##
-# Element factory. This function returns an object implementing the
-# standard Element interface. The exact class or type of that object
-# is implementation dependent, but it will always be compatible with
-# the {@link #_ElementInterface} class in this module.
-# <p>
-# The element name, attribute names, and attribute values can be
-# either 8-bit ASCII strings or Unicode strings.
-#
-# @param tag The element name.
-# @param attrib An optional dictionary, containing element attributes.
-# @param **extra Additional attributes, given as keyword arguments.
-# @return An element instance.
-# @defreturn Element
-
-def Element(tag, attrib={}, **extra):
- attrib = attrib.copy()
- attrib.update(extra)
- return _ElementInterface(tag, attrib)
-
-##
-# Subelement factory. This function creates an element instance, and
-# appends it to an existing element.
-# <p>
-# The element name, attribute names, and attribute values can be
-# either 8-bit ASCII strings or Unicode strings.
-#
-# @param parent The parent element.
-# @param tag The subelement name.
-# @param attrib An optional dictionary, containing element attributes.
-# @param **extra Additional attributes, given as keyword arguments.
-# @return An element instance.
-# @defreturn Element
-
-def SubElement(parent, tag, attrib={}, **extra):
- attrib = attrib.copy()
- attrib.update(extra)
- element = parent.makeelement(tag, attrib)
- parent.append(element)
- return element
-
-##
-# Comment element factory. This factory function creates a special
-# element that will be serialized as an XML comment.
-# <p>
-# The comment string can be either an 8-bit ASCII string or a Unicode
-# string.
-#
-# @param text A string containing the comment string.
-# @return An element instance, representing a comment.
-# @defreturn Element
-
-def Comment(text=None):
- element = Element(Comment)
- element.text = text
- return element
-
-##
-# PI element factory. This factory function creates a special element
-# that will be serialized as an XML processing instruction.
-#
-# @param target A string containing the PI target.
-# @param text A string containing the PI contents, if any.
-# @return An element instance, representing a PI.
-# @defreturn Element
-
-def ProcessingInstruction(target, text=None):
- element = Element(ProcessingInstruction)
- element.text = target
- if text:
- element.text = element.text + " " + text
- return element
-
-PI = ProcessingInstruction
-
-##
-# QName wrapper. This can be used to wrap a QName attribute value, in
-# order to get proper namespace handling on output.
-#
-# @param text A string containing the QName value, in the form {uri}local,
-# or, if the tag argument is given, the URI part of a QName.
-# @param tag Optional tag. If given, the first argument is interpreted as
-# an URI, and this argument is interpreted as a local name.
-# @return An opaque object, representing the QName.
-
-class QName:
- def __init__(self, text_or_uri, tag=None):
- if tag:
- text_or_uri = "{%s}%s" % (text_or_uri, tag)
- self.text = text_or_uri
- def __str__(self):
- return self.text
- def __hash__(self):
- return hash(self.text)
- def __cmp__(self, other):
- if isinstance(other, QName):
- return cmp(self.text, other.text)
- return cmp(self.text, other)
-
-##
-# ElementTree wrapper class. This class represents an entire element
-# hierarchy, and adds some extra support for serialization to and from
-# standard XML.
-#
-# @param element Optional root element.
-# @keyparam file Optional file handle or name. If given, the
-# tree is initialized with the contents of this XML file.
-
-class ElementTree:
-
- def __init__(self, element=None, file=None):
- assert element is None or iselement(element)
- self._root = element # first node
- if file:
- self.parse(file)
-
- ##
- # Gets the root element for this tree.
- #
- # @return An element instance.
- # @defreturn Element
-
- def getroot(self):
- return self._root
-
- ##
- # Replaces the root element for this tree. This discards the
- # current contents of the tree, and replaces it with the given
- # element. Use with care.
- #
- # @param element An element instance.
-
- def _setroot(self, element):
- assert iselement(element)
- self._root = element
-
- ##
- # Loads an external XML document into this element tree.
- #
- # @param source A file name or file object.
- # @param parser An optional parser instance. If not given, the
- # standard {@link XMLTreeBuilder} parser is used.
- # @return The document root element.
- # @defreturn Element
-
- def parse(self, source, parser=None):
- if not hasattr(source, "read"):
- source = open(source, "rb")
- if not parser:
- parser = XMLTreeBuilder()
- while 1:
- data = source.read(32768)
- if not data:
- break
- parser.feed(data)
- self._root = parser.close()
- return self._root
-
- ##
- # Creates a tree iterator for the root element. The iterator loops
- # over all elements in this tree, in document order.
- #
- # @param tag What tags to look for (default is to return all elements)
- # @return An iterator.
- # @defreturn iterator
-
- def getiterator(self, tag=None):
- assert self._root is not None
- return self._root.getiterator(tag)
-
- ##
- # Finds the first toplevel element with given tag.
- # Same as getroot().find(path).
- #
- # @param path What element to look for.
- # @return The first matching element, or None if no element was found.
- # @defreturn Element or None
-
- def find(self, path):
- assert self._root is not None
- if path[:1] == "/":
- path = "." + path
- return self._root.find(path)
-
- ##
- # Finds the element text for the first toplevel element with given
- # tag. Same as getroot().findtext(path).
- #
- # @param path What toplevel element to look for.
- # @param default What to return if the element was not found.
- # @return The text content of the first matching element, or the
- # default value no element was found. Note that if the element
- # has is found, but has no text content, this method returns an
- # empty string.
- # @defreturn string
-
- def findtext(self, path, default=None):
- assert self._root is not None
- if path[:1] == "/":
- path = "." + path
- return self._root.findtext(path, default)
-
- ##
- # Finds all toplevel elements with the given tag.
- # Same as getroot().findall(path).
- #
- # @param path What element to look for.
- # @return A list or iterator containing all matching elements,
- # in document order.
- # @defreturn list of Element instances
-
- def findall(self, path):
- assert self._root is not None
- if path[:1] == "/":
- path = "." + path
- return self._root.findall(path)
-
- ##
- # Writes the element tree to a file, as XML.
- #
- # @param file A file name, or a file object opened for writing.
- # @param encoding Optional output encoding (default is US-ASCII).
-
- def write(self, file, encoding="us-ascii"):
- assert self._root is not None
- if not hasattr(file, "write"):
- file = open(file, "wb")
- if not encoding:
- encoding = "us-ascii"
- elif encoding != "utf-8" and encoding != "us-ascii":
- file.write("<?xml version='1.0' encoding='%s'?>\n" % encoding)
- self._write(file, self._root, encoding, {})
-
- def _write(self, file, node, encoding, namespaces):
- # write XML to file
- tag = node.tag
- if tag is Comment:
- file.write("<!-- %s -->" % _escape_cdata(node.text, encoding))
- elif tag is ProcessingInstruction:
- file.write("<?%s?>" % _escape_cdata(node.text, encoding))
- else:
- items = node.items()
- xmlns_items = [] # new namespaces in this scope
- try:
- if isinstance(tag, QName) or tag[:1] == "{":
- tag, xmlns = fixtag(tag, namespaces)
- if xmlns: xmlns_items.append(xmlns)
- except TypeError:
- _raise_serialization_error(tag)
- file.write("<" + _encode(tag, encoding))
- if items or xmlns_items:
- items.sort() # lexical order
- for k, v in items:
- try:
- if isinstance(k, QName) or k[:1] == "{":
- k, xmlns = fixtag(k, namespaces)
- if xmlns: xmlns_items.append(xmlns)
- except TypeError:
- _raise_serialization_error(k)
- try:
- if isinstance(v, QName):
- v, xmlns = fixtag(v, namespaces)
- if xmlns: xmlns_items.append(xmlns)
- except TypeError:
- _raise_serialization_error(v)
- file.write(" %s=\"%s\"" % (_encode(k, encoding),
- _escape_attrib(v, encoding)))
- for k, v in xmlns_items:
- file.write(" %s=\"%s\"" % (_encode(k, encoding),
- _escape_attrib(v, encoding)))
- if node.text or len(node):
- file.write(">")
- if node.text:
- file.write(_escape_cdata(node.text, encoding))
- for n in node:
- self._write(file, n, encoding, namespaces)
- file.write("</" + _encode(tag, encoding) + ">")
- else:
- file.write(" />")
- for k, v in xmlns_items:
- del namespaces[v]
- if node.tail:
- file.write(_escape_cdata(node.tail, encoding))
-
-# --------------------------------------------------------------------
-# helpers
-
-##
-# Checks if an object appears to be a valid element object.
-#
-# @param An element instance.
-# @return A true value if this is an element object.
-# @defreturn flag
-
-def iselement(element):
- # FIXME: not sure about this; might be a better idea to look
- # for tag/attrib/text attributes
- return isinstance(element, _ElementInterface) or hasattr(element, "tag")
-
-##
-# Writes an element tree or element structure to sys.stdout. This
-# function should be used for debugging only.
-# <p>
-# The exact output format is implementation dependent. In this
-# version, it's written as an ordinary XML file.
-#
-# @param elem An element tree or an individual element.
-
-def dump(elem):
- # debugging
- if not isinstance(elem, ElementTree):
- elem = ElementTree(elem)
- elem.write(sys.stdout)
- tail = elem.getroot().tail
- if not tail or tail[-1] != "\n":
- sys.stdout.write("\n")
-
-def _encode(s, encoding):
- try:
- return s.encode(encoding)
- except AttributeError:
- return s # 1.5.2: assume the string uses the right encoding
-
-if sys.version[:3] == "1.5":
- _escape = re.compile(r"[&<>\"\x80-\xff]+") # 1.5.2
-else:
- _escape = re.compile(eval(r'u"[&<>\"\u0080-\uffff]+"'))
-
-_escape_map = {
- "&": "&",
- "<": "<",
- ">": ">",
- '"': """,
-}
-
-_namespace_map = {
- # "well-known" namespace prefixes
- "http://www.w3.org/XML/1998/namespace": "xml",
- "http://www.w3.org/1999/xhtml": "html",
- "http://www.w3.org/1999/02/22-rdf-syntax-ns#": "rdf",
- "http://schemas.xmlsoap.org/wsdl/": "wsdl",
-}
-
-def _raise_serialization_error(text):
- raise TypeError(
- "cannot serialize %r (type %s)" % (text, type(text).__name__)
- )
-
-def _encode_entity(text, pattern=_escape):
- # map reserved and non-ascii characters to numerical entities
- def escape_entities(m, map=_escape_map):
- out = []
- append = out.append
- for char in m.group():
- text = map.get(char)
- if text is None:
- text = "&#%d;" % ord(char)
- append(text)
- return string.join(out, "")
- try:
- return _encode(pattern.sub(escape_entities, text), "ascii")
- except TypeError:
- _raise_serialization_error(text)
-
-#
-# the following functions assume an ascii-compatible encoding
-# (or "utf-16")
-
-def _escape_cdata(text, encoding=None, replace=string.replace):
- # escape character data
- try:
- if encoding:
- try:
- text = _encode(text, encoding)
- except UnicodeError:
- return _encode_entity(text)
- text = replace(text, "&", "&")
- text = replace(text, "<", "<")
- text = replace(text, ">", ">")
- return text
- except (TypeError, AttributeError):
- _raise_serialization_error(text)
-
-def _escape_attrib(text, encoding=None, replace=string.replace):
- # escape attribute value
- try:
- if encoding:
- try:
- text = _encode(text, encoding)
- except UnicodeError:
- return _encode_entity(text)
- text = replace(text, "&", "&")
- text = replace(text, "'", "'") # FIXME: overkill
- text = replace(text, "\"", """)
- text = replace(text, "<", "<")
- text = replace(text, ">", ">")
- return text
- except (TypeError, AttributeError):
- _raise_serialization_error(text)
-
-def fixtag(tag, namespaces):
- # given a decorated tag (of the form {uri}tag), return prefixed
- # tag and namespace declaration, if any
- if isinstance(tag, QName):
- tag = tag.text
- namespace_uri, tag = string.split(tag[1:], "}", 1)
- prefix = namespaces.get(namespace_uri)
- if prefix is None:
- prefix = _namespace_map.get(namespace_uri)
- if prefix is None:
- prefix = "ns%d" % len(namespaces)
- namespaces[namespace_uri] = prefix
- if prefix == "xml":
- xmlns = None
- else:
- xmlns = ("xmlns:%s" % prefix, namespace_uri)
- else:
- xmlns = None
- return "%s:%s" % (prefix, tag), xmlns
-
-##
-# Parses an XML document into an element tree.
-#
-# @param source A filename or file object containing XML data.
-# @param parser An optional parser instance. If not given, the
-# standard {@link XMLTreeBuilder} parser is used.
-# @return An ElementTree instance
-
-def parse(source, parser=None):
- tree = ElementTree()
- tree.parse(source, parser)
- return tree
-
-##
-# Parses an XML document into an element tree incrementally, and reports
-# what's going on to the user.
-#
-# @param source A filename or file object containing XML data.
-# @param events A list of events to report back. If omitted, only "end"
-# events are reported.
-# @return A (event, elem) iterator.
-
-class iterparse:
-
- def __init__(self, source, events=None):
- if not hasattr(source, "read"):
- source = open(source, "rb")
- self._file = source
- self._events = []
- self._index = 0
- self.root = self._root = None
- self._parser = XMLTreeBuilder()
- # wire up the parser for event reporting
- parser = self._parser._parser
- append = self._events.append
- if events is None:
- events = ["end"]
- for event in events:
- if event == "start":
- try:
- parser.ordered_attributes = 1
- parser.specified_attributes = 1
- def handler(tag, attrib_in, event=event, append=append,
- start=self._parser._start_list):
- append((event, start(tag, attrib_in)))
- parser.StartElementHandler = handler
- except AttributeError:
- def handler(tag, attrib_in, event=event, append=append,
- start=self._parser._start):
- append((event, start(tag, attrib_in)))
- parser.StartElementHandler = handler
- elif event == "end":
- def handler(tag, event=event, append=append,
- end=self._parser._end):
- append((event, end(tag)))
- parser.EndElementHandler = handler
- elif event == "start-ns":
- def handler(prefix, uri, event=event, append=append):
- try:
- uri = _encode(uri, "ascii")
- except UnicodeError:
- pass
- append((event, (prefix or "", uri)))
- parser.StartNamespaceDeclHandler = handler
- elif event == "end-ns":
- def handler(prefix, event=event, append=append):
- append((event, None))
- parser.EndNamespaceDeclHandler = handler
-
- def next(self):
- while 1:
- try:
- item = self._events[self._index]
- except IndexError:
- if self._parser is None:
- self.root = self._root
- try:
- raise StopIteration
- except NameError:
- raise IndexError
- # load event buffer
- del self._events[:]
- self._index = 0
- data = self._file.read(16384)
- if data:
- self._parser.feed(data)
- else:
- self._root = self._parser.close()
- self._parser = None
- else:
- self._index = self._index + 1
- return item
-
- try:
- iter
- def __iter__(self):
- return self
- except NameError:
- def __getitem__(self, index):
- return self.next()
-
-##
-# Parses an XML document from a string constant. This function can
-# be used to embed "XML literals" in Python code.
-#
-# @param source A string containing XML data.
-# @return An Element instance.
-# @defreturn Element
-
-def XML(text):
- parser = XMLTreeBuilder()
- parser.feed(text)
- return parser.close()
-
-##
-# Parses an XML document from a string constant, and also returns
-# a dictionary which maps from element id:s to elements.
-#
-# @param source A string containing XML data.
-# @return A tuple containing an Element instance and a dictionary.
-# @defreturn (Element, dictionary)
-
-def XMLID(text):
- parser = XMLTreeBuilder()
- parser.feed(text)
- tree = parser.close()
- ids = {}
- for elem in tree.getiterator():
- id = elem.get("id")
- if id:
- ids[id] = elem
- return tree, ids
-
-##
-# Parses an XML document from a string constant. Same as {@link #XML}.
-#
-# @def fromstring(text)
-# @param source A string containing XML data.
-# @return An Element instance.
-# @defreturn Element
-
-fromstring = XML
-
-##
-# Generates a string representation of an XML element, including all
-# subelements.
-#
-# @param element An Element instance.
-# @return An encoded string containing the XML data.
-# @defreturn string
-
-def tostring(element, encoding=None):
- class dummy:
- pass
- data = []
- file = dummy()
- file.write = data.append
- ElementTree(element).write(file, encoding)
- return string.join(data, "")
-
-##
-# Generic element structure builder. This builder converts a sequence
-# of {@link #TreeBuilder.start}, {@link #TreeBuilder.data}, and {@link
-# #TreeBuilder.end} method calls to a well-formed element structure.
-# <p>
-# You can use this class to build an element structure using a custom XML
-# parser, or a parser for some other XML-like format.
-#
-# @param element_factory Optional element factory. This factory
-# is called to create new Element instances, as necessary.
-
-class TreeBuilder:
-
- def __init__(self, element_factory=None):
- self._data = [] # data collector
- self._elem = [] # element stack
- self._last = None # last element
- self._tail = None # true if we're after an end tag
- if element_factory is None:
- element_factory = _ElementInterface
- self._factory = element_factory
-
- ##
- # Flushes the parser buffers, and returns the toplevel documen
- # element.
- #
- # @return An Element instance.
- # @defreturn Element
-
- def close(self):
- assert len(self._elem) == 0, "missing end tags"
- assert self._last != None, "missing toplevel element"
- return self._last
-
- def _flush(self):
- if self._data:
- if self._last is not None:
- text = string.join(self._data, "")
- if self._tail:
- assert self._last.tail is None, "internal error (tail)"
- self._last.tail = text
- else:
- assert self._last.text is None, "internal error (text)"
- self._last.text = text
- self._data = []
-
- ##
- # Adds text to the current element.
- #
- # @param data A string. This should be either an 8-bit string
- # containing ASCII text, or a Unicode string.
-
- def data(self, data):
- self._data.append(data)
-
- ##
- # Opens a new element.
- #
- # @param tag The element name.
- # @param attrib A dictionary containing element attributes.
- # @return The opened element.
- # @defreturn Element
-
- def start(self, tag, attrs):
- self._flush()
- self._last = elem = self._factory(tag, attrs)
- if self._elem:
- self._elem[-1].append(elem)
- self._elem.append(elem)
- self._tail = 0
- return elem
-
- ##
- # Closes the current element.
- #
- # @param tag The element name.
- # @return The closed element.
- # @defreturn Element
-
- def end(self, tag):
- self._flush()
- self._last = self._elem.pop()
- assert self._last.tag == tag,\
- "end tag mismatch (expected %s, got %s)" % (
- self._last.tag, tag)
- self._tail = 1
- return self._last
-
-##
-# Element structure builder for XML source data, based on the
-# <b>expat</b> parser.
-#
-# @keyparam target Target object. If omitted, the builder uses an
-# instance of the standard {@link #TreeBuilder} class.
-# @keyparam html Predefine HTML entities. This flag is not supported
-# by the current implementation.
-# @see #ElementTree
-# @see #TreeBuilder
-
-class XMLTreeBuilder:
-
- def __init__(self, html=0, target=None):
- try:
- from xml.parsers import expat
- except ImportError:
- raise ImportError(
- "No module named expat; use SimpleXMLTreeBuilder instead"
- )
- self._parser = parser = expat.ParserCreate(None, "}")
- if target is None:
- target = TreeBuilder()
- self._target = target
- self._names = {} # name memo cache
- # callbacks
- parser.DefaultHandlerExpand = self._default
- parser.StartElementHandler = self._start
- parser.EndElementHandler = self._end
- parser.CharacterDataHandler = self._data
- # let expat do the buffering, if supported
- try:
- self._parser.buffer_text = 1
- except AttributeError:
- pass
- # use new-style attribute handling, if supported
- try:
- self._parser.ordered_attributes = 1
- self._parser.specified_attributes = 1
- parser.StartElementHandler = self._start_list
- except AttributeError:
- pass
- encoding = None
- if not parser.returns_unicode:
- encoding = "utf-8"
- # target.xml(encoding, None)
- self._doctype = None
- self.entity = {}
-
- def _fixtext(self, text):
- # convert text string to ascii, if possible
- try:
- return _encode(text, "ascii")
- except UnicodeError:
- return text
-
- def _fixname(self, key):
- # expand qname, and convert name string to ascii, if possible
- try:
- name = self._names[key]
- except KeyError:
- name = key
- if "}" in name:
- name = "{" + name
- self._names[key] = name = self._fixtext(name)
- return name
-
- def _start(self, tag, attrib_in):
- fixname = self._fixname
- tag = fixname(tag)
- attrib = {}
- for key, value in attrib_in.items():
- attrib[fixname(key)] = self._fixtext(value)
- return self._target.start(tag, attrib)
-
- def _start_list(self, tag, attrib_in):
- fixname = self._fixname
- tag = fixname(tag)
- attrib = {}
- if attrib_in:
- for i in range(0, len(attrib_in), 2):
- attrib[fixname(attrib_in[i])] = self._fixtext(attrib_in[i+1])
- return self._target.start(tag, attrib)
-
- def _data(self, text):
- return self._target.data(self._fixtext(text))
-
- def _end(self, tag):
- return self._target.end(self._fixname(tag))
-
- def _default(self, text):
- prefix = text[:1]
- if prefix == "&":
- # deal with undefined entities
- try:
- self._target.data(self.entity[text[1:-1]])
- except KeyError:
- from xml.parsers import expat
- raise expat.error(
- "undefined entity %s: line %d, column %d" %
- (text, self._parser.ErrorLineNumber,
- self._parser.ErrorColumnNumber)
- )
- elif prefix == "<" and text[:9] == "<!DOCTYPE":
- self._doctype = [] # inside a doctype declaration
- elif self._doctype is not None:
- # parse doctype contents
- if prefix == ">":
- self._doctype = None
- return
- text = string.strip(text)
- if not text:
- return
- self._doctype.append(text)
- n = len(self._doctype)
- if n > 2:
- type = self._doctype[1]
- if type == "PUBLIC" and n == 4:
- name, type, pubid, system = self._doctype
- elif type == "SYSTEM" and n == 3:
- name, type, system = self._doctype
- pubid = None
- else:
- return
- if pubid:
- pubid = pubid[1:-1]
- self.doctype(name, pubid, system[1:-1])
- self._doctype = None
-
- ##
- # Handles a doctype declaration.
- #
- # @param name Doctype name.
- # @param pubid Public identifier.
- # @param system System identifier.
-
- def doctype(self, name, pubid, system):
- pass
-
- ##
- # Feeds data to the parser.
- #
- # @param data Encoded data.
-
- def feed(self, data):
- self._parser.Parse(data, 0)
-
- ##
- # Finishes feeding data to the parser.
- #
- # @return An element structure.
- # @defreturn Element
-
- def close(self):
- self._parser.Parse("", 1) # end of data
- tree = self._target.close()
- del self._target, self._parser # get rid of circular references
- return tree
diff --git a/lib/advene/util/audio.py b/lib/advene/util/audio.py
index e722d01..3f1980b 100644
--- a/lib/advene/util/audio.py
+++ b/lib/advene/util/audio.py
@@ -36,7 +36,7 @@ if config.data.os == 'win32':
#even if gstpluginpath is defined, gst still may not be in path
gstpath = unicode(os.getenv('PATH', ""), fsenc)
h,t = os.path.split(ppath)
- binpath,t = os.path.split(h)
+ binpath,t = os.path.split(h)
os.environ['PATH'] = os.pathsep.join( (os.path.join( binpath, 'bin'), gstpath) ).encode(fsenc)
try:
diff --git a/lib/advene/util/handyxml.py b/lib/advene/util/handyxml.py
index 597566f..0e557ba 100644
--- a/lib/advene/util/handyxml.py
+++ b/lib/advene/util/handyxml.py
@@ -1,21 +1,3 @@
-#
-# Advene: Annotate Digital Videos, Exchange on the NEt
-# Copyright (C) 2008 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
-#
-# Advene is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# Advene is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Advene; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#
""" HandyXml
Make simple XML use convenient.
Ned Batchelder, http://nedbatchelder.com
diff --git a/lib/advene/util/helper.py b/lib/advene/util/helper.py
index a450982..4c4d185 100755
--- a/lib/advene/util/helper.py
+++ b/lib/advene/util/helper.py
@@ -48,7 +48,6 @@ from advene.model.schema import Schema, AnnotationType, RelationType
from advene.model.resources import Resources, ResourceData
from advene.model.view import View
from advene.model.query import Query
-from advene.model.util.defaultdict import DefaultDict
import advene.model.zippackage
from advene.model.tal.context import AdveneContext
@@ -57,7 +56,7 @@ from advene.model.exception import AdveneException
# Initialize ElementTree namespace map with our own prefixes. This
# helps generating readable XML through ElementTree (the appropriate
# namespace prefixes will be used)
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
ET._namespace_map.update({
config.data.namespace: 'advene',
'http://www.w3.org/2000/svg': 'svg',
@@ -114,7 +113,7 @@ class TypedUnicode(unicode):
"""Unicode string with a mimetype attribute.
"""
def __new__(cls, value=""):
- s=unicode.__new__(cls, value)
+ s=unicode.__new__(cls, value)
s.contenttype='text/plain'
return s
@@ -122,7 +121,7 @@ class TypedString(str):
"""String with a mimetype attribute.
"""
def __new__(cls, value=""):
- s=str.__new__(cls, value)
+ s=str.__new__(cls, value)
s.contenttype='text/plain'
return s
@@ -248,7 +247,7 @@ def unaccent(t):
def format_time_reference(val = 0):
"""Formats a value (in milliseconds) into a time string.
-
+
Use the most complete format (HH:MM:SS.sss), for reference into
saved files.
"""
@@ -259,7 +258,7 @@ def format_time_reference(val = 0):
(s, ms) = divmod(long(val), 1000)
# Format: HH:MM:SS.mmm
return "%s.%03d" % (time.strftime("%H:%M:%S", time.gmtime(s)), ms)
-
+
def format_time (val = 0):
"""Formats a value (in milliseconds) into a time string, respecting user preferences.
@@ -293,7 +292,7 @@ class InvalidTimestamp(Exception):
pass
small_time_regexp=re.compile('(?P<m>\d+):(?P<s>\d+)(?P<sep>[.,f]?)(?P<ms>\d+)?$')
-time_regexp=re.compile('(?P<h>\d+):(?P<m>\d+):(?P<s>\d+)(?P<sep>[.,f]?)(?P<ms>\d+)?$')
+time_regexp=re.compile('(?P<h>\d+):(?P<m>\d+):(?P<s>\d+)(?P<sep>[.,:f]?)(?P<ms>\d+)?$')
float_regexp = re.compile('(?P<s>\d*)\.(?P<ms>\d*)')
def parse_time(s):
"""Convert a time string as long.
@@ -307,7 +306,7 @@ def parse_time(s):
- float numbers are considered as seconds
Regexp: \d*\.\d*
Example: 2.134 or .134 or 2.
-
+
- formatted timestamps with colons in them will be interpreted as follows.
m:s (1 colon)
m:s.ms (1 colon)
@@ -315,7 +314,7 @@ def parse_time(s):
h:m:s (2 colons)
h:m:s.ms (2 colons)
h:m:sfNN
-
+
Legend:
h: hours
m: minutes
@@ -323,7 +322,6 @@ def parse_time(s):
ms: milliseconds
NN: frame number
"""
- f = config.data.preferences['timestamp-format']
try:
val=long(s)
except ValueError:
@@ -627,7 +625,9 @@ def get_id(source, id_):
root_elements = ('here', 'nothing', 'default', 'options', 'repeat', 'request',
# Root elements available in STBVs
'package', 'packages', 'annotation', 'relation',
- 'activeAnnotations', 'player', 'event', 'view',
+ 'player', 'event', 'view',
+ # For UserEvent:
+ 'identifier',
# Root elements available in queries
'element',
)
@@ -768,23 +768,6 @@ def find_in_path(name):
return fullname
return None
-def overlapping_annotations(t):
- """Return a set of overlapping annotations (couples)
- """
- res=DefaultDict(default=[])
- l=t.annotations[:]
- l.sort(key=lambda a: a.fragment.begin)
- while l:
- a=l.pop()
- begin=a.fragment.begin
- end=a.fragment.end
- for b in l:
- be=b.fragment.begin
- en=b.fragment.end
- if not (end <= be or en <= begin):
- res.append( (a, b) )
- return res
-
def common_fieldnames(elements):
"""Extract common fieldnames from simple structured elements.
"""
@@ -794,3 +777,38 @@ def common_fieldnames(elements):
if e.content.mimetype == 'application/x-advene-structured':
res.update( (regexp.findall(l) or [ '_error' ])[0] for l in e.content.data.split('\n') )
return res
+
+parsed_representation = re.compile(r'^here/content/parsed/([\w\d_\.]+)$')
+empty_representation = re.compile(r'^\s*$')
+
+def title2content(new_title, original_content, representation):
+ """Converts a title (short representation) to the appropriate content.
+
+ It takes the 'representation' parameter into account. If it is
+ present, and in a common form (typically extraction of a field),
+ then we can convert the short representation back to the
+ appropriate content.
+
+ @return the new content or None if the content could not be updated.
+ """
+ r = None
+ if representation is None or empty_representation.match(representation):
+ r = unicode(new_title)
+ else:
+ m = parsed_representation.match(representation)
+ if m:
+ # We have a simple representation (here/content/parsed/name)
+ # so we can update the name field.
+ new_title = unicode(new_title).replace('\n', '\\n')
+ name=m.group(1)
+ reg = re.compile('^' + name + '=(.*?)$', re.MULTILINE)
+ if reg.search(original_content):
+ r = reg.sub(name + '=' + new_title, original_content)
+ else:
+ # The key is not present, add it
+ if original_content:
+ r = original_content + "\n%s=%s" % (name, new_title)
+ else:
+ r = "%s=%s" % (name, new_title)
+ # else: too complex representation. Return None as default value.
+ return r
diff --git a/lib/advene/util/importer.py b/lib/advene/util/importer.py
index 6fb733e..cecce25 100644
--- a/lib/advene/util/importer.py
+++ b/lib/advene/util/importer.py
@@ -73,7 +73,7 @@ from advene.model.fragment import MillisecondFragment
import advene.util.helper as helper
import advene.util.handyxml as handyxml
import xml.dom
-import advene.util.ElementTree as ET
+import xml.etree.ElementTree as ET
IMPORTERS=[]
@@ -326,8 +326,8 @@ class GenericImporter(object):
def init_package(self,
filename=None,
- annotationtypeid='imported-type',
- schemaid='imported-schema'):
+ annotationtypeid=None,
+ schemaid=None):
"""Create (if necessary) a package with the given schema and annotation type.
Returns a tuple (package, annotationtype)
"""
@@ -342,11 +342,17 @@ class GenericImporter(object):
else:
p=self.package
+
at=None
- if schemaid:
- s=self.create_schema(id_=schemaid, title=schemaid)
- if annotationtypeid:
- at=self.create_annotation_type(s, id_=annotationtypeid)
+ if annotationtypeid:
+ at = self.ensure_new_type(prefix=annotationtypeid, schemaid=schemaid)
+ elif schemaid is not None:
+ s = self.package.get_element_by_id(schemaid)
+ if s is None:
+ s = self.create_schema(id_=schemaid, title=schemaid)
+ if not isinstance(s, Schema):
+ raise Exception("Error during conversion: %s is not a schema" % schemaid)
+
return p, at
def convert(self, source):
@@ -365,7 +371,7 @@ class GenericImporter(object):
- complete: boolean. Used to mark the completeness of the annotation.
"""
if self.package is None:
- self.package, self.defaulttype=self.init_package()
+ self.package, self.defaulttype=self.init_package(annotationtypeid='imported', schemaid='imported-schema')
for d in source:
try:
begin=helper.parse_time(d['begin'])
@@ -543,7 +549,7 @@ class ExternalAppImporter(GenericImporter):
in the end.
"""
pass
-
+
def get_process_args(self, filename):
"""Get the process args.
@@ -592,7 +598,7 @@ class TextImporter(GenericImporter):
- float numbers are considered as seconds
Regexp: \d*\.\d*
Example: 2.134 or .134 or 2.
-
+
- formatted timestamps with colons in them will be interpreted as follows.
m:s (1 colon)
m:s.ms (1 colon)
@@ -600,7 +606,7 @@ class TextImporter(GenericImporter):
h:m:s (2 colons)
h:m:s.ms (2 colons)
h:m:sfNN
-
+
Legend:
h: hours
m: minutes
@@ -1094,18 +1100,23 @@ class SubtitleImporter(GenericImporter):
help=_("Specify the encoding of the input file (latin1, utf8...)"))
def can_handle(fname):
- if fname.endswith('.srt'):
+ if fname.lower().endswith('.srt') or fname.lower().endswith('.webvtt'):
return 100
else:
return 0
can_handle=staticmethod(can_handle)
- def srt_iterator(self, f):
- base=r'\d+:\d+:\d+[,\.]\d+'
+ def srt_iterator(self, f, filesize):
+ if filesize == 0:
+ # Dummy value, but we will be sure not to divide by 0
+ filesize = 1
+ base=r'\d+:\d+:\d+[,\.:]\d+'
pattern=re.compile('(' + base + ').+(' + base + ')')
tc=None
content=[]
for line in f:
+ if not self.progress(1.0 * f.tell() / filesize):
+ break
line=line.rstrip()
match=pattern.search(line)
if match is not None:
@@ -1117,13 +1128,13 @@ class SubtitleImporter(GenericImporter):
if content:
print "Strange error: no timestamp was found for content ", "".join(content)
content = []
- continue
- d={'begin': tc[0],
- 'end': tc[1],
- 'content': u"\n".join(content)}
- tc=None
- content=[]
- yield d
+ else:
+ d={'begin': tc[0],
+ 'end': tc[1],
+ 'content': u"\n".join(content)}
+ tc=None
+ content=[]
+ yield d
else:
if tc is not None:
if self.encoding:
@@ -1138,13 +1149,19 @@ class SubtitleImporter(GenericImporter):
data=unicode(line, 'latin1')
content.append(data)
# else We could check line =~ /^\d+$/
+ # End of for-loop: if there is a last item, convert it.
+ if tc is not None:
+ d={'begin': tc[0],
+ 'end': tc[1],
+ 'content': u"\n".join(content)}
+ yield d
def process_file(self, filename):
f=open(filename, 'r')
- self.init_package(filename=filename)
- self.ensure_new_type('subtitle', _("Subtitles from %s") % os.path.basename(filename))
+ p, at = self.init_package(filename=filename, annotationtypeid='subtitle')
+ at.title = _("Subtitles from %s") % os.path.basename(filename)
# FIXME: implement subtitle type detection
- self.convert(self.srt_iterator(f))
+ self.convert(self.srt_iterator(f, os.path.getsize(filename)))
f.close()
self.progress(1.0)
return self.package
diff --git a/lib/advene/util/odict.py b/lib/advene/util/odict.py
index 3bf708a..e1742f8 100644
--- a/lib/advene/util/odict.py
+++ b/lib/advene/util/odict.py
@@ -130,7 +130,7 @@ class odict(dict):
>>> d.update({'foo': 'bar'})
>>> d
odict.odict([('a', 'b'), ('c', 'd'), ('foo', 'bar')])
-
+
Keep in mind that when updating from dict-literals the order is not
preserved as these dicts are unsorted!
@@ -179,7 +179,7 @@ class odict(dict):
>>> d.reverse()
>>> d
odict.odict([('spam', []), ('foo', 'bar'), ('c', 'd'), ('a', 'b')])
-
+
And sort it like a list:
>>> d.sort(key=lambda x: x[0].lower())
diff --git a/lib/advene/util/slicebuffer.py b/lib/advene/util/slicebuffer.py
index 3d2a8f1..e7ad33d 100755
--- a/lib/advene/util/slicebuffer.py
+++ b/lib/advene/util/slicebuffer.py
@@ -6,7 +6,7 @@ Copyright 2011 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
+the Free Software Foundation, either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@@ -38,7 +38,7 @@ class SliceBuffer(gst.Element):
'slicewidth': ( gobject.TYPE_INT, 'slicewidth', 'Width of slices', 0, 65536, 0, gobject.PARAM_WRITABLE ),
'offset': (gobject.TYPE_INT, 'offset', 'Offset of samples in the source video. If < 0, use the original offset.', -65536, 65536, 0, gobject.PARAM_WRITABLE),
}
-
+
_sinkpadtemplate = gst.PadTemplate ("sink",
gst.PAD_SINK,
gst.PAD_ALWAYS,
@@ -47,7 +47,7 @@ class SliceBuffer(gst.Element):
gst.PAD_SRC,
gst.PAD_ALWAYS,
gst.caps_from_string ("video/x-raw-rgb,bpp=32,depth=32,blue_mask=-16777216,green_mask=16711680, red_mask=65280, alpha_mask=255,width=[ 1, 2147483647 ],height=[ 1, 2147483647 ],framerate=[ 0/1, 2147483647/1 ]"))
-
+
def __init__(self):
gst.Element.__init__(self)
@@ -108,7 +108,7 @@ class SliceBuffer(gst.Element):
def eventfunc(self, pad, event):
return self.srcpad.push_event (event)
-
+
def srcqueryfunc (self, pad, query):
return self.sinkpad.query (query)
@@ -139,7 +139,7 @@ if __name__ == '__main__':
if files:
player=gst.element_factory_make('playbin')
player.props.uri = 'file://' + files[0]
-
+
bin=gst.Bin()
elements = [
gst.element_factory_make('ffmpegcolorspace'),
@@ -166,7 +166,7 @@ if __name__ == '__main__':
else:
player = gst.parse_launch('videotestsrc ! clockoverlay ! ffmpegcolorspace ! videoscale ! slicebuffer %s ! ffmpegcolorspace ! xvimagesink' % " ".join(params))
bin = player
-
+
pipe=player
overlay=bin.get_by_name('overlay')
@@ -176,7 +176,7 @@ if __name__ == '__main__':
return True
if msg.structure.has_field('gerror'):
print "MSG", msg.structure['debug']
-
+
def on_eos (bus, msg):
mainloop.quit()
bus = pipe.get_bus()
diff --git a/lib/advene/util/snapshotter.py b/lib/advene/util/snapshotter.py
index 80c0b30..104f89c 100755
--- a/lib/advene/util/snapshotter.py
+++ b/lib/advene/util/snapshotter.py
@@ -39,6 +39,9 @@ gtk.gdk.threads_init ()
from threading import Event, Thread
import Queue
+from Queue import PriorityQueue
+import heapq
+
try:
from evaluator import Evaluator
except ImportError:
@@ -86,6 +89,26 @@ class NotifySink(gst.BaseSink):
gst.element_register(NotifySink, 'notifysink')
gobject.type_register(NotifySink)
+class UniquePriorityQueue(Queue.PriorityQueue):
+ """PriorityQueue with unique elements.
+
+ Adapted from http://stackoverflow.com/questions/5997189/how-can-i-make-a-unique-value-priority-queue-in-python
+ Thanks to Eli Bendersky.
+ """
+ def _init(self, maxsize):
+ PriorityQueue._init(self, maxsize)
+ self.values = set()
+
+ def _put(self, item, heappush=heapq.heappush):
+ if item[1] not in self.values:
+ self.values.add(item[1])
+ PriorityQueue._put(self, item, heappush)
+
+ def _get(self, heappop=heapq.heappop):
+ item = PriorityQueue._get(self, heappop)
+ self.values.remove(item[1])
+ return item
+
class Snapshotter(object):
"""Snapshotter class.
@@ -105,12 +128,7 @@ class Snapshotter(object):
def __init__(self, notify=None, width=None):
self.notify=notify
# Snapshot queue handling
- try:
- self.timestamp_queue=Queue.PriorityQueue()
- except AttributeError:
- # python <= 2.5 does not implement PriorityQueue. Use a
- # plain Queue.
- self.timestamp_queue=Queue.Queue()
+ self.timestamp_queue=UniquePriorityQueue()
self.snapshot_ready=Event()
self.thread_running=False
@@ -129,7 +147,7 @@ class Snapshotter(object):
if width is not None:
filter=gst.element_factory_make("capsfilter")
filter.set_property("caps", gst.Caps("video/x-raw-rgb,width=%d,pixel-aspect-ratio=(fraction)1/1" % width))
- scale=gst.element_factory_make('videoscale')
+ scale=gst.element_factory_make('videoscale')
l=(csp, scale, filter, pngenc, queue, sink)
else:
l=(csp, pngenc, queue, sink)
@@ -172,7 +190,6 @@ class Snapshotter(object):
f.write(buffer.data)
f.close()
print "Snapshot written to", fname
- os.system('qiv %s &' % fname)
return True
def snapshot(self, t):
@@ -198,7 +215,7 @@ class Snapshotter(object):
def process_queue(self):
"""Process the timestamp queue.
-
+
This method is meant to run continuously in its own thread.
"""
self.thread_running=True
diff --git a/lib/advene/util/svgoverlay.py b/lib/advene/util/svgoverlay.py
index 32e0a1b..fc30e6a 100755
--- a/lib/advene/util/svgoverlay.py
+++ b/lib/advene/util/svgoverlay.py
@@ -6,7 +6,7 @@ Copyright 2009 Olivier Aubert <olivier.aubert at liris.cnrs.fr>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
+the Free Software Foundation, either version 2.1 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@@ -45,7 +45,7 @@ class SVGOverlay(gst.Element):
'data': ( gobject.TYPE_STRING, 'data', 'SVG data to overlay', None, gobject.PARAM_WRITABLE ),
'location': ( gobject.TYPE_STRING, 'location', 'SVG file to overlay', None, gobject.PARAM_WRITABLE ),
}
-
+
_sinkpadtemplate = gst.PadTemplate ("sink",
gst.PAD_SINK,
gst.PAD_ALWAYS,
@@ -54,7 +54,7 @@ class SVGOverlay(gst.Element):
gst.PAD_SRC,
gst.PAD_ALWAYS,
gst.caps_from_string ("video/x-raw-rgb,bpp=32,depth=32,blue_mask=-16777216,green_mask=16711680, red_mask=65280, alpha_mask=255,width=[ 1, 2147483647 ],height=[ 1, 2147483647 ],framerate=[ 0/1, 2147483647/1 ]"))
-
+
def __init__(self):
gst.Element.__init__(self)
@@ -87,7 +87,7 @@ class SVGOverlay(gst.Element):
def eventfunc(self, pad, event):
return self.srcpad.push_event (event)
-
+
def srcqueryfunc (self, pad, query):
return self.sinkpad.query (query)
@@ -148,7 +148,7 @@ if __name__ == '__main__':
if sys.argv[1:]:
player=gst.element_factory_make('playbin')
player.props.uri = 'file://' + sys.argv[1]
-
+
bin=gst.Bin()
elements = [
gst.element_factory_make('textoverlay'),
@@ -162,12 +162,12 @@ if __name__ == '__main__':
bin.add(*elements)
gst.element_link_many(*elements)
bin.add_pad(gst.GhostPad('sink', elements[0].get_pad('video_sink') or elements[0].get_pad('sink')))
-
+
player.props.video_sink=bin
else:
- player = gst.parse_launch('videotestsrc ! ffmpegcolorspace ! videoscale ! svgoverlay name=overlay ! ffmpegcolorspace ! autovideosink')
+ player = gst.parse_launch('videotestsrc ! ffmpegcolorspace ! videoscale ! pysvgoverlay name=overlay ! ffmpegcolorspace ! autovideosink')
bin = player
-
+
pipe=player
overlay=bin.get_by_name('overlay')
@@ -195,14 +195,14 @@ if __name__ == '__main__':
</svg:svg>''' % (t[5], time.strftime("%H:%M:%S", t))
## overlay.props.data='''<?xml version="1.0" encoding="UTF-8" standalone="no"?>
##<svg height="800" version="1.0" width="600" x="0" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" y="0">
-## <rect x='50' y='290' width='230' height='60' fill='black' stroke='black' />
+## <rect x='50' y='290' width='230' height='60' fill='black' stroke='black' />
## <text x='55' y='335' fill="white" font-size="48" stroke="white" font-family="sans-serif">
##%s
## </text>
##</svg>
##''' % time.strftime("%H:%M:%S", time.localtime())
return True
-
+
gobject.timeout_add(1000, display)
try:
mainloop.run()
diff --git a/lib/advene/util/website_export.py b/lib/advene/util/website_export.py
index afbdb7e..5e1da35 100644
--- a/lib/advene/util/website_export.py
+++ b/lib/advene/util/website_export.py
@@ -67,9 +67,6 @@ class WebsiteExporter(object):
self.log(_("%s does not exist") % self.destination)
return
- if not os.path.isdir(self.imgdir):
- helper.recursive_mkdir(self.imgdir)
-
if views is None:
views=[ v
for v in self.controller.package.views
@@ -103,7 +100,7 @@ class WebsiteExporter(object):
p=cl(self.destination, self.video_url)
break
-
+
return p
def progress_callback(self, value, msg):
@@ -201,7 +198,7 @@ class WebsiteExporter(object):
used_overlays.add( (ident, tales) )
continue
- l=url.replace(self.controller.server.urlbase, '')
+ l=url.replace(self.controller.get_urlbase(), '')
if l.startswith('http:'):
# It is an external url
@@ -266,7 +263,7 @@ class WebsiteExporter(object):
if ext is not None:
output = output + ext
elif len(path) > 1 and path[-2] in ('annotations', 'relations',
- 'views',
+ 'views',
'schemas', 'annotationTypes', 'relationTypes',
'queries'):
# Reference to an Advene element, without
@@ -373,6 +370,8 @@ class WebsiteExporter(object):
# Copy snapshots
for t in used_snapshots:
# FIXME: not robust wrt. multiple packages/videos
+ if not os.path.isdir(self.imgdir):
+ helper.recursive_mkdir(self.imgdir)
f=open(os.path.join(self.imgdir, '%s.png' % t), 'wb')
f.write(str(self.controller.package.imagecache[t]))
f.close()
@@ -385,6 +384,8 @@ class WebsiteExporter(object):
print "Cannot find annotation %s for overlaying"
continue
name=ident+tales.replace('/', '_')
+ if not os.path.isdir(self.imgdir):
+ helper.recursive_mkdir(self.imgdir)
f=open(os.path.join(self.imgdir, 'overlay_%s.png' % name), 'wb')
if tales:
# There is a TALES expression
@@ -477,6 +478,12 @@ class WebsiteExporter(object):
dest=os.path.join(self.destination, dest)
if os.path.isdir(path):
# Copy tree
+ if os.path.exists(dest):
+ # First remove old version
+ if os.path.isdir(dest):
+ shutil.rmtree(dest, True)
+ else:
+ shutil.unlink(dest)
shutil.copytree(path, dest)
else:
# Copy file
@@ -501,7 +508,7 @@ class WebsiteExporter(object):
else:
default_href=''
default=''
-
+
f.write("""<html><head>%(title)s</head>
<body>
<h1>%(title)s views</h1>
@@ -526,7 +533,7 @@ class WebsiteExporter(object):
<frame name="video_player" src="" />
</frameset>
</html>
-""" % {
+""" % {
'title': self.controller.get_title(self.controller.package),
'index': default_href or name,
})
@@ -694,9 +701,9 @@ class HTML5VideoPlayer(VideoPlayer):
@staticmethod
def can_handle(video_url):
"""Static method indicating wether the class can handle the given video url.
- """
+ """
# We always can handle videos.
- return True
+ return True
def player_url(self, begin, end=None):
"""Return the URL to play video at the given time.
diff --git a/locale/de/LC_MESSAGES/advene.mo b/locale/de/LC_MESSAGES/advene.mo
deleted file mode 100644
index 2c39330..0000000
Binary files a/locale/de/LC_MESSAGES/advene.mo and /dev/null differ
diff --git a/locale/eo/LC_MESSAGES/advene.mo b/locale/eo/LC_MESSAGES/advene.mo
deleted file mode 100644
index 7084ec2..0000000
Binary files a/locale/eo/LC_MESSAGES/advene.mo and /dev/null differ
diff --git a/locale/es/LC_MESSAGES/advene.mo b/locale/es/LC_MESSAGES/advene.mo
deleted file mode 100644
index 215f00c..0000000
Binary files a/locale/es/LC_MESSAGES/advene.mo and /dev/null differ
diff --git a/locale/fr/LC_MESSAGES/advene.mo b/locale/fr/LC_MESSAGES/advene.mo
deleted file mode 100644
index 21d2963..0000000
Binary files a/locale/fr/LC_MESSAGES/advene.mo and /dev/null differ
diff --git a/locale/it/LC_MESSAGES/advene.mo b/locale/it/LC_MESSAGES/advene.mo
deleted file mode 100644
index b4f6930..0000000
Binary files a/locale/it/LC_MESSAGES/advene.mo and /dev/null differ
diff --git a/po/POTFILES b/po/POTFILES
index bb966e3..8ea77d3 100644
--- a/po/POTFILES
+++ b/po/POTFILES
@@ -1,5 +1,6 @@
../lib/advene/core/controller.py
../lib/advene/core/webcherry.py
+../lib/advene/player/gstreamer.py
../lib/advene/plugins/featuredetect.py
../lib/advene/plugins/anvil.py
../lib/advene/plugins/ted.py
@@ -7,10 +8,11 @@
../lib/advene/plugins/goodshotdetector.py
../lib/advene/plugins/montagerenderer.py
../lib/advene/plugins/shotdetectapp.py
+../lib/advene/plugins/pocketsphinx.py
../lib/advene/plugins/tts.py
+../lib/advene/plugins/fcp.py
../lib/advene/plugins/mpeg7.py
../lib/advene/plugins/cinelab.py
-../lib/advene/plugins/aiff.py
../lib/advene/plugins/dcp.py
../lib/advene/plugins/brltty.py
../lib/advene/plugins/ttl.py
@@ -29,6 +31,7 @@
../lib/advene/gui/views/viewbook.py
../lib/advene/gui/views/editionhistory.py
../lib/advene/gui/views/browser.py
+../lib/advene/gui/views/checker.py
../lib/advene/gui/views/table.py
../lib/advene/gui/views/relation.py
../lib/advene/gui/views/tree.py
diff --git a/po/advene.pot b/po/advene.pot
index 641256a..90b8c35 100644
--- a/po/advene.pot
+++ b/po/advene.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: LANGUAGE <LL at li.org>\n"
@@ -82,111 +82,116 @@ msgid ""
"The following processes seem to use the %(port)s port: %(processes)s"
msgstr ""
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr ""
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
#, python-format
msgid "Loaded %(uri)s as %(alias)s"
msgstr ""
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
#, python-format
msgid "Cannot load package from file %(uri)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr ""
+
+#: ../lib/advene/core/controller.py:966
#, python-format
msgid "Cannot get audio volume: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr ""
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
msgid "None"
msgstr ""
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
#, python-format
msgid "Found matching video file in moviepath: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
msgid "Analysis of "
msgstr ""
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
msgid "Cannot split the annotation: the given position is outside."
msgstr ""
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
#, python-format
msgid "Cannot find the template package %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
#, python-format
msgid "Cannot read the imported package %(uri)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
msgid "Package URI has changed. Reloading package with new URI."
msgstr ""
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
msgid ""
"Cannot load package: the following annotations do not have Millisecond "
"fragments:"
msgstr ""
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
#, python-format
msgid "Cannot handle master attribute, the package %s is not imported."
msgstr ""
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
#, python-format
msgid "Checking master package %s for not yet imported elements."
msgstr ""
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
msgid "Standard summary"
msgstr ""
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
msgid "Default view"
msgstr ""
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
#, python-format
msgid ""
"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
msgstr ""
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
#, python-format
msgid "Got exception %s when stopping player."
msgstr ""
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
#, python-format
msgid "Raised exception in update_status: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
msgid "Unable to start the player."
msgstr ""
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
#, python-format
msgid "Comment on set of %d annotations"
msgstr ""
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
#, python-format
msgid "Comment on %s"
msgstr ""
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
#, python-format
msgid ""
"<h1>Comment on %(title)s</h1>\n"
@@ -198,23 +203,23 @@ msgid ""
"\"%(imgurl)s\" ></img></a></span>"
msgstr ""
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
#, python-format
msgid "List of %s annotations"
msgstr ""
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
#, python-format
msgid "Cannot export to %(filename)s: %(e)s"
msgstr ""
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
#, python-format
msgid "Error when exporting: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
#, python-format
msgid "Data exported to %s"
msgstr ""
@@ -950,11 +955,15 @@ msgid ""
"fr/advene/\">Advene</a> v. %s.</em></p>"
msgstr ""
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
#, python-format
msgid "Cannot start HTTP server: %s"
msgstr ""
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+
#: ../lib/advene/plugins/featuredetect.py:42
msgid "Feature detection (face...)"
msgstr ""
@@ -996,7 +1005,7 @@ msgstr ""
msgid "Anvil importer"
msgstr ""
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
msgid "TED importer"
msgstr ""
@@ -1062,11 +1071,71 @@ msgid ""
"too many shots are detected, try to increase its value."
msgstr ""
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
#, python-format
msgid "Detected shot #%(num)d at %(pos)s "
msgstr ""
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+msgid "Generating annotations"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr ""
+
#: ../lib/advene/plugins/tts.py:77
msgid "Pronounce a text"
msgstr ""
@@ -1086,12 +1155,12 @@ msgstr ""
msgid "The annotation content"
msgstr ""
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
#: ../lib/advene/gui/plugins/actions.py:234
msgid "Unknown rule"
msgstr ""
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
#: ../lib/advene/gui/plugins/actions.py:235
#, python-format
msgid ""
@@ -1113,6 +1182,26 @@ msgstr ""
msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
msgstr ""
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:75
+msgid "Importing subtitles"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:90
+msgid "Importing clips"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr ""
+
#: ../lib/advene/plugins/mpeg7.py:54
msgid "MPEG7 importer"
msgstr ""
@@ -1138,26 +1227,6 @@ msgstr ""
msgid "Importing annotations"
msgstr ""
-#: ../lib/advene/plugins/aiff.py:35
-msgid "Aiff importer"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:77
-msgid "Importing subtitles"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:92
-msgid "Importing clips"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr ""
-
#: ../lib/advene/plugins/dcp.py:65
msgid "DCP importer"
msgstr ""
@@ -1167,11 +1236,11 @@ msgstr ""
msgid "Converting #%(num)d / %(count)d"
msgstr ""
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
msgid "Input from the braille table."
msgstr ""
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
msgid "BrlTTY not installed. There will be no braille support."
msgstr ""
@@ -1187,16 +1256,16 @@ msgstr ""
msgid "Message to display."
msgstr ""
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
#, python-format
msgid "BrlTTY connection error: %s"
msgstr ""
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
msgid "Braille display: "
msgstr ""
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
msgid "No message"
msgstr ""
@@ -1239,17 +1308,17 @@ msgid "Parsing section information"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
msgid "Creating package"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
msgid "Creating annotation types"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
msgid "Parsing header information"
msgstr ""
@@ -1276,10 +1345,6 @@ msgstr ""
msgid "Channel selection."
msgstr ""
-#: ../lib/advene/plugins/soundenveloppe.py:90
-msgid "Generating annotations"
-msgstr ""
-
#: ../lib/advene/plugins/soundenveloppe.py:115
#, python-format
msgid "At %s"
@@ -1317,7 +1382,7 @@ msgstr ""
msgid "Starting silence detection"
msgstr ""
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
msgid "Aeidon (subtitles) importer"
msgstr ""
@@ -1357,230 +1422,230 @@ msgstr ""
msgid "Converted from %s"
msgstr ""
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
msgid "ExternalApp importer"
msgstr ""
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
#, python-format
msgid ""
"The <b>%s</b> application does not seem to be installed. Please check that "
"it is present and that its path is correctly specified in preferences."
msgstr ""
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
#, python-format
msgid "The file %s does not seem to exist."
msgstr ""
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
#, python-format
msgid "Could not run %(appname)s: %(msg)s"
msgstr ""
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
#, python-format
msgid "Processing %s"
msgstr ""
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
msgid "Cleaning up..."
msgstr ""
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
msgid "Text importer"
msgstr ""
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
msgid "Specify the encoding of the input file (latin1, utf8...)"
msgstr ""
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
msgid "lsdvd importer"
msgstr ""
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
msgid "Processing data"
msgstr ""
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
msgid "DVD Chapter"
msgstr ""
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
msgid "Launching lsdvd..."
msgstr ""
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
msgid "chaplin importer"
msgstr ""
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
msgid "Xi importer"
msgstr ""
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
msgid "ELAN importer"
msgstr ""
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
#, python-format
msgid "Converting tier %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
msgid "Processing time slots"
msgstr ""
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
msgid "Fixing forward references"
msgstr ""
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
msgid "Creating relations"
msgstr ""
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
msgid "Subtitle (SRT) importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
#, python-format
msgid "Subtitles from %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
msgid "PRAAT importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
msgid "CMML importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
msgid "Parsing clip information"
msgstr ""
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
msgid "Creating CMML schema"
msgstr ""
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
msgid "Parsing stream information"
msgstr ""
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
msgid "IRI importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
msgid "Generate one type per view"
msgstr ""
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
#, python-format
msgid "Parsing ensemble %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
#, python-format
msgid "Parsing decoupage %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
msgid "Parsing views"
msgstr ""
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
msgid "Initializing package"
msgstr ""
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
msgid "IRIData importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
msgid "Parsing sound values"
msgstr ""
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
msgid "Creating annotations"
msgstr ""
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
msgid "Package"
msgstr ""
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
msgid "Annotation"
msgstr ""
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
msgid "Relation"
msgstr ""
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
msgid "Schema"
msgstr ""
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
msgid "Annotation Type"
msgstr ""
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
msgid "Relation Type"
msgstr ""
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
msgid "View"
msgstr ""
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
#: ../lib/advene/gui/main.py:278
msgid "Query"
msgstr ""
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
msgid "Resource Folder"
msgstr ""
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
msgid "Resource File"
msgstr ""
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
msgid "---- Elements ----"
msgstr ""
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
msgid "---- Attributes ----"
msgstr ""
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
msgid "---- Methods ----"
msgstr ""
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
#, python-format
msgid "Cannot read %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
#, python-format
msgid "File %s is not an Advene zip package."
msgstr ""
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
#, python-format
msgid ""
"Error:\n"
"%s"
msgstr ""
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
#, python-format
msgid ""
"Package %(title)s:\n"
@@ -1594,81 +1659,81 @@ msgid ""
"%(description)s\n"
msgstr ""
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schema"
msgstr ""
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schemas"
msgstr ""
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotation"
msgstr ""
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotations"
msgstr ""
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation type"
msgstr ""
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation types"
msgstr ""
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relation"
msgstr ""
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relations"
msgstr ""
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation type"
msgstr ""
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation types"
msgstr ""
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "query"
msgstr ""
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "queries"
msgstr ""
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "view"
msgstr ""
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "views"
msgstr ""
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "package"
msgstr ""
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "packages"
msgstr ""
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
#, python-format
msgid "No %s"
msgstr ""
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
#, python-format
msgid "1 %s"
msgstr ""
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
#, python-format
msgid "%(count)d %(plural)s"
msgstr ""
@@ -1683,32 +1748,32 @@ msgstr ""
msgid "%s does not exist"
msgstr ""
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
msgid "Starting export"
msgstr ""
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
#, python-format
msgid "Depth %d"
msgstr ""
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
#, python-format
msgid "Depth %(depth)d: processing %(url)s"
msgstr ""
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
msgid "Finalizing"
msgstr ""
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
#, python-format
msgid ""
"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
"strong></p>"
msgstr ""
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
msgid "Export complete"
msgstr ""
@@ -1770,12 +1835,12 @@ msgid ""
"\n"
msgstr ""
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
#, python-format
msgid "Renumbering annotations of type %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
msgid ""
"<b>Renumber all annotations according to their order.</b>\n"
"\n"
@@ -1789,26 +1854,26 @@ msgid ""
"The offset parameter allows you to renumber from a given annotation."
msgstr ""
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
msgid "Offset"
msgstr ""
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
#, python-format
msgid "Renumbering %d annotations"
msgstr ""
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
#, python-format
msgid "Annotation #%d"
msgstr ""
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
#, python-format
msgid "Extracting %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
#, python-format
msgid ""
"Exporting annotation %(title)s\n"
@@ -1816,262 +1881,266 @@ msgid ""
"to %%(filename)s"
msgstr ""
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
msgid "Edit"
msgstr ""
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
msgid "Browse"
msgstr ""
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
msgid "Open in web browser"
msgstr ""
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
msgid "Delete"
msgstr ""
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
msgid "Search/replace content"
msgstr ""
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
msgid "Activate"
msgstr ""
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
msgid "Desactivate"
msgstr ""
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
#: ../lib/advene/gui/plugins/tracetimeline.py:980
#: ../lib/advene/gui/plugins/tracetimeline.py:1001
#: ../lib/advene/gui/edit/transcribe.py:502
msgid "Go to..."
msgstr ""
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
msgid "Loop"
msgstr ""
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
msgid "Duplicate"
msgstr ""
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight"
msgstr ""
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+msgid "Save snapshot..."
+msgstr ""
+
+#: ../lib/advene/gui/popup.py:519
msgid "Extract video fragment"
msgstr ""
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
msgid "Incoming"
msgstr ""
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
msgid "Outgoing"
msgstr ""
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
msgid "Related annotations"
msgstr ""
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
msgid "Incoming relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
msgid "Outgoing relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
#, python-format
msgid "Begin: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
#, python-format
msgid "End: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
#, python-format
msgid "Duration: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
msgid "Members:"
msgstr ""
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
msgid "Edit package properties..."
msgstr ""
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
#, python-format
msgid "%d annotations(s) - statistics"
msgstr ""
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
msgid "Create a new static view..."
msgstr ""
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
msgid "Create a new dynamic view..."
msgstr ""
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
msgid "Create a new annotation..."
msgstr ""
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
msgid "Create a new schema..."
msgstr ""
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
msgid "Create a new query..."
msgstr ""
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
msgid "Create a new folder..."
msgstr ""
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
msgid "Create a new resource file..."
msgstr ""
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
msgid "Insert a new resource file..."
msgstr ""
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
msgid "Insert a new resource directory..."
msgstr ""
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
msgid "Insert a soundclip..."
msgstr ""
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
msgid "Play sound"
msgstr ""
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
msgid "Create a new annotation type..."
msgstr ""
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
msgid "Create a new relation type..."
msgstr ""
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
msgid "Select a color"
msgstr ""
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
#, python-format
msgid "A caption dynamic view for %s already seems to exist."
msgstr ""
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
#, python-format
msgid "Caption %s annotations"
msgstr ""
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
msgid "Caption the annotation"
msgstr ""
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
msgid "Create a comment view"
msgstr ""
-#: ../lib/advene/gui/popup.py:740
-msgid "Generate a caption dynamic view"
+#: ../lib/advene/gui/popup.py:739
+msgid "Generate a caption dynamic view..."
msgstr ""
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
msgid "Display as transcription"
msgstr ""
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
msgid "Display annotations in table"
msgstr ""
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
msgid "Export to another format..."
msgstr ""
-#: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
+#: ../lib/advene/gui/popup.py:748
+msgid "Delete all annotations"
msgstr ""
-#: ../lib/advene/gui/popup.py:750
-msgid "Renumber annotations"
+#: ../lib/advene/gui/popup.py:749
+msgid "Renumber annotations..."
msgstr ""
-#: ../lib/advene/gui/popup.py:751
-msgid "Adjust annotation bounds"
+#: ../lib/advene/gui/popup.py:750
+msgid "Adjust annotation bounds..."
msgstr ""
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
#, python-format
msgid "A follow dynamic view for %s already seems to exist."
msgstr ""
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
#, python-format
msgid "Follow %s relation-type"
msgstr ""
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
msgid "Follow the relation"
msgstr ""
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
msgid "Delete all relations..."
msgstr ""
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
msgid "Create montage from related annotations"
msgstr ""
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
msgid "Create dynamic view following relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
#, python-format
msgid "Exception in query: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
msgid "Apply query on..."
msgstr ""
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
msgid "the package"
msgstr ""
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
msgid "all annotations of the package"
msgstr ""
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
msgid "the first annotation of the package"
msgstr ""
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
msgid "Activate view"
msgstr ""
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
msgid "Open adhoc view"
msgstr ""
@@ -2234,31 +2303,31 @@ msgid "Cannot remove this widget, it is essential."
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
msgid "...in its own window"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:125
#: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
msgid "...embedded east of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:126
#: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
msgid "...embedded west of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:127
#: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
msgid "...embedded south of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:128
#: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
msgid "...embedded at the right of the window"
msgstr ""
@@ -2333,7 +2402,7 @@ msgid "to create a new static view"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
msgid "as a transcription"
msgstr ""
@@ -2459,8 +2528,8 @@ msgstr ""
msgid "Path"
msgstr ""
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
#: ../lib/advene/gui/edit/elements.py:508
#: ../lib/advene/gui/edit/elements.py:557
#: ../lib/advene/gui/edit/elements.py:657
@@ -2468,44 +2537,65 @@ msgid "Type"
msgstr ""
#: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
msgid "Value"
msgstr ""
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:39
+msgid "Check various package properties"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:90
+msgid "List of possible issues in the current package"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:55
msgid "Annotation table view"
msgstr ""
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
msgid "Display annotations in a table"
msgstr ""
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
msgid "Snapshot"
msgstr ""
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
#: ../lib/advene/gui/edit/elements.py:675
#: ../lib/advene/gui/edit/elements.py:717
#: ../lib/advene/gui/edit/elements.py:1108
msgid "Content"
msgstr ""
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
msgid "Begin"
msgstr ""
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
msgid "End"
msgstr ""
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
msgid "Duration"
msgstr ""
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
#: ../lib/advene/gui/edit/elements.py:507
#: ../lib/advene/gui/edit/elements.py:556
@@ -2519,56 +2609,56 @@ msgstr ""
msgid "Id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
msgid "Export data to file..."
msgstr ""
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
#, python-format
msgid "Error while exporting data to %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "type"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "begin"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "end"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "content"
msgstr ""
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
msgid "Generic table view"
msgstr ""
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
msgid "Display Advene elements in a table."
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element title"
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element type"
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
#: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
#: ../lib/advene/gui/edit/imports.py:331
#: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2607,13 +2697,13 @@ msgstr ""
msgid "Adhoc views"
msgstr ""
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
msgid "Tree view"
msgstr ""
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
msgid "Refresh"
msgstr ""
@@ -2621,25 +2711,76 @@ msgstr ""
msgid "Package View"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, python-format
+msgid "Move selection to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, python-format
+msgid "Duplicate annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, python-format
+msgid "Move annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+msgid "Duplicate and create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+msgid "Create a new relation-type."
+msgstr ""
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
msgid "AnnotationDisplay"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
msgid "Display the contents of an annotation"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
msgid "No annotation"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
msgid "Current time"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
#, python-format
msgid ""
"Schema %(schema)s\n"
@@ -2648,15 +2789,20 @@ msgid ""
"Id: %(id)s"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
msgid "Screenshot"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
#: ../lib/advene/gui/views/relationdisplay.py:104
msgid "Contents"
msgstr ""
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+msgid "Validate"
+msgstr ""
+
#: ../lib/advene/gui/views/__init__.py:193
msgid "Invalid view id"
msgstr ""
@@ -2680,7 +2826,7 @@ msgstr ""
msgid "Enter a view name to save this parametered view"
msgstr ""
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
#, python-format
msgid "Error: the identifier %s contains invalid characters."
msgstr ""
@@ -2713,7 +2859,7 @@ msgstr ""
msgid "Click or drag-and-drop to reattach view"
msgstr ""
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
msgid "Caption"
msgstr ""
@@ -2731,130 +2877,111 @@ msgstr ""
msgid "Navigation popup"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
msgid "Transcription"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
msgid "Display annotations as a text transcription"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
#: ../lib/advene/gui/edit/montage.py:54
#: ../lib/advene/gui/edit/transcribe.py:85
msgid "Save view"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
#: ../lib/advene/gui/views/interactivequery.py:60
#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
#: ../lib/advene/gui/edit/transcribe.py:86
msgid "Save default options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
#, python-format
msgid "Error in source evaluation %(source)s: %(error)s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
msgid "Transcription options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
msgid "Default representation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
msgid "Use the default representation for annotations"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
#: ../lib/advene/gui/edit/elements.py:962
msgid "Representation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
msgid ""
"If default representation is unchecked,\n"
"this TALES expression that will be used to format the annotations."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
msgid "Separator"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
msgid "This separator will be inserted between the annotations."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
msgid "Whitespace"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
msgid "Newline"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
msgid "Tabulation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
msgid "Dash"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
msgid "User defined"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid "User-defined separator"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid ""
"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
"a tabulation."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Display timestamps"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Insert timestsamp values"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
msgid "Display annotation bounds"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:207
-msgid "Updating modified annotations"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
#, python-format
msgid ""
"Cannot convert the following annotations,\n"
@@ -2862,53 +2989,53 @@ msgid ""
"%s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
msgid ""
"Cannot validate the update.\n"
"The representation pattern is too complex."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
msgid "Save transcription to a text file"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
msgid "Apply the modifications"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
msgid "Find text"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
msgid "Quickly switch display options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
msgid "Refresh the transcription"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
msgid "Edit preferences"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
#, python-format
msgid "Annotation %s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
msgid "Play"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
#, python-format
msgid "Cannot write to %(filename)s: %(error)s:"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
#: ../lib/advene/gui/edit/transcribe.py:884
#, python-format
msgid "Transcription saved to %s"
@@ -3061,7 +3188,7 @@ msgstr ""
msgid "Convert bookmarks to annotations"
msgstr ""
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
msgid "Comment here"
msgstr ""
@@ -3126,7 +3253,7 @@ msgid "Result of a query"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
#, python-format
msgid "'%s'"
msgstr ""
@@ -3151,7 +3278,7 @@ msgid "Search/replace content in %d elements"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
msgid "Empty quicksearch string"
msgstr ""
@@ -3165,7 +3292,7 @@ msgid "Edit query"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
msgid "String to search"
msgstr ""
@@ -3302,7 +3429,7 @@ msgstr ""
msgid "Edit resource"
msgstr ""
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
msgid "Package finder"
msgstr ""
@@ -3314,7 +3441,7 @@ msgstr ""
msgid "Tag Bag"
msgstr ""
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
msgid "Bag of tags"
msgstr ""
@@ -3323,8 +3450,8 @@ msgid "New tag"
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
#: ../lib/advene/gui/edit/properties.py:46
#: ../lib/advene/gui/edit/transcribe.py:147
#: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3340,7 +3467,7 @@ msgid "Enter a new tag name and select its color."
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
msgid "Name"
msgstr ""
@@ -3348,13 +3475,13 @@ msgstr ""
#: ../lib/advene/gui/edit/elements.py:871
#: ../lib/advene/gui/edit/elements.py:951
#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
#: ../lib/advene/rules/actions.py:133
msgid "Color"
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
msgid "The tag contains invalid characters"
msgstr ""
@@ -3403,58 +3530,54 @@ msgstr ""
msgid "EditAccumulator"
msgstr ""
-#: ../lib/advene/gui/views/editaccumulator.py:70
-msgid "Validate"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
msgid "Timeline"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
msgid "Display annotations on a timeline"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
msgid "Limit display to current area"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
msgid "Display whole movie"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
#, python-format
msgid "Cannot find annotation type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
msgid "No scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
msgid "Continuous scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
msgid "Discrete scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
msgid "Annotation scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
#, python-format
msgid "%d annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
msgid "Display all types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
#, python-format
msgid ""
"There are %d annotations.\n"
@@ -3464,399 +3587,393 @@ msgid ""
"click on the 'Display all types' button below."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
msgid "Split at current player position"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
msgid "Center and zoom"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
#: ../lib/advene/rules/elements.py:1000
msgid "Creation of a new annotation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1066
-msgid "Create a new relation-type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
msgid "Merge with this annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
msgid "Align both begin times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
msgid "Align both end times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
msgid "Align end time to selected begin time"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
msgid "Align begin time to selected end time"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
msgid "Align all times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
msgid "Select the appropriate relation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1237
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, python-format
-msgid "Move selection to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, python-format
-msgid "Duplicate annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, python-format
-msgid "Move annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
#, python-format
msgid "Duplicate to type %(type)s at %(position)s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
#, python-format
msgid "Move to type %(type)s at %(position)s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1276
-msgid "Duplicate and create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
#, python-format
msgid "Duplicate at %s and create a relation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
msgid "Annotation filter"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
msgid "Enter the searched string"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
#, python-format
msgid "Duplicate all annotations to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
#, python-format
msgid "Move all annotations to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
#, python-format
msgid "Duplicate all annotations matching a string to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
#, python-format
msgid "Move all annotations matching a string to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
#, python-format
msgid "Align all annotation time codes using %s as reference."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
#, python-format
msgid "Align all annotation contents using %s as reference"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:1946
+msgid "Displaying done."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:2438
msgid "Create a new annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
msgid "Zoom on region"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
msgid "Restrict display to region"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
#: ../lib/advene/gui/edit/transcribe.py:496
#, python-format
msgid "Position %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
msgid "New annotation at player time"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
msgid "New annotation at mouse position"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
msgid "Selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
msgid "Cannot zoom more"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
#, python-format
msgid "From schema %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
msgid "Restrict playing to this annotation-type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
msgid "Goto previous annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
msgid "Goto next annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
msgid "+"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
#: ../lib/advene/gui/edit/transcribe.py:1027
msgid "Create a new annotation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
msgid "Open an annotation display view"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
msgid "Open a slave montage view (coordinated zoom level)"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3109
msgid "No selected annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
#, python-format
msgid "%d selected annotation(s)"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
msgid "Unselect all annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
msgid "Create a static view"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
msgid "Highlight selection in other views"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
msgid "Tag selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
msgid "Delete selected annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
msgid "Display selection in a table"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
msgid "Center and zoom on selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
msgid "Edit selected annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
msgid "Merge annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+msgid "Display statistics"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3254
msgid "Goto previous page"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
msgid "Goto next page"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
#: ../lib/advene/gui/edit/montage.py:535
msgid "Inspector"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3348
msgid ""
"Delete the selected annotations or drop an annotation here to delete it."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
msgid ""
"Drag an annotation type here to remove it from display.\n"
"Click to edit all displayed types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
msgid "Selection actions"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
msgid "Display relations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
msgid "Display all relations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
#: ../lib/advene/gui/plugins/tracetimeline.py:421
#: ../lib/advene/gui/edit/montage.py:439
msgid "Zoom out"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
#: ../lib/advene/gui/plugins/tracetimeline.py:426
#: ../lib/advene/gui/edit/montage.py:444
msgid "Zoom in"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
msgid "Center on current player position."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
msgid "Automatically activate loop when clicking on an annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
msgid "Displayed"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
msgid "Not displayed"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
msgid "< All <"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
msgid "> All >"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
msgid "Displayed annotation types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
msgid "Relation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
msgid "Display relation types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
msgid "Relation content"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
msgid "Display relation content"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight active annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
msgid "Enter the tag for the selection"
msgstr ""
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
msgid "Scroller"
msgstr ""
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
#, python-format
msgid "Set of %s annotations"
msgstr ""
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
msgid "Refresh snapshot"
msgstr ""
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+msgid "Save as..."
+msgstr ""
+
+#: ../lib/advene/gui/widget.py:1072
msgid "Use current player position"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+msgid "Adjust timestamp"
+msgstr ""
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
msgid "Video player"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
msgid "Complementary video player"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
msgid "Select video file"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
msgid "Select a video file"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
msgid "Synchronize"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
msgid "Offset in ms"
msgstr ""
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+msgid "Drag and drop to get player time"
+msgstr ""
+
#: ../lib/advene/gui/plugins/actions.py:52
msgid "Display a popup"
msgstr ""
@@ -4106,130 +4223,130 @@ msgstr ""
msgid "New bookmark"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
#, python-format
msgid "Rendering type %(type)s as %(presentation)s"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
msgid "Snapshot only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
msgid "Overlayed snapshot only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
msgid "Timestamp only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
msgid "Snapshot+timestamp"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
msgid "Annotation content"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
msgid "as a list"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
msgid "as a table"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
msgid "Play video"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
msgid "Show timestamp only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
msgid "Show content only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
msgid "Show snapshot only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
msgid "Show overlayed timestamp"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
msgid "Show overlayed content"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
#, python-format
msgid "Annotation type %s"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
msgid "display as list"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
msgid "display as table"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
msgid "display as transcription"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
msgid "Open link"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
#, python-format
msgid "HTML editor: cannot parse content (%s)"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
#, python-format
msgid "Heading %d"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
msgid "Bold"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
msgid "Italic"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
msgid "Header"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
msgid "Copy"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
msgid "Cut"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
msgid "Paste"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
msgid "Undo"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
msgid "WYSIWYG editor"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
msgid "Edit HTML source"
msgstr ""
@@ -4241,92 +4358,92 @@ msgstr ""
msgid "Display shot validation interface"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
#, python-format
msgid "Merged #%(first)d-#%(second)d into #%(first)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
msgid "Last action undone"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
#, python-format
msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
#, python-format
msgid "Cannot split annotation #%(current)d: out of bounds."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
#, python-format
msgid "Changed cut between #%(first)d and %(second)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
msgid "Changed begin time for first annotation"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
msgid "No annotations to adjust"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
msgid ""
"Click on the frame just after the cut to adjust the cut time.\n"
"Control-click on a frame to indicate a missing cut."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
#, python-format
msgid "Begin of #%(index)d (title: %(content)s)"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
msgid "< Previous cut"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
msgid "Display previous cut"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
msgid "Next cut >"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
msgid "Display next cut"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
msgid "Go to annotation containing current player time."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
#: ../lib/advene/gui/edit/frameselector.py:192
msgid "Refresh snapshots"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
#: ../lib/advene/gui/edit/frameselector.py:193
msgid "Refresh missing snapshots"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
msgid "Undo last modification"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
msgid "Merge with previous"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
msgid "Merge with previous annotation, i.e. remove this bound."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
msgid "Close view."
msgstr ""
@@ -4370,7 +4487,7 @@ msgid " Filters"
msgstr ""
#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Reset"
msgstr ""
@@ -4405,56 +4522,56 @@ msgstr ""
#: ../lib/advene/gui/plugins/eventaccumulator.py:559
#: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
#, python-format
msgid "of an annotation (%s)"
msgstr ""
#: ../lib/advene/gui/plugins/eventaccumulator.py:561
#: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
#, python-format
msgid "of a relation (%s)"
msgstr ""
#: ../lib/advene/gui/plugins/eventaccumulator.py:563
#: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
#, python-format
msgid "of an annotation type (%s)"
msgstr ""
#: ../lib/advene/gui/plugins/eventaccumulator.py:565
#: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
#, python-format
msgid "of a relation type (%s)"
msgstr ""
#: ../lib/advene/gui/plugins/eventaccumulator.py:567
#: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
#, python-format
msgid "of a schema (%s)"
msgstr ""
#: ../lib/advene/gui/plugins/eventaccumulator.py:569
#: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
#, python-format
msgid "of a view (%s)"
msgstr ""
#: ../lib/advene/gui/plugins/eventaccumulator.py:571
#: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
#, python-format
msgid "of a package (%s)"
msgstr ""
#: ../lib/advene/gui/plugins/eventaccumulator.py:573
#: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
#, python-format
msgid "of an unknown item (%s)"
msgstr ""
@@ -4498,7 +4615,7 @@ msgid "Search"
msgstr ""
#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
#, python-format
msgid "%(name)s (%(index)s)"
msgstr ""
@@ -4551,27 +4668,27 @@ msgstr ""
msgid "Zoom on action"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
msgid "Item Id"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
msgid "Item name or class"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
msgid "Type or schema"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
msgid "Operations"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
msgid "Comment"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
#: ../lib/advene/gui/edit/merge.py:191
msgid "Action"
msgstr ""
@@ -4615,18 +4732,22 @@ msgstr ""
msgid "Log Messages"
msgstr ""
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
msgid "_Select player"
msgstr ""
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
msgid "_View"
msgstr ""
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
msgid "Packages"
msgstr ""
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+msgid "Open recent"
+msgstr ""
+
#: ../lib/advene/gui/main.py:239
msgid "Input from the keyboard (function keys)"
msgstr ""
@@ -4652,126 +4773,130 @@ msgid "Open a package"
msgstr ""
#: ../lib/advene/gui/main.py:246
+msgid "Show recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:247
msgid "_Save package"
msgstr ""
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
msgid "Save the package"
msgstr ""
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
msgid "Save package as..."
msgstr ""
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
msgid "Save the package as..."
msgstr ""
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
msgid "Close package"
msgstr ""
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
msgid "Close the package"
msgstr ""
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
msgid "Save session"
msgstr ""
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
msgid "Save the current session (list of opened packages)"
msgstr ""
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
msgid "Save workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
msgid "...as package view"
msgstr ""
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "...as standard workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "Use the current layout as standard workspace in the future"
msgstr ""
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
msgid "Associate a video _File"
msgstr ""
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
msgid "Associate a video file"
msgstr ""
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
msgid "Associate a _DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
msgid "Associate a chapter from a DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
msgid "Associate a _Video stream"
msgstr ""
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
msgid "Enter a video stream address"
msgstr ""
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "_Import File"
msgstr ""
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "Import data from an external source"
msgstr ""
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
+#: ../lib/advene/gui/main.py:261
+msgid "_Process video"
msgstr ""
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
msgid "Import data from video processing algorithms"
msgstr ""
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
msgid "Merge package"
msgstr ""
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
msgid "Merge elements from another package"
msgstr ""
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Import _DVD chapters"
msgstr ""
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Create annotations based on DVD chapters"
msgstr ""
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
msgid "_Export..."
msgstr ""
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
msgid "Export data to another format"
msgstr ""
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
msgid "_Website export..."
msgstr ""
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
msgid "Export views to a website"
msgstr ""
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
msgid "_Quit"
msgstr ""
@@ -4795,14 +4920,6 @@ msgstr ""
msgid "Create"
msgstr ""
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr ""
-
#: ../lib/advene/gui/main.py:284
msgid "P_ackage properties"
msgstr ""
@@ -4843,18 +4960,10 @@ msgstr ""
msgid "Open python evaluator window"
msgstr ""
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
msgid "Webserver log"
msgstr ""
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr ""
-
#: ../lib/advene/gui/main.py:296
msgid "_Player"
msgstr ""
@@ -4891,14 +5000,6 @@ msgstr ""
msgid "Restart the player"
msgstr ""
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr ""
-
#: ../lib/advene/gui/main.py:302
msgid "Update annotation screenshots"
msgstr ""
@@ -4965,245 +5066,256 @@ msgstr ""
msgid "_About"
msgstr ""
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:344
msgid "Open a package file"
msgstr ""
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
msgid "Save the current package"
msgstr ""
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
msgid "Save the package with a new name"
msgstr ""
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
msgid "Select movie file..."
msgstr ""
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
msgid "Select DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
msgid "Create a text annotation"
msgstr ""
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
msgid "Create a graphical annotation"
msgstr ""
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:389
msgid "Snapshotter activity"
msgstr ""
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
#, python-format
msgid "%d queued requests"
msgstr ""
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
msgid "Cancel all requests"
msgstr ""
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
msgid "No snapshotter"
msgstr ""
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
msgid "No snapshotting activity"
msgstr ""
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
msgid "Snapshotting"
msgstr ""
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
msgid "Display application log messages"
msgstr ""
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
msgid "Quicksearch lists"
msgstr ""
-#: ../lib/advene/gui/main.py:479
+#: ../lib/advene/gui/main.py:488
msgid "Please specify the lists of elements to be searched."
msgstr ""
-#: ../lib/advene/gui/main.py:498
+#: ../lib/advene/gui/main.py:507
#, python-format
msgid ""
"Searching on %s.\n"
"Left click to launch the search, right-click to set the quicksearch options"
msgstr ""
-#: ../lib/advene/gui/main.py:499
+#: ../lib/advene/gui/main.py:508
#, python-format
msgid "String to search in %s"
msgstr ""
-#: ../lib/advene/gui/main.py:523
-msgid "Open this view..."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:540
-msgid "All available views"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:559
-msgid "Transcription of annotations"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:564
-msgid "Schema editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:569
-msgid "Dynamic montage"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:573
-msgid "Open a comment view in the web browser"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:574
-msgid "Create or open a comment view"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:578
-msgid "Display edition history"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:579
-msgid "Visualise the activity trace preview"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:580
-msgid "Visualise the activity trace as a timeline"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
msgid "Tracing : "
msgstr ""
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
msgid "off"
msgstr ""
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
msgid "on"
msgstr ""
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
msgid "Launch search"
msgstr ""
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
msgid "Ignore case"
msgstr ""
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
msgid "Searched elements"
msgstr ""
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
msgid "Playing"
msgstr ""
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
msgid "Pause"
msgstr ""
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
msgid "Init"
msgstr ""
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
msgid "Undefined"
msgstr ""
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
msgid "Enter the new time value"
msgstr ""
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
#, python-format
msgid "Replace content in %d elements"
msgstr ""
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
msgid "Find word"
msgstr ""
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
msgid "Replace by"
msgstr ""
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
#, python-format
msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
msgstr ""
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
msgid "The video extracting feature is not available."
msgstr ""
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
msgid "Video export"
msgstr ""
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
#, python-format
msgid "Exporting video montage/fragment to %%(filename)s"
msgstr ""
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
msgid "Please choose a destination filename"
msgstr ""
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
msgid ""
"No media association is defined in the package. Please use the 'File/"
"Associate a video file' menu item to associate a media file."
msgstr ""
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
#, python-format
msgid ""
"The associated media %s could not be found. Please use the 'File/Associate a "
"video file' menu item to associate a media file."
msgstr ""
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
#, python-format
msgid ""
"You are now working with the following video:\n"
"%s"
msgstr ""
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+msgid "Open this view..."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1205
+msgid "_All available views"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1224
+msgid "Transcription of annotations"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1229
+msgid "Schema editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1234
+msgid "Dynamic montage"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1238
+msgid "Open a comment view in the web browser"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1239
+msgid "Create or open a comment view"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1243
+msgid "Display edition history"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1244
+msgid "Visualise the activity trace preview"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1245
+msgid "Visualise the activity trace as a timeline"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1348
#, python-format
msgid ""
"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5212,430 +5324,459 @@ msgid ""
"cnrs.fr/advene/</span>"
msgstr ""
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
msgid "Go to the website"
msgstr ""
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
msgid "Advene release"
msgstr ""
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
#, python-format
msgid "You are using a up-to-date version of Advene (%(current)s)."
msgstr ""
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
msgid "Advene is up-to-date"
msgstr ""
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
msgid "Choose a color"
msgstr ""
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
msgid "Select an annotation to loop on it"
msgstr ""
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
#, python-format
msgid "Looping on %s"
msgstr ""
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
msgid "No active dynamic view"
msgstr ""
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
msgid "Create a new dynamic view."
msgstr ""
-#: ../lib/advene/gui/main.py:1471
-msgid "No dynamic view"
+#: ../lib/advene/gui/main.py:1502
+msgid "Edit the current dynamic view."
msgstr ""
-#: ../lib/advene/gui/main.py:1473
-msgid "Edit the current dynamic view."
+#: ../lib/advene/gui/main.py:1514
+msgid "No dynamic view"
msgstr ""
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1546
msgid "Playing rate"
msgstr ""
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
msgid "History"
msgstr ""
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
msgid "Popups"
msgstr ""
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid ""
"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
msgstr ""
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid "Information"
msgstr ""
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
msgid "Cannot create annotation. There is no schema to put it in."
msgstr ""
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
msgid "Default annotation type"
msgstr ""
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
msgid "Annotation created"
msgstr ""
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
msgid "Play/Pause [Control-Tab / Control-Space]"
msgstr ""
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
#, python-format
msgid "Rewind (%.02f s) [Control-Left]"
msgstr ""
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
#, python-format
msgid "Forward (%.02f s) [Control-Right]"
msgstr ""
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
msgid "Previous frame [Control-Down]"
msgstr ""
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
msgid "Next frame [Control-Up]"
msgstr ""
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
msgid "Fullscreen"
msgstr ""
-#: ../lib/advene/gui/main.py:2180
-msgid "Export package data"
+#: ../lib/advene/gui/main.py:2210
+#, python-format
+msgid "Screenshot saved to %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2212
#, python-format
-msgid "Export annotation type %s"
+msgid ""
+"Screenshot saved in\n"
+" %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2214
#, python-format
-msgid "Export element %s"
+msgid ""
+"Could not save screenshot:\n"
+" %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2210
-msgid "Export format"
+#: ../lib/advene/gui/main.py:2222
+msgid "Save screenshot to..."
msgstr ""
-#: ../lib/advene/gui/main.py:2247
-msgid " (modified)"
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2278
+msgid "Export package data"
msgstr ""
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2280
#, python-format
-msgid "Activate %s"
+msgid "Export annotation type %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
+#: ../lib/advene/gui/main.py:2282
#, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
+msgid "Export element %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2297
+#: ../lib/advene/gui/main.py:2308
+msgid "Export format"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2345
+msgid " (modified)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2348
#, python-format
-msgid "Open %s"
+msgid "Activate %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
msgid "Saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
msgid "Restoring workspace..."
msgstr ""
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
#, python-format
msgid "Do you wish to restore the %s workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
msgid "Clear the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
#, python-format
msgid "View %s is not an adhoc view"
msgstr ""
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
#, python-format
msgid "Cannot identify the adhoc view %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
msgid "Choose the annotation type to display as transcription."
msgstr ""
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
#, python-format
msgid ""
"Error: unable to find an edit popup for %(element)s:\n"
"%(error)s"
msgstr ""
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
#, python-format
msgid "Editing %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
#, python-format
msgid "Comment view (%s)"
msgstr ""
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
#, python-format
msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
msgstr ""
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
#, python-format
msgid "Activating package %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
#, python-format
msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
msgstr ""
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
msgid "Do you want to restore the saved workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
msgid "Advene"
msgstr ""
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
#, python-format
msgid "Got exception %s. Trying to continue."
msgstr ""
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
msgid "Unknown"
msgstr ""
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
#, python-format
msgid ""
"The package(s) %s are modified.\n"
"Save them now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
msgid "Choose an annotation type."
msgstr ""
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
msgid "No annotation type is defined."
msgstr ""
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
msgid "Creating a new type."
msgstr ""
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
msgid "Title of the new type"
msgstr ""
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
msgid ""
"Id of the new type. It is generated from the title, but you may change it if "
"necessary."
msgstr ""
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
msgid "Specify the content-type for the annotation type"
msgstr ""
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
msgid "Content type"
msgstr ""
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
msgid "Create a new schema"
msgstr ""
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
msgid "Choose an existing schema for the new type, or create a new one"
msgstr ""
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
msgid "Specify the schema title"
msgstr ""
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
msgid "Title of the new schema"
msgstr ""
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
msgid ""
"Id of the new schema. It is generated from the title, but you may change it "
"if necessary."
msgstr ""
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
msgid ""
"You specified a annotation-type identifier that already exists. Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
msgid "You specified a existing schema identifier. Using the existing schema."
msgstr ""
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
msgid ""
"You specified an existing identifier that does not reference a schema. "
"Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
msgid "Choose a schema."
msgstr ""
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
msgid "You specified an existing identifier. Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
#, python-format
msgid "Package %s modified"
msgstr ""
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
#, python-format
msgid ""
"The package %s has been modified but not saved.\n"
"Save it now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
#, python-format
msgid "%s snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
#, python-format
msgid "Do you want to save the snapshots for media %s?"
msgstr ""
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
#, python-format
msgid "Cannot save imagecache for %(media)s: %(e)s"
msgstr ""
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
msgid "first frame"
msgstr ""
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
msgid "last frame"
msgstr ""
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
#, python-format
msgid "Click on %(bound)s of %(annotation)s"
msgstr ""
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
#, python-format
msgid "Update %(bound)s of %(annotation)s"
msgstr ""
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3516
+msgid "Set new timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3523
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3602
msgid "Text annotation"
msgstr ""
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
msgid "Cannot find an appropriate annotation type"
msgstr ""
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
msgid "Graphical annotation"
msgstr ""
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
msgid ""
"An unsaved template package exists\n"
"Save it first."
msgstr ""
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
msgid "Package modified"
msgstr ""
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
msgid ""
"The package that you want to close has been modified but not saved.\n"
"Save it now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
msgid "Load a package"
msgstr ""
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
msgid ""
"A video file was selected. Pretend that the user selected 'Select a video "
"file'..."
msgstr ""
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
#, python-format
msgid ""
"The file %s does not look like a valid Advene package. It should have a .azp "
"or .xml extension. Try to open anyway?"
msgstr ""
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
msgid ""
"You are trying to load a session file, but there are unsaved packages. "
"Proceed anyway?"
msgstr ""
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
msgid "Do you want to save the current workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
#, python-format
msgid "Could not save the package: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
#, python-format
msgid "Save the package %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
msgid "Invalid file extension"
msgstr ""
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
#, python-format
msgid ""
"Your package contains resources,\n"
@@ -5643,90 +5784,90 @@ msgid ""
"Should I put the correct extension?"
msgstr ""
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
msgid "OK, the resources will be lost."
msgstr ""
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
msgid "Aborting package saving"
msgstr ""
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
msgid "Save the session in..."
msgstr ""
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
#, python-format
msgid "Session saved in %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
msgid "Do you confirm the creation of annotations matching the DVD chapters?"
msgstr ""
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
msgstr ""
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
msgid "The associated media is not a DVD."
msgstr ""
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
#, python-format
msgid "Processing %s video"
msgstr ""
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
msgid "No associated video file"
msgstr ""
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
msgid "Standard RuleSet"
msgstr ""
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
#, python-format
msgid ""
"Player not active - cached duration : %(duration)s (%(durationms)d ms)"
msgstr ""
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
msgid ""
"GNU General Public License\n"
"See http://www.gnu.org/copyleft/gpl.html for more details"
msgstr ""
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
msgid "Visit the Advene web site for examples and documentation."
msgstr ""
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
msgid "Select a movie file"
msgstr ""
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
msgid "Title/Chapter selection"
msgstr ""
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
msgid "Select a video stream"
msgstr ""
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
msgid "Enter the address of a video stream"
msgstr ""
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
#, python-format
msgid "Successfully extracted the video stream address (%s) from the url.\n"
msgstr ""
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
msgid "Package properties"
msgstr ""
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
#: ../lib/advene/gui/edit/elements.py:559
#: ../lib/advene/gui/edit/elements.py:644
#: ../lib/advene/gui/edit/elements.py:706
@@ -5738,11 +5879,11 @@ msgstr ""
msgid "Author"
msgstr ""
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
msgid "Author name"
msgstr ""
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
#: ../lib/advene/gui/edit/elements.py:560
#: ../lib/advene/gui/edit/elements.py:645
#: ../lib/advene/gui/edit/elements.py:707
@@ -5754,764 +5895,766 @@ msgstr ""
msgid "Date"
msgstr ""
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
msgid "Package creation date"
msgstr ""
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
msgid "Package title"
msgstr ""
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
msgid "Associated media"
msgstr ""
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Media duration in ms"
msgstr ""
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
msgid "Paths"
msgstr ""
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Data"
msgstr ""
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Standard directory for data files"
msgstr ""
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
msgid "Movie path"
msgstr ""
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
#, python-format
msgid ""
"List of directories (separated by %s) to search for movie files (_ means "
"package directory)"
msgstr ""
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Imagecache"
msgstr ""
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Directory for storing the snapshot cache"
msgstr ""
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Player"
msgstr ""
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Directory of the video player"
msgstr ""
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
msgid "Shotdetect"
msgstr ""
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
msgid "Shotdetect application"
msgstr ""
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
msgid "GUI"
msgstr ""
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid "Interface language (after restart)"
msgstr ""
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid ""
"Language used for the interface (necessitates to restart the application)"
msgstr ""
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
msgid "System default"
msgstr ""
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
msgid "Record activity trace"
msgstr ""
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Expert mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Offer advanced possibilities"
msgstr ""
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Prefer WYSIWYG"
msgstr ""
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Use WYSIWYG editors when possible (HTML, SVG)"
msgstr ""
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid "Player control in edit popups"
msgstr ""
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid ""
"Enable generic player controls in edit windows. This may be undesirable "
"since it overloads some standard text-edition behaviours (esp. control-left/"
"right)."
msgstr ""
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
msgid "Open popups"
msgstr ""
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
msgid "Where should we open adhoc views?"
msgstr ""
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
msgid "as a popup window"
msgstr ""
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
msgid "embedded east of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
msgid "embedded west of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
msgid "embedded south of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
msgid "embedded at the right of the window"
msgstr ""
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History size"
msgstr ""
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History filelist size limit"
msgstr ""
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember window size"
msgstr ""
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember the size of opened windows"
msgstr ""
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Bookmark snapshot width"
msgstr ""
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Width of the snapshots representing bookmarks"
msgstr ""
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Bookmark snapshot precision"
msgstr ""
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Precision (in ms) of the displayed bookmark snapshots."
msgstr ""
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
msgid "General"
msgstr ""
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
msgid "Weekly update check"
msgstr ""
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
msgid "Weekly check for updates on the Advene website"
msgstr ""
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
msgid "On exit,"
msgstr ""
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
msgid "How to handle screenshots on exit"
msgstr ""
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
msgid "never save screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
msgid "always save screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
msgid "ask before saving screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
msgid "Auto-save"
msgstr ""
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
msgid "Data auto-save functionality"
msgstr ""
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
msgid "is desactivated"
msgstr ""
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
msgid "is done automatically"
msgstr ""
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
msgid "is done after confirmation"
msgstr ""
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Auto-save interval (in s)"
msgstr ""
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Interval (in seconds) between package auto-saves"
msgstr ""
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
msgid "Workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
msgid "On package saving,"
msgstr ""
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
msgid "Do you wish to save the default workspace with the package?"
msgstr ""
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
msgid "never save the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
msgid "always save the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
msgid "ask before saving the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
msgid "On package load,"
msgstr ""
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
msgid "Do you wish to load the workspace saved with the package?"
msgstr ""
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
msgid "never load the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
msgid "always load the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
msgid "ask before loading the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
msgid "Video Player"
msgstr ""
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
msgid "Autostart"
msgstr ""
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
msgid ""
"Automatically start the player when loading a media file (either directly or "
"through a package)"
msgstr ""
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
msgid "Fulscreen timestamp"
msgstr ""
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
msgid "Display the timestamp over the video when in fullscreen mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
msgid "Enable captions"
msgstr ""
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
msgid "Enable captions over the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
msgid "Caption font"
msgstr ""
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
msgid "TrueType font for captions"
msgstr ""
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG"
msgstr ""
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG captions over the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
msgid "Enable snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width"
msgstr ""
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width in pixels."
msgstr ""
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity"
msgstr ""
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity level. -1 for no messages."
msgstr ""
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
msgid "Devices"
msgstr ""
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
msgid "Standard"
msgstr ""
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "DVD drive"
msgstr ""
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "Drive letter for the DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
msgid "GDI"
msgstr ""
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
msgid "Direct X"
msgstr ""
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "DVD device"
msgstr ""
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "Device for the DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
msgid "X11"
msgstr ""
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
msgid "XVideo"
msgstr ""
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
msgid "GL"
msgstr ""
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output"
msgstr ""
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output module"
msgstr ""
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
msgid "Recorder options"
msgstr ""
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
msgid "Audio input"
msgstr ""
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
msgid "Device name for audio input (with gstrecorder plugin)"
msgstr ""
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record video"
msgstr ""
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record both video and audio"
msgstr ""
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
msgid "<i>Experimental</i>"
msgstr ""
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
msgid "Embed the caption scroller below the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
msgid "Embed the caption view below the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
msgid "Time-related"
msgstr ""
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
msgid "Time format"
msgstr ""
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
msgid "Format used to display timecodes"
msgstr ""
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
msgid "Default FPS"
msgstr ""
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
msgid ""
"Default FPS (frame-per-second) value, when entering or displaying timestamps "
"with frame numbers."
msgstr ""
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
msgid "Time increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
msgid ""
"Skip duration, when using control-left/right or forward/rewind buttons (in "
"ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
msgid "Second time increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
msgid "Skip duration, when using control-shift-left/right (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
msgid "Third time increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
msgid "Skip duration, when using control-shift-up/down (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid "Custom Up/Down"
msgstr ""
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid ""
"Use third time increment for up/down navigation without having to hold shift."
msgstr ""
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid "Scroll increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid ""
"On most annotations, control+scrollwheel will increment/decrement their "
"bounds by this value (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid "Second scroll increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid ""
"On most annotations, control+shift+scrollwheel will increment/decrement "
"their bounds by this value (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
msgid "Player sync"
msgstr ""
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
msgid ""
"Interval (in ms) with which we synchronize slave players. Setting a too-low "
"value could render the application unusable. Use 0 to disable continuous "
"synchronization."
msgstr ""
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
msgid "Timeline parameters"
msgstr ""
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
msgid "Font size"
msgstr ""
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
msgid "Font size for annotation widgets"
msgstr ""
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
msgid "Button height"
msgstr ""
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
msgid "Height of annotation widgets"
msgstr ""
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Interline height"
msgstr ""
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Height of interlines"
msgstr ""
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
msgid "Text content"
msgstr ""
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
msgid "Completion mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
msgid "Enable dynamic completion mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
msgid "Abbreviation mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
msgid "Enable abbreviation mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
msgid "Abbreviations"
msgstr ""
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
msgid ""
"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
"followed by its replacement."
msgstr ""
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
msgid "Text-To-Speech"
msgstr ""
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
msgid "TTS language"
msgstr ""
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
msgid "What language settings should be used for text-to-speech"
msgstr ""
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
msgid "English"
msgstr ""
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
msgid "French"
msgstr ""
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
msgid "Spanish"
msgstr ""
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
msgid "TTS Encoding"
msgstr ""
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
msgid "What encoding should be used to communicate with the TTS engine"
msgstr ""
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
msgid "TTS Engine"
msgstr ""
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
msgid ""
"Which TTS engine should be used (modification requires restarting Advene to "
"take into account)"
msgstr ""
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
msgid "Automatic"
msgstr ""
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
msgid "eSpeak"
msgstr ""
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
msgid "Custom script with standard input"
msgstr ""
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
msgid "Custom script with arguments"
msgstr ""
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
msgid "SAPI"
msgstr ""
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
msgid "MacOS X say"
msgstr ""
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
msgid "Generic (text output)"
msgstr ""
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
msgid "You should restart Advene to take some options into account."
msgstr ""
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
#, python-format
msgid "Imagecache saved to %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
msgid "Restarting player..."
msgstr ""
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
msgid "Advene log"
msgstr ""
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
msgid "Select the package to merge"
msgstr ""
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
msgid "Saving workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
msgid "Enter a view name to save the workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
msgid "Default workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
msgid "Open this workspace when opening the package"
msgstr ""
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
#, python-format
msgid "Error: the view %s exists and is not a workspace view."
msgstr ""
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
#, python-format
msgid "Cannot save default workspace: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
msgid "Standard workspace has been saved"
msgstr ""
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
msgid "Website export"
msgstr ""
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
msgid "Exporting views to a website"
msgstr ""
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
msgid "Output directory"
msgstr ""
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
msgid "Specify the output directory"
msgstr ""
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
msgid "Maximum recursion depth"
msgstr ""
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
msgid "Video URL"
msgstr ""
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
msgstr ""
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
msgid "Could not export data: "
msgstr ""
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
#, python-format
msgid "Website export to %s completed"
msgstr ""
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
msgid "This video player is not able to grab specific screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
#, python-format
msgid "Updating %d snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
msgid "No snapshot to update"
msgstr ""
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
msgid "You first must load a movie into Advene"
msgstr ""
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
#, python-format
msgid "The movie %s does not seem to exist."
msgstr ""
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
msgid "Generating screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
msgid ""
"<b>Screenshot generation</b>\n"
"\n"
@@ -6523,42 +6666,42 @@ msgid ""
"open."
msgstr ""
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
msgid ""
"The <b>shotdetect</b> application does not seem to be installed. Please "
"check that it is present and that its path is correctly specified in "
"preferences."
msgstr ""
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
msgid ""
"Cannot import shotdetect output. Did you install the shotdetect software?"
msgstr ""
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
msgid "Incomplete shots"
msgstr ""
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
#, python-format
msgid "Detected %s shots"
msgstr ""
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
#, python-format
msgid "Could not run shotdetect: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
#, python-format
msgid "Detecting shots from %s"
msgstr ""
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
msgid "Shot detection"
msgstr ""
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
msgid ""
"<b>Shot detection</b>\n"
"\n"
@@ -6568,13 +6711,13 @@ msgid ""
"to augment its value."
msgstr ""
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
msgid "Sensitivity"
msgstr ""
#: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
msgid "Plain text content"
msgstr ""
@@ -6583,8 +6726,8 @@ msgid "HTML content"
msgstr ""
#: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
msgid "Simple-structured content"
msgstr ""
@@ -6593,8 +6736,8 @@ msgid "List of numeric values"
msgstr ""
#: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
msgid "SVG graphics content"
msgstr ""
@@ -6873,46 +7016,38 @@ msgstr ""
msgid "Importer"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
msgid "Advene package importer"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
msgid "Not likely"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
#, python-format
msgid "Completed conversion: %(statistics)s"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
#: ../lib/advene/gui/edit/dvdselect.py:73
msgid "Stop"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:141
-#, python-format
-msgid "Importing %s"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
msgid "Choose the file to import"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Filename"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
msgid "Filter"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
msgid "Options"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
msgid "Start"
msgstr ""
@@ -6979,8 +7114,8 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
msgid "Rectangular zone content"
msgstr ""
@@ -7043,7 +7178,7 @@ msgid "New resource data"
msgstr ""
#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
msgid "Properties"
msgstr ""
@@ -7280,7 +7415,7 @@ msgid "Error: cannot find a content handler for %s"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
#, python-format
msgid ""
"Cannot read the data:\n"
@@ -7288,12 +7423,12 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
msgid "Save content to..."
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
#, python-format
msgid ""
"Cannot save the data:\n"
@@ -7301,17 +7436,17 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
msgid "Open a file (C-o)"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
msgid "Save to a file (C-s)"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
msgid "Reload the file (C-r)"
msgstr ""
@@ -7319,15 +7454,15 @@ msgstr ""
msgid "Insert a value from the browser (C-i)"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
msgid "Begin time is greater than end time"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
msgid "Expecting an integer."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
#, python-format
msgid ""
"The %(attribute)s attribute could not be updated:\n"
@@ -7337,7 +7472,7 @@ msgid ""
"Resetting to the original value."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
#, python-format
msgid ""
"The following attributes cannot be updated:\n"
@@ -7345,7 +7480,7 @@ msgid ""
"%s"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
#, python-format
msgid ""
"The following attributes could not be updated:\n"
@@ -7353,25 +7488,25 @@ msgid ""
"%s"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
msgid "Attribute"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
msgid "Insert an element"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
msgid "Choose the element to insert."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
#, python-format
msgid "Some tags contain invalid characters: %s"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
msgid "Tags:"
msgstr ""
@@ -7482,7 +7617,7 @@ msgid "Condition expression: %s"
msgstr ""
#: ../lib/advene/gui/edit/rules.py:765
-msgid "The id of the annotation type"
+msgid "The annotation type"
msgstr ""
#: ../lib/advene/gui/edit/rules.py:768
@@ -7541,7 +7676,7 @@ msgid "The element duration"
msgstr ""
#: ../lib/advene/gui/edit/rules.py:793
-msgid "The id of the element type"
+msgid "The element type"
msgstr ""
#: ../lib/advene/gui/edit/rules.py:794
@@ -7560,6 +7695,16 @@ msgstr ""
msgid "The context fragment"
msgstr ""
+#: ../lib/advene/gui/edit/rules.py:809
+#, python-format
+msgid "annotation-type %s"
+msgstr ""
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, python-format
+msgid "relation-type %s"
+msgstr ""
+
#: ../lib/advene/gui/edit/rules.py:834
msgid "Select a condition"
msgstr ""
@@ -7577,52 +7722,52 @@ msgstr ""
msgid "Activate?"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
msgid "Schema Editor"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
msgid "Display"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
msgid "Remove relation type"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
msgid "Create HTML view"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
msgid "Remove annotation type"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
msgid "Create relation type between this one and..."
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
msgid "New schema"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
msgid "New annotation type"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
msgid "New relation type"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
msgid "Hide this schema"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
msgid "Export drawing to pdf"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
msgid "Choose a filename to export the schema as PDF"
msgstr ""
@@ -7909,102 +8054,102 @@ msgstr ""
msgid "Click to see more frames or scroll with the mouse wheel"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
msgid "Generic shape"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
#, python-format
msgid "Link to %s"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
msgid "Link"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
msgid "Link label"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
msgid "Linewidth"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
msgid "Filled"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
#, python-format
msgid "Properties of %s"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
msgid "Rectangle"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
msgid "Text"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
msgid "Textsize"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
msgid "Image"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
msgid "Href"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
msgid "Line"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
msgid "Draw an arrow"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
msgid "Arrow size"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
msgid "Circle"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
msgid "Ellipse"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
msgid "SVG"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
msgid "Load SVG"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
msgid "Save SVG"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
#, python-format
msgid "Decrement value by %.2f s"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
#, python-format
msgid "Increment value by %.2f s"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
msgid ""
"Click to play\n"
"Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8012,7 +8157,7 @@ msgid ""
"Right-click to invalidate screenshot"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
msgid ""
"Enter a timecode.\n"
"An integer value will be considered as milliseconds.\n"
@@ -8020,7 +8165,7 @@ msgid ""
"HH:MM:SS.sss values are possible."
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
msgid "Set to current player position"
msgstr ""
diff --git a/po/de.po b/po/de.po
index 67aa4b4..c5c0bac 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: advene\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
"PO-Revision-Date: 2007-08-11 18:51+0000\n"
"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
"Language-Team: German <de at li.org>\n"
@@ -83,111 +83,116 @@ msgid ""
"The following processes seem to use the %(port)s port: %(processes)s"
msgstr ""
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr ""
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
#, python-format
msgid "Loaded %(uri)s as %(alias)s"
msgstr ""
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
#, python-format
msgid "Cannot load package from file %(uri)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr ""
+
+#: ../lib/advene/core/controller.py:966
#, python-format
msgid "Cannot get audio volume: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr ""
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
msgid "None"
msgstr ""
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
#, python-format
msgid "Found matching video file in moviepath: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
msgid "Analysis of "
msgstr ""
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
msgid "Cannot split the annotation: the given position is outside."
msgstr ""
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
#, python-format
msgid "Cannot find the template package %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
#, python-format
msgid "Cannot read the imported package %(uri)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
msgid "Package URI has changed. Reloading package with new URI."
msgstr ""
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
msgid ""
"Cannot load package: the following annotations do not have Millisecond "
"fragments:"
msgstr ""
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
#, python-format
msgid "Cannot handle master attribute, the package %s is not imported."
msgstr ""
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
#, python-format
msgid "Checking master package %s for not yet imported elements."
msgstr ""
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
msgid "Standard summary"
msgstr ""
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
msgid "Default view"
msgstr ""
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
#, python-format
msgid ""
"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
msgstr ""
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
#, python-format
msgid "Got exception %s when stopping player."
msgstr ""
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
#, python-format
msgid "Raised exception in update_status: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
msgid "Unable to start the player."
msgstr ""
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
#, fuzzy, python-format
msgid "Comment on set of %d annotations"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
#, python-format
msgid "Comment on %s"
msgstr ""
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
#, python-format
msgid ""
"<h1>Comment on %(title)s</h1>\n"
@@ -199,23 +204,23 @@ msgid ""
"\"%(imgurl)s\" ></img></a></span>"
msgstr ""
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
#, fuzzy, python-format
msgid "List of %s annotations"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
#, python-format
msgid "Cannot export to %(filename)s: %(e)s"
msgstr ""
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
#, python-format
msgid "Error when exporting: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
#, python-format
msgid "Data exported to %s"
msgstr ""
@@ -975,11 +980,15 @@ msgid ""
"fr/advene/\">Advene</a> v. %s.</em></p>"
msgstr ""
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
#, python-format
msgid "Cannot start HTTP server: %s"
msgstr ""
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+
#: ../lib/advene/plugins/featuredetect.py:42
msgid "Feature detection (face...)"
msgstr ""
@@ -1021,7 +1030,7 @@ msgstr ""
msgid "Anvil importer"
msgstr ""
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
#, fuzzy
msgid "TED importer"
msgstr "Datei _importieren"
@@ -1091,11 +1100,72 @@ msgid ""
"too many shots are detected, try to increase its value."
msgstr ""
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
#, python-format
msgid "Detected shot #%(num)d at %(pos)s "
msgstr ""
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+#, fuzzy
+msgid "Generating annotations"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr ""
+
#: ../lib/advene/plugins/tts.py:77
msgid "Pronounce a text"
msgstr ""
@@ -1116,12 +1186,12 @@ msgstr ""
msgid "The annotation content"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
#: ../lib/advene/gui/plugins/actions.py:234
msgid "Unknown rule"
msgstr ""
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
#: ../lib/advene/gui/plugins/actions.py:235
#, python-format
msgid ""
@@ -1143,6 +1213,28 @@ msgstr ""
msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
msgstr ""
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:75
+#, fuzzy
+msgid "Importing subtitles"
+msgstr "Datei _importieren"
+
+#: ../lib/advene/plugins/fcp.py:90
+#, fuzzy
+msgid "Importing clips"
+msgstr "Datei _importieren"
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr ""
+
#: ../lib/advene/plugins/mpeg7.py:54
msgid "MPEG7 importer"
msgstr ""
@@ -1172,29 +1264,6 @@ msgstr "Aktivieren und Abspielen"
msgid "Importing annotations"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/plugins/aiff.py:35
-#, fuzzy
-msgid "Aiff importer"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:77
-#, fuzzy
-msgid "Importing subtitles"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/plugins/aiff.py:92
-#, fuzzy
-msgid "Importing clips"
-msgstr "Datei _importieren"
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr ""
-
#: ../lib/advene/plugins/dcp.py:65
#, fuzzy
msgid "DCP importer"
@@ -1205,11 +1274,11 @@ msgstr "Datei _importieren"
msgid "Converting #%(num)d / %(count)d"
msgstr ""
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
msgid "Input from the braille table."
msgstr ""
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
msgid "BrlTTY not installed. There will be no braille support."
msgstr ""
@@ -1225,16 +1294,16 @@ msgstr ""
msgid "Message to display."
msgstr ""
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
#, python-format
msgid "BrlTTY connection error: %s"
msgstr ""
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
msgid "Braille display: "
msgstr ""
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
#, fuzzy
msgid "No message"
msgstr "Kein Pakte"
@@ -1279,17 +1348,17 @@ msgid "Parsing section information"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
msgid "Creating package"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
msgid "Creating annotation types"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
msgid "Parsing header information"
msgstr ""
@@ -1316,11 +1385,6 @@ msgstr ""
msgid "Channel selection."
msgstr ""
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#, fuzzy
-msgid "Generating annotations"
-msgstr "von einem Anmerkungs Typ"
-
#: ../lib/advene/plugins/soundenveloppe.py:115
#, python-format
msgid "At %s"
@@ -1360,7 +1424,7 @@ msgstr ""
msgid "Starting silence detection"
msgstr ""
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
msgid "Aeidon (subtitles) importer"
msgstr ""
@@ -1400,234 +1464,234 @@ msgstr ""
msgid "Converted from %s"
msgstr ""
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
#, fuzzy
msgid "ExternalApp importer"
msgstr "Datei _importieren"
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
#, python-format
msgid ""
"The <b>%s</b> application does not seem to be installed. Please check that "
"it is present and that its path is correctly specified in preferences."
msgstr ""
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
#, python-format
msgid "The file %s does not seem to exist."
msgstr ""
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
#, python-format
msgid "Could not run %(appname)s: %(msg)s"
msgstr ""
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
#, fuzzy, python-format
msgid "Processing %s"
msgstr "Datei _importieren"
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
msgid "Cleaning up..."
msgstr ""
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
msgid "Text importer"
msgstr ""
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
msgid "Specify the encoding of the input file (latin1, utf8...)"
msgstr ""
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
msgid "lsdvd importer"
msgstr ""
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
msgid "Processing data"
msgstr ""
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
#, fuzzy
msgid "DVD Chapter"
msgstr "Importiere _DVD Kapitel"
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
msgid "Launching lsdvd..."
msgstr ""
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
msgid "chaplin importer"
msgstr ""
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
msgid "Xi importer"
msgstr ""
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
msgid "ELAN importer"
msgstr ""
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
#, python-format
msgid "Converting tier %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
msgid "Processing time slots"
msgstr ""
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
msgid "Fixing forward references"
msgstr ""
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
msgid "Creating relations"
msgstr ""
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
msgid "Subtitle (SRT) importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
#, python-format
msgid "Subtitles from %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
msgid "PRAAT importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
msgid "CMML importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
msgid "Parsing clip information"
msgstr ""
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
msgid "Creating CMML schema"
msgstr ""
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
msgid "Parsing stream information"
msgstr ""
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
msgid "IRI importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
msgid "Generate one type per view"
msgstr ""
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
#, python-format
msgid "Parsing ensemble %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
#, python-format
msgid "Parsing decoupage %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
msgid "Parsing views"
msgstr ""
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
msgid "Initializing package"
msgstr ""
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
msgid "IRIData importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
msgid "Parsing sound values"
msgstr ""
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
#, fuzzy
msgid "Creating annotations"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
msgid "Package"
msgstr ""
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
msgid "Annotation"
msgstr ""
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
msgid "Relation"
msgstr ""
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
msgid "Schema"
msgstr "Schema"
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
msgid "Annotation Type"
msgstr "Kommentar Typ"
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
#, fuzzy
msgid "Relation Type"
msgstr "Verbindungs Type"
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
msgid "View"
msgstr "Darstellung"
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
#: ../lib/advene/gui/main.py:278
msgid "Query"
msgstr "Abfragen"
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
msgid "Resource Folder"
msgstr ""
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
msgid "Resource File"
msgstr ""
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
msgid "---- Elements ----"
msgstr ""
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
msgid "---- Attributes ----"
msgstr ""
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
msgid "---- Methods ----"
msgstr ""
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
#, python-format
msgid "Cannot read %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
#, python-format
msgid "File %s is not an Advene zip package."
msgstr ""
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
#, python-format
msgid ""
"Error:\n"
"%s"
msgstr ""
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
#, python-format
msgid ""
"Package %(title)s:\n"
@@ -1641,81 +1705,81 @@ msgid ""
"%(description)s\n"
msgstr ""
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schema"
msgstr ""
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schemas"
msgstr ""
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotation"
msgstr ""
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotations"
msgstr ""
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation type"
msgstr ""
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation types"
msgstr ""
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relation"
msgstr ""
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relations"
msgstr ""
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation type"
msgstr ""
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation types"
msgstr ""
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "query"
msgstr ""
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "queries"
msgstr ""
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "view"
msgstr ""
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "views"
msgstr ""
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "package"
msgstr ""
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "packages"
msgstr ""
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
#, python-format
msgid "No %s"
msgstr ""
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
#, python-format
msgid "1 %s"
msgstr ""
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
#, python-format
msgid "%(count)d %(plural)s"
msgstr ""
@@ -1730,32 +1794,32 @@ msgstr ""
msgid "%s does not exist"
msgstr ""
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
msgid "Starting export"
msgstr ""
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
#, python-format
msgid "Depth %d"
msgstr ""
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
#, python-format
msgid "Depth %(depth)d: processing %(url)s"
msgstr ""
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
msgid "Finalizing"
msgstr ""
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
#, python-format
msgid ""
"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
"strong></p>"
msgstr ""
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
#, fuzzy
msgid "Export complete"
msgstr "Datei _importieren"
@@ -1819,12 +1883,12 @@ msgid ""
"\n"
msgstr ""
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
#, fuzzy, python-format
msgid "Renumbering annotations of type %s"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
msgid ""
"<b>Renumber all annotations according to their order.</b>\n"
"\n"
@@ -1838,26 +1902,26 @@ msgid ""
"The offset parameter allows you to renumber from a given annotation."
msgstr ""
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
msgid "Offset"
msgstr ""
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
#, fuzzy, python-format
msgid "Renumbering %d annotations"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
#, fuzzy, python-format
msgid "Annotation #%d"
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
#, fuzzy, python-format
msgid "Extracting %s"
msgstr "Datei _importieren"
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
#, python-format
msgid ""
"Exporting annotation %(title)s\n"
@@ -1865,273 +1929,280 @@ msgid ""
"to %%(filename)s"
msgstr ""
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
msgid "Edit"
msgstr ""
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
msgid "Browse"
msgstr ""
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
msgid "Open in web browser"
msgstr ""
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
msgid "Delete"
msgstr ""
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
msgid "Search/replace content"
msgstr ""
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
msgid "Activate"
msgstr ""
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
msgid "Desactivate"
msgstr ""
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
#: ../lib/advene/gui/plugins/tracetimeline.py:980
#: ../lib/advene/gui/plugins/tracetimeline.py:1001
#: ../lib/advene/gui/edit/transcribe.py:502
msgid "Go to..."
msgstr ""
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
msgid "Loop"
msgstr ""
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
msgid "Duplicate"
msgstr ""
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight"
msgstr ""
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+#, fuzzy
+msgid "Save snapshot..."
+msgstr "Zeige Shortcuts"
+
+#: ../lib/advene/gui/popup.py:519
#, fuzzy
msgid "Extract video fragment"
msgstr "Gebe eine Video Stream Adresse ein"
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
msgid "Incoming"
msgstr ""
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
msgid "Outgoing"
msgstr ""
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
#, fuzzy
msgid "Related annotations"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
msgid "Incoming relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
msgid "Outgoing relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
#, python-format
msgid "Begin: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
#, python-format
msgid "End: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
#, fuzzy, python-format
msgid "Duration: %s"
msgstr "Verbindungs Type"
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
msgid "Members:"
msgstr ""
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
#, fuzzy
msgid "Edit package properties..."
msgstr "Bearbeite Packet Eigentschaften"
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
#, python-format
msgid "%d annotations(s) - statistics"
msgstr ""
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
msgid "Create a new static view..."
msgstr ""
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
msgid "Create a new dynamic view..."
msgstr ""
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
msgid "Create a new annotation..."
msgstr ""
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
msgid "Create a new schema..."
msgstr ""
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
msgid "Create a new query..."
msgstr ""
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
msgid "Create a new folder..."
msgstr ""
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
msgid "Create a new resource file..."
msgstr ""
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
msgid "Insert a new resource file..."
msgstr ""
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
msgid "Insert a new resource directory..."
msgstr ""
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
msgid "Insert a soundclip..."
msgstr ""
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
msgid "Play sound"
msgstr ""
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
msgid "Create a new annotation type..."
msgstr ""
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
msgid "Create a new relation type..."
msgstr ""
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
msgid "Select a color"
msgstr ""
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
#, python-format
msgid "A caption dynamic view for %s already seems to exist."
msgstr ""
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
#, fuzzy, python-format
msgid "Caption %s annotations"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
msgid "Caption the annotation"
msgstr ""
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
#, fuzzy
msgid "Create a comment view"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/popup.py:740
-msgid "Generate a caption dynamic view"
+#: ../lib/advene/gui/popup.py:739
+msgid "Generate a caption dynamic view..."
msgstr ""
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
msgid "Display as transcription"
msgstr ""
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
#, fuzzy
msgid "Display annotations in table"
msgstr "Zeige Kommentare an einer Timeline"
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
#, fuzzy
msgid "Export to another format..."
msgstr "Importiere Daten von einer Externen Quelle"
+#: ../lib/advene/gui/popup.py:748
+#, fuzzy
+msgid "Delete all annotations"
+msgstr "von einem Anmerkungs Typ"
+
#: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
-msgstr ""
+#, fuzzy
+msgid "Renumber annotations..."
+msgstr "von einem Anmerkungs Typ"
#: ../lib/advene/gui/popup.py:750
-msgid "Renumber annotations"
-msgstr ""
-
-#: ../lib/advene/gui/popup.py:751
#, fuzzy
-msgid "Adjust annotation bounds"
+msgid "Adjust annotation bounds..."
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
#, python-format
msgid "A follow dynamic view for %s already seems to exist."
msgstr ""
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
#, fuzzy, python-format
msgid "Follow %s relation-type"
msgstr "Verbindungs Type"
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
msgid "Follow the relation"
msgstr ""
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
msgid "Delete all relations..."
msgstr ""
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
#, fuzzy
msgid "Create montage from related annotations"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
msgid "Create dynamic view following relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
#, python-format
msgid "Exception in query: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
msgid "Apply query on..."
msgstr ""
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
#, fuzzy
msgid "the package"
msgstr "Kein Pakte"
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
#, fuzzy
msgid "all annotations of the package"
msgstr "Transkription für das gesamte Packet"
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
#, fuzzy
msgid "the first annotation of the package"
msgstr "Transkription für das gesamte Packet"
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
msgid "Activate view"
msgstr ""
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
msgid "Open adhoc view"
msgstr ""
@@ -2295,31 +2366,31 @@ msgid "Cannot remove this widget, it is essential."
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
msgid "...in its own window"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:125
#: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
msgid "...embedded east of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:126
#: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
msgid "...embedded west of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:127
#: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
msgid "...embedded south of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:128
#: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
msgid "...embedded at the right of the window"
msgstr ""
@@ -2395,7 +2466,7 @@ msgid "to create a new static view"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
#, fuzzy
msgid "as a transcription"
msgstr "T_ranskription"
@@ -2529,8 +2600,8 @@ msgstr ""
msgid "Path"
msgstr ""
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
#: ../lib/advene/gui/edit/elements.py:508
#: ../lib/advene/gui/edit/elements.py:557
#: ../lib/advene/gui/edit/elements.py:657
@@ -2538,44 +2609,66 @@ msgid "Type"
msgstr ""
#: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
msgid "Value"
msgstr ""
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:39
+#, fuzzy
+msgid "Check various package properties"
+msgstr "Bearbeite Packet Eigentschaften"
+
+#: ../lib/advene/gui/views/checker.py:90
+msgid "List of possible issues in the current package"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:55
msgid "Annotation table view"
msgstr ""
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
msgid "Display annotations in a table"
msgstr ""
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
msgid "Snapshot"
msgstr ""
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
#: ../lib/advene/gui/edit/elements.py:675
#: ../lib/advene/gui/edit/elements.py:717
#: ../lib/advene/gui/edit/elements.py:1108
msgid "Content"
msgstr ""
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
msgid "Begin"
msgstr ""
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
msgid "End"
msgstr ""
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
msgid "Duration"
msgstr ""
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
#: ../lib/advene/gui/edit/elements.py:507
#: ../lib/advene/gui/edit/elements.py:556
@@ -2589,56 +2682,56 @@ msgstr ""
msgid "Id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
msgid "Export data to file..."
msgstr ""
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
#, python-format
msgid "Error while exporting data to %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "type"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "begin"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "end"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "content"
msgstr ""
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
msgid "Generic table view"
msgstr ""
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
msgid "Display Advene elements in a table."
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element title"
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element type"
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
#: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
#: ../lib/advene/gui/edit/imports.py:331
#: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2677,13 +2770,13 @@ msgstr ""
msgid "Adhoc views"
msgstr ""
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
msgid "Tree view"
msgstr ""
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
msgid "Refresh"
msgstr ""
@@ -2691,28 +2784,79 @@ msgstr ""
msgid "Package View"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, fuzzy, python-format
+msgid "Move selection to type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, fuzzy, python-format
+msgid "Duplicate annotation to type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, fuzzy, python-format
+msgid "Move annotation to type %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+msgid "Duplicate and create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+msgid "Create a new relation-type."
+msgstr ""
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
#, fuzzy
msgid "AnnotationDisplay"
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
#, fuzzy
msgid "Display the contents of an annotation"
msgstr "Zeige die Transkription für eine Anmerkung"
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
#, fuzzy
msgid "No annotation"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
msgid "Current time"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
#, python-format
msgid ""
"Schema %(schema)s\n"
@@ -2721,15 +2865,20 @@ msgid ""
"Id: %(id)s"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
msgid "Screenshot"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
#: ../lib/advene/gui/views/relationdisplay.py:104
msgid "Contents"
msgstr ""
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+msgid "Validate"
+msgstr ""
+
#: ../lib/advene/gui/views/__init__.py:193
msgid "Invalid view id"
msgstr ""
@@ -2753,7 +2902,7 @@ msgstr ""
msgid "Enter a view name to save this parametered view"
msgstr ""
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
#, python-format
msgid "Error: the identifier %s contains invalid characters."
msgstr ""
@@ -2786,7 +2935,7 @@ msgstr ""
msgid "Click or drag-and-drop to reattach view"
msgstr ""
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
msgid "Caption"
msgstr ""
@@ -2804,131 +2953,112 @@ msgstr ""
msgid "Navigation popup"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
msgid "Transcription"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
#, fuzzy
msgid "Display annotations as a text transcription"
msgstr "Zeige die Anmerkung als Transkription"
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
#: ../lib/advene/gui/edit/montage.py:54
#: ../lib/advene/gui/edit/transcribe.py:85
msgid "Save view"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
#: ../lib/advene/gui/views/interactivequery.py:60
#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
#: ../lib/advene/gui/edit/transcribe.py:86
msgid "Save default options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
#, python-format
msgid "Error in source evaluation %(source)s: %(error)s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
msgid "Transcription options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
msgid "Default representation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
msgid "Use the default representation for annotations"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
#: ../lib/advene/gui/edit/elements.py:962
msgid "Representation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
msgid ""
"If default representation is unchecked,\n"
"this TALES expression that will be used to format the annotations."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
msgid "Separator"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
msgid "This separator will be inserted between the annotations."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
msgid "Whitespace"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
msgid "Newline"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
msgid "Tabulation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
msgid "Dash"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
msgid "User defined"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid "User-defined separator"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid ""
"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
"a tabulation."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Display timestamps"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Insert timestsamp values"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
msgid "Display annotation bounds"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:207
-msgid "Updating modified annotations"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
#, python-format
msgid ""
"Cannot convert the following annotations,\n"
@@ -2936,56 +3066,56 @@ msgid ""
"%s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
msgid ""
"Cannot validate the update.\n"
"The representation pattern is too complex."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
#, fuzzy
msgid "Save transcription to a text file"
msgstr "Zeige die Transkription für eine Anmerkung"
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
msgid "Apply the modifications"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
msgid "Find text"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
msgid "Quickly switch display options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
#, fuzzy
msgid "Refresh the transcription"
msgstr "T_ranskription"
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
#, fuzzy
msgid "Edit preferences"
msgstr "E_instellungen"
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
#, python-format
msgid "Annotation %s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
msgid "Play"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
#, python-format
msgid "Cannot write to %(filename)s: %(error)s:"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
#: ../lib/advene/gui/edit/transcribe.py:884
#, python-format
msgid "Transcription saved to %s"
@@ -3144,7 +3274,7 @@ msgstr ""
msgid "Convert bookmarks to annotations"
msgstr ""
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
msgid "Comment here"
msgstr ""
@@ -3209,7 +3339,7 @@ msgid "Result of a query"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
#, python-format
msgid "'%s'"
msgstr ""
@@ -3234,7 +3364,7 @@ msgid "Search/replace content in %d elements"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
msgid "Empty quicksearch string"
msgstr ""
@@ -3248,7 +3378,7 @@ msgid "Edit query"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
msgid "String to search"
msgstr ""
@@ -3388,7 +3518,7 @@ msgstr ""
msgid "Edit resource"
msgstr ""
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
#, fuzzy
msgid "Package finder"
msgstr "Pakete"
@@ -3401,7 +3531,7 @@ msgstr ""
msgid "Tag Bag"
msgstr ""
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
msgid "Bag of tags"
msgstr ""
@@ -3410,8 +3540,8 @@ msgid "New tag"
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
#: ../lib/advene/gui/edit/properties.py:46
#: ../lib/advene/gui/edit/transcribe.py:147
#: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3427,7 +3557,7 @@ msgid "Enter a new tag name and select its color."
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
msgid "Name"
msgstr ""
@@ -3435,13 +3565,13 @@ msgstr ""
#: ../lib/advene/gui/edit/elements.py:871
#: ../lib/advene/gui/edit/elements.py:951
#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
#: ../lib/advene/rules/actions.py:133
msgid "Color"
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
msgid "The tag contains invalid characters"
msgstr ""
@@ -3490,61 +3620,57 @@ msgstr ""
msgid "EditAccumulator"
msgstr ""
-#: ../lib/advene/gui/views/editaccumulator.py:70
-msgid "Validate"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
msgid "Timeline"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
msgid "Display annotations on a timeline"
msgstr "Zeige Kommentare an einer Timeline"
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
#, fuzzy
msgid "Limit display to current area"
msgstr "Zeige Shortcuts"
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
msgid "Display whole movie"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
#, python-format
msgid "Cannot find annotation type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
msgid "No scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
msgid "Continuous scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
msgid "Discrete scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
#, fuzzy
msgid "Annotation scrolling"
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
#, fuzzy, python-format
msgid "%d annotations"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
#, fuzzy
msgid "Display all types"
msgstr "Verbindungs Type"
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
#, python-format
msgid ""
"There are %d annotations.\n"
@@ -3554,415 +3680,413 @@ msgid ""
"click on the 'Display all types' button below."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
#, fuzzy
msgid "Split at current player position"
msgstr "Aktuelle Sitzung speichern"
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
msgid "Center and zoom"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
#: ../lib/advene/rules/elements.py:1000
msgid "Creation of a new annotation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1066
-msgid "Create a new relation-type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
msgid "Merge with this annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
msgid "Align both begin times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
msgid "Align both end times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
msgid "Align end time to selected begin time"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
msgid "Align begin time to selected end time"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
msgid "Align all times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
msgid "Select the appropriate relation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1237
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, fuzzy, python-format
-msgid "Move selection to type %s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, fuzzy, python-format
-msgid "Duplicate annotation to type %s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, fuzzy, python-format
-msgid "Move annotation to type %s"
-msgstr "von einem Anmerkungs Typ"
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
#, python-format
msgid "Duplicate to type %(type)s at %(position)s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
#, python-format
msgid "Move to type %(type)s at %(position)s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1276
-msgid "Duplicate and create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
#, python-format
msgid "Duplicate at %s and create a relation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
#, fuzzy
msgid "Annotation filter"
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
msgid "Enter the searched string"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
#, fuzzy, python-format
msgid "Duplicate all annotations to type %s"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
#, fuzzy, python-format
msgid "Move all annotations to type %s"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
#, python-format
msgid "Duplicate all annotations matching a string to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
#, python-format
msgid "Move all annotations matching a string to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
#, python-format
msgid "Align all annotation time codes using %s as reference."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
#, python-format
msgid "Align all annotation contents using %s as reference"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, fuzzy, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Zeige die Transkription für eine Anmerkung"
+
+#: ../lib/advene/gui/views/timeline.py:1946
+#, fuzzy
+msgid "Displaying done."
+msgstr "Verbindungs Type"
+
+#: ../lib/advene/gui/views/timeline.py:2438
msgid "Create a new annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
msgid "Zoom on region"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
#, fuzzy
msgid "Restrict display to region"
msgstr "Zeige Shortcuts"
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
#: ../lib/advene/gui/edit/transcribe.py:496
#, python-format
msgid "Position %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
#, fuzzy
msgid "New annotation at player time"
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
#, fuzzy
msgid "New annotation at mouse position"
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
msgid "Selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
msgid "Cannot zoom more"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
#, python-format
msgid "From schema %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
msgid "Restrict playing to this annotation-type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
msgid "Goto previous annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
#, fuzzy
msgid "Goto next annotation"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
msgid "+"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
#: ../lib/advene/gui/edit/transcribe.py:1027
msgid "Create a new annotation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
#, fuzzy
msgid "Open an annotation display view"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
msgid "Open a slave montage view (coordinated zoom level)"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3109
#, fuzzy
msgid "No selected annotation"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
#, python-format
msgid "%d selected annotation(s)"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
msgid "Unselect all annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
msgid "Create a static view"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
msgid "Highlight selection in other views"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
msgid "Tag selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
msgid "Delete selected annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
#, fuzzy
msgid "Display selection in a table"
msgstr "Zeige Kommentare an einer Timeline"
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
msgid "Center and zoom on selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
msgid "Edit selected annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
msgid "Merge annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+#, fuzzy
+msgid "Display statistics"
+msgstr "Zeige Shortcuts"
+
+#: ../lib/advene/gui/views/timeline.py:3254
msgid "Goto previous page"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
#, fuzzy
msgid "Goto next page"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
#: ../lib/advene/gui/edit/montage.py:535
msgid "Inspector"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3348
msgid ""
"Delete the selected annotations or drop an annotation here to delete it."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
msgid ""
"Drag an annotation type here to remove it from display.\n"
"Click to edit all displayed types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
msgid "Selection actions"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
msgid "Display relations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
#, fuzzy
msgid "Display all relations"
msgstr "Zeige Packet inhalt als Baumdarstellung"
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
#: ../lib/advene/gui/plugins/tracetimeline.py:421
#: ../lib/advene/gui/edit/montage.py:439
msgid "Zoom out"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
#: ../lib/advene/gui/plugins/tracetimeline.py:426
#: ../lib/advene/gui/edit/montage.py:444
msgid "Zoom in"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
msgid "Center on current player position."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
msgid "Automatically activate loop when clicking on an annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
msgid "Displayed"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
msgid "Not displayed"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
msgid "< All <"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
msgid "> All >"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
msgid "Displayed annotation types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
msgid "Relation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
msgid "Display relation types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
msgid "Relation content"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
msgid "Display relation content"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight active annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
msgid "Enter the tag for the selection"
msgstr ""
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
msgid "Scroller"
msgstr ""
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
#, fuzzy, python-format
msgid "Set of %s annotations"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
#, fuzzy
msgid "Refresh snapshot"
msgstr "Zeige Shortcuts"
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+#, fuzzy
+msgid "Save as..."
+msgstr "Kein Pakte"
+
+#: ../lib/advene/gui/widget.py:1072
#, fuzzy
msgid "Use current player position"
msgstr "Aktuelle Sitzung speichern"
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+msgid "Adjust timestamp"
+msgstr ""
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
#, fuzzy
msgid "Video player"
msgstr "_Einstellung Spieler"
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
msgid "Complementary video player"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
#, fuzzy
msgid "Select video file"
msgstr "Wähle einen video stream"
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
#, fuzzy
msgid "Select a video file"
msgstr "Wähle einen video stream"
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
msgid "Synchronize"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
msgid "Offset in ms"
msgstr ""
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+#, fuzzy
+msgid "Drag and drop to get player time"
+msgstr "Kommentar Typ"
+
#: ../lib/advene/gui/plugins/actions.py:52
msgid "Display a popup"
msgstr ""
@@ -4217,134 +4341,134 @@ msgstr ""
msgid "New bookmark"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
#, python-format
msgid "Rendering type %(type)s as %(presentation)s"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
msgid "Snapshot only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
msgid "Overlayed snapshot only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
msgid "Timestamp only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
msgid "Snapshot+timestamp"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
#, fuzzy
msgid "Annotation content"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
msgid "as a list"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
msgid "as a table"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
msgid "Play video"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
msgid "Show timestamp only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
msgid "Show content only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
msgid "Show snapshot only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
msgid "Show overlayed timestamp"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
msgid "Show overlayed content"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
#, fuzzy, python-format
msgid "Annotation type %s"
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
#, fuzzy
msgid "display as list"
msgstr "Zeige Packet inhalt als Baumdarstellung"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
#, fuzzy
msgid "display as table"
msgstr "Zeige Kommentare an einer Timeline"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
#, fuzzy
msgid "display as transcription"
msgstr "T_ranskription"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
msgid "Open link"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
#, fuzzy, python-format
msgid "HTML editor: cannot parse content (%s)"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
#, fuzzy, python-format
msgid "Heading %d"
msgstr "Datei _importieren"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
msgid "Bold"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
msgid "Italic"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
msgid "Header"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
msgid "Copy"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
msgid "Cut"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
msgid "Paste"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
msgid "Undo"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
msgid "WYSIWYG editor"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
msgid "Edit HTML source"
msgstr ""
@@ -4357,98 +4481,98 @@ msgstr ""
msgid "Display shot validation interface"
msgstr "Zeige Kommentare an einer Timeline"
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
#, python-format
msgid "Merged #%(first)d-#%(second)d into #%(first)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
msgid "Last action undone"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
#, python-format
msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
#, python-format
msgid "Cannot split annotation #%(current)d: out of bounds."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
#, python-format
msgid "Changed cut between #%(first)d and %(second)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
#, fuzzy
msgid "Changed begin time for first annotation"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
#, fuzzy
msgid "No annotations to adjust"
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
msgid ""
"Click on the frame just after the cut to adjust the cut time.\n"
"Control-click on a frame to indicate a missing cut."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
#, python-format
msgid "Begin of #%(index)d (title: %(content)s)"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
msgid "< Previous cut"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
#, fuzzy
msgid "Display previous cut"
msgstr "Zeige die Transkription für eine Anmerkung"
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
msgid "Next cut >"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
#, fuzzy
msgid "Display next cut"
msgstr "Zeige Shortcuts"
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
#, fuzzy
msgid "Go to annotation containing current player time."
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
#: ../lib/advene/gui/edit/frameselector.py:192
#, fuzzy
msgid "Refresh snapshots"
msgstr "Zeige Shortcuts"
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
#: ../lib/advene/gui/edit/frameselector.py:193
msgid "Refresh missing snapshots"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
msgid "Undo last modification"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
msgid "Merge with previous"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
msgid "Merge with previous annotation, i.e. remove this bound."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
msgid "Close view."
msgstr ""
@@ -4494,7 +4618,7 @@ msgid " Filters"
msgstr "_Datei"
#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Reset"
msgstr ""
@@ -4532,56 +4656,56 @@ msgstr "_Datei"
#: ../lib/advene/gui/plugins/eventaccumulator.py:559
#: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
#, fuzzy, python-format
msgid "of an annotation (%s)"
msgstr "von einem Anmerkungs Typ"
#: ../lib/advene/gui/plugins/eventaccumulator.py:561
#: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
#, fuzzy, python-format
msgid "of a relation (%s)"
msgstr "Verbindungs Type"
#: ../lib/advene/gui/plugins/eventaccumulator.py:563
#: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
#, fuzzy, python-format
msgid "of an annotation type (%s)"
msgstr "von einem Anmerkungs Typ"
#: ../lib/advene/gui/plugins/eventaccumulator.py:565
#: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
#, fuzzy, python-format
msgid "of a relation type (%s)"
msgstr "von einem Anmerkungs Typ"
#: ../lib/advene/gui/plugins/eventaccumulator.py:567
#: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
#, fuzzy, python-format
msgid "of a schema (%s)"
msgstr "Kein Pakte"
#: ../lib/advene/gui/plugins/eventaccumulator.py:569
#: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
#, python-format
msgid "of a view (%s)"
msgstr ""
#: ../lib/advene/gui/plugins/eventaccumulator.py:571
#: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
#, fuzzy, python-format
msgid "of a package (%s)"
msgstr "Kein Pakte"
#: ../lib/advene/gui/plugins/eventaccumulator.py:573
#: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
#, fuzzy, python-format
msgid "of an unknown item (%s)"
msgstr "Unbekannte STBV identifier: %s"
@@ -4628,7 +4752,7 @@ msgid "Search"
msgstr ""
#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
#, python-format
msgid "%(name)s (%(index)s)"
msgstr ""
@@ -4684,29 +4808,29 @@ msgstr ""
msgid "Zoom on action"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
msgid "Item Id"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
msgid "Item name or class"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
#, fuzzy
msgid "Type or schema"
msgstr "Schema"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
msgid "Operations"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
#, fuzzy
msgid "Comment"
msgstr "Erstelle"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
#: ../lib/advene/gui/edit/merge.py:191
msgid "Action"
msgstr ""
@@ -4752,19 +4876,23 @@ msgstr ""
msgid "Log Messages"
msgstr "Kein Pakte"
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
#, fuzzy
msgid "_Select player"
msgstr "Wähle einen DVD"
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
msgid "_View"
msgstr "_Zeige"
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
msgid "Packages"
msgstr "Pakete"
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+msgid "Open recent"
+msgstr ""
+
#: ../lib/advene/gui/main.py:239
msgid "Input from the keyboard (function keys)"
msgstr ""
@@ -4795,140 +4923,146 @@ msgstr "Kein Pakte"
#: ../lib/advene/gui/main.py:246
#, fuzzy
+msgid "Show recently opened packages"
+msgstr "Aktuelle Sitzung speichern"
+
+#: ../lib/advene/gui/main.py:247
+#, fuzzy
msgid "_Save package"
msgstr "Kein Pakte"
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
#, fuzzy
msgid "Save the package"
msgstr "Kein Pakte"
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
#, fuzzy
msgid "Save package as..."
msgstr "Kein Pakte"
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
#, fuzzy
msgid "Save the package as..."
msgstr "Kein Pakte"
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
#, fuzzy
msgid "Close package"
msgstr "Kein Pakte"
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
#, fuzzy
msgid "Close the package"
msgstr "Kein Pakte"
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
msgid "Save session"
msgstr "Sitzung speichern"
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
#, fuzzy
msgid "Save the current session (list of opened packages)"
msgstr "Aktuelle Sitzung speichern"
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
msgid "Save workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
msgid "...as package view"
msgstr ""
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "...as standard workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "Use the current layout as standard workspace in the future"
msgstr ""
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
#, fuzzy
msgid "Associate a video _File"
msgstr "Wähle eine Video Datei"
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
#, fuzzy
msgid "Associate a video file"
msgstr "Wähle eine Video Datei"
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
#, fuzzy
msgid "Associate a _DVD"
msgstr "Wähle eine DVD Kapitel"
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
#, fuzzy
msgid "Associate a chapter from a DVD"
msgstr "Wähle eine DVD Kapitel"
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
#, fuzzy
msgid "Associate a _Video stream"
msgstr "Wähle einen video stream"
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
msgid "Enter a video stream address"
msgstr "Gebe eine Video Stream Adresse ein"
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "_Import File"
msgstr "Datei _importieren"
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "Import data from an external source"
msgstr "Importiere Daten von einer Externen Quelle"
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
-msgstr ""
+#: ../lib/advene/gui/main.py:261
+#, fuzzy
+msgid "_Process video"
+msgstr "Datei _importieren"
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
#, fuzzy
msgid "Import data from video processing algorithms"
msgstr "Importiere Daten von einer Externen Quelle"
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
msgid "Merge package"
msgstr "Vereine Packete"
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
msgid "Merge elements from another package"
msgstr "Füge Elemente von anderen Packeten hinzu"
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Import _DVD chapters"
msgstr "Importiere _DVD Kapitel"
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Create annotations based on DVD chapters"
msgstr "Erschaffe Anmerkung auf Basis des DVD Kapitels"
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
#, fuzzy
msgid "_Export..."
msgstr "Datei _importieren"
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
#, fuzzy
msgid "Export data to another format"
msgstr "Importiere Daten von einer Externen Quelle"
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
msgid "_Website export..."
msgstr ""
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
msgid "Export views to a website"
msgstr ""
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
#, fuzzy
msgid "_Quit"
msgstr "_Bearbeite"
@@ -4954,14 +5088,6 @@ msgstr ""
msgid "Create"
msgstr "Erstelle"
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr "Packet _Importierungen"
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr "Bearbeite importierte Element von anderen Packeten"
-
#: ../lib/advene/gui/main.py:284
msgid "P_ackage properties"
msgstr "P_acket Eigenschaften"
@@ -5003,18 +5129,10 @@ msgstr ""
msgid "Open python evaluator window"
msgstr ""
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
msgid "Webserver log"
msgstr ""
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr ""
-
#: ../lib/advene/gui/main.py:296
msgid "_Player"
msgstr "_Spieler"
@@ -5054,14 +5172,6 @@ msgstr "_Neustart Spieler"
msgid "Restart the player"
msgstr "_Neustart Spieler"
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr ""
-
#: ../lib/advene/gui/main.py:302
#, fuzzy
msgid "Update annotation screenshots"
@@ -5132,255 +5242,266 @@ msgstr ""
msgid "_About"
msgstr ""
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:344
msgid "Open a package file"
msgstr ""
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
msgid "Save the current package"
msgstr ""
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
msgid "Save the package with a new name"
msgstr ""
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
msgid "Select movie file..."
msgstr ""
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
msgid "Select DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
#, fuzzy
msgid "Create a text annotation"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
#, fuzzy
msgid "Create a graphical annotation"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:389
msgid "Snapshotter activity"
msgstr ""
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
#, python-format
msgid "%d queued requests"
msgstr ""
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
msgid "Cancel all requests"
msgstr ""
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
#, fuzzy
msgid "No snapshotter"
msgstr "Zeige Shortcuts"
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
msgid "No snapshotting activity"
msgstr ""
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
msgid "Snapshotting"
msgstr ""
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
#, fuzzy
msgid "Display application log messages"
msgstr "Verbindungs Type"
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
msgid "Quicksearch lists"
msgstr ""
-#: ../lib/advene/gui/main.py:479
+#: ../lib/advene/gui/main.py:488
msgid "Please specify the lists of elements to be searched."
msgstr ""
-#: ../lib/advene/gui/main.py:498
-#, python-format
-msgid ""
-"Searching on %s.\n"
-"Left click to launch the search, right-click to set the quicksearch options"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:499
-#, python-format
-msgid "String to search in %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:523
-msgid "Open this view..."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:540
-msgid "All available views"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:559
-msgid "Transcription of annotations"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:564
-#, fuzzy
-msgid "Schema editor"
-msgstr "Schema"
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:569
-msgid "Dynamic montage"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:573
-msgid "Open a comment view in the web browser"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:574
-msgid "Create or open a comment view"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:578
-#, fuzzy
-msgid "Display edition history"
-msgstr "Zeige Kommentare an einer Timeline"
-
-#: ../lib/advene/gui/main.py:579
-#, fuzzy
-msgid "Visualise the activity trace preview"
-msgstr "Aktivieren und Abspielen"
-
-#: ../lib/advene/gui/main.py:580
-#, fuzzy
-msgid "Visualise the activity trace as a timeline"
-msgstr "Aktivieren und Abspielen"
+#: ../lib/advene/gui/main.py:507
+#, python-format
+msgid ""
+"Searching on %s.\n"
+"Left click to launch the search, right-click to set the quicksearch options"
+msgstr ""
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:508
+#, python-format
+msgid "String to search in %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
msgid "Tracing : "
msgstr ""
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
msgid "off"
msgstr ""
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
#, fuzzy
msgid "on"
msgstr "Erledigt"
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
msgid "Launch search"
msgstr ""
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
msgid "Ignore case"
msgstr ""
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
msgid "Searched elements"
msgstr ""
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
msgid "Playing"
msgstr ""
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
msgid "Pause"
msgstr ""
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
msgid "Init"
msgstr ""
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
msgid "Undefined"
msgstr ""
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
msgid "Enter the new time value"
msgstr ""
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
#, python-format
msgid "Replace content in %d elements"
msgstr ""
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
msgid "Find word"
msgstr ""
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
msgid "Replace by"
msgstr ""
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
#, python-format
msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
msgstr ""
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
msgid "The video extracting feature is not available."
msgstr ""
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
#, fuzzy
msgid "Video export"
msgstr "_Einstellung Spieler"
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
#, python-format
msgid "Exporting video montage/fragment to %%(filename)s"
msgstr ""
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
msgid "Please choose a destination filename"
msgstr ""
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
msgid ""
"No media association is defined in the package. Please use the 'File/"
"Associate a video file' menu item to associate a media file."
msgstr ""
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
#, python-format
msgid ""
"The associated media %s could not be found. Please use the 'File/Associate a "
"video file' menu item to associate a media file."
msgstr ""
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
#, python-format
msgid ""
"You are now working with the following video:\n"
"%s"
msgstr ""
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+msgid "Open this view..."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1205
+msgid "_All available views"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1224
+msgid "Transcription of annotations"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1229
+#, fuzzy
+msgid "Schema editor"
+msgstr "Schema"
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1234
+msgid "Dynamic montage"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1238
+msgid "Open a comment view in the web browser"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1239
+msgid "Create or open a comment view"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1243
+#, fuzzy
+msgid "Display edition history"
+msgstr "Zeige Kommentare an einer Timeline"
+
+#: ../lib/advene/gui/main.py:1244
+#, fuzzy
+msgid "Visualise the activity trace preview"
+msgstr "Aktivieren und Abspielen"
+
+#: ../lib/advene/gui/main.py:1245
+#, fuzzy
+msgid "Visualise the activity trace as a timeline"
+msgstr "Aktivieren und Abspielen"
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1348
#, python-format
msgid ""
"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5389,440 +5510,469 @@ msgid ""
"cnrs.fr/advene/</span>"
msgstr ""
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
msgid "Go to the website"
msgstr ""
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
#, fuzzy
msgid "Advene release"
msgstr "Advene"
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
#, python-format
msgid "You are using a up-to-date version of Advene (%(current)s)."
msgstr ""
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
msgid "Advene is up-to-date"
msgstr ""
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
msgid "Choose a color"
msgstr ""
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
msgid "Select an annotation to loop on it"
msgstr ""
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
#, python-format
msgid "Looping on %s"
msgstr ""
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
msgid "No active dynamic view"
msgstr ""
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
msgid "Create a new dynamic view."
msgstr ""
-#: ../lib/advene/gui/main.py:1471
-msgid "No dynamic view"
+#: ../lib/advene/gui/main.py:1502
+msgid "Edit the current dynamic view."
msgstr ""
-#: ../lib/advene/gui/main.py:1473
-msgid "Edit the current dynamic view."
+#: ../lib/advene/gui/main.py:1514
+msgid "No dynamic view"
msgstr ""
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1546
msgid "Playing rate"
msgstr ""
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
msgid "History"
msgstr ""
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
msgid "Popups"
msgstr ""
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid ""
"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
msgstr ""
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid "Information"
msgstr ""
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
msgid "Cannot create annotation. There is no schema to put it in."
msgstr ""
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
#, fuzzy
msgid "Default annotation type"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
#, fuzzy
msgid "Annotation created"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
msgid "Play/Pause [Control-Tab / Control-Space]"
msgstr ""
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
#, python-format
msgid "Rewind (%.02f s) [Control-Left]"
msgstr ""
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
#, python-format
msgid "Forward (%.02f s) [Control-Right]"
msgstr ""
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
msgid "Previous frame [Control-Down]"
msgstr ""
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
msgid "Next frame [Control-Up]"
msgstr ""
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
msgid "Fullscreen"
msgstr ""
-#: ../lib/advene/gui/main.py:2180
+#: ../lib/advene/gui/main.py:2210
+#, python-format
+msgid "Screenshot saved to %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2212
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2214
+#, fuzzy, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr "von einem Anmerkungs Typ"
+
+#: ../lib/advene/gui/main.py:2222
+msgid "Save screenshot to..."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2278
#, fuzzy
msgid "Export package data"
msgstr "durchsuche Packet daten"
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2280
#, fuzzy, python-format
msgid "Export annotation type %s"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2282
#, fuzzy, python-format
msgid "Export element %s"
msgstr "Datei _importieren"
-#: ../lib/advene/gui/main.py:2210
+#: ../lib/advene/gui/main.py:2308
#, fuzzy
msgid "Export format"
msgstr "Datei _importieren"
-#: ../lib/advene/gui/main.py:2247
+#: ../lib/advene/gui/main.py:2345
msgid " (modified)"
msgstr ""
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2348
#, python-format
msgid "Activate %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
-#, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2297
-#, python-format
-msgid "Open %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
msgid "Saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
msgid "Restoring workspace..."
msgstr ""
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
#, python-format
msgid "Do you wish to restore the %s workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
#, fuzzy
msgid "Clear the current workspace"
msgstr "Aktuelle Sitzung speichern"
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
#, python-format
msgid "View %s is not an adhoc view"
msgstr ""
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
#, python-format
msgid "Cannot identify the adhoc view %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
msgid "Choose the annotation type to display as transcription."
msgstr ""
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
#, python-format
msgid ""
"Error: unable to find an edit popup for %(element)s:\n"
"%(error)s"
msgstr ""
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
#, fuzzy, python-format
msgid "Editing %s"
msgstr "Datei _importieren"
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
#, python-format
msgid "Comment view (%s)"
msgstr ""
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
#, python-format
msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
msgstr ""
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
#, python-format
msgid "Activating package %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
#, python-format
msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
msgstr ""
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
msgid "Do you want to restore the saved workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
msgid "Advene"
msgstr "Advene"
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
#, python-format
msgid "Got exception %s. Trying to continue."
msgstr ""
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
msgid "Unknown"
msgstr ""
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
#, python-format
msgid ""
"The package(s) %s are modified.\n"
"Save them now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
msgid "Choose an annotation type."
msgstr ""
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
msgid "No annotation type is defined."
msgstr ""
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
msgid "Creating a new type."
msgstr ""
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
msgid "Title of the new type"
msgstr ""
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
msgid ""
"Id of the new type. It is generated from the title, but you may change it if "
"necessary."
msgstr ""
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
#, fuzzy
msgid "Specify the content-type for the annotation type"
msgstr "Zeige die Transkription für eine Anmerkung"
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
msgid "Content type"
msgstr ""
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
msgid "Create a new schema"
msgstr ""
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
msgid "Choose an existing schema for the new type, or create a new one"
msgstr ""
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
msgid "Specify the schema title"
msgstr ""
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
msgid "Title of the new schema"
msgstr ""
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
msgid ""
"Id of the new schema. It is generated from the title, but you may change it "
"if necessary."
msgstr ""
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
msgid ""
"You specified a annotation-type identifier that already exists. Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
msgid "You specified a existing schema identifier. Using the existing schema."
msgstr ""
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
msgid ""
"You specified an existing identifier that does not reference a schema. "
"Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
msgid "Choose a schema."
msgstr ""
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
msgid "You specified an existing identifier. Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
#, python-format
msgid "Package %s modified"
msgstr ""
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
#, python-format
msgid ""
"The package %s has been modified but not saved.\n"
"Save it now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
#, python-format
msgid "%s snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
#, python-format
msgid "Do you want to save the snapshots for media %s?"
msgstr ""
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
#, python-format
msgid "Cannot save imagecache for %(media)s: %(e)s"
msgstr ""
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
msgid "first frame"
msgstr ""
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
msgid "last frame"
msgstr ""
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
#, fuzzy, python-format
msgid "Click on %(bound)s of %(annotation)s"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
#, fuzzy, python-format
msgid "Update %(bound)s of %(annotation)s"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3516
+msgid "Set new timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3523
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3602
#, fuzzy
msgid "Text annotation"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
#, fuzzy
msgid "Cannot find an appropriate annotation type"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
#, fuzzy
msgid "Graphical annotation"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
msgid ""
"An unsaved template package exists\n"
"Save it first."
msgstr ""
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
msgid "Package modified"
msgstr ""
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
msgid ""
"The package that you want to close has been modified but not saved.\n"
"Save it now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
msgid "Load a package"
msgstr ""
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
msgid ""
"A video file was selected. Pretend that the user selected 'Select a video "
"file'..."
msgstr ""
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
#, python-format
msgid ""
"The file %s does not look like a valid Advene package. It should have a .azp "
"or .xml extension. Try to open anyway?"
msgstr ""
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
msgid ""
"You are trying to load a session file, but there are unsaved packages. "
"Proceed anyway?"
msgstr ""
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
msgid "Do you want to save the current workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
#, python-format
msgid "Could not save the package: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
#, python-format
msgid "Save the package %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
msgid "Invalid file extension"
msgstr ""
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
#, python-format
msgid ""
"Your package contains resources,\n"
@@ -5830,91 +5980,91 @@ msgid ""
"Should I put the correct extension?"
msgstr ""
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
msgid "OK, the resources will be lost."
msgstr ""
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
msgid "Aborting package saving"
msgstr ""
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
msgid "Save the session in..."
msgstr ""
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
#, python-format
msgid "Session saved in %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
msgid "Do you confirm the creation of annotations matching the DVD chapters?"
msgstr ""
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
msgstr ""
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
msgid "The associated media is not a DVD."
msgstr ""
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
#, fuzzy, python-format
msgid "Processing %s video"
msgstr "Datei _importieren"
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
#, fuzzy
msgid "No associated video file"
msgstr "Wähle eine Video Datei"
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
msgid "Standard RuleSet"
msgstr ""
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
#, python-format
msgid ""
"Player not active - cached duration : %(duration)s (%(durationms)d ms)"
msgstr ""
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
msgid ""
"GNU General Public License\n"
"See http://www.gnu.org/copyleft/gpl.html for more details"
msgstr ""
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
msgid "Visit the Advene web site for examples and documentation."
msgstr ""
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
msgid "Select a movie file"
msgstr ""
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
msgid "Title/Chapter selection"
msgstr ""
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
msgid "Select a video stream"
msgstr "Wähle einen video stream"
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
msgid "Enter the address of a video stream"
msgstr ""
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
#, python-format
msgid "Successfully extracted the video stream address (%s) from the url.\n"
msgstr ""
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
msgid "Package properties"
msgstr ""
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
#: ../lib/advene/gui/edit/elements.py:559
#: ../lib/advene/gui/edit/elements.py:644
#: ../lib/advene/gui/edit/elements.py:706
@@ -5926,11 +6076,11 @@ msgstr ""
msgid "Author"
msgstr ""
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
msgid "Author name"
msgstr ""
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
#: ../lib/advene/gui/edit/elements.py:560
#: ../lib/advene/gui/edit/elements.py:645
#: ../lib/advene/gui/edit/elements.py:707
@@ -5942,777 +6092,779 @@ msgstr ""
msgid "Date"
msgstr ""
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
msgid "Package creation date"
msgstr ""
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
msgid "Package title"
msgstr ""
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
msgid "Associated media"
msgstr ""
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Media duration in ms"
msgstr ""
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
msgid "Paths"
msgstr ""
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Data"
msgstr ""
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Standard directory for data files"
msgstr ""
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
msgid "Movie path"
msgstr ""
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
#, python-format
msgid ""
"List of directories (separated by %s) to search for movie files (_ means "
"package directory)"
msgstr ""
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Imagecache"
msgstr ""
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Directory for storing the snapshot cache"
msgstr ""
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Player"
msgstr ""
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Directory of the video player"
msgstr ""
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
msgid "Shotdetect"
msgstr ""
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
msgid "Shotdetect application"
msgstr ""
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
msgid "GUI"
msgstr ""
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid "Interface language (after restart)"
msgstr ""
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid ""
"Language used for the interface (necessitates to restart the application)"
msgstr ""
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
msgid "System default"
msgstr ""
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
msgid "Record activity trace"
msgstr ""
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Expert mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Offer advanced possibilities"
msgstr ""
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Prefer WYSIWYG"
msgstr ""
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Use WYSIWYG editors when possible (HTML, SVG)"
msgstr ""
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid "Player control in edit popups"
msgstr ""
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid ""
"Enable generic player controls in edit windows. This may be undesirable "
"since it overloads some standard text-edition behaviours (esp. control-left/"
"right)."
msgstr ""
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
msgid "Open popups"
msgstr ""
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
msgid "Where should we open adhoc views?"
msgstr ""
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
msgid "as a popup window"
msgstr ""
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
msgid "embedded east of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
msgid "embedded west of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
msgid "embedded south of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
msgid "embedded at the right of the window"
msgstr ""
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History size"
msgstr ""
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History filelist size limit"
msgstr ""
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember window size"
msgstr ""
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember the size of opened windows"
msgstr ""
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Bookmark snapshot width"
msgstr ""
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Width of the snapshots representing bookmarks"
msgstr ""
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Bookmark snapshot precision"
msgstr ""
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Precision (in ms) of the displayed bookmark snapshots."
msgstr ""
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
msgid "General"
msgstr ""
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
msgid "Weekly update check"
msgstr ""
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
msgid "Weekly check for updates on the Advene website"
msgstr ""
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
msgid "On exit,"
msgstr ""
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
msgid "How to handle screenshots on exit"
msgstr ""
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
msgid "never save screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
msgid "always save screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
msgid "ask before saving screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
msgid "Auto-save"
msgstr ""
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
msgid "Data auto-save functionality"
msgstr ""
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
msgid "is desactivated"
msgstr ""
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
msgid "is done automatically"
msgstr ""
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
msgid "is done after confirmation"
msgstr ""
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Auto-save interval (in s)"
msgstr ""
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Interval (in seconds) between package auto-saves"
msgstr ""
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
#, fuzzy
msgid "Workspace"
msgstr "Aktuelle Sitzung speichern"
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
msgid "On package saving,"
msgstr ""
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
msgid "Do you wish to save the default workspace with the package?"
msgstr ""
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
#, fuzzy
msgid "never save the current workspace"
msgstr "Aktuelle Sitzung speichern"
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
#, fuzzy
msgid "always save the current workspace"
msgstr "Aktuelle Sitzung speichern"
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
msgid "ask before saving the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
#, fuzzy
msgid "On package load,"
msgstr "Kein Pakte"
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
msgid "Do you wish to load the workspace saved with the package?"
msgstr ""
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
msgid "never load the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
msgid "always load the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
msgid "ask before loading the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
#, fuzzy
msgid "Video Player"
msgstr "_Einstellung Spieler"
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
msgid "Autostart"
msgstr ""
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
msgid ""
"Automatically start the player when loading a media file (either directly or "
"through a package)"
msgstr ""
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
msgid "Fulscreen timestamp"
msgstr ""
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
msgid "Display the timestamp over the video when in fullscreen mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
msgid "Enable captions"
msgstr ""
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
#, fuzzy
msgid "Enable captions over the video"
msgstr "Zeige Kommentare an einer Timeline"
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
msgid "Caption font"
msgstr ""
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
msgid "TrueType font for captions"
msgstr ""
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG"
msgstr ""
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG captions over the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
msgid "Enable snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width"
msgstr ""
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width in pixels."
msgstr ""
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity"
msgstr ""
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity level. -1 for no messages."
msgstr ""
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
msgid "Devices"
msgstr ""
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
msgid "Standard"
msgstr ""
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "DVD drive"
msgstr ""
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "Drive letter for the DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
msgid "GDI"
msgstr ""
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
msgid "Direct X"
msgstr ""
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "DVD device"
msgstr ""
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "Device for the DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
msgid "X11"
msgstr ""
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
msgid "XVideo"
msgstr ""
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
msgid "GL"
msgstr ""
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output"
msgstr ""
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output module"
msgstr ""
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
msgid "Recorder options"
msgstr ""
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
msgid "Audio input"
msgstr ""
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
msgid "Device name for audio input (with gstrecorder plugin)"
msgstr ""
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record video"
msgstr ""
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record both video and audio"
msgstr ""
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
msgid "<i>Experimental</i>"
msgstr ""
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
msgid "Embed the caption scroller below the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
msgid "Embed the caption view below the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
msgid "Time-related"
msgstr ""
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
#, fuzzy
msgid "Time format"
msgstr "T_imeline"
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
msgid "Format used to display timecodes"
msgstr ""
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
msgid "Default FPS"
msgstr ""
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
msgid ""
"Default FPS (frame-per-second) value, when entering or displaying timestamps "
"with frame numbers."
msgstr ""
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
#, fuzzy
msgid "Time increment"
msgstr "T_imeline"
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
msgid ""
"Skip duration, when using control-left/right or forward/rewind buttons (in "
"ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
msgid "Second time increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
msgid "Skip duration, when using control-shift-left/right (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
#, fuzzy
msgid "Third time increment"
msgstr "T_imeline"
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
msgid "Skip duration, when using control-shift-up/down (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid "Custom Up/Down"
msgstr ""
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid ""
"Use third time increment for up/down navigation without having to hold shift."
msgstr ""
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid "Scroll increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid ""
"On most annotations, control+scrollwheel will increment/decrement their "
"bounds by this value (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid "Second scroll increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid ""
"On most annotations, control+shift+scrollwheel will increment/decrement "
"their bounds by this value (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
#, fuzzy
msgid "Player sync"
msgstr "_Spieler"
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
msgid ""
"Interval (in ms) with which we synchronize slave players. Setting a too-low "
"value could render the application unusable. Use 0 to disable continuous "
"synchronization."
msgstr ""
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
msgid "Timeline parameters"
msgstr ""
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
msgid "Font size"
msgstr ""
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
msgid "Font size for annotation widgets"
msgstr ""
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
msgid "Button height"
msgstr ""
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
msgid "Height of annotation widgets"
msgstr ""
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Interline height"
msgstr ""
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Height of interlines"
msgstr ""
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
#, fuzzy
msgid "Text content"
msgstr "von einem Anmerkungs Typ"
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
msgid "Completion mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
msgid "Enable dynamic completion mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
msgid "Abbreviation mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
msgid "Enable abbreviation mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
msgid "Abbreviations"
msgstr ""
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
msgid ""
"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
"followed by its replacement."
msgstr ""
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
msgid "Text-To-Speech"
msgstr ""
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
msgid "TTS language"
msgstr ""
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
msgid "What language settings should be used for text-to-speech"
msgstr ""
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
msgid "English"
msgstr ""
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
msgid "French"
msgstr ""
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
msgid "Spanish"
msgstr ""
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
msgid "TTS Encoding"
msgstr ""
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
msgid "What encoding should be used to communicate with the TTS engine"
msgstr ""
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
msgid "TTS Engine"
msgstr ""
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
msgid ""
"Which TTS engine should be used (modification requires restarting Advene to "
"take into account)"
msgstr ""
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
msgid "Automatic"
msgstr ""
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
msgid "eSpeak"
msgstr ""
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
msgid "Custom script with standard input"
msgstr ""
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
msgid "Custom script with arguments"
msgstr ""
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
msgid "SAPI"
msgstr ""
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
msgid "MacOS X say"
msgstr ""
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
msgid "Generic (text output)"
msgstr ""
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
msgid "You should restart Advene to take some options into account."
msgstr ""
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
#, python-format
msgid "Imagecache saved to %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
msgid "Restarting player..."
msgstr ""
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
#, fuzzy
msgid "Advene log"
msgstr "Advene"
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
msgid "Select the package to merge"
msgstr ""
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
msgid "Saving workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
msgid "Enter a view name to save the workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
#, fuzzy
msgid "Default workspace"
msgstr "Aktuelle Sitzung speichern"
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
msgid "Open this workspace when opening the package"
msgstr ""
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
#, python-format
msgid "Error: the view %s exists and is not a workspace view."
msgstr ""
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
#, python-format
msgid "Cannot save default workspace: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
msgid "Standard workspace has been saved"
msgstr ""
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
msgid "Website export"
msgstr ""
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
msgid "Exporting views to a website"
msgstr ""
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
msgid "Output directory"
msgstr ""
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
msgid "Specify the output directory"
msgstr ""
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
msgid "Maximum recursion depth"
msgstr ""
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
msgid "Video URL"
msgstr ""
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
msgstr ""
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
msgid "Could not export data: "
msgstr ""
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
#, fuzzy, python-format
msgid "Website export to %s completed"
msgstr "Datei _importieren"
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
msgid "This video player is not able to grab specific screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
#, python-format
msgid "Updating %d snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
msgid "No snapshot to update"
msgstr ""
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
msgid "You first must load a movie into Advene"
msgstr ""
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
#, python-format
msgid "The movie %s does not seem to exist."
msgstr ""
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
msgid "Generating screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
msgid ""
"<b>Screenshot generation</b>\n"
"\n"
@@ -6724,42 +6876,42 @@ msgid ""
"open."
msgstr ""
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
msgid ""
"The <b>shotdetect</b> application does not seem to be installed. Please "
"check that it is present and that its path is correctly specified in "
"preferences."
msgstr ""
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
msgid ""
"Cannot import shotdetect output. Did you install the shotdetect software?"
msgstr ""
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
msgid "Incomplete shots"
msgstr ""
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
#, python-format
msgid "Detected %s shots"
msgstr ""
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
#, python-format
msgid "Could not run shotdetect: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
#, python-format
msgid "Detecting shots from %s"
msgstr ""
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
msgid "Shot detection"
msgstr ""
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
msgid ""
"<b>Shot detection</b>\n"
"\n"
@@ -6769,13 +6921,13 @@ msgid ""
"to augment its value."
msgstr ""
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
msgid "Sensitivity"
msgstr ""
#: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
msgid "Plain text content"
msgstr ""
@@ -6784,8 +6936,8 @@ msgid "HTML content"
msgstr ""
#: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
msgid "Simple-structured content"
msgstr ""
@@ -6794,8 +6946,8 @@ msgid "List of numeric values"
msgstr ""
#: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
msgid "SVG graphics content"
msgstr ""
@@ -7076,48 +7228,40 @@ msgstr ""
msgid "Importer"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
#, fuzzy
msgid "Advene package importer"
msgstr "Bearbeite Packet Eigentschaften"
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
msgid "Not likely"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
#, python-format
msgid "Completed conversion: %(statistics)s"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
#: ../lib/advene/gui/edit/dvdselect.py:73
msgid "Stop"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:141
-#, python-format
-msgid "Importing %s"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
msgid "Choose the file to import"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Filename"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
#, fuzzy
msgid "Filter"
msgstr "_Datei"
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
msgid "Options"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
msgid "Start"
msgstr ""
@@ -7184,8 +7328,8 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
msgid "Rectangular zone content"
msgstr ""
@@ -7248,7 +7392,7 @@ msgid "New resource data"
msgstr ""
#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
msgid "Properties"
msgstr ""
@@ -7491,7 +7635,7 @@ msgid "Error: cannot find a content handler for %s"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
#, python-format
msgid ""
"Cannot read the data:\n"
@@ -7499,12 +7643,12 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
msgid "Save content to..."
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
#, python-format
msgid ""
"Cannot save the data:\n"
@@ -7512,17 +7656,17 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
msgid "Open a file (C-o)"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
msgid "Save to a file (C-s)"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
msgid "Reload the file (C-r)"
msgstr ""
@@ -7530,15 +7674,15 @@ msgstr ""
msgid "Insert a value from the browser (C-i)"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
msgid "Begin time is greater than end time"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
msgid "Expecting an integer."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
#, python-format
msgid ""
"The %(attribute)s attribute could not be updated:\n"
@@ -7548,7 +7692,7 @@ msgid ""
"Resetting to the original value."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
#, python-format
msgid ""
"The following attributes cannot be updated:\n"
@@ -7556,7 +7700,7 @@ msgid ""
"%s"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
#, python-format
msgid ""
"The following attributes could not be updated:\n"
@@ -7564,25 +7708,25 @@ msgid ""
"%s"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
msgid "Attribute"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
msgid "Insert an element"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
msgid "Choose the element to insert."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
#, python-format
msgid "Some tags contain invalid characters: %s"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
msgid "Tags:"
msgstr ""
@@ -7694,8 +7838,9 @@ msgid "Condition expression: %s"
msgstr ""
#: ../lib/advene/gui/edit/rules.py:765
-msgid "The id of the annotation type"
-msgstr ""
+#, fuzzy
+msgid "The annotation type"
+msgstr "Kommentar Typ"
#: ../lib/advene/gui/edit/rules.py:768
#, fuzzy, python-format
@@ -7754,8 +7899,9 @@ msgid "The element duration"
msgstr ""
#: ../lib/advene/gui/edit/rules.py:793
-msgid "The id of the element type"
-msgstr ""
+#, fuzzy
+msgid "The element type"
+msgstr "Wähle einen DVD"
#: ../lib/advene/gui/edit/rules.py:794
msgid "The element's incoming relations"
@@ -7773,6 +7919,16 @@ msgstr ""
msgid "The context fragment"
msgstr ""
+#: ../lib/advene/gui/edit/rules.py:809
+#, fuzzy, python-format
+msgid "annotation-type %s"
+msgstr "Kommentar Typ"
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, fuzzy, python-format
+msgid "relation-type %s"
+msgstr "von einem Anmerkungs Typ"
+
#: ../lib/advene/gui/edit/rules.py:834
msgid "Select a condition"
msgstr ""
@@ -7791,59 +7947,59 @@ msgstr ""
msgid "Activate?"
msgstr "Aktivieren und Abspielen"
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
#, fuzzy
msgid "Schema Editor"
msgstr "Schema"
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
#, fuzzy
msgid "Display"
msgstr "Verbindungs Type"
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
#, fuzzy
msgid "Remove relation type"
msgstr "Verbindungs Type"
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
msgid "Create HTML view"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
#, fuzzy
msgid "Remove annotation type"
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
msgid "Create relation type between this one and..."
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
#, fuzzy
msgid "New schema"
msgstr "Schema"
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
#, fuzzy
msgid "New annotation type"
msgstr "Kommentar Typ"
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
#, fuzzy
msgid "New relation type"
msgstr "Verbindungs Type"
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
msgid "Hide this schema"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
msgid "Export drawing to pdf"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
msgid "Choose a filename to export the schema as PDF"
msgstr ""
@@ -8134,102 +8290,102 @@ msgstr ""
msgid "Click to see more frames or scroll with the mouse wheel"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
msgid "Generic shape"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
#, python-format
msgid "Link to %s"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
msgid "Link"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
msgid "Link label"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
msgid "Linewidth"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
msgid "Filled"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
#, python-format
msgid "Properties of %s"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
msgid "Rectangle"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
msgid "Text"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
msgid "Textsize"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
msgid "Image"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
msgid "Href"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
msgid "Line"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
msgid "Draw an arrow"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
msgid "Arrow size"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
msgid "Circle"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
msgid "Ellipse"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
msgid "SVG"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
msgid "Load SVG"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
msgid "Save SVG"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
#, python-format
msgid "Decrement value by %.2f s"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
#, python-format
msgid "Increment value by %.2f s"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
msgid ""
"Click to play\n"
"Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8237,7 +8393,7 @@ msgid ""
"Right-click to invalidate screenshot"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
msgid ""
"Enter a timecode.\n"
"An integer value will be considered as milliseconds.\n"
@@ -8245,7 +8401,7 @@ msgid ""
"HH:MM:SS.sss values are possible."
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
msgid "Set to current player position"
msgstr ""
@@ -8885,12 +9041,18 @@ msgid "Directory %s is not an extracted Advene zip package."
msgstr ""
#, fuzzy
-#~ msgid "Display overlay"
-#~ msgstr "Verbindungs Type"
+#~ msgid "Aiff importer"
+#~ msgstr "Datei _importieren"
+
+#~ msgid "Package _Imports"
+#~ msgstr "Packet _Importierungen"
+
+#~ msgid "Edit imported element from other packages"
+#~ msgstr "Bearbeite importierte Element von anderen Packeten"
#, fuzzy
-#~ msgid "Display snapshot"
-#~ msgstr "Zeige Shortcuts"
+#~ msgid "Display overlay"
+#~ msgstr "Verbindungs Type"
#, fuzzy
#~ msgid "Exporter"
@@ -8982,10 +9144,6 @@ msgstr ""
#~ msgstr "Zeige die Transkription für eine Anmerkung"
#, fuzzy
-#~ msgid "Deleting an annotation"
-#~ msgstr "von einem Anmerkungs Typ"
-
-#, fuzzy
#~ msgid "Creating a relation"
#~ msgstr "von einem Anmerkungs Typ"
diff --git a/po/eo.po b/po/eo.po
index af50be6..f024512 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
"PO-Revision-Date: 2006-04-07 11:42+0200\n"
"Last-Translator: Olivier Aubert <olivier.aubert at liris.cnrs.fr>\n"
"Language-Team: advene at liris.cnrs.fr\n"
@@ -81,113 +81,118 @@ msgid ""
"The following processes seem to use the %(port)s port: %(processes)s"
msgstr ""
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr ""
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
#, python-format
msgid "Loaded %(uri)s as %(alias)s"
msgstr ""
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
#, python-format
msgid "Cannot load package from file %(uri)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr ""
+
+#: ../lib/advene/core/controller.py:966
#, python-format
msgid "Cannot get audio volume: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr ""
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
msgid "None"
msgstr ""
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
#, python-format
msgid "Found matching video file in moviepath: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
msgid "Analysis of "
msgstr ""
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
msgid "Cannot split the annotation: the given position is outside."
msgstr ""
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
#, python-format
msgid "Cannot find the template package %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
#, python-format
msgid "Cannot read the imported package %(uri)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
msgid "Package URI has changed. Reloading package with new URI."
msgstr ""
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
msgid ""
"Cannot load package: the following annotations do not have Millisecond "
"fragments:"
msgstr ""
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
#, python-format
msgid "Cannot handle master attribute, the package %s is not imported."
msgstr ""
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
#, python-format
msgid "Checking master package %s for not yet imported elements."
msgstr ""
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
#, fuzzy
msgid "Standard summary"
msgstr "Defauxlta regularo"
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
#, fuzzy
msgid "Default view"
msgstr "Defauxlta regularo"
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
#, python-format
msgid ""
"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
msgstr ""
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
#, python-format
msgid "Got exception %s when stopping player."
msgstr ""
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
#, python-format
msgid "Raised exception in update_status: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
msgid "Unable to start the player."
msgstr ""
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
#, fuzzy, python-format
msgid "Comment on set of %d annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
#, fuzzy, python-format
msgid "Comment on %s"
msgstr "Arbvido"
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
#, python-format
msgid ""
"<h1>Comment on %(title)s</h1>\n"
@@ -199,23 +204,23 @@ msgid ""
"\"%(imgurl)s\" ></img></a></span>"
msgstr ""
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
#, fuzzy, python-format
msgid "List of %s annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
#, python-format
msgid "Cannot export to %(filename)s: %(e)s"
msgstr ""
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
#, python-format
msgid "Error when exporting: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
#, python-format
msgid "Data exported to %s"
msgstr ""
@@ -952,11 +957,15 @@ msgid ""
"fr/advene/\">Advene</a> v. %s.</em></p>"
msgstr ""
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
#, python-format
msgid "Cannot start HTTP server: %s"
msgstr ""
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+
#: ../lib/advene/plugins/featuredetect.py:42
msgid "Feature detection (face...)"
msgstr ""
@@ -1000,7 +1009,7 @@ msgstr ""
msgid "Anvil importer"
msgstr "Importi dosieron"
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
#, fuzzy
msgid "TED importer"
msgstr "Importi dosieron"
@@ -1073,11 +1082,72 @@ msgid ""
"too many shots are detected, try to increase its value."
msgstr ""
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
#, fuzzy, python-format
msgid "Detected shot #%(num)d at %(pos)s "
msgstr "Krei komentajxojn de DVD cxapitroj"
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+#, fuzzy
+msgid "Generating annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, fuzzy, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr ""
+
#: ../lib/advene/plugins/tts.py:77
msgid "Pronounce a text"
msgstr ""
@@ -1098,12 +1168,12 @@ msgstr ""
msgid "The annotation content"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
#: ../lib/advene/gui/plugins/actions.py:234
msgid "Unknown rule"
msgstr ""
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
#: ../lib/advene/gui/plugins/actions.py:235
#, python-format
msgid ""
@@ -1125,6 +1195,28 @@ msgstr ""
msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
msgstr ""
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:75
+#, fuzzy
+msgid "Importing subtitles"
+msgstr "Importi dosieron"
+
+#: ../lib/advene/plugins/fcp.py:90
+#, fuzzy
+msgid "Importing clips"
+msgstr "Importi dosieron"
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr ""
+
#: ../lib/advene/plugins/mpeg7.py:54
#, fuzzy
msgid "MPEG7 importer"
@@ -1155,29 +1247,6 @@ msgstr "Krei komentajxojn de DVD cxapitroj"
msgid "Importing annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/plugins/aiff.py:35
-#, fuzzy
-msgid "Aiff importer"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:77
-#, fuzzy
-msgid "Importing subtitles"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/plugins/aiff.py:92
-#, fuzzy
-msgid "Importing clips"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr ""
-
#: ../lib/advene/plugins/dcp.py:65
#, fuzzy
msgid "DCP importer"
@@ -1188,11 +1257,11 @@ msgstr "Importi dosieron"
msgid "Converting #%(num)d / %(count)d"
msgstr ""
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
msgid "Input from the braille table."
msgstr ""
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
msgid "BrlTTY not installed. There will be no braille support."
msgstr ""
@@ -1209,16 +1278,16 @@ msgstr "Krei komentajxojn de DVD cxapitroj"
msgid "Message to display."
msgstr ""
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
#, python-format
msgid "BrlTTY connection error: %s"
msgstr ""
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
msgid "Braille display: "
msgstr ""
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
msgid "No message"
msgstr ""
@@ -1263,18 +1332,18 @@ msgid "Parsing section information"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
msgid "Creating package"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
#, fuzzy
msgid "Creating annotation types"
msgstr "Krei komentajxojn de DVD cxapitroj"
#: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
msgid "Parsing header information"
msgstr ""
@@ -1303,11 +1372,6 @@ msgstr ""
msgid "Channel selection."
msgstr "Vido"
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#, fuzzy
-msgid "Generating annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
#: ../lib/advene/plugins/soundenveloppe.py:115
#, python-format
msgid "At %s"
@@ -1349,7 +1413,7 @@ msgstr ""
msgid "Starting silence detection"
msgstr "Defauxlta regularo"
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
#, fuzzy
msgid "Aeidon (subtitles) importer"
msgstr "Importi dosieron"
@@ -1391,236 +1455,236 @@ msgstr ""
msgid "Converted from %s"
msgstr ""
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
#, fuzzy
msgid "ExternalApp importer"
msgstr "Importi dosieron"
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
#, python-format
msgid ""
"The <b>%s</b> application does not seem to be installed. Please check that "
"it is present and that its path is correctly specified in preferences."
msgstr ""
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
#, fuzzy, python-format
msgid "The file %s does not seem to exist."
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
#, fuzzy, python-format
msgid "Could not run %(appname)s: %(msg)s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
#, fuzzy, python-format
msgid "Processing %s"
msgstr "Importi dosieron"
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
msgid "Cleaning up..."
msgstr ""
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
msgid "Text importer"
msgstr ""
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
msgid "Specify the encoding of the input file (latin1, utf8...)"
msgstr ""
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
msgid "lsdvd importer"
msgstr ""
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
msgid "Processing data"
msgstr ""
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
#, fuzzy
msgid "DVD Chapter"
msgstr "Importi DVD cxapitrojn"
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
msgid "Launching lsdvd..."
msgstr ""
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
msgid "chaplin importer"
msgstr ""
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
msgid "Xi importer"
msgstr ""
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
msgid "ELAN importer"
msgstr ""
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
#, python-format
msgid "Converting tier %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
msgid "Processing time slots"
msgstr ""
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
#, fuzzy
msgid "Fixing forward references"
msgstr "Interfacaj preferoj"
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
msgid "Creating relations"
msgstr ""
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
msgid "Subtitle (SRT) importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
#, python-format
msgid "Subtitles from %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
msgid "PRAAT importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
msgid "CMML importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
msgid "Parsing clip information"
msgstr ""
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
msgid "Creating CMML schema"
msgstr ""
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
msgid "Parsing stream information"
msgstr ""
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
#, fuzzy
msgid "IRI importer"
msgstr "Importi dosieron"
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
msgid "Generate one type per view"
msgstr ""
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
#, python-format
msgid "Parsing ensemble %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
#, python-format
msgid "Parsing decoupage %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
msgid "Parsing views"
msgstr ""
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
msgid "Initializing package"
msgstr ""
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
#, fuzzy
msgid "IRIData importer"
msgstr "Importi dosieron"
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
msgid "Parsing sound values"
msgstr ""
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
#, fuzzy
msgid "Creating annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
msgid "Package"
msgstr ""
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
msgid "Annotation"
msgstr ""
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
msgid "Relation"
msgstr ""
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
msgid "Schema"
msgstr ""
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
msgid "Annotation Type"
msgstr ""
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
msgid "Relation Type"
msgstr ""
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
msgid "View"
msgstr ""
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
#: ../lib/advene/gui/main.py:278
msgid "Query"
msgstr ""
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
msgid "Resource Folder"
msgstr ""
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
msgid "Resource File"
msgstr ""
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
msgid "---- Elements ----"
msgstr ""
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
msgid "---- Attributes ----"
msgstr ""
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
msgid "---- Methods ----"
msgstr ""
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
#, python-format
msgid "Cannot read %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
#, python-format
msgid "File %s is not an Advene zip package."
msgstr ""
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
#, python-format
msgid ""
"Error:\n"
"%s"
msgstr ""
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
#, python-format
msgid ""
"Package %(title)s:\n"
@@ -1634,81 +1698,81 @@ msgid ""
"%(description)s\n"
msgstr ""
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schema"
msgstr ""
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schemas"
msgstr ""
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotation"
msgstr ""
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotations"
msgstr ""
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation type"
msgstr ""
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation types"
msgstr ""
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relation"
msgstr ""
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relations"
msgstr ""
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation type"
msgstr ""
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation types"
msgstr ""
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "query"
msgstr ""
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "queries"
msgstr ""
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "view"
msgstr ""
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "views"
msgstr ""
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "package"
msgstr ""
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "packages"
msgstr ""
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
#, python-format
msgid "No %s"
msgstr ""
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
#, python-format
msgid "1 %s"
msgstr ""
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
#, python-format
msgid "%(count)d %(plural)s"
msgstr ""
@@ -1723,32 +1787,32 @@ msgstr ""
msgid "%s does not exist"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
msgid "Starting export"
msgstr ""
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
#, python-format
msgid "Depth %d"
msgstr ""
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
#, python-format
msgid "Depth %(depth)d: processing %(url)s"
msgstr ""
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
msgid "Finalizing"
msgstr ""
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
#, python-format
msgid ""
"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
"strong></p>"
msgstr ""
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
#, fuzzy
msgid "Export complete"
msgstr "Importi dosieron"
@@ -1815,12 +1879,12 @@ msgid ""
"\n"
msgstr ""
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
#, fuzzy, python-format
msgid "Renumbering annotations of type %s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
msgid ""
"<b>Renumber all annotations according to their order.</b>\n"
"\n"
@@ -1834,26 +1898,26 @@ msgid ""
"The offset parameter allows you to renumber from a given annotation."
msgstr ""
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
msgid "Offset"
msgstr ""
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
#, fuzzy, python-format
msgid "Renumbering %d annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
#, fuzzy, python-format
msgid "Annotation #%d"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
#, fuzzy, python-format
msgid "Extracting %s"
msgstr "Importi dosieron"
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
#, python-format
msgid ""
"Exporting annotation %(title)s\n"
@@ -1861,281 +1925,287 @@ msgid ""
"to %%(filename)s"
msgstr ""
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
msgid "Edit"
msgstr ""
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
msgid "Browse"
msgstr ""
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
#, fuzzy
msgid "Open in web browser"
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
msgid "Delete"
msgstr ""
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
#, fuzzy
msgid "Search/replace content"
msgstr "Arbvido"
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
msgid "Activate"
msgstr ""
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
msgid "Desactivate"
msgstr ""
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
#: ../lib/advene/gui/plugins/tracetimeline.py:980
#: ../lib/advene/gui/plugins/tracetimeline.py:1001
#: ../lib/advene/gui/edit/transcribe.py:502
msgid "Go to..."
msgstr ""
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
msgid "Loop"
msgstr ""
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
msgid "Duplicate"
msgstr ""
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight"
msgstr ""
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+#, fuzzy
+msgid "Save snapshot..."
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/popup.py:519
#, fuzzy
msgid "Extract video fragment"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
msgid "Incoming"
msgstr ""
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
msgid "Outgoing"
msgstr ""
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
#, fuzzy
msgid "Related annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
msgid "Incoming relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
msgid "Outgoing relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
#, python-format
msgid "Begin: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
#, python-format
msgid "End: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
#, fuzzy, python-format
msgid "Duration: %s"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
msgid "Members:"
msgstr ""
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
#, fuzzy
msgid "Edit package properties..."
msgstr "Redakti komentarajn attributojn"
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
#, fuzzy, python-format
msgid "%d annotations(s) - statistics"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
#, fuzzy
msgid "Create a new static view..."
msgstr "Arbvido"
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
#, fuzzy
msgid "Create a new dynamic view..."
msgstr "Arbvido"
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
msgid "Create a new annotation..."
msgstr ""
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
msgid "Create a new schema..."
msgstr ""
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
msgid "Create a new query..."
msgstr ""
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
msgid "Create a new folder..."
msgstr ""
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
msgid "Create a new resource file..."
msgstr ""
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
msgid "Insert a new resource file..."
msgstr ""
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
msgid "Insert a new resource directory..."
msgstr ""
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
msgid "Insert a soundclip..."
msgstr ""
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
msgid "Play sound"
msgstr ""
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
msgid "Create a new annotation type..."
msgstr ""
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
msgid "Create a new relation type..."
msgstr ""
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
msgid "Select a color"
msgstr ""
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
#, python-format
msgid "A caption dynamic view for %s already seems to exist."
msgstr ""
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
#, fuzzy, python-format
msgid "Caption %s annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
msgid "Caption the annotation"
msgstr ""
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
#, fuzzy
msgid "Create a comment view"
msgstr "Arbvido"
-#: ../lib/advene/gui/popup.py:740
+#: ../lib/advene/gui/popup.py:739
#, fuzzy
-msgid "Generate a caption dynamic view"
+msgid "Generate a caption dynamic view..."
msgstr "Arbvido"
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
msgid "Display as transcription"
msgstr ""
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
#, fuzzy
msgid "Display annotations in table"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
#, fuzzy
msgid "Export to another format..."
msgstr "Importi datumo de alia ???"
-#: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
-msgstr ""
+#: ../lib/advene/gui/popup.py:748
+#, fuzzy
+msgid "Delete all annotations"
+msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:750
+#: ../lib/advene/gui/popup.py:749
#, fuzzy
-msgid "Renumber annotations"
+msgid "Renumber annotations..."
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:751
+#: ../lib/advene/gui/popup.py:750
#, fuzzy
-msgid "Adjust annotation bounds"
+msgid "Adjust annotation bounds..."
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
#, python-format
msgid "A follow dynamic view for %s already seems to exist."
msgstr ""
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
#, fuzzy, python-format
msgid "Follow %s relation-type"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
#, fuzzy
msgid "Follow the relation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
msgid "Delete all relations..."
msgstr ""
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
#, fuzzy
msgid "Create montage from related annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
#, fuzzy
msgid "Create dynamic view following relations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
#, python-format
msgid "Exception in query: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
msgid "Apply query on..."
msgstr ""
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
#, fuzzy
msgid "the package"
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
#, fuzzy
msgid "all annotations of the package"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
#, fuzzy
msgid "the first annotation of the package"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
msgid "Activate view"
msgstr ""
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
#, fuzzy
msgid "Open adhoc view"
msgstr "Defauxlta regularo"
@@ -2312,31 +2382,31 @@ msgid "Cannot remove this widget, it is essential."
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
msgid "...in its own window"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:125
#: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
msgid "...embedded east of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:126
#: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
msgid "...embedded west of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:127
#: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
msgid "...embedded south of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:128
#: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
msgid "...embedded at the right of the window"
msgstr ""
@@ -2418,7 +2488,7 @@ msgid "to create a new static view"
msgstr "Arbvido"
#: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
#, fuzzy
msgid "as a transcription"
msgstr "Vidi komentajxojn sur templinio"
@@ -2556,8 +2626,8 @@ msgstr ""
msgid "Path"
msgstr ""
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
#: ../lib/advene/gui/edit/elements.py:508
#: ../lib/advene/gui/edit/elements.py:557
#: ../lib/advene/gui/edit/elements.py:657
@@ -2565,47 +2635,70 @@ msgid "Type"
msgstr ""
#: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
msgid "Value"
msgstr ""
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:39
+#, fuzzy
+msgid "Check various package properties"
+msgstr "Redakti komentarajn attributojn"
+
+#: ../lib/advene/gui/views/checker.py:90
+#, fuzzy
+msgid "List of possible issues in the current package"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:55
#, fuzzy
msgid "Annotation table view"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
#, fuzzy
msgid "Display annotations in a table"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
#, fuzzy
msgid "Snapshot"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
#: ../lib/advene/gui/edit/elements.py:675
#: ../lib/advene/gui/edit/elements.py:717
#: ../lib/advene/gui/edit/elements.py:1108
msgid "Content"
msgstr ""
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
msgid "Begin"
msgstr ""
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
msgid "End"
msgstr ""
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
msgid "Duration"
msgstr ""
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
#: ../lib/advene/gui/edit/elements.py:507
#: ../lib/advene/gui/edit/elements.py:556
@@ -2619,58 +2712,58 @@ msgstr ""
msgid "Id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
msgid "Export data to file..."
msgstr ""
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
#, python-format
msgid "Error while exporting data to %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "type"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "begin"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "end"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
#, fuzzy
msgid "content"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
msgid "Generic table view"
msgstr ""
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
msgid "Display Advene elements in a table."
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element title"
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element type"
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
#, fuzzy
msgid "Element id"
msgstr "Arbvido"
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
#: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
#: ../lib/advene/gui/edit/imports.py:331
#: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2713,14 +2806,14 @@ msgstr "Defauxlta regularo"
msgid "Adhoc views"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
#, fuzzy
msgid "Tree view"
msgstr "Arbvido"
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
msgid "Refresh"
msgstr ""
@@ -2728,29 +2821,82 @@ msgstr ""
msgid "Package View"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, fuzzy, python-format
+msgid "Duplicate selection to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, fuzzy, python-format
+msgid "Move selection to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, fuzzy, python-format
+msgid "Duplicate annotation to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, fuzzy, python-format
+msgid "Move annotation to type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+#, fuzzy
+msgid "Duplicate and create a relation"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+#, fuzzy
+msgid "Create a new relation-type."
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
#, fuzzy
msgid "AnnotationDisplay"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
#, fuzzy
msgid "Display the contents of an annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
#, fuzzy
msgid "No annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
#, fuzzy
msgid "Current time"
msgstr "Arbvido"
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
#, python-format
msgid ""
"Schema %(schema)s\n"
@@ -2759,16 +2905,22 @@ msgid ""
"Id: %(id)s"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
msgid "Screenshot"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
#: ../lib/advene/gui/views/relationdisplay.py:104
#, fuzzy
msgid "Contents"
msgstr "Defauxlta regularo"
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+#, fuzzy
+msgid "Validate"
+msgstr "Vido"
+
#: ../lib/advene/gui/views/__init__.py:193
msgid "Invalid view id"
msgstr ""
@@ -2792,7 +2944,7 @@ msgstr ""
msgid "Enter a view name to save this parametered view"
msgstr ""
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
#, python-format
msgid "Error: the identifier %s contains invalid characters."
msgstr ""
@@ -2826,7 +2978,7 @@ msgstr ""
msgid "Click or drag-and-drop to reattach view"
msgstr ""
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
msgid "Caption"
msgstr ""
@@ -2845,137 +2997,117 @@ msgstr ""
msgid "Navigation popup"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
msgid "Transcription"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
#, fuzzy
msgid "Display annotations as a text transcription"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
#: ../lib/advene/gui/edit/montage.py:54
#: ../lib/advene/gui/edit/transcribe.py:85
#, fuzzy
msgid "Save view"
msgstr "Arbvido"
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
#: ../lib/advene/gui/views/interactivequery.py:60
#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
#: ../lib/advene/gui/edit/transcribe.py:86
msgid "Save default options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
#, python-format
msgid "Error in source evaluation %(source)s: %(error)s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
#, fuzzy
msgid "Transcription options"
msgstr "Importi transkribon"
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
#, fuzzy
msgid "Default representation"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
msgid "Use the default representation for annotations"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
#: ../lib/advene/gui/edit/elements.py:962
msgid "Representation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
msgid ""
"If default representation is unchecked,\n"
"this TALES expression that will be used to format the annotations."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
msgid "Separator"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
msgid "This separator will be inserted between the annotations."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
msgid "Whitespace"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
#, fuzzy
msgid "Newline"
msgstr "Templinio"
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
#, fuzzy
msgid "Tabulation"
msgstr "Vido"
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
msgid "Dash"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
msgid "User defined"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid "User-defined separator"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid ""
"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
"a tabulation."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Display timestamps"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Insert timestsamp values"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
msgid "Display annotation bounds"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:207
-#, fuzzy
-msgid "Updating modified annotations"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
#, python-format
msgid ""
"Cannot convert the following annotations,\n"
@@ -2983,56 +3115,56 @@ msgid ""
"%s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
msgid ""
"Cannot validate the update.\n"
"The representation pattern is too complex."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
#, fuzzy
msgid "Save transcription to a text file"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
msgid "Apply the modifications"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
msgid "Find text"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
msgid "Quickly switch display options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
#, fuzzy
msgid "Refresh the transcription"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
#, fuzzy
msgid "Edit preferences"
msgstr "Preferoj"
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
#, python-format
msgid "Annotation %s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
msgid "Play"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
#, python-format
msgid "Cannot write to %(filename)s: %(error)s:"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
#: ../lib/advene/gui/edit/transcribe.py:884
#, python-format
msgid "Transcription saved to %s"
@@ -3194,7 +3326,7 @@ msgstr ""
msgid "Convert bookmarks to annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
#, fuzzy
msgid "Comment here"
msgstr "Arbvido"
@@ -3264,7 +3396,7 @@ msgid "Result of a query"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
#, python-format
msgid "'%s'"
msgstr ""
@@ -3289,7 +3421,7 @@ msgid "Search/replace content in %d elements"
msgstr "Arbvido"
#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
msgid "Empty quicksearch string"
msgstr ""
@@ -3303,7 +3435,7 @@ msgid "Edit query"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
msgid "String to search"
msgstr ""
@@ -3454,7 +3586,7 @@ msgstr ""
msgid "Edit resource"
msgstr "Preferoj"
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
#, fuzzy
msgid "Package finder"
msgstr "Komentaraj attributoj"
@@ -3468,7 +3600,7 @@ msgstr "Komentaraj attributoj"
msgid "Tag Bag"
msgstr ""
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
msgid "Bag of tags"
msgstr ""
@@ -3477,8 +3609,8 @@ msgid "New tag"
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
#: ../lib/advene/gui/edit/properties.py:46
#: ../lib/advene/gui/edit/transcribe.py:147
#: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3494,7 +3626,7 @@ msgid "Enter a new tag name and select its color."
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
msgid "Name"
msgstr ""
@@ -3502,13 +3634,13 @@ msgstr ""
#: ../lib/advene/gui/edit/elements.py:871
#: ../lib/advene/gui/edit/elements.py:951
#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
#: ../lib/advene/rules/actions.py:133
msgid "Color"
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
msgid "The tag contains invalid characters"
msgstr ""
@@ -3562,63 +3694,58 @@ msgstr "Krei komentajxojn de DVD cxapitroj"
msgid "EditAccumulator"
msgstr ""
-#: ../lib/advene/gui/views/editaccumulator.py:70
-#, fuzzy
-msgid "Validate"
-msgstr "Vido"
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
msgid "Timeline"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
msgid "Display annotations on a timeline"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
#, fuzzy
msgid "Limit display to current area"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
#, fuzzy
msgid "Display whole movie"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
#, fuzzy, python-format
msgid "Cannot find annotation type %s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
msgid "No scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
msgid "Continuous scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
msgid "Discrete scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
#, fuzzy
msgid "Annotation scrolling"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
#, fuzzy, python-format
msgid "%d annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
#, fuzzy
msgid "Display all types"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
#, python-format
msgid ""
"There are %d annotations.\n"
@@ -3628,438 +3755,435 @@ msgid ""
"click on the 'Display all types' button below."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
#, fuzzy
msgid "Split at current player position"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
msgid "Center and zoom"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
#: ../lib/advene/rules/elements.py:1000
msgid "Creation of a new annotation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1066
-#, fuzzy
-msgid "Create a new relation-type."
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
#, fuzzy
msgid "Merge with this annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
msgid "Align both begin times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
msgid "Align both end times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
msgid "Align end time to selected begin time"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
msgid "Align begin time to selected end time"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
msgid "Align all times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
#, fuzzy
msgid "Select the appropriate relation type"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:1237
-#, fuzzy, python-format
-msgid "Duplicate selection to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, fuzzy, python-format
-msgid "Move selection to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, fuzzy, python-format
-msgid "Duplicate annotation to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, fuzzy, python-format
-msgid "Move annotation to type %s"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
#, fuzzy, python-format
msgid "Duplicate to type %(type)s at %(position)s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
#, python-format
msgid "Move to type %(type)s at %(position)s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1276
-#, fuzzy
-msgid "Duplicate and create a relation"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
#, fuzzy, python-format
msgid "Duplicate at %s and create a relation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
#, fuzzy
msgid "Annotation filter"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
msgid "Enter the searched string"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
#, fuzzy, python-format
msgid "Duplicate all annotations to type %s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
#, fuzzy, python-format
msgid "Move all annotations to type %s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
#, fuzzy, python-format
msgid "Duplicate all annotations matching a string to type %s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
#, fuzzy, python-format
msgid "Move all annotations matching a string to type %s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
#, python-format
msgid "Align all annotation time codes using %s as reference."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
#, python-format
msgid "Align all annotation contents using %s as reference"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, fuzzy, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/timeline.py:1946
+#, fuzzy
+msgid "Displaying done."
+msgstr "Vidi komentajxojn sur templinio"
+
+#: ../lib/advene/gui/views/timeline.py:2438
#, fuzzy
msgid "Create a new annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
#, fuzzy
msgid "Zoom on region"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
#, fuzzy
msgid "Restrict display to region"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
#: ../lib/advene/gui/edit/transcribe.py:496
#, python-format
msgid "Position %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
#, fuzzy
msgid "New annotation at player time"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
#, fuzzy
msgid "New annotation at mouse position"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
msgid "Selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
msgid "Cannot zoom more"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
#, python-format
msgid "From schema %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
#, fuzzy
msgid "Restrict playing to this annotation-type"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
#, fuzzy
msgid "Goto previous annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
#, fuzzy
msgid "Goto next annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
msgid "+"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
#: ../lib/advene/gui/edit/transcribe.py:1027
msgid "Create a new annotation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
#, fuzzy
msgid "Open an annotation display view"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
msgid "Open a slave montage view (coordinated zoom level)"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3109
#, fuzzy
msgid "No selected annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
#, fuzzy, python-format
msgid "%d selected annotation(s)"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
#, fuzzy
msgid "Unselect all annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
#, fuzzy
msgid "Create a static view"
msgstr "Arbvido"
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
msgid "Highlight selection in other views"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
#, fuzzy
msgid "Tag selection"
msgstr "Vido"
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
#, fuzzy
msgid "Delete selected annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
#, fuzzy
msgid "Display selection in a table"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
msgid "Center and zoom on selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
#, fuzzy
msgid "Edit selected annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
#, fuzzy
msgid "Merge annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+#, fuzzy
+msgid "Display statistics"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/views/timeline.py:3254
#, fuzzy
msgid "Goto previous page"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
#, fuzzy
msgid "Goto next page"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
#: ../lib/advene/gui/edit/montage.py:535
msgid "Inspector"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3348
#, fuzzy
msgid ""
"Delete the selected annotations or drop an annotation here to delete it."
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
msgid ""
"Drag an annotation type here to remove it from display.\n"
"Click to edit all displayed types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
#, fuzzy
msgid "Selection actions"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
msgid "Display relations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
#, fuzzy
msgid "Display all relations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
#: ../lib/advene/gui/plugins/tracetimeline.py:421
#: ../lib/advene/gui/edit/montage.py:439
msgid "Zoom out"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
#: ../lib/advene/gui/plugins/tracetimeline.py:426
#: ../lib/advene/gui/edit/montage.py:444
msgid "Zoom in"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
msgid "Center on current player position."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
msgid "Automatically activate loop when clicking on an annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
msgid "Displayed"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
#, fuzzy
msgid "Not displayed"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
msgid "< All <"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
msgid "> All >"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
#, fuzzy
msgid "Displayed annotation types"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
#, fuzzy
msgid "Relation type"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
#, fuzzy
msgid "Display relation types"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
#, fuzzy
msgid "Relation content"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
#, fuzzy
msgid "Display relation content"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight active annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
msgid "Enter the tag for the selection"
msgstr ""
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
msgid "Scroller"
msgstr ""
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
#, fuzzy, python-format
msgid "Set of %s annotations"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
#, fuzzy
msgid "Refresh snapshot"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+#, fuzzy
+msgid "Save as..."
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/widget.py:1072
#, fuzzy
msgid "Use current player position"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+#, fuzzy
+msgid "Adjust timestamp"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
#, fuzzy
msgid "Video player"
msgstr "Vido"
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
msgid "Complementary video player"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
#, fuzzy
msgid "Select video file"
msgstr "Vido"
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
#, fuzzy
msgid "Select a video file"
msgstr "Vido"
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
msgid "Synchronize"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
msgid "Offset in ms"
msgstr ""
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+#, fuzzy
+msgid "Drag and drop to get player time"
+msgstr "Vidi komentajxojn sur templinio"
+
#: ../lib/advene/gui/plugins/actions.py:52
msgid "Display a popup"
msgstr ""
@@ -4326,139 +4450,139 @@ msgstr "Defauxlta regularo"
msgid "New bookmark"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
#, fuzzy, python-format
msgid "Rendering type %(type)s as %(presentation)s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
msgid "Snapshot only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
msgid "Overlayed snapshot only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
msgid "Timestamp only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
msgid "Snapshot+timestamp"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
#, fuzzy
msgid "Annotation content"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
msgid "as a list"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
msgid "as a table"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
msgid "Play video"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
msgid "Show timestamp only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
#, fuzzy
msgid "Show content only"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
#, fuzzy
msgid "Show snapshot only"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
#, fuzzy
msgid "Show overlayed timestamp"
msgstr "Arbvido"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
#, fuzzy
msgid "Show overlayed content"
msgstr "Arbvido"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
#, fuzzy, python-format
msgid "Annotation type %s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
#, fuzzy
msgid "display as list"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
#, fuzzy
msgid "display as table"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
#, fuzzy
msgid "display as transcription"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
#, fuzzy
msgid "Open link"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
#, fuzzy, python-format
msgid "HTML editor: cannot parse content (%s)"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
#, fuzzy, python-format
msgid "Heading %d"
msgstr "Importi dosieron"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
msgid "Bold"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
msgid "Italic"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
msgid "Header"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
msgid "Copy"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
msgid "Cut"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
msgid "Paste"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
msgid "Undo"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
msgid "WYSIWYG editor"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
#, fuzzy
msgid "Edit HTML source"
msgstr "Preferoj"
@@ -4473,99 +4597,99 @@ msgstr "Defauxlta regularo"
msgid "Display shot validation interface"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
#, python-format
msgid "Merged #%(first)d-#%(second)d into #%(first)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
msgid "Last action undone"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
#, python-format
msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
#, python-format
msgid "Cannot split annotation #%(current)d: out of bounds."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
#, python-format
msgid "Changed cut between #%(first)d and %(second)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
#, fuzzy
msgid "Changed begin time for first annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
#, fuzzy
msgid "No annotations to adjust"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
msgid ""
"Click on the frame just after the cut to adjust the cut time.\n"
"Control-click on a frame to indicate a missing cut."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
#, python-format
msgid "Begin of #%(index)d (title: %(content)s)"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
msgid "< Previous cut"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
#, fuzzy
msgid "Display previous cut"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
msgid "Next cut >"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
#, fuzzy
msgid "Display next cut"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
#, fuzzy
msgid "Go to annotation containing current player time."
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
#: ../lib/advene/gui/edit/frameselector.py:192
#, fuzzy
msgid "Refresh snapshots"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
#: ../lib/advene/gui/edit/frameselector.py:193
msgid "Refresh missing snapshots"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
#, fuzzy
msgid "Undo last modification"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
msgid "Merge with previous"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
msgid "Merge with previous annotation, i.e. remove this bound."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
#, fuzzy
msgid "Close view."
msgstr "Defauxlta regularo"
@@ -4613,7 +4737,7 @@ msgid " Filters"
msgstr "Dosiero"
#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Reset"
msgstr ""
@@ -4651,56 +4775,56 @@ msgstr "Dosiero"
#: ../lib/advene/gui/plugins/eventaccumulator.py:559
#: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
#, fuzzy, python-format
msgid "of an annotation (%s)"
msgstr "Krei komentajxojn de DVD cxapitroj"
#: ../lib/advene/gui/plugins/eventaccumulator.py:561
#: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
#, fuzzy, python-format
msgid "of a relation (%s)"
msgstr "Krei komentajxojn de DVD cxapitroj"
#: ../lib/advene/gui/plugins/eventaccumulator.py:563
#: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
#, fuzzy, python-format
msgid "of an annotation type (%s)"
msgstr "Krei komentajxojn de DVD cxapitroj"
#: ../lib/advene/gui/plugins/eventaccumulator.py:565
#: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
#, fuzzy, python-format
msgid "of a relation type (%s)"
msgstr "Krei komentajxojn de DVD cxapitroj"
#: ../lib/advene/gui/plugins/eventaccumulator.py:567
#: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
#, fuzzy, python-format
msgid "of a schema (%s)"
msgstr "Komentaraj attributoj"
#: ../lib/advene/gui/plugins/eventaccumulator.py:569
#: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
#, fuzzy, python-format
msgid "of a view (%s)"
msgstr "Arbvido"
#: ../lib/advene/gui/plugins/eventaccumulator.py:571
#: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
#, fuzzy, python-format
msgid "of a package (%s)"
msgstr "Komentaraj attributoj"
#: ../lib/advene/gui/plugins/eventaccumulator.py:573
#: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
#, fuzzy, python-format
msgid "of an unknown item (%s)"
msgstr "Krei komentajxojn de DVD cxapitroj"
@@ -4747,7 +4871,7 @@ msgid "Search"
msgstr ""
#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
#, python-format
msgid "%(name)s (%(index)s)"
msgstr ""
@@ -4806,30 +4930,30 @@ msgstr ""
msgid "Zoom on action"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
msgid "Item Id"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
msgid "Item name or class"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
#, fuzzy
msgid "Type or schema"
msgstr "Arbvido"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
#, fuzzy
msgid "Operations"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
#, fuzzy
msgid "Comment"
msgstr "Arbvido"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
#: ../lib/advene/gui/edit/merge.py:191
msgid "Action"
msgstr ""
@@ -4874,20 +4998,25 @@ msgstr ""
msgid "Log Messages"
msgstr ""
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
#, fuzzy
msgid "_Select player"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
msgid "_View"
msgstr "Vido"
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
#, fuzzy
msgid "Packages"
msgstr "Komentaraj attributoj"
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+#, fuzzy
+msgid "Open recent"
+msgstr "Defauxlta regularo"
+
#: ../lib/advene/gui/main.py:239
msgid "Input from the keyboard (function keys)"
msgstr ""
@@ -4918,137 +5047,143 @@ msgstr "Komentaraj attributoj"
#: ../lib/advene/gui/main.py:246
#, fuzzy
+msgid "Show recently opened packages"
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/main.py:247
+#, fuzzy
msgid "_Save package"
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
#, fuzzy
msgid "Save the package"
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
#, fuzzy
msgid "Save package as..."
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
#, fuzzy
msgid "Save the package as..."
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
#, fuzzy
msgid "Close package"
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
#, fuzzy
msgid "Close the package"
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
msgid "Save session"
msgstr ""
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
#, fuzzy
msgid "Save the current session (list of opened packages)"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
msgid "Save workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
msgid "...as package view"
msgstr ""
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "...as standard workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "Use the current layout as standard workspace in the future"
msgstr ""
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
msgid "Associate a video _File"
msgstr ""
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
msgid "Associate a video file"
msgstr ""
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
msgid "Associate a _DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
msgid "Associate a chapter from a DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
msgid "Associate a _Video stream"
msgstr ""
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
msgid "Enter a video stream address"
msgstr ""
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "_Import File"
msgstr "Importi dosieron"
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "Import data from an external source"
msgstr "Importi datumo de alia ???"
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
-msgstr ""
+#: ../lib/advene/gui/main.py:261
+#, fuzzy
+msgid "_Process video"
+msgstr "Importi dosieron"
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
#, fuzzy
msgid "Import data from video processing algorithms"
msgstr "Importi datumo de alia ???"
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
msgid "Merge package"
msgstr ""
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
#, fuzzy
msgid "Merge elements from another package"
msgstr "Redakti importitaj elementojn de aliaj komentaroj"
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Import _DVD chapters"
msgstr "Importi DVD cxapitrojn"
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Create annotations based on DVD chapters"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
#, fuzzy
msgid "_Export..."
msgstr "Importi dosieron"
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
#, fuzzy
msgid "Export data to another format"
msgstr "Importi datumo de alia ???"
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
msgid "_Website export..."
msgstr ""
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
#, fuzzy
msgid "Export views to a website"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
#, fuzzy
msgid "_Quit"
msgstr "Redakti"
@@ -5075,14 +5210,6 @@ msgstr ""
msgid "Create"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr "Komentara importitoj"
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr "Redakti importitaj elementojn de aliaj komentaroj"
-
#: ../lib/advene/gui/main.py:284
msgid "P_ackage properties"
msgstr "Komentaraj attributoj"
@@ -5124,18 +5251,10 @@ msgstr ""
msgid "Open python evaluator window"
msgstr ""
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
msgid "Webserver log"
msgstr ""
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr ""
-
#: ../lib/advene/gui/main.py:296
msgid "_Player"
msgstr ""
@@ -5172,14 +5291,6 @@ msgstr ""
msgid "Restart the player"
msgstr ""
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr ""
-
#: ../lib/advene/gui/main.py:302
#, fuzzy
msgid "Update annotation screenshots"
@@ -5251,262 +5362,273 @@ msgstr ""
msgid "_About"
msgstr ""
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:344
msgid "Open a package file"
msgstr ""
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
msgid "Save the current package"
msgstr ""
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
msgid "Save the package with a new name"
msgstr ""
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
msgid "Select movie file..."
msgstr ""
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
msgid "Select DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
#, fuzzy
msgid "Create a text annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
#, fuzzy
msgid "Create a graphical annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:389
#, fuzzy
msgid "Snapshotter activity"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
#, python-format
msgid "%d queued requests"
msgstr ""
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
msgid "Cancel all requests"
msgstr ""
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
#, fuzzy
msgid "No snapshotter"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
msgid "No snapshotting activity"
msgstr ""
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
#, fuzzy
msgid "Snapshotting"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
#, fuzzy
msgid "Display application log messages"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
msgid "Quicksearch lists"
msgstr ""
-#: ../lib/advene/gui/main.py:479
+#: ../lib/advene/gui/main.py:488
msgid "Please specify the lists of elements to be searched."
msgstr ""
-#: ../lib/advene/gui/main.py:498
+#: ../lib/advene/gui/main.py:507
#, python-format
msgid ""
"Searching on %s.\n"
"Left click to launch the search, right-click to set the quicksearch options"
msgstr ""
-#: ../lib/advene/gui/main.py:499
+#: ../lib/advene/gui/main.py:508
#, python-format
msgid "String to search in %s"
msgstr ""
-#: ../lib/advene/gui/main.py:523
-#, fuzzy
-msgid "Open this view..."
-msgstr "Defauxlta regularo"
-
-#: ../lib/advene/gui/main.py:540
-#, fuzzy
-msgid "All available views"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:559
-#, fuzzy
-msgid "Transcription of annotations"
-msgstr "Importi transkribon"
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:564
-msgid "Schema editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:569
-#, fuzzy
-msgid "Dynamic montage"
-msgstr "Importi transkribon"
-
-#: ../lib/advene/gui/main.py:573
-#, fuzzy
-msgid "Open a comment view in the web browser"
-msgstr "Komentaraj attributoj"
-
-#: ../lib/advene/gui/main.py:574
-#, fuzzy
-msgid "Create or open a comment view"
-msgstr "Arbvido"
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:578
-#, fuzzy
-msgid "Display edition history"
-msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#: ../lib/advene/gui/main.py:579
-msgid "Visualise the activity trace preview"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:580
-msgid "Visualise the activity trace as a timeline"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
msgid "Tracing : "
msgstr ""
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
msgid "off"
msgstr ""
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
msgid "on"
msgstr ""
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
msgid "Launch search"
msgstr ""
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
msgid "Ignore case"
msgstr ""
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
#, fuzzy
msgid "Searched elements"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
msgid "Playing"
msgstr ""
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
msgid "Pause"
msgstr ""
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
msgid "Init"
msgstr ""
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
msgid "Undefined"
msgstr ""
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
msgid "Enter the new time value"
msgstr ""
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
#, fuzzy, python-format
msgid "Replace content in %d elements"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
#, fuzzy
msgid "Find word"
msgstr "Dosiero"
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
msgid "Replace by"
msgstr ""
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
#, python-format
msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
msgstr ""
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
msgid "The video extracting feature is not available."
msgstr ""
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
#, fuzzy
msgid "Video export"
msgstr "Vido"
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
#, python-format
msgid "Exporting video montage/fragment to %%(filename)s"
msgstr ""
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
#, fuzzy
msgid "Please choose a destination filename"
msgstr "Elekti ilobretan stilon"
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
msgid ""
"No media association is defined in the package. Please use the 'File/"
"Associate a video file' menu item to associate a media file."
msgstr ""
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
#, python-format
msgid ""
"The associated media %s could not be found. Please use the 'File/Associate a "
"video file' menu item to associate a media file."
msgstr ""
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
#, python-format
msgid ""
"You are now working with the following video:\n"
"%s"
msgstr ""
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+#, fuzzy
+msgid "Open this view..."
+msgstr "Defauxlta regularo"
+
+#: ../lib/advene/gui/main.py:1205
+#, fuzzy
+msgid "_All available views"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:1224
+#, fuzzy
+msgid "Transcription of annotations"
+msgstr "Importi transkribon"
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1229
+msgid "Schema editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1234
+#, fuzzy
+msgid "Dynamic montage"
+msgstr "Importi transkribon"
+
+#: ../lib/advene/gui/main.py:1238
+#, fuzzy
+msgid "Open a comment view in the web browser"
+msgstr "Komentaraj attributoj"
+
+#: ../lib/advene/gui/main.py:1239
+#, fuzzy
+msgid "Create or open a comment view"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1243
+#, fuzzy
+msgid "Display edition history"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:1244
+msgid "Visualise the activity trace preview"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1245
+msgid "Visualise the activity trace as a timeline"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1348
#, python-format
msgid ""
"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5515,453 +5637,484 @@ msgid ""
"cnrs.fr/advene/</span>"
msgstr ""
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
#, fuzzy
msgid "Go to the website"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
#, fuzzy
msgid "Advene release"
msgstr "Advene"
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
#, python-format
msgid "You are using a up-to-date version of Advene (%(current)s)."
msgstr ""
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
msgid "Advene is up-to-date"
msgstr ""
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
#, fuzzy
msgid "Choose a color"
msgstr "Elekti ilobretan stilon"
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
#, fuzzy
msgid "Select an annotation to loop on it"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
#, python-format
msgid "Looping on %s"
msgstr ""
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
#, fuzzy
msgid "No active dynamic view"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
#, fuzzy
msgid "Create a new dynamic view."
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:1471
+#: ../lib/advene/gui/main.py:1502
#, fuzzy
-msgid "No dynamic view"
+msgid "Edit the current dynamic view."
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:1473
+#: ../lib/advene/gui/main.py:1514
#, fuzzy
-msgid "Edit the current dynamic view."
+msgid "No dynamic view"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1546
msgid "Playing rate"
msgstr ""
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
msgid "History"
msgstr ""
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
msgid "Popups"
msgstr ""
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid ""
"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
msgstr ""
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid "Information"
msgstr ""
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
msgid "Cannot create annotation. There is no schema to put it in."
msgstr ""
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
#, fuzzy
msgid "Default annotation type"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
#, fuzzy
msgid "Annotation created"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
msgid "Play/Pause [Control-Tab / Control-Space]"
msgstr ""
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
#, python-format
msgid "Rewind (%.02f s) [Control-Left]"
msgstr ""
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
#, python-format
msgid "Forward (%.02f s) [Control-Right]"
msgstr ""
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
msgid "Previous frame [Control-Down]"
msgstr ""
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
msgid "Next frame [Control-Up]"
msgstr ""
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
msgid "Fullscreen"
msgstr ""
-#: ../lib/advene/gui/main.py:2180
+#: ../lib/advene/gui/main.py:2210
+#, python-format
+msgid "Screenshot saved to %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2212
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2214
+#, fuzzy, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:2222
+msgid "Save screenshot to..."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2278
#, fuzzy
msgid "Export package data"
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2280
#, fuzzy, python-format
msgid "Export annotation type %s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2282
#, fuzzy, python-format
msgid "Export element %s"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:2210
+#: ../lib/advene/gui/main.py:2308
#, fuzzy
msgid "Export format"
msgstr "Importi dosieron"
-#: ../lib/advene/gui/main.py:2247
+#: ../lib/advene/gui/main.py:2345
#, fuzzy
msgid " (modified)"
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2348
#, python-format
msgid "Activate %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
-#, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2297
-#, python-format
-msgid "Open %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
msgid "Saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
msgid "Restoring workspace..."
msgstr ""
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
#, python-format
msgid "Do you wish to restore the %s workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
#, fuzzy
msgid "Clear the current workspace"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
#, python-format
msgid "View %s is not an adhoc view"
msgstr ""
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
#, python-format
msgid "Cannot identify the adhoc view %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
msgid "Choose the annotation type to display as transcription."
msgstr ""
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
#, python-format
msgid ""
"Error: unable to find an edit popup for %(element)s:\n"
"%(error)s"
msgstr ""
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
#, fuzzy, python-format
msgid "Editing %s"
msgstr "Importi dosieron"
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
#, fuzzy, python-format
msgid "Comment view (%s)"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
#, python-format
msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
msgstr ""
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
#, python-format
msgid "Activating package %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
#, python-format
msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
msgstr ""
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
msgid "Do you want to restore the saved workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
msgid "Advene"
msgstr "Advene"
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
#, python-format
msgid "Got exception %s. Trying to continue."
msgstr ""
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
#, fuzzy
msgid "Unknown"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
#, python-format
msgid ""
"The package(s) %s are modified.\n"
"Save them now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
msgid "Choose an annotation type."
msgstr ""
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
msgid "No annotation type is defined."
msgstr ""
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
#, fuzzy
msgid "Creating a new type."
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
#, fuzzy
msgid "Title of the new type"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
msgid ""
"Id of the new type. It is generated from the title, but you may change it if "
"necessary."
msgstr ""
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
#, fuzzy
msgid "Specify the content-type for the annotation type"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
#, fuzzy
msgid "Content type"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
msgid "Create a new schema"
msgstr ""
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
msgid "Choose an existing schema for the new type, or create a new one"
msgstr ""
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
msgid "Specify the schema title"
msgstr ""
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
msgid "Title of the new schema"
msgstr ""
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
msgid ""
"Id of the new schema. It is generated from the title, but you may change it "
"if necessary."
msgstr ""
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
msgid ""
"You specified a annotation-type identifier that already exists. Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
msgid "You specified a existing schema identifier. Using the existing schema."
msgstr ""
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
msgid ""
"You specified an existing identifier that does not reference a schema. "
"Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
msgid "Choose a schema."
msgstr ""
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
msgid "You specified an existing identifier. Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
#, fuzzy, python-format
msgid "Package %s modified"
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
#, python-format
msgid ""
"The package %s has been modified but not saved.\n"
"Save it now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
#, python-format
msgid "%s snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
#, python-format
msgid "Do you want to save the snapshots for media %s?"
msgstr ""
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
#, python-format
msgid "Cannot save imagecache for %(media)s: %(e)s"
msgstr ""
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
msgid "first frame"
msgstr ""
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
msgid "last frame"
msgstr ""
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
#, fuzzy, python-format
msgid "Click on %(bound)s of %(annotation)s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
#, fuzzy, python-format
msgid "Update %(bound)s of %(annotation)s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3516
+#, fuzzy
+msgid "Set new timestamp value"
+msgstr "Arbvido"
+
+#: ../lib/advene/gui/main.py:3523
+#, fuzzy
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/main.py:3602
#, fuzzy
msgid "Text annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
#, fuzzy
msgid "Cannot find an appropriate annotation type"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
#, fuzzy
msgid "Graphical annotation"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
msgid ""
"An unsaved template package exists\n"
"Save it first."
msgstr ""
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
msgid "Package modified"
msgstr ""
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
msgid ""
"The package that you want to close has been modified but not saved.\n"
"Save it now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
msgid "Load a package"
msgstr ""
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
msgid ""
"A video file was selected. Pretend that the user selected 'Select a video "
"file'..."
msgstr ""
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
#, python-format
msgid ""
"The file %s does not look like a valid Advene package. It should have a .azp "
"or .xml extension. Try to open anyway?"
msgstr ""
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
msgid ""
"You are trying to load a session file, but there are unsaved packages. "
"Proceed anyway?"
msgstr ""
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
#, fuzzy
msgid "Do you want to save the current workspace ?"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
#, fuzzy, python-format
msgid "Could not save the package: %s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
#, python-format
msgid "Save the package %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
msgid "Invalid file extension"
msgstr ""
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
#, python-format
msgid ""
"Your package contains resources,\n"
@@ -5969,91 +6122,91 @@ msgid ""
"Should I put the correct extension?"
msgstr ""
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
msgid "OK, the resources will be lost."
msgstr ""
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
msgid "Aborting package saving"
msgstr ""
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
msgid "Save the session in..."
msgstr ""
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
#, python-format
msgid "Session saved in %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
msgid "Do you confirm the creation of annotations matching the DVD chapters?"
msgstr ""
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
msgstr ""
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
msgid "The associated media is not a DVD."
msgstr ""
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
#, fuzzy, python-format
msgid "Processing %s video"
msgstr "Importi dosieron"
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
#, fuzzy
msgid "No associated video file"
msgstr "Vido"
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
msgid "Standard RuleSet"
msgstr ""
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
#, python-format
msgid ""
"Player not active - cached duration : %(duration)s (%(durationms)d ms)"
msgstr ""
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
msgid ""
"GNU General Public License\n"
"See http://www.gnu.org/copyleft/gpl.html for more details"
msgstr ""
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
msgid "Visit the Advene web site for examples and documentation."
msgstr ""
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
msgid "Select a movie file"
msgstr ""
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
msgid "Title/Chapter selection"
msgstr ""
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
msgid "Select a video stream"
msgstr ""
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
msgid "Enter the address of a video stream"
msgstr ""
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
#, python-format
msgid "Successfully extracted the video stream address (%s) from the url.\n"
msgstr ""
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
msgid "Package properties"
msgstr ""
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
#: ../lib/advene/gui/edit/elements.py:559
#: ../lib/advene/gui/edit/elements.py:644
#: ../lib/advene/gui/edit/elements.py:706
@@ -6065,11 +6218,11 @@ msgstr ""
msgid "Author"
msgstr ""
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
msgid "Author name"
msgstr ""
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
#: ../lib/advene/gui/edit/elements.py:560
#: ../lib/advene/gui/edit/elements.py:645
#: ../lib/advene/gui/edit/elements.py:707
@@ -6081,802 +6234,804 @@ msgstr ""
msgid "Date"
msgstr ""
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
#, fuzzy
msgid "Package creation date"
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
#, fuzzy
msgid "Package title"
msgstr "Komentaraj attributoj"
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
msgid "Associated media"
msgstr ""
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Media duration in ms"
msgstr ""
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
msgid "Paths"
msgstr ""
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Data"
msgstr ""
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Standard directory for data files"
msgstr ""
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
msgid "Movie path"
msgstr ""
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
#, python-format
msgid ""
"List of directories (separated by %s) to search for movie files (_ means "
"package directory)"
msgstr ""
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Imagecache"
msgstr ""
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Directory for storing the snapshot cache"
msgstr ""
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Player"
msgstr ""
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Directory of the video player"
msgstr ""
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
#, fuzzy
msgid "Shotdetect"
msgstr "Importi dosieron"
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
#, fuzzy
msgid "Shotdetect application"
msgstr "Importi dosieron"
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
msgid "GUI"
msgstr ""
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid "Interface language (after restart)"
msgstr ""
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid ""
"Language used for the interface (necessitates to restart the application)"
msgstr ""
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
#, fuzzy
msgid "System default"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
msgid "Record activity trace"
msgstr ""
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Expert mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Offer advanced possibilities"
msgstr ""
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Prefer WYSIWYG"
msgstr ""
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Use WYSIWYG editors when possible (HTML, SVG)"
msgstr ""
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid "Player control in edit popups"
msgstr ""
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid ""
"Enable generic player controls in edit windows. This may be undesirable "
"since it overloads some standard text-edition behaviours (esp. control-left/"
"right)."
msgstr ""
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
msgid "Open popups"
msgstr ""
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
msgid "Where should we open adhoc views?"
msgstr ""
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
msgid "as a popup window"
msgstr ""
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
msgid "embedded east of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
msgid "embedded west of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
msgid "embedded south of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
msgid "embedded at the right of the window"
msgstr ""
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History size"
msgstr ""
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History filelist size limit"
msgstr ""
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember window size"
msgstr ""
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember the size of opened windows"
msgstr ""
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Bookmark snapshot width"
msgstr ""
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Width of the snapshots representing bookmarks"
msgstr ""
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Bookmark snapshot precision"
msgstr ""
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Precision (in ms) of the displayed bookmark snapshots."
msgstr ""
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
msgid "General"
msgstr ""
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
msgid "Weekly update check"
msgstr ""
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
msgid "Weekly check for updates on the Advene website"
msgstr ""
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
msgid "On exit,"
msgstr ""
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
msgid "How to handle screenshots on exit"
msgstr ""
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
msgid "never save screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
msgid "always save screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
msgid "ask before saving screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
msgid "Auto-save"
msgstr ""
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
msgid "Data auto-save functionality"
msgstr ""
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
msgid "is desactivated"
msgstr ""
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
msgid "is done automatically"
msgstr ""
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
msgid "is done after confirmation"
msgstr ""
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Auto-save interval (in s)"
msgstr ""
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Interval (in seconds) between package auto-saves"
msgstr ""
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
#, fuzzy
msgid "Workspace"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
msgid "On package saving,"
msgstr ""
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
msgid "Do you wish to save the default workspace with the package?"
msgstr ""
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
#, fuzzy
msgid "never save the current workspace"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
#, fuzzy
msgid "always save the current workspace"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
#, fuzzy
msgid "ask before saving the current workspace"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
msgid "On package load,"
msgstr ""
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
msgid "Do you wish to load the workspace saved with the package?"
msgstr ""
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
#, fuzzy
msgid "never load the saved workspace"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
#, fuzzy
msgid "always load the saved workspace"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
#, fuzzy
msgid "ask before loading the saved workspace"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
#, fuzzy
msgid "Video Player"
msgstr "Vido"
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
msgid "Autostart"
msgstr ""
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
msgid ""
"Automatically start the player when loading a media file (either directly or "
"through a package)"
msgstr ""
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
#, fuzzy
msgid "Fulscreen timestamp"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
msgid "Display the timestamp over the video when in fullscreen mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
#, fuzzy
msgid "Enable captions"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
#, fuzzy
msgid "Enable captions over the video"
msgstr "Vidi komentajxojn sur templinio"
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
#, fuzzy
msgid "Caption font"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
msgid "TrueType font for captions"
msgstr ""
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG"
msgstr ""
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG captions over the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
msgid "Enable snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width"
msgstr ""
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width in pixels."
msgstr ""
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity"
msgstr ""
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity level. -1 for no messages."
msgstr ""
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
msgid "Devices"
msgstr ""
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
msgid "Standard"
msgstr ""
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "DVD drive"
msgstr ""
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "Drive letter for the DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
msgid "GDI"
msgstr ""
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
msgid "Direct X"
msgstr ""
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "DVD device"
msgstr ""
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "Device for the DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
msgid "X11"
msgstr ""
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
#, fuzzy
msgid "XVideo"
msgstr "Vido"
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
msgid "GL"
msgstr ""
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output"
msgstr ""
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output module"
msgstr ""
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
#, fuzzy
msgid "Recorder options"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
#, fuzzy
msgid "Audio input"
msgstr "Vido"
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
msgid "Device name for audio input (with gstrecorder plugin)"
msgstr ""
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record video"
msgstr ""
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record both video and audio"
msgstr ""
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
msgid "<i>Experimental</i>"
msgstr ""
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
msgid "Embed the caption scroller below the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
msgid "Embed the caption view below the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
msgid "Time-related"
msgstr ""
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
#, fuzzy
msgid "Time format"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
msgid "Format used to display timecodes"
msgstr ""
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
#, fuzzy
msgid "Default FPS"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
msgid ""
"Default FPS (frame-per-second) value, when entering or displaying timestamps "
"with frame numbers."
msgstr ""
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
#, fuzzy
msgid "Time increment"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
msgid ""
"Skip duration, when using control-left/right or forward/rewind buttons (in "
"ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
#, fuzzy
msgid "Second time increment"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
msgid "Skip duration, when using control-shift-left/right (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
#, fuzzy
msgid "Third time increment"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
msgid "Skip duration, when using control-shift-up/down (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid "Custom Up/Down"
msgstr ""
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid ""
"Use third time increment for up/down navigation without having to hold shift."
msgstr ""
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid "Scroll increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid ""
"On most annotations, control+scrollwheel will increment/decrement their "
"bounds by this value (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid "Second scroll increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid ""
"On most annotations, control+shift+scrollwheel will increment/decrement "
"their bounds by this value (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
msgid "Player sync"
msgstr ""
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
msgid ""
"Interval (in ms) with which we synchronize slave players. Setting a too-low "
"value could render the application unusable. Use 0 to disable continuous "
"synchronization."
msgstr ""
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
msgid "Timeline parameters"
msgstr ""
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
msgid "Font size"
msgstr ""
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
msgid "Font size for annotation widgets"
msgstr ""
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
msgid "Button height"
msgstr ""
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
#, fuzzy
msgid "Height of annotation widgets"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Interline height"
msgstr ""
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Height of interlines"
msgstr ""
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
#, fuzzy
msgid "Text content"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
#, fuzzy
msgid "Completion mode"
msgstr "Arbvido"
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
#, fuzzy
msgid "Enable dynamic completion mode"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
msgid "Abbreviation mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
#, fuzzy
msgid "Enable abbreviation mode"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
#, fuzzy
msgid "Abbreviations"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
msgid ""
"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
"followed by its replacement."
msgstr ""
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
msgid "Text-To-Speech"
msgstr ""
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
#, fuzzy
msgid "TTS language"
msgstr "Interfacaj preferoj"
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
msgid "What language settings should be used for text-to-speech"
msgstr ""
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
msgid "English"
msgstr ""
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
msgid "French"
msgstr ""
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
msgid "Spanish"
msgstr ""
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
msgid "TTS Encoding"
msgstr ""
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
msgid "What encoding should be used to communicate with the TTS engine"
msgstr ""
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
#, fuzzy
msgid "TTS Engine"
msgstr "Interfacaj preferoj"
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
msgid ""
"Which TTS engine should be used (modification requires restarting Advene to "
"take into account)"
msgstr ""
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
msgid "Automatic"
msgstr ""
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
msgid "eSpeak"
msgstr ""
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
msgid "Custom script with standard input"
msgstr ""
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
msgid "Custom script with arguments"
msgstr ""
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
msgid "SAPI"
msgstr ""
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
msgid "MacOS X say"
msgstr ""
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
msgid "Generic (text output)"
msgstr ""
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
msgid "You should restart Advene to take some options into account."
msgstr ""
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
#, python-format
msgid "Imagecache saved to %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
msgid "Restarting player..."
msgstr ""
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
#, fuzzy
msgid "Advene log"
msgstr "Advene"
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
#, fuzzy
msgid "Select the package to merge"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
msgid "Saving workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
msgid "Enter a view name to save the workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
#, fuzzy
msgid "Default workspace"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
msgid "Open this workspace when opening the package"
msgstr ""
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
#, python-format
msgid "Error: the view %s exists and is not a workspace view."
msgstr ""
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
#, fuzzy, python-format
msgid "Cannot save default workspace: %s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
msgid "Standard workspace has been saved"
msgstr ""
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
msgid "Website export"
msgstr ""
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
msgid "Exporting views to a website"
msgstr ""
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
msgid "Output directory"
msgstr ""
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
msgid "Specify the output directory"
msgstr ""
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
msgid "Maximum recursion depth"
msgstr ""
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
#, fuzzy
msgid "Video URL"
msgstr "Vido"
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
msgstr ""
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
#, fuzzy
msgid "Could not export data: "
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
#, fuzzy, python-format
msgid "Website export to %s completed"
msgstr "Importi dosieron"
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
msgid "This video player is not able to grab specific screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
#, fuzzy, python-format
msgid "Updating %d snapshots"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
msgid "No snapshot to update"
msgstr ""
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
msgid "You first must load a movie into Advene"
msgstr ""
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
#, fuzzy, python-format
msgid "The movie %s does not seem to exist."
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
msgid "Generating screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
msgid ""
"<b>Screenshot generation</b>\n"
"\n"
@@ -6888,43 +7043,43 @@ msgid ""
"open."
msgstr ""
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
msgid ""
"The <b>shotdetect</b> application does not seem to be installed. Please "
"check that it is present and that its path is correctly specified in "
"preferences."
msgstr ""
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
msgid ""
"Cannot import shotdetect output. Did you install the shotdetect software?"
msgstr ""
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
msgid "Incomplete shots"
msgstr ""
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
#, python-format
msgid "Detected %s shots"
msgstr ""
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
#, fuzzy, python-format
msgid "Could not run shotdetect: %s"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
#, python-format
msgid "Detecting shots from %s"
msgstr ""
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
#, fuzzy
msgid "Shot detection"
msgstr "Importi dosieron"
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
msgid ""
"<b>Shot detection</b>\n"
"\n"
@@ -6934,13 +7089,13 @@ msgid ""
"to augment its value."
msgstr ""
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
msgid "Sensitivity"
msgstr ""
#: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
msgid "Plain text content"
msgstr ""
@@ -6950,8 +7105,8 @@ msgid "HTML content"
msgstr "Defauxlta regularo"
#: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
msgid "Simple-structured content"
msgstr ""
@@ -6960,8 +7115,8 @@ msgid "List of numeric values"
msgstr ""
#: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
msgid "SVG graphics content"
msgstr ""
@@ -7258,51 +7413,42 @@ msgstr ""
msgid "Importer"
msgstr "Importi dosieron"
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
#, fuzzy
msgid "Advene package importer"
msgstr "Redakti komentarajn attributojn"
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
#, fuzzy
msgid "Not likely"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
#, python-format
msgid "Completed conversion: %(statistics)s"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
#: ../lib/advene/gui/edit/dvdselect.py:73
msgid "Stop"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:141
-#, fuzzy, python-format
-msgid "Importing %s"
-msgstr "Importi dosieron"
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
msgid "Choose the file to import"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:253
-#, fuzzy
-msgid "Filename"
-msgstr "Dosiero"
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
#, fuzzy
msgid "Filter"
msgstr "Dosiero"
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
#, fuzzy
msgid "Options"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
msgid "Start"
msgstr ""
@@ -7369,8 +7515,8 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
msgid "Rectangular zone content"
msgstr ""
@@ -7434,7 +7580,7 @@ msgid "New resource data"
msgstr ""
#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
#, fuzzy
msgid "Properties"
msgstr "Komentaraj attributoj"
@@ -7687,7 +7833,7 @@ msgid "Error: cannot find a content handler for %s"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
#, python-format
msgid ""
"Cannot read the data:\n"
@@ -7695,12 +7841,12 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
msgid "Save content to..."
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
#, python-format
msgid ""
"Cannot save the data:\n"
@@ -7708,17 +7854,17 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
msgid "Open a file (C-o)"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
msgid "Save to a file (C-s)"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
msgid "Reload the file (C-r)"
msgstr ""
@@ -7726,15 +7872,15 @@ msgstr ""
msgid "Insert a value from the browser (C-i)"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
msgid "Begin time is greater than end time"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
msgid "Expecting an integer."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
#, python-format
msgid ""
"The %(attribute)s attribute could not be updated:\n"
@@ -7744,7 +7890,7 @@ msgid ""
"Resetting to the original value."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
#, python-format
msgid ""
"The following attributes cannot be updated:\n"
@@ -7752,7 +7898,7 @@ msgid ""
"%s"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
#, python-format
msgid ""
"The following attributes could not be updated:\n"
@@ -7760,25 +7906,25 @@ msgid ""
"%s"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
msgid "Attribute"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
msgid "Insert an element"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
msgid "Choose the element to insert."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
#, python-format
msgid "Some tags contain invalid characters: %s"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
msgid "Tags:"
msgstr ""
@@ -7897,7 +8043,7 @@ msgstr ""
#: ../lib/advene/gui/edit/rules.py:765
#, fuzzy
-msgid "The id of the annotation type"
+msgid "The annotation type"
msgstr "Krei komentajxojn de DVD cxapitroj"
#: ../lib/advene/gui/edit/rules.py:768
@@ -7967,8 +8113,8 @@ msgstr "Arbvido"
#: ../lib/advene/gui/edit/rules.py:793
#, fuzzy
-msgid "The id of the element type"
-msgstr "Krei komentajxojn de DVD cxapitroj"
+msgid "The element type"
+msgstr "Arbvido"
#: ../lib/advene/gui/edit/rules.py:794
#, fuzzy
@@ -7990,6 +8136,16 @@ msgstr "Defauxlta regularo"
msgid "The context fragment"
msgstr "Arbvido"
+#: ../lib/advene/gui/edit/rules.py:809
+#, fuzzy, python-format
+msgid "annotation-type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, fuzzy, python-format
+msgid "relation-type %s"
+msgstr "Krei komentajxojn de DVD cxapitroj"
+
#: ../lib/advene/gui/edit/rules.py:834
msgid "Select a condition"
msgstr ""
@@ -8007,58 +8163,58 @@ msgstr ""
msgid "Activate?"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
msgid "Schema Editor"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
#, fuzzy
msgid "Display"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
#, fuzzy
msgid "Remove relation type"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
#, fuzzy
msgid "Create HTML view"
msgstr "Arbvido"
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
#, fuzzy
msgid "Remove annotation type"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
msgid "Create relation type between this one and..."
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
msgid "New schema"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
#, fuzzy
msgid "New annotation type"
msgstr "Krei komentajxojn de DVD cxapitroj"
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
#, fuzzy
msgid "New relation type"
msgstr "Defauxlta regularo"
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
msgid "Hide this schema"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
msgid "Export drawing to pdf"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
#, fuzzy
msgid "Choose a filename to export the schema as PDF"
msgstr "Arbvido"
@@ -8362,103 +8518,103 @@ msgstr "Krei komentajxojn de DVD cxapitroj"
msgid "Click to see more frames or scroll with the mouse wheel"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
msgid "Generic shape"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
#, python-format
msgid "Link to %s"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
msgid "Link"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
msgid "Link label"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
msgid "Linewidth"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
#, fuzzy
msgid "Filled"
msgstr "Dosiero"
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
#, python-format
msgid "Properties of %s"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
msgid "Rectangle"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
msgid "Text"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
msgid "Textsize"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
msgid "Image"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
msgid "Href"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
msgid "Line"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
msgid "Draw an arrow"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
msgid "Arrow size"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
msgid "Circle"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
msgid "Ellipse"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
msgid "SVG"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
msgid "Load SVG"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
msgid "Save SVG"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
#, python-format
msgid "Decrement value by %.2f s"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
#, python-format
msgid "Increment value by %.2f s"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
msgid ""
"Click to play\n"
"Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8466,7 +8622,7 @@ msgid ""
"Right-click to invalidate screenshot"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
msgid ""
"Enter a timecode.\n"
"An integer value will be considered as milliseconds.\n"
@@ -8474,7 +8630,7 @@ msgid ""
"HH:MM:SS.sss values are possible."
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
msgid "Set to current player position"
msgstr ""
@@ -9125,6 +9281,36 @@ msgid "Directory %s is not an extracted Advene zip package."
msgstr ""
#, fuzzy
+#~ msgid "Importing %s"
+#~ msgstr "Importi dosieron"
+
+#, fuzzy
+#~ msgid "Aiff importer"
+#~ msgstr "Importi dosieron"
+
+#, fuzzy
+#~ msgid "Updating modified annotations"
+#~ msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#~ msgid "Package _Imports"
+#~ msgstr "Komentara importitoj"
+
+#~ msgid "Edit imported element from other packages"
+#~ msgstr "Redakti importitaj elementojn de aliaj komentaroj"
+
+#, fuzzy
+#~ msgid "Filename"
+#~ msgstr "Dosiero"
+
+#, fuzzy
+#~ msgid "The id of the annotation type"
+#~ msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#, fuzzy
+#~ msgid "The id of the element type"
+#~ msgstr "Krei komentajxojn de DVD cxapitroj"
+
+#, fuzzy
#~ msgid "Import filter"
#~ msgstr "Importi dosieron"
@@ -9145,10 +9331,6 @@ msgstr ""
#~ msgstr "Krei komentajxojn de DVD cxapitroj"
#, fuzzy
-#~ msgid "Display snapshot"
-#~ msgstr "Krei komentajxojn de DVD cxapitroj"
-
-#, fuzzy
#~ msgid "Replace a string by another in the selected annotations.\n"
#~ msgstr "Krei komentajxojn de DVD cxapitroj"
diff --git a/po/es.po b/po/es.po
index 379c467..a6e5c15 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 0.32\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
"PO-Revision-Date: 2008-07-07 19:21+0200\n"
"Last-Translator: Emmanuel Ayala Mexicano <amarrextro at yahoo.com>\n"
"Language-Team: advene at liris.cnrs.fr\n"
@@ -82,57 +82,62 @@ msgid ""
"The following processes seem to use the %(port)s port: %(processes)s"
msgstr ""
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr ""
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
#, python-format
msgid "Loaded %(uri)s as %(alias)s"
msgstr ""
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
#, python-format
msgid "Cannot load package from file %(uri)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr ""
+
+#: ../lib/advene/core/controller.py:966
#, python-format
msgid "Cannot get audio volume: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr ""
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
msgid "None"
msgstr "Ninguno"
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
#, python-format
msgid "Found matching video file in moviepath: %s"
msgstr "Encontre video concordante en la ruta: %s"
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
msgid "Analysis of "
msgstr ""
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
msgid "Cannot split the annotation: the given position is outside."
msgstr ""
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
#, python-format
msgid "Cannot find the template package %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
#, python-format
msgid "Cannot read the imported package %(uri)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
msgid "Package URI has changed. Reloading package with new URI."
msgstr "El paquete URI ha cambiado. Recargando el paquete con un nuevo URI"
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
msgid ""
"Cannot load package: the following annotations do not have Millisecond "
"fragments:"
@@ -140,55 +145,55 @@ msgstr ""
"No puedo cargar el paquete: las anotaciones siguientes no tienen fragmentos "
"de milisegundos:"
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
#, python-format
msgid "Cannot handle master attribute, the package %s is not imported."
msgstr ""
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
#, python-format
msgid "Checking master package %s for not yet imported elements."
msgstr ""
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
msgid "Standard summary"
msgstr ""
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
msgid "Default view"
msgstr "Vista por omision"
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
#, python-format
msgid ""
"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
msgstr ""
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
#, python-format
msgid "Got exception %s when stopping player."
msgstr "Hubo excepcion %s cuando se detuvo el reproductor."
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
#, python-format
msgid "Raised exception in update_status: %s"
msgstr "Excepcion levantada en update_status: %s"
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
msgid "Unable to start the player."
msgstr "Incapaz de inicializar el reproductor."
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
#, fuzzy, python-format
msgid "Comment on set of %d annotations"
msgstr "Creacion de una nueva anotacion"
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
#, fuzzy, python-format
msgid "Comment on %s"
msgstr "Creacion: %s"
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
#, python-format
msgid ""
"<h1>Comment on %(title)s</h1>\n"
@@ -200,23 +205,23 @@ msgid ""
"\"%(imgurl)s\" ></img></a></span>"
msgstr ""
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
#, fuzzy, python-format
msgid "List of %s annotations"
msgstr "anotaciones"
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
#, fuzzy, python-format
msgid "Cannot export to %(filename)s: %(e)s"
msgstr "No se puede guardar el archivo: %s"
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
#, fuzzy, python-format
msgid "Error when exporting: %s"
msgstr "<p>Error mientras se creaba la vista %s</p>"
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
#, python-format
msgid "Data exported to %s"
msgstr ""
@@ -1041,11 +1046,15 @@ msgstr ""
"<hr><p align=\"right\"><em>Documento generado por <a href=\"http://liris."
"cnrs.fr/advene/\">Advene</a> v. %s.</em></p>"
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
#, python-format
msgid "Cannot start HTTP server: %s"
msgstr ""
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+
#: ../lib/advene/plugins/featuredetect.py:42
msgid "Feature detection (face...)"
msgstr ""
@@ -1090,7 +1099,7 @@ msgstr ""
msgid "Anvil importer"
msgstr "Importador Anvil"
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
#, fuzzy
msgid "TED importer"
msgstr "Importador de texto"
@@ -1161,11 +1170,72 @@ msgid ""
"too many shots are detected, try to increase its value."
msgstr ""
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
#, python-format
msgid "Detected shot #%(num)d at %(pos)s "
msgstr ""
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+#, fuzzy
+msgid "Generating annotations"
+msgstr "anotaciones"
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, fuzzy, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr "Selecciona un elemento"
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr ""
+
#: ../lib/advene/plugins/tts.py:77
msgid "Pronounce a text"
msgstr ""
@@ -1185,12 +1255,12 @@ msgstr ""
msgid "The annotation content"
msgstr ""
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
#: ../lib/advene/gui/plugins/actions.py:234
msgid "Unknown rule"
msgstr "Regla desconocida"
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
#: ../lib/advene/gui/plugins/actions.py:235
#, python-format
msgid ""
@@ -1212,6 +1282,28 @@ msgstr ""
msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
msgstr ""
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:75
+#, fuzzy
+msgid "Importing subtitles"
+msgstr "_Importar Archivo"
+
+#: ../lib/advene/plugins/fcp.py:90
+#, fuzzy
+msgid "Importing clips"
+msgstr "Excepcion :"
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr ""
+
#: ../lib/advene/plugins/mpeg7.py:54
msgid "MPEG7 importer"
msgstr "Importador MPEG7"
@@ -1241,29 +1333,6 @@ msgstr "Creacion de una nueva vista"
msgid "Importing annotations"
msgstr "anotaciones"
-#: ../lib/advene/plugins/aiff.py:35
-#, fuzzy
-msgid "Aiff importer"
-msgstr "Importador Xi"
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:77
-#, fuzzy
-msgid "Importing subtitles"
-msgstr "_Importar Archivo"
-
-#: ../lib/advene/plugins/aiff.py:92
-#, fuzzy
-msgid "Importing clips"
-msgstr "Excepcion :"
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr ""
-
#: ../lib/advene/plugins/dcp.py:65
#, fuzzy
msgid "DCP importer"
@@ -1274,11 +1343,11 @@ msgstr "Importador de texto"
msgid "Converting #%(num)d / %(count)d"
msgstr "Convertido de %s"
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
msgid "Input from the braille table."
msgstr ""
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
msgid "BrlTTY not installed. There will be no braille support."
msgstr ""
@@ -1294,16 +1363,16 @@ msgstr "Muestra un mensaje en Braille"
msgid "Message to display."
msgstr "Mensaje a mostrar"
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
#, python-format
msgid "BrlTTY connection error: %s"
msgstr ""
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
msgid "Braille display: "
msgstr ""
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
msgid "No message"
msgstr "Sin mensaje"
@@ -1349,17 +1418,17 @@ msgid "Parsing section information"
msgstr "Informacion de aplicacion"
#: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
msgid "Creating package"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
msgid "Creating annotation types"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
msgid "Parsing header information"
msgstr ""
@@ -1388,11 +1457,6 @@ msgstr "Creacion de una nueva anotacion"
msgid "Channel selection."
msgstr "Selección de Titulo/Capitulo"
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#, fuzzy
-msgid "Generating annotations"
-msgstr "anotaciones"
-
#: ../lib/advene/plugins/soundenveloppe.py:115
#, fuzzy, python-format
msgid "At %s"
@@ -1432,7 +1496,7 @@ msgstr ""
msgid "Starting silence detection"
msgstr "Inicio de la aplicacion"
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
#, fuzzy
msgid "Aeidon (subtitles) importer"
msgstr "Importador de subtÃtulos (SRT)"
@@ -1473,225 +1537,225 @@ msgstr ""
msgid "Converted from %s"
msgstr "Convertido de %s"
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
#, fuzzy
msgid "ExternalApp importer"
msgstr "Importador de texto"
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
#, python-format
msgid ""
"The <b>%s</b> application does not seem to be installed. Please check that "
"it is present and that its path is correctly specified in preferences."
msgstr ""
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
#, fuzzy, python-format
msgid "The file %s does not seem to exist."
msgstr "<p>La vista GUI %s no existe.</p>"
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
#, fuzzy, python-format
msgid "Could not run %(appname)s: %(msg)s"
msgstr "No se puede guardar el archivo: %s"
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
#, fuzzy, python-format
msgid "Processing %s"
msgstr "Editar %s"
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
msgid "Cleaning up..."
msgstr ""
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
msgid "Text importer"
msgstr "Importador de texto"
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
msgid "Specify the encoding of the input file (latin1, utf8...)"
msgstr ""
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
msgid "lsdvd importer"
msgstr "Importador lsdvd"
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
msgid "Processing data"
msgstr ""
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
#, fuzzy
msgid "DVD Chapter"
msgstr "Capitulo"
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
msgid "Launching lsdvd..."
msgstr ""
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
msgid "chaplin importer"
msgstr "Importador chaplin"
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
msgid "Xi importer"
msgstr "Importador Xi"
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
msgid "ELAN importer"
msgstr "Importador ELAN"
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
#, python-format
msgid "Converting tier %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
msgid "Processing time slots"
msgstr ""
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
msgid "Fixing forward references"
msgstr ""
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
msgid "Creating relations"
msgstr ""
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
msgid "Subtitle (SRT) importer"
msgstr "Importador de subtÃtulos (SRT)"
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
#, python-format
msgid "Subtitles from %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
msgid "PRAAT importer"
msgstr "Importador PRAAT"
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
msgid "CMML importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
msgid "Parsing clip information"
msgstr ""
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
msgid "Creating CMML schema"
msgstr ""
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
msgid "Parsing stream information"
msgstr ""
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
msgid "IRI importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
msgid "Generate one type per view"
msgstr ""
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
#, python-format
msgid "Parsing ensemble %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
#, python-format
msgid "Parsing decoupage %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
msgid "Parsing views"
msgstr ""
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
msgid "Initializing package"
msgstr ""
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
msgid "IRIData importer"
msgstr "Importador IRIData"
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
msgid "Parsing sound values"
msgstr ""
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
msgid "Creating annotations"
msgstr ""
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
msgid "Package"
msgstr "Paquete"
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
msgid "Annotation"
msgstr "Anotacion"
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
msgid "Relation"
msgstr "Relacion"
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
msgid "Schema"
msgstr "Esquema"
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
msgid "Annotation Type"
msgstr "Tipo de anotacion"
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
msgid "Relation Type"
msgstr "Tipo de relacion"
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
msgid "View"
msgstr "Vista"
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
#: ../lib/advene/gui/main.py:278
msgid "Query"
msgstr "Busqueda"
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
msgid "Resource Folder"
msgstr ""
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
msgid "Resource File"
msgstr ""
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
msgid "---- Elements ----"
msgstr "---- Elementos ----"
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
msgid "---- Attributes ----"
msgstr "---- Atributos ----"
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
msgid "---- Methods ----"
msgstr "---- Metodos ----"
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
#, python-format
msgid "Cannot read %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
#, python-format
msgid "File %s is not an Advene zip package."
msgstr ""
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
#, python-format
msgid ""
"Error:\n"
@@ -1700,7 +1764,7 @@ msgstr ""
"Error:\n"
"%s"
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
#, python-format
msgid ""
"Package %(title)s:\n"
@@ -1714,81 +1778,81 @@ msgid ""
"%(description)s\n"
msgstr ""
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schema"
msgstr "esquema"
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schemas"
msgstr "esquemas"
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotation"
msgstr "anotacion"
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotations"
msgstr "anotaciones"
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation type"
msgstr "tipo de anotacion"
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation types"
msgstr "tipos de anotaciones"
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relation"
msgstr "relacion"
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relations"
msgstr "relaciones"
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation type"
msgstr "tipos de relacion"
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation types"
msgstr "tipos de relaciones"
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "query"
msgstr "busqueda"
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "queries"
msgstr "busquedas"
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "view"
msgstr "vista"
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "views"
msgstr "vistas"
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "package"
msgstr "paquete"
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "packages"
msgstr "paquetes"
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
#, python-format
msgid "No %s"
msgstr "No %s"
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
#, python-format
msgid "1 %s"
msgstr "1 %s"
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
#, python-format
msgid "%(count)d %(plural)s"
msgstr ""
@@ -1803,32 +1867,32 @@ msgstr ""
msgid "%s does not exist"
msgstr "<p>La vista GUI %s no existe.</p>"
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
msgid "Starting export"
msgstr ""
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
#, python-format
msgid "Depth %d"
msgstr ""
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
#, python-format
msgid "Depth %(depth)d: processing %(url)s"
msgstr ""
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
msgid "Finalizing"
msgstr ""
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
#, python-format
msgid ""
"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
"strong></p>"
msgstr ""
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
#, fuzzy
msgid "Export complete"
msgstr "Importar datos de una fuente externa"
@@ -1897,12 +1961,12 @@ msgid ""
"\n"
msgstr ""
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
#, python-format
msgid "Renumbering annotations of type %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
msgid ""
"<b>Renumber all annotations according to their order.</b>\n"
"\n"
@@ -1916,26 +1980,26 @@ msgid ""
"The offset parameter allows you to renumber from a given annotation."
msgstr ""
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
msgid "Offset"
msgstr "Compensar"
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
#, fuzzy, python-format
msgid "Renumbering %d annotations"
msgstr "anotaciones"
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
#, fuzzy, python-format
msgid "Annotation #%d"
msgstr "Anotación %s"
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
#, fuzzy, python-format
msgid "Extracting %s"
msgstr "Editar %s"
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
#, python-format
msgid ""
"Exporting annotation %(title)s\n"
@@ -1943,269 +2007,277 @@ msgid ""
"to %%(filename)s"
msgstr ""
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
msgid "Edit"
msgstr "Editar"
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
msgid "Browse"
msgstr "Navegar"
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
msgid "Open in web browser"
msgstr ""
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
msgid "Delete"
msgstr "Borrar"
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
msgid "Search/replace content"
msgstr ""
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
msgid "Activate"
msgstr "Activar"
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
msgid "Desactivate"
msgstr "Desactivar"
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
#: ../lib/advene/gui/plugins/tracetimeline.py:980
#: ../lib/advene/gui/plugins/tracetimeline.py:1001
#: ../lib/advene/gui/edit/transcribe.py:502
msgid "Go to..."
msgstr "Ir a..."
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
msgid "Loop"
msgstr ""
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
msgid "Duplicate"
msgstr ""
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight"
msgstr "Marcar"
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+#, fuzzy
+msgid "Save snapshot..."
+msgstr "Toma una fotografia"
+
+#: ../lib/advene/gui/popup.py:519
msgid "Extract video fragment"
msgstr ""
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
msgid "Incoming"
msgstr ""
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
msgid "Outgoing"
msgstr ""
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
msgid "Related annotations"
msgstr ""
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
msgid "Incoming relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
msgid "Outgoing relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
#, python-format
msgid "Begin: %s"
msgstr "Inicio: %s"
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
#, python-format
msgid "End: %s"
msgstr "Final: %s"
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
#, fuzzy, python-format
msgid "Duration: %s"
msgstr "relaciones"
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
msgid "Members:"
msgstr "Miembros:"
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
msgid "Edit package properties..."
msgstr ""
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
#, fuzzy, python-format
msgid "%d annotations(s) - statistics"
msgstr "Muestra las anotaciones como subtitulos"
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
msgid "Create a new static view..."
msgstr "Crear una nueva vista..."
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
msgid "Create a new dynamic view..."
msgstr ""
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
msgid "Create a new annotation..."
msgstr "Crear una nueva anotacion"
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
msgid "Create a new schema..."
msgstr "Crear un nuevo esquema..."
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
msgid "Create a new query..."
msgstr "Crear una nueva busqueda..."
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
msgid "Create a new folder..."
msgstr ""
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
msgid "Create a new resource file..."
msgstr ""
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
msgid "Insert a new resource file..."
msgstr ""
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
msgid "Insert a new resource directory..."
msgstr ""
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
msgid "Insert a soundclip..."
msgstr ""
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
#, fuzzy
msgid "Play sound"
msgstr "Reproductor detiene"
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
msgid "Create a new annotation type..."
msgstr "Crear un nuevo tipo de anotacion..."
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
msgid "Create a new relation type..."
msgstr "Crear un nuevo tipo de relacion..."
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
msgid "Select a color"
msgstr ""
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
#, python-format
msgid "A caption dynamic view for %s already seems to exist."
msgstr ""
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
#, python-format
msgid "Caption %s annotations"
msgstr ""
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
msgid "Caption the annotation"
msgstr "Subtitular la anotación"
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
#, fuzzy
msgid "Create a comment view"
msgstr "Crear una nueva vista..."
-#: ../lib/advene/gui/popup.py:740
-msgid "Generate a caption dynamic view"
-msgstr ""
+#: ../lib/advene/gui/popup.py:739
+#, fuzzy
+msgid "Generate a caption dynamic view..."
+msgstr "Crear una nueva vista..."
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
msgid "Display as transcription"
msgstr "Muestra como transcripcion"
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
msgid "Display annotations in table"
msgstr ""
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
#, fuzzy
msgid "Export to another format..."
msgstr "Importar datos de una fuente externa"
-#: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
+#: ../lib/advene/gui/popup.py:748
+#, fuzzy
+msgid "Delete all annotations"
msgstr "Borrar todas las anotaciones..."
-#: ../lib/advene/gui/popup.py:750
-msgid "Renumber annotations"
-msgstr ""
+#: ../lib/advene/gui/popup.py:749
+#, fuzzy
+msgid "Renumber annotations..."
+msgstr "anotaciones"
-#: ../lib/advene/gui/popup.py:751
+#: ../lib/advene/gui/popup.py:750
#, fuzzy
-msgid "Adjust annotation bounds"
+msgid "Adjust annotation bounds..."
msgstr "Muestra los limites de la anotacion"
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
#, python-format
msgid "A follow dynamic view for %s already seems to exist."
msgstr ""
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
#, fuzzy, python-format
msgid "Follow %s relation-type"
msgstr "tipos de relacion"
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
#, fuzzy
msgid "Follow the relation"
msgstr "Relaciones Allen"
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
msgid "Delete all relations..."
msgstr "Borrar todas las relaciones..."
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
#, fuzzy
msgid "Create montage from related annotations"
msgstr "Crear una nueva anotacion"
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
#, fuzzy
msgid "Create dynamic view following relations"
msgstr "Crear una relacion"
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
#, python-format
msgid "Exception in query: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
msgid "Apply query on..."
msgstr ""
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
msgid "the package"
msgstr ""
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
msgid "all annotations of the package"
msgstr ""
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
msgid "the first annotation of the package"
msgstr ""
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
msgid "Activate view"
msgstr "Activar vista"
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
msgid "Open adhoc view"
msgstr ""
@@ -2368,31 +2440,31 @@ msgid "Cannot remove this widget, it is essential."
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
msgid "...in its own window"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:125
#: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
msgid "...embedded east of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:126
#: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
msgid "...embedded west of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:127
#: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
msgid "...embedded south of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:128
#: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
msgid "...embedded at the right of the window"
msgstr ""
@@ -2470,7 +2542,7 @@ msgid "to create a new static view"
msgstr "Crear una nueva vista..."
#: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
msgid "as a transcription"
msgstr ""
@@ -2602,8 +2674,8 @@ msgstr ""
msgid "Path"
msgstr "Ruta"
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
#: ../lib/advene/gui/edit/elements.py:508
#: ../lib/advene/gui/edit/elements.py:557
#: ../lib/advene/gui/edit/elements.py:657
@@ -2611,45 +2683,70 @@ msgid "Type"
msgstr "Tipo"
#: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
msgid "Value"
msgstr "Valor"
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:39
+#, fuzzy
+msgid "Check various package properties"
+msgstr "Editar las propiedades del paquete"
+
+#: ../lib/advene/gui/views/checker.py:90
+#, fuzzy
+msgid "List of possible issues in the current package"
+msgstr "Guarda el paquete actual"
+
+#: ../lib/advene/gui/views/checker.py:108
+#, fuzzy
+msgid "Overlapping"
+msgstr "traslapa"
+
+#: ../lib/advene/gui/views/table.py:55
msgid "Annotation table view"
msgstr ""
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
msgid "Display annotations in a table"
msgstr ""
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
#, fuzzy
msgid "Snapshot"
msgstr "Fotografias actualizadas"
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+#, fuzzy
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr "No puedo borrar la anotación: tiene relaciones."
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
#: ../lib/advene/gui/edit/elements.py:675
#: ../lib/advene/gui/edit/elements.py:717
#: ../lib/advene/gui/edit/elements.py:1108
msgid "Content"
msgstr "Contenido"
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
msgid "Begin"
msgstr "Inicio"
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
msgid "End"
msgstr "Final"
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
msgid "Duration"
msgstr ""
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
#: ../lib/advene/gui/edit/elements.py:507
#: ../lib/advene/gui/edit/elements.py:556
@@ -2663,56 +2760,56 @@ msgstr ""
msgid "Id"
msgstr "Id"
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
msgid "Export data to file..."
msgstr ""
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
#, python-format
msgid "Error while exporting data to %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "type"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "begin"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "end"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "content"
msgstr ""
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
msgid "Generic table view"
msgstr ""
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
msgid "Display Advene elements in a table."
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element title"
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element type"
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
#: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
#: ../lib/advene/gui/edit/imports.py:331
#: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2751,13 +2848,13 @@ msgstr ""
msgid "Adhoc views"
msgstr ""
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
msgid "Tree view"
msgstr "Vista de arbol"
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
msgid "Refresh"
msgstr ""
@@ -2765,25 +2862,76 @@ msgstr ""
msgid "Package View"
msgstr "VIsta de paquete"
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr "No puedo borrar la anotación: tiene relaciones."
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, fuzzy, python-format
+msgid "Move selection to type %s"
+msgstr "tipos de relaciones"
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, python-format
+msgid "Duplicate annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, python-format
+msgid "Move annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+msgid "Duplicate and create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr "Crear una relacion"
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+msgid "Create a new relation-type."
+msgstr ""
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
msgid "AnnotationDisplay"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
msgid "Display the contents of an annotation"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
msgid "No annotation"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
msgid "Current time"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
#, python-format
msgid ""
"Schema %(schema)s\n"
@@ -2792,15 +2940,21 @@ msgid ""
"Id: %(id)s"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
msgid "Screenshot"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
#: ../lib/advene/gui/views/relationdisplay.py:104
msgid "Contents"
msgstr ""
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+#, fuzzy
+msgid "Validate"
+msgstr "Valor"
+
#: ../lib/advene/gui/views/__init__.py:193
msgid "Invalid view id"
msgstr ""
@@ -2824,7 +2978,7 @@ msgstr ""
msgid "Enter a view name to save this parametered view"
msgstr ""
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
#, python-format
msgid "Error: the identifier %s contains invalid characters."
msgstr ""
@@ -2857,7 +3011,7 @@ msgstr ""
msgid "Click or drag-and-drop to reattach view"
msgstr ""
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
msgid "Caption"
msgstr ""
@@ -2875,131 +3029,112 @@ msgstr ""
msgid "Navigation popup"
msgstr "Popup de navegación"
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
msgid "Transcription"
msgstr "Transcripcion"
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
#, fuzzy
msgid "Display annotations as a text transcription"
msgstr "Muestra las anotaciones como transcripcion"
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
#: ../lib/advene/gui/edit/montage.py:54
#: ../lib/advene/gui/edit/transcribe.py:85
msgid "Save view"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
#: ../lib/advene/gui/views/interactivequery.py:60
#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
#: ../lib/advene/gui/edit/transcribe.py:86
msgid "Save default options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
#, python-format
msgid "Error in source evaluation %(source)s: %(error)s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
msgid "Transcription options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
msgid "Default representation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
msgid "Use the default representation for annotations"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
#: ../lib/advene/gui/edit/elements.py:962
msgid "Representation"
msgstr "Representacion"
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
msgid ""
"If default representation is unchecked,\n"
"this TALES expression that will be used to format the annotations."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
msgid "Separator"
msgstr "Separador"
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
msgid "This separator will be inserted between the annotations."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
msgid "Whitespace"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
msgid "Newline"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
msgid "Tabulation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
msgid "Dash"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
msgid "User defined"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid "User-defined separator"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid ""
"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
"a tabulation."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Display timestamps"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Insert timestsamp values"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
msgid "Display annotation bounds"
msgstr "Muestra los limites de la anotacion"
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:207
-msgid "Updating modified annotations"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
#, python-format
msgid ""
"Cannot convert the following annotations,\n"
@@ -3007,53 +3142,53 @@ msgid ""
"%s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
msgid ""
"Cannot validate the update.\n"
"The representation pattern is too complex."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
msgid "Save transcription to a text file"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
msgid "Apply the modifications"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
msgid "Find text"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
msgid "Quickly switch display options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
msgid "Refresh the transcription"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
msgid "Edit preferences"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
#, python-format
msgid "Annotation %s"
msgstr "Anotación %s"
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
msgid "Play"
msgstr "Reproducir"
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
#, python-format
msgid "Cannot write to %(filename)s: %(error)s:"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
#: ../lib/advene/gui/edit/transcribe.py:884
#, python-format
msgid "Transcription saved to %s"
@@ -3208,7 +3343,7 @@ msgstr ""
msgid "Convert bookmarks to annotations"
msgstr ""
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
msgid "Comment here"
msgstr ""
@@ -3276,7 +3411,7 @@ msgid "Result of a query"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
#, python-format
msgid "'%s'"
msgstr ""
@@ -3301,7 +3436,7 @@ msgid "Search/replace content in %d elements"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
msgid "Empty quicksearch string"
msgstr ""
@@ -3315,7 +3450,7 @@ msgid "Edit query"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
msgid "String to search"
msgstr ""
@@ -3455,7 +3590,7 @@ msgstr ""
msgid "Edit resource"
msgstr ""
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
msgid "Package finder"
msgstr ""
@@ -3467,7 +3602,7 @@ msgstr ""
msgid "Tag Bag"
msgstr ""
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
msgid "Bag of tags"
msgstr ""
@@ -3476,8 +3611,8 @@ msgid "New tag"
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
#: ../lib/advene/gui/edit/properties.py:46
#: ../lib/advene/gui/edit/transcribe.py:147
#: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3493,7 +3628,7 @@ msgid "Enter a new tag name and select its color."
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
msgid "Name"
msgstr "Nombre"
@@ -3501,13 +3636,13 @@ msgstr "Nombre"
#: ../lib/advene/gui/edit/elements.py:871
#: ../lib/advene/gui/edit/elements.py:951
#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
#: ../lib/advene/rules/actions.py:133
msgid "Color"
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
msgid "The tag contains invalid characters"
msgstr ""
@@ -3558,61 +3693,56 @@ msgstr "Muestra un mensaje"
msgid "EditAccumulator"
msgstr ""
-#: ../lib/advene/gui/views/editaccumulator.py:70
-#, fuzzy
-msgid "Validate"
-msgstr "Valor"
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
msgid "Timeline"
msgstr "Linea de tiempo"
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
msgid "Display annotations on a timeline"
msgstr "Muestra las anotaciones en una linea de tiempo"
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
msgid "Limit display to current area"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
#, fuzzy
msgid "Display whole movie"
msgstr "Muestra un marcador"
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
#, python-format
msgid "Cannot find annotation type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
msgid "No scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
msgid "Continuous scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
msgid "Discrete scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
msgid "Annotation scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
#, fuzzy, python-format
msgid "%d annotations"
msgstr "anotaciones"
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
#, fuzzy
msgid "Display all types"
msgstr "Muestra %s"
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
#, python-format
msgid ""
"There are %d annotations.\n"
@@ -3622,413 +3752,412 @@ msgid ""
"click on the 'Display all types' button below."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
#, fuzzy
msgid "Split at current player position"
msgstr "Detener el reproductor"
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
msgid "Center and zoom"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
#: ../lib/advene/rules/elements.py:1000
msgid "Creation of a new annotation type"
msgstr "Creación de un nuevo tipo de anotacion"
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr "Crear una relacion"
-
-#: ../lib/advene/gui/views/timeline.py:1066
-msgid "Create a new relation-type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
msgid "Merge with this annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
msgid "Align both begin times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
msgid "Align both end times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
msgid "Align end time to selected begin time"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
msgid "Align begin time to selected end time"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
msgid "Align all times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr "No puedo borrar la anotación: tiene relaciones."
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
msgid "Select the appropriate relation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1237
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, fuzzy, python-format
-msgid "Move selection to type %s"
-msgstr "tipos de relaciones"
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, python-format
-msgid "Duplicate annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, python-format
-msgid "Move annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
#, python-format
msgid "Duplicate to type %(type)s at %(position)s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
#, python-format
msgid "Move to type %(type)s at %(position)s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1276
-msgid "Duplicate and create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
#, python-format
msgid "Duplicate at %s and create a relation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
msgid "Annotation filter"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
msgid "Enter the searched string"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
#, python-format
msgid "Duplicate all annotations to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
#, python-format
msgid "Move all annotations to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
#, python-format
msgid "Duplicate all annotations matching a string to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
#, python-format
msgid "Move all annotations matching a string to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
#, python-format
msgid "Align all annotation time codes using %s as reference."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
#, python-format
msgid "Align all annotation contents using %s as reference"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, fuzzy, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Creacion de una nueva anotacion"
+
+#: ../lib/advene/gui/views/timeline.py:1946
+#, fuzzy
+msgid "Displaying done."
+msgstr "Muestra un popup"
+
+#: ../lib/advene/gui/views/timeline.py:2438
msgid "Create a new annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
#, fuzzy
msgid "Zoom on region"
msgstr "Selecciona una accion"
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
#, fuzzy
msgid "Restrict display to region"
msgstr "No muestra las relaciones"
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
#: ../lib/advene/gui/edit/transcribe.py:496
#, python-format
msgid "Position %s"
msgstr "Posicion %s"
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
#, fuzzy
msgid "New annotation at player time"
msgstr "tipo de anotacion"
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
#, fuzzy
msgid "New annotation at mouse position"
msgstr "Nueva anotacion: %s"
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
msgid "Selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
msgid "Cannot zoom more"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
#, python-format
msgid "From schema %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
msgid "Restrict playing to this annotation-type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
msgid "Goto previous annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
msgid "Goto next annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
msgid "+"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
#: ../lib/advene/gui/edit/transcribe.py:1027
msgid "Create a new annotation type"
msgstr "Crea un nuevo tipo de anotacion"
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
msgid "Open an annotation display view"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
msgid "Open a slave montage view (coordinated zoom level)"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3109
msgid "No selected annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
#, python-format
msgid "%d selected annotation(s)"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
msgid "Unselect all annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
#, fuzzy
msgid "Create a static view"
msgstr "Crear una nueva vista..."
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
msgid "Highlight selection in other views"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
msgid "Tag selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
msgid "Delete selected annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
msgid "Display selection in a table"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
msgid "Center and zoom on selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
msgid "Edit selected annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
msgid "Merge annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+#, fuzzy
+msgid "Display statistics"
+msgstr "Muestra un popup"
+
+#: ../lib/advene/gui/views/timeline.py:3254
msgid "Goto previous page"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
msgid "Goto next page"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
#: ../lib/advene/gui/edit/montage.py:535
msgid "Inspector"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3348
msgid ""
"Delete the selected annotations or drop an annotation here to delete it."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
msgid ""
"Drag an annotation type here to remove it from display.\n"
"Click to edit all displayed types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
msgid "Selection actions"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
msgid "Display relations"
msgstr "Muestra las relaciones"
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
#, fuzzy
msgid "Display all relations"
msgstr "Muestra las relaciones"
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
#: ../lib/advene/gui/plugins/tracetimeline.py:421
#: ../lib/advene/gui/edit/montage.py:439
msgid "Zoom out"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
#: ../lib/advene/gui/plugins/tracetimeline.py:426
#: ../lib/advene/gui/edit/montage.py:444
msgid "Zoom in"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
msgid "Center on current player position."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
msgid "Automatically activate loop when clicking on an annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
msgid "Displayed"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
msgid "Not displayed"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
msgid "< All <"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
msgid "> All >"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
msgid "Displayed annotation types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
msgid "Relation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
msgid "Display relation types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
msgid "Relation content"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
msgid "Display relation content"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight active annotations"
msgstr "Realzar las anotaciones activas"
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
msgid "Enter the tag for the selection"
msgstr ""
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
msgid "Scroller"
msgstr ""
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
#, fuzzy, python-format
msgid "Set of %s annotations"
msgstr "anotaciones"
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
#, fuzzy
msgid "Refresh snapshot"
msgstr "Toma una fotografia"
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+#, fuzzy
+msgid "Save as..."
+msgstr "Guardando el paquete"
+
+#: ../lib/advene/gui/widget.py:1072
#, fuzzy
msgid "Use current player position"
msgstr "Detener el reproductor"
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+#, fuzzy
+msgid "Adjust timestamp"
+msgstr "Timestamp no valida"
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
#, fuzzy
msgid "Video player"
msgstr "_Configura reproductor"
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
#, fuzzy
msgid "Complementary video player"
msgstr "Error interno en el reproductor de video"
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
#, fuzzy
msgid "Select video file"
msgstr "Selecciona un archivo de pelicula"
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
#, fuzzy
msgid "Select a video file"
msgstr "Selecciona un archivo de pelicula"
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
msgid "Synchronize"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
#, fuzzy
msgid "Offset in ms"
msgstr "Compensar"
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+#, fuzzy
+msgid "Drag and drop to get player time"
+msgstr "tipo de anotacion"
+
#: ../lib/advene/gui/plugins/actions.py:52
msgid "Display a popup"
msgstr "Muestra un popup"
@@ -4281,145 +4410,145 @@ msgstr ""
msgid "New bookmark"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
#, python-format
msgid "Rendering type %(type)s as %(presentation)s"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
#, fuzzy
msgid "Snapshot only"
msgstr "Fotografias actualizadas"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
#, fuzzy
msgid "Overlayed snapshot only"
msgstr "Fotografias actualizadas"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
#, fuzzy
msgid "Timestamp only"
msgstr "Solo texto"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
#, fuzzy
msgid "Snapshot+timestamp"
msgstr "Timestamp no valida"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
#, fuzzy
msgid "Annotation content"
msgstr "Tipo de anotacion"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
msgid "as a list"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
msgid "as a table"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
msgid "Play video"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
#, fuzzy
msgid "Show timestamp only"
msgstr "Solo texto"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
#, fuzzy
msgid "Show content only"
msgstr "Contenido"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
#, fuzzy
msgid "Show snapshot only"
msgstr "Fotografias actualizadas"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
#, fuzzy
msgid "Show overlayed timestamp"
msgstr "Timestamp no valida"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
msgid "Show overlayed content"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
#, fuzzy, python-format
msgid "Annotation type %s"
msgstr "tipos de anotaciones"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
#, fuzzy
msgid "display as list"
msgstr "Muestra las relaciones"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
#, fuzzy
msgid "display as table"
msgstr "Muestra un marcador"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
#, fuzzy
msgid "display as transcription"
msgstr "Muestra como transcripcion"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
#, fuzzy
msgid "Open link"
msgstr "Abrir %s"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
#, fuzzy, python-format
msgid "HTML editor: cannot parse content (%s)"
msgstr "Elige un tipo de anotacion"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
#, fuzzy, python-format
msgid "Heading %d"
msgstr "Editar %s"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
msgid "Bold"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
msgid "Italic"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
msgid "Header"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
msgid "Copy"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
#, fuzzy
msgid "Cut"
msgstr "Actual"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
#, fuzzy
msgid "Paste"
msgstr "Pausar"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
msgid "Undo"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
msgid "WYSIWYG editor"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
#, fuzzy
msgid "Edit HTML source"
msgstr "Editar %s"
@@ -4434,98 +4563,98 @@ msgstr "Vista de relaciones"
msgid "Display shot validation interface"
msgstr "Muestra el historial de navegacion"
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
#, python-format
msgid "Merged #%(first)d-#%(second)d into #%(first)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
msgid "Last action undone"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
#, python-format
msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
#, fuzzy, python-format
msgid "Cannot split annotation #%(current)d: out of bounds."
msgstr "No puedo borrar la anotación: tiene relaciones."
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
#, python-format
msgid "Changed cut between #%(first)d and %(second)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
#, fuzzy
msgid "Changed begin time for first annotation"
msgstr "Finalizando la edicion de una anotacion"
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
#, fuzzy
msgid "No annotations to adjust"
msgstr "Nueva anotacion: %s"
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
msgid ""
"Click on the frame just after the cut to adjust the cut time.\n"
"Control-click on a frame to indicate a missing cut."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
#, python-format
msgid "Begin of #%(index)d (title: %(content)s)"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
msgid "< Previous cut"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
#, fuzzy
msgid "Display previous cut"
msgstr "Muestra los limites de la anotacion"
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
msgid "Next cut >"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
#, fuzzy
msgid "Display next cut"
msgstr "Muestra los limites de la anotacion"
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
#, fuzzy
msgid "Go to annotation containing current player time."
msgstr "tipo de anotacion"
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
#: ../lib/advene/gui/edit/frameselector.py:192
#, fuzzy
msgid "Refresh snapshots"
msgstr "Toma una fotografia"
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
#: ../lib/advene/gui/edit/frameselector.py:193
msgid "Refresh missing snapshots"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
msgid "Undo last modification"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
msgid "Merge with previous"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
msgid "Merge with previous annotation, i.e. remove this bound."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
#, fuzzy
msgid "Close view."
msgstr "Cerrar"
@@ -4576,7 +4705,7 @@ msgid " Filters"
msgstr "Concordar filtro"
#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Reset"
msgstr ""
@@ -4614,56 +4743,56 @@ msgstr "Concordar filtro"
#: ../lib/advene/gui/plugins/eventaccumulator.py:559
#: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
#, fuzzy, python-format
msgid "of an annotation (%s)"
msgstr "anotacion"
#: ../lib/advene/gui/plugins/eventaccumulator.py:561
#: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
#, fuzzy, python-format
msgid "of a relation (%s)"
msgstr "relacion"
#: ../lib/advene/gui/plugins/eventaccumulator.py:563
#: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
#, fuzzy, python-format
msgid "of an annotation type (%s)"
msgstr "tipos de anotaciones"
#: ../lib/advene/gui/plugins/eventaccumulator.py:565
#: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
#, fuzzy, python-format
msgid "of a relation type (%s)"
msgstr "tipos de relaciones"
#: ../lib/advene/gui/plugins/eventaccumulator.py:567
#: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
#, fuzzy, python-format
msgid "of a schema (%s)"
msgstr "esquemas"
#: ../lib/advene/gui/plugins/eventaccumulator.py:569
#: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
#, fuzzy, python-format
msgid "of a view (%s)"
msgstr "vistas"
#: ../lib/advene/gui/plugins/eventaccumulator.py:571
#: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
#, fuzzy, python-format
msgid "of a package (%s)"
msgstr "Paquete(s) cargados"
#: ../lib/advene/gui/plugins/eventaccumulator.py:573
#: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
#, fuzzy, python-format
msgid "of an unknown item (%s)"
msgstr "tipos de anotaciones"
@@ -4712,7 +4841,7 @@ msgid "Search"
msgstr ""
#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
#, python-format
msgid "%(name)s (%(index)s)"
msgstr ""
@@ -4770,30 +4899,30 @@ msgstr ""
msgid "Zoom on action"
msgstr "Selecciona una accion"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
msgid "Item Id"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
msgid "Item name or class"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
#, fuzzy
msgid "Type or schema"
msgstr "Esquema"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
#, fuzzy
msgid "Operations"
msgstr "Acciones genericas"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
#, fuzzy
msgid "Comment"
msgstr "Contenido"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
#: ../lib/advene/gui/edit/merge.py:191
msgid "Action"
msgstr ""
@@ -4842,19 +4971,24 @@ msgstr ""
msgid "Log Messages"
msgstr "Sin mensaje"
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
#, fuzzy
msgid "_Select player"
msgstr "_Reinicia reproductor"
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
msgid "_View"
msgstr "_Vista"
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
msgid "Packages"
msgstr "Paquetes"
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+#, fuzzy
+msgid "Open recent"
+msgstr "Abrir %s"
+
#: ../lib/advene/gui/main.py:239
msgid "Input from the keyboard (function keys)"
msgstr ""
@@ -4883,138 +5017,143 @@ msgid "Open a package"
msgstr "Abre un archivo de paquete"
#: ../lib/advene/gui/main.py:246
+msgid "Show recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:247
#, fuzzy
msgid "_Save package"
msgstr "Guardando el paquete"
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
#, fuzzy
msgid "Save the package"
msgstr "Guardando el paquete"
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
#, fuzzy
msgid "Save package as..."
msgstr "Guardando el paquete"
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
#, fuzzy
msgid "Save the package as..."
msgstr "Guardando el paquete"
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
#, fuzzy
msgid "Close package"
msgstr "No paquete"
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
#, fuzzy
msgid "Close the package"
msgstr "Guardando el paquete"
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
msgid "Save session"
msgstr ""
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
msgid "Save the current session (list of opened packages)"
msgstr ""
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
msgid "Save workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
msgid "...as package view"
msgstr ""
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "...as standard workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "Use the current layout as standard workspace in the future"
msgstr ""
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
#, fuzzy
msgid "Associate a video _File"
msgstr "Selecciona un archivo de pelicula"
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
#, fuzzy
msgid "Associate a video file"
msgstr "Selecciona un archivo de pelicula"
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
#, fuzzy
msgid "Associate a _DVD"
msgstr "Media asociada"
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
msgid "Associate a chapter from a DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
#, fuzzy
msgid "Associate a _Video stream"
msgstr "Selecciona un archivo de pelicula"
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
msgid "Enter a video stream address"
msgstr ""
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "_Import File"
msgstr "_Importar Archivo"
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "Import data from an external source"
msgstr "Importar datos de una fuente externa"
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
-msgstr ""
+#: ../lib/advene/gui/main.py:261
+#, fuzzy
+msgid "_Process video"
+msgstr "Editar %s"
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
#, fuzzy
msgid "Import data from video processing algorithms"
msgstr "Importar datos de una fuente externa"
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
msgid "Merge package"
msgstr ""
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
msgid "Merge elements from another package"
msgstr "Editar elementos importados de otros paquetes"
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Import _DVD chapters"
msgstr "Importar capitulos del DVD"
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Create annotations based on DVD chapters"
msgstr "Crear anotaciones basadas en los capitulos del DVD"
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
#, fuzzy
msgid "_Export..."
msgstr "Importar datos de una fuente externa"
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
msgid "Export data to another format"
msgstr "Importar datos de una fuente externa"
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
msgid "_Website export..."
msgstr ""
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
msgid "Export views to a website"
msgstr ""
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
#, fuzzy
msgid "_Quit"
msgstr "_Editar"
@@ -5041,14 +5180,6 @@ msgstr "Borrar"
msgid "Create"
msgstr ""
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr "Importar_Paquetes"
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr "Editar elementos importados de otros paquetes"
-
#: ../lib/advene/gui/main.py:284
msgid "P_ackage properties"
msgstr "P_ropiedades del paquete"
@@ -5090,18 +5221,10 @@ msgstr "Evaluador"
msgid "Open python evaluator window"
msgstr "Abre la ventana del evaluador de Python"
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
msgid "Webserver log"
msgstr ""
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr "_InformacionMedia"
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr "Muestra información acerca de la media"
-
#: ../lib/advene/gui/main.py:296
msgid "_Player"
msgstr "_Reproductor"
@@ -5142,14 +5265,6 @@ msgstr "_Reinicia reproductor"
msgid "Restart the player"
msgstr "Iniciar el reproductor"
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr "Fotografias actualizadas"
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr ""
-
#: ../lib/advene/gui/main.py:302
#, fuzzy
msgid "Update annotation screenshots"
@@ -5223,261 +5338,272 @@ msgstr ""
msgid "_About"
msgstr "_Acerca"
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:344
msgid "Open a package file"
msgstr "Abre un archivo de paquete"
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
msgid "Save the current package"
msgstr "Guarda el paquete actual"
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
msgid "Save the package with a new name"
msgstr "Guarda el paquete actual con un nuevo nombre"
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
msgid "Select movie file..."
msgstr "Seleccionar archivo de pelicula"
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
msgid "Select DVD"
msgstr "Selecciona DVD"
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
#, fuzzy
msgid "Create a text annotation"
msgstr "Crear una nueva anotacion"
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
#, fuzzy
msgid "Create a graphical annotation"
msgstr "Crear una nueva anotacion"
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:389
#, fuzzy
msgid "Snapshotter activity"
msgstr "Fotografias actualizadas"
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
#, python-format
msgid "%d queued requests"
msgstr ""
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
msgid "Cancel all requests"
msgstr ""
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
#, fuzzy
msgid "No snapshotter"
msgstr "Todas las fotografias estan actualizadas."
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
#, fuzzy
msgid "No snapshotting activity"
msgstr "Todas las fotografias estan actualizadas."
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
#, fuzzy
msgid "Snapshotting"
msgstr "Fotografias actualizadas"
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
#, fuzzy
msgid "Display application log messages"
msgstr "Muestra un mensaje"
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
msgid "Quicksearch lists"
msgstr ""
-#: ../lib/advene/gui/main.py:479
+#: ../lib/advene/gui/main.py:488
msgid "Please specify the lists of elements to be searched."
msgstr ""
-#: ../lib/advene/gui/main.py:498
+#: ../lib/advene/gui/main.py:507
#, python-format
msgid ""
"Searching on %s.\n"
"Left click to launch the search, right-click to set the quicksearch options"
msgstr ""
-#: ../lib/advene/gui/main.py:499
-#, fuzzy, python-format
-msgid "String to search in %s"
-msgstr "Cadena a mostrar"
-
-#: ../lib/advene/gui/main.py:523
-msgid "Open this view..."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:540
-#, fuzzy
-msgid "All available views"
-msgstr "Archivos disponibles"
-
-#: ../lib/advene/gui/main.py:559
-msgid "Transcription of annotations"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:564
-msgid "Schema editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:569
-msgid "Dynamic montage"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:573
-#, fuzzy
-msgid "Open a comment view in the web browser"
-msgstr "Abrir un URL en un navegador web"
-
-#: ../lib/advene/gui/main.py:574
-#, fuzzy
-msgid "Create or open a comment view"
-msgstr "Creacion de una nueva vista"
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:578
-#, fuzzy
-msgid "Display edition history"
-msgstr "Muestra el historial de navegacion"
-
-#: ../lib/advene/gui/main.py:579
-#, fuzzy
-msgid "Visualise the activity trace preview"
-msgstr "Activar relacionados"
-
-#: ../lib/advene/gui/main.py:580
-#, fuzzy
-msgid "Visualise the activity trace as a timeline"
-msgstr "Activar relacionados"
+#: ../lib/advene/gui/main.py:508
+#, fuzzy, python-format
+msgid "String to search in %s"
+msgstr "Cadena a mostrar"
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
#, fuzzy
msgid "Tracing : "
msgstr "Acciones GUI"
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
msgid "off"
msgstr ""
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
#, fuzzy
msgid "on"
msgstr "Hecho"
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
msgid "Launch search"
msgstr ""
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
msgid "Ignore case"
msgstr ""
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
msgid "Searched elements"
msgstr ""
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
msgid "Playing"
msgstr "Reproduciendo"
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
msgid "Pause"
msgstr "Pausar"
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
msgid "Init"
msgstr "Inicio"
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
msgid "Undefined"
msgstr "Sin definir"
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
msgid "Enter the new time value"
msgstr ""
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
#, fuzzy, python-format
msgid "Replace content in %d elements"
msgstr "Selecciona un elemento"
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
msgid "Find word"
msgstr ""
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
msgid "Replace by"
msgstr ""
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
#, python-format
msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
msgstr ""
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
msgid "The video extracting feature is not available."
msgstr ""
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
#, fuzzy
msgid "Video export"
msgstr "_Configura reproductor"
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
#, python-format
msgid "Exporting video montage/fragment to %%(filename)s"
msgstr ""
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
msgid "Please choose a destination filename"
msgstr ""
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
msgid ""
"No media association is defined in the package. Please use the 'File/"
"Associate a video file' menu item to associate a media file."
msgstr ""
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
#, python-format
msgid ""
"The associated media %s could not be found. Please use the 'File/Associate a "
"video file' menu item to associate a media file."
msgstr ""
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
#, python-format
msgid ""
"You are now working with the following video:\n"
"%s"
msgstr ""
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+msgid "Open this view..."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1205
+#, fuzzy
+msgid "_All available views"
+msgstr "Archivos disponibles"
+
+#: ../lib/advene/gui/main.py:1224
+msgid "Transcription of annotations"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1229
+msgid "Schema editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1234
+msgid "Dynamic montage"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1238
+#, fuzzy
+msgid "Open a comment view in the web browser"
+msgstr "Abrir un URL en un navegador web"
+
+#: ../lib/advene/gui/main.py:1239
+#, fuzzy
+msgid "Create or open a comment view"
+msgstr "Creacion de una nueva vista"
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1243
+#, fuzzy
+msgid "Display edition history"
+msgstr "Muestra el historial de navegacion"
+
+#: ../lib/advene/gui/main.py:1244
+#, fuzzy
+msgid "Visualise the activity trace preview"
+msgstr "Activar relacionados"
+
+#: ../lib/advene/gui/main.py:1245
+#, fuzzy
+msgid "Visualise the activity trace as a timeline"
+msgstr "Activar relacionados"
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1348
#, python-format
msgid ""
"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5486,442 +5612,474 @@ msgid ""
"cnrs.fr/advene/</span>"
msgstr ""
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
msgid "Go to the website"
msgstr ""
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
msgid "Advene release"
msgstr ""
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
#, python-format
msgid "You are using a up-to-date version of Advene (%(current)s)."
msgstr ""
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
msgid "Advene is up-to-date"
msgstr ""
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
msgid "Choose a color"
msgstr ""
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
msgid "Select an annotation to loop on it"
msgstr ""
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
#, python-format
msgid "Looping on %s"
msgstr ""
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
msgid "No active dynamic view"
msgstr ""
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
msgid "Create a new dynamic view."
msgstr ""
-#: ../lib/advene/gui/main.py:1471
+#: ../lib/advene/gui/main.py:1502
+msgid "Edit the current dynamic view."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1514
#, fuzzy
msgid "No dynamic view"
msgstr "Vista dinamica"
-#: ../lib/advene/gui/main.py:1473
-msgid "Edit the current dynamic view."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1546
#, fuzzy
msgid "Playing rate"
msgstr "Reproduciendo"
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
msgid "History"
msgstr ""
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
msgid "Popups"
msgstr "Popups"
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid ""
"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
msgstr ""
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid "Information"
msgstr ""
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
#, fuzzy
msgid "Cannot create annotation. There is no schema to put it in."
msgstr "No puedo borrar la anotación: tiene relaciones."
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
#, fuzzy
msgid "Default annotation type"
msgstr "tipo de anotacion"
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
#, fuzzy
msgid "Annotation created"
msgstr "Tipo de anotacion"
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
msgid "Play/Pause [Control-Tab / Control-Space]"
msgstr ""
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
#, python-format
msgid "Rewind (%.02f s) [Control-Left]"
msgstr ""
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
#, python-format
msgid "Forward (%.02f s) [Control-Right]"
msgstr ""
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
msgid "Previous frame [Control-Down]"
msgstr ""
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
msgid "Next frame [Control-Up]"
msgstr ""
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
msgid "Fullscreen"
msgstr ""
-#: ../lib/advene/gui/main.py:2180
+#: ../lib/advene/gui/main.py:2210
+#, fuzzy, python-format
+msgid "Screenshot saved to %s"
+msgstr "Transcripción guardada a %s"
+
+#: ../lib/advene/gui/main.py:2212
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2214
+#, fuzzy, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr "Fotografias actualizadas"
+
+#: ../lib/advene/gui/main.py:2222
+#, fuzzy
+msgid "Save screenshot to..."
+msgstr "Fotografias actualizadas"
+
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2278
#, fuzzy
msgid "Export package data"
msgstr "Explora la informacion del paquete"
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2280
#, fuzzy, python-format
msgid "Export annotation type %s"
msgstr "tipos de anotaciones"
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2282
#, fuzzy, python-format
msgid "Export element %s"
msgstr "Elemento de busqueda %s"
-#: ../lib/advene/gui/main.py:2210
+#: ../lib/advene/gui/main.py:2308
#, fuzzy
msgid "Export format"
msgstr "Importar datos de una fuente externa"
-#: ../lib/advene/gui/main.py:2247
+#: ../lib/advene/gui/main.py:2345
msgid " (modified)"
msgstr ""
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2348
#, python-format
msgid "Activate %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
-#, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2297
-#, python-format
-msgid "Open %s"
-msgstr "Abrir %s"
-
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
msgid "Saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
msgid "Restoring workspace..."
msgstr ""
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
#, python-format
msgid "Do you wish to restore the %s workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
msgid "Clear the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
#, python-format
msgid "View %s is not an adhoc view"
msgstr ""
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
#, python-format
msgid "Cannot identify the adhoc view %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
msgid "Choose the annotation type to display as transcription."
msgstr "Elige el tipo de anotacion para mostrarlo como transcripcion."
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
#, python-format
msgid ""
"Error: unable to find an edit popup for %(element)s:\n"
"%(error)s"
msgstr ""
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
#, fuzzy, python-format
msgid "Editing %s"
msgstr "Editar %s"
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
#, fuzzy, python-format
msgid "Comment view (%s)"
msgstr "Creacion: %s"
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
#, python-format
msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
msgstr ""
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
#, python-format
msgid "Activating package %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
#, python-format
msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
msgstr ""
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
msgid "Do you want to restore the saved workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
msgid "Advene"
msgstr "Advene"
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
#, python-format
msgid "Got exception %s. Trying to continue."
msgstr "Hubo excepción %s. Tratando de continuar. "
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
#, fuzzy
msgid "Unknown"
msgstr "Regla desconocida"
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
#, python-format
msgid ""
"The package(s) %s are modified.\n"
"Save them now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
msgid "Choose an annotation type."
msgstr "Elige un tipo de anotacion."
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
msgid "No annotation type is defined."
msgstr "No hay tipo de anotacion definido."
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
msgid "Creating a new type."
msgstr ""
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
msgid "Title of the new type"
msgstr ""
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
msgid ""
"Id of the new type. It is generated from the title, but you may change it if "
"necessary."
msgstr ""
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
msgid "Specify the content-type for the annotation type"
msgstr ""
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
msgid "Content type"
msgstr ""
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
msgid "Create a new schema"
msgstr "Crea un nuevo esquema."
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
msgid "Choose an existing schema for the new type, or create a new one"
msgstr ""
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
msgid "Specify the schema title"
msgstr ""
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
msgid "Title of the new schema"
msgstr ""
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
msgid ""
"Id of the new schema. It is generated from the title, but you may change it "
"if necessary."
msgstr ""
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
msgid ""
"You specified a annotation-type identifier that already exists. Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
msgid "You specified a existing schema identifier. Using the existing schema."
msgstr ""
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
msgid ""
"You specified an existing identifier that does not reference a schema. "
"Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
msgid "Choose a schema."
msgstr "Elige un esquema."
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
msgid "You specified an existing identifier. Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
#, python-format
msgid "Package %s modified"
msgstr ""
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
#, python-format
msgid ""
"The package %s has been modified but not saved.\n"
"Save it now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
#, python-format
msgid "%s snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
#, python-format
msgid "Do you want to save the snapshots for media %s?"
msgstr ""
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
#, fuzzy, python-format
msgid "Cannot save imagecache for %(media)s: %(e)s"
msgstr "No se puede guardar el archivo: %s"
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
#, fuzzy
msgid "first frame"
msgstr "esta antes"
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
msgid "last frame"
msgstr ""
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
#, fuzzy, python-format
msgid "Click on %(bound)s of %(annotation)s"
msgstr "Creacion de una nueva anotacion"
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
#, fuzzy, python-format
msgid "Update %(bound)s of %(annotation)s"
msgstr "Creacion de una nueva anotacion"
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3516
+#, fuzzy
+msgid "Set new timestamp value"
+msgstr "Solo texto"
+
+#: ../lib/advene/gui/main.py:3523
+#, fuzzy
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr "Muestra las anotaciones como subtitulos"
+
+#: ../lib/advene/gui/main.py:3602
#, fuzzy
msgid "Text annotation"
msgstr "anotacion"
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
#, fuzzy
msgid "Cannot find an appropriate annotation type"
msgstr "Crea un nuevo tipo de anotacion"
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
#, fuzzy
msgid "Graphical annotation"
msgstr "Creacion de una nueva anotacion"
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
msgid ""
"An unsaved template package exists\n"
"Save it first."
msgstr ""
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
msgid "Package modified"
msgstr "Paquete modificado. "
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
msgid ""
"The package that you want to close has been modified but not saved.\n"
"Save it now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
msgid "Load a package"
msgstr "Cargar un paquete."
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
msgid ""
"A video file was selected. Pretend that the user selected 'Select a video "
"file'..."
msgstr ""
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
#, python-format
msgid ""
"The file %s does not look like a valid Advene package. It should have a .azp "
"or .xml extension. Try to open anyway?"
msgstr ""
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
msgid ""
"You are trying to load a session file, but there are unsaved packages. "
"Proceed anyway?"
msgstr ""
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
msgid "Do you want to save the current workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
#, python-format
msgid "Could not save the package: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
#, python-format
msgid "Save the package %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
msgid "Invalid file extension"
msgstr ""
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
#, python-format
msgid ""
"Your package contains resources,\n"
@@ -5929,93 +6087,93 @@ msgid ""
"Should I put the correct extension?"
msgstr ""
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
msgid "OK, the resources will be lost."
msgstr ""
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
msgid "Aborting package saving"
msgstr ""
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
msgid "Save the session in..."
msgstr ""
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
#, python-format
msgid "Session saved in %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
msgid "Do you confirm the creation of annotations matching the DVD chapters?"
msgstr ""
"¿Confirmas la creacion de anotaciones concordando con los capitulos del DVD?"
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
msgstr ""
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
msgid "The associated media is not a DVD."
msgstr "El medio asociado no es un DVD. "
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
#, fuzzy, python-format
msgid "Processing %s video"
msgstr "Editar %s"
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
#, fuzzy
msgid "No associated video file"
msgstr "Selecciona un archivo de pelicula"
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
msgid "Standard RuleSet"
msgstr ""
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
#, python-format
msgid ""
"Player not active - cached duration : %(duration)s (%(durationms)d ms)"
msgstr ""
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
msgid ""
"GNU General Public License\n"
"See http://www.gnu.org/copyleft/gpl.html for more details"
msgstr ""
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
msgid "Visit the Advene web site for examples and documentation."
msgstr ""
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
msgid "Select a movie file"
msgstr "Selecciona un archivo de pelicula"
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
msgid "Title/Chapter selection"
msgstr "Selección de Titulo/Capitulo"
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
#, fuzzy
msgid "Select a video stream"
msgstr "Selecciona un archivo de pelicula"
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
msgid "Enter the address of a video stream"
msgstr ""
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
#, python-format
msgid "Successfully extracted the video stream address (%s) from the url.\n"
msgstr ""
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
msgid "Package properties"
msgstr "Propiedades de paquete"
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
#: ../lib/advene/gui/edit/elements.py:559
#: ../lib/advene/gui/edit/elements.py:644
#: ../lib/advene/gui/edit/elements.py:706
@@ -6027,11 +6185,11 @@ msgstr "Propiedades de paquete"
msgid "Author"
msgstr "Autor"
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
msgid "Author name"
msgstr ""
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
#: ../lib/advene/gui/edit/elements.py:560
#: ../lib/advene/gui/edit/elements.py:645
#: ../lib/advene/gui/edit/elements.py:707
@@ -6043,790 +6201,792 @@ msgstr ""
msgid "Date"
msgstr "Fecha"
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
msgid "Package creation date"
msgstr ""
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
msgid "Package title"
msgstr ""
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
msgid "Associated media"
msgstr "Media asociada"
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Media duration in ms"
msgstr ""
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
msgid "Paths"
msgstr ""
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Data"
msgstr "Data"
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Standard directory for data files"
msgstr ""
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
msgid "Movie path"
msgstr ""
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
#, python-format
msgid ""
"List of directories (separated by %s) to search for movie files (_ means "
"package directory)"
msgstr ""
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Imagecache"
msgstr ""
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Directory for storing the snapshot cache"
msgstr ""
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Player"
msgstr ""
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Directory of the video player"
msgstr ""
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
#, fuzzy
msgid "Shotdetect"
msgstr "Importador de shotdetect"
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
#, fuzzy
msgid "Shotdetect application"
msgstr "Importador de shotdetect"
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
msgid "GUI"
msgstr ""
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid "Interface language (after restart)"
msgstr ""
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid ""
"Language used for the interface (necessitates to restart the application)"
msgstr ""
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
msgid "System default"
msgstr ""
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
msgid "Record activity trace"
msgstr ""
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Expert mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Offer advanced possibilities"
msgstr ""
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Prefer WYSIWYG"
msgstr ""
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Use WYSIWYG editors when possible (HTML, SVG)"
msgstr ""
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid "Player control in edit popups"
msgstr ""
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid ""
"Enable generic player controls in edit windows. This may be undesirable "
"since it overloads some standard text-edition behaviours (esp. control-left/"
"right)."
msgstr ""
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
#, fuzzy
msgid "Open popups"
msgstr "Abrir %s"
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
msgid "Where should we open adhoc views?"
msgstr ""
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
msgid "as a popup window"
msgstr ""
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
msgid "embedded east of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
msgid "embedded west of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
msgid "embedded south of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
msgid "embedded at the right of the window"
msgstr ""
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History size"
msgstr ""
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History filelist size limit"
msgstr ""
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember window size"
msgstr ""
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember the size of opened windows"
msgstr ""
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Bookmark snapshot width"
msgstr ""
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Width of the snapshots representing bookmarks"
msgstr ""
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Bookmark snapshot precision"
msgstr ""
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Precision (in ms) of the displayed bookmark snapshots."
msgstr ""
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
msgid "General"
msgstr ""
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
msgid "Weekly update check"
msgstr ""
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
msgid "Weekly check for updates on the Advene website"
msgstr ""
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
msgid "On exit,"
msgstr ""
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
msgid "How to handle screenshots on exit"
msgstr ""
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
msgid "never save screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
msgid "always save screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
msgid "ask before saving screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
msgid "Auto-save"
msgstr ""
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
msgid "Data auto-save functionality"
msgstr ""
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
msgid "is desactivated"
msgstr ""
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
msgid "is done automatically"
msgstr ""
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
msgid "is done after confirmation"
msgstr ""
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Auto-save interval (in s)"
msgstr ""
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Interval (in seconds) between package auto-saves"
msgstr ""
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
#, fuzzy
msgid "Workspace"
msgstr "Vista estatica predefinida"
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
msgid "On package saving,"
msgstr ""
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
msgid "Do you wish to save the default workspace with the package?"
msgstr ""
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
msgid "never save the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
msgid "always save the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
msgid "ask before saving the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
msgid "On package load,"
msgstr ""
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
msgid "Do you wish to load the workspace saved with the package?"
msgstr ""
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
msgid "never load the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
msgid "always load the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
msgid "ask before loading the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
#, fuzzy
msgid "Video Player"
msgstr "_Configura reproductor"
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
#, fuzzy
msgid "Autostart"
msgstr "Autor"
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
msgid ""
"Automatically start the player when loading a media file (either directly or "
"through a package)"
msgstr ""
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
#, fuzzy
msgid "Fulscreen timestamp"
msgstr "Timestamp no valida"
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
msgid "Display the timestamp over the video when in fullscreen mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
#, fuzzy
msgid "Enable captions"
msgstr "Acciones genericas"
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
msgid "Enable captions over the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
msgid "Caption font"
msgstr ""
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
msgid "TrueType font for captions"
msgstr ""
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG"
msgstr ""
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG captions over the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
msgid "Enable snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width"
msgstr ""
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width in pixels."
msgstr ""
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity"
msgstr ""
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity level. -1 for no messages."
msgstr ""
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
msgid "Devices"
msgstr ""
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
msgid "Standard"
msgstr ""
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "DVD drive"
msgstr ""
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "Drive letter for the DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
msgid "GDI"
msgstr ""
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
msgid "Direct X"
msgstr ""
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "DVD device"
msgstr ""
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "Device for the DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
msgid "X11"
msgstr ""
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
msgid "XVideo"
msgstr ""
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
msgid "GL"
msgstr ""
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output"
msgstr ""
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output module"
msgstr ""
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
#, fuzzy
msgid "Recorder options"
msgstr "Segunda posicion"
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
#, fuzzy
msgid "Audio input"
msgstr "Anadir archivo"
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
msgid "Device name for audio input (with gstrecorder plugin)"
msgstr ""
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record video"
msgstr ""
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record both video and audio"
msgstr ""
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
msgid "<i>Experimental</i>"
msgstr ""
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
msgid "Embed the caption scroller below the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
msgid "Embed the caption view below the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
msgid "Time-related"
msgstr ""
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
msgid "Time format"
msgstr ""
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
#, fuzzy
msgid "Format used to display timecodes"
msgstr "Modo de visualizacion por omision"
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
#, fuzzy
msgid "Default FPS"
msgstr "Vista por omision"
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
msgid ""
"Default FPS (frame-per-second) value, when entering or displaying timestamps "
"with frame numbers."
msgstr ""
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
msgid "Time increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
msgid ""
"Skip duration, when using control-left/right or forward/rewind buttons (in "
"ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
msgid "Second time increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
msgid "Skip duration, when using control-shift-left/right (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
msgid "Third time increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
msgid "Skip duration, when using control-shift-up/down (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid "Custom Up/Down"
msgstr ""
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid ""
"Use third time increment for up/down navigation without having to hold shift."
msgstr ""
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid "Scroll increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid ""
"On most annotations, control+scrollwheel will increment/decrement their "
"bounds by this value (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid "Second scroll increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid ""
"On most annotations, control+shift+scrollwheel will increment/decrement "
"their bounds by this value (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
#, fuzzy
msgid "Player sync"
msgstr "Reproductor detiene"
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
msgid ""
"Interval (in ms) with which we synchronize slave players. Setting a too-low "
"value could render the application unusable. Use 0 to disable continuous "
"synchronization."
msgstr ""
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
msgid "Timeline parameters"
msgstr ""
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
msgid "Font size"
msgstr ""
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
msgid "Font size for annotation widgets"
msgstr ""
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
msgid "Button height"
msgstr ""
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
msgid "Height of annotation widgets"
msgstr ""
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Interline height"
msgstr ""
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Height of interlines"
msgstr ""
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
#, fuzzy
msgid "Text content"
msgstr "Plantilla HTML"
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
#, fuzzy
msgid "Completion mode"
msgstr "Creacion: %s"
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
#, fuzzy
msgid "Enable dynamic completion mode"
msgstr "Acciones genericas"
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
#, fuzzy
msgid "Abbreviation mode"
msgstr "tipos de relacion"
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
#, fuzzy
msgid "Enable abbreviation mode"
msgstr "Acciones genericas"
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
#, fuzzy
msgid "Abbreviations"
msgstr "relaciones"
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
msgid ""
"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
"followed by its replacement."
msgstr ""
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
msgid "Text-To-Speech"
msgstr ""
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
msgid "TTS language"
msgstr ""
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
msgid "What language settings should be used for text-to-speech"
msgstr ""
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
msgid "English"
msgstr ""
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
msgid "French"
msgstr ""
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
msgid "Spanish"
msgstr ""
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
msgid "TTS Encoding"
msgstr ""
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
msgid "What encoding should be used to communicate with the TTS engine"
msgstr ""
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
msgid "TTS Engine"
msgstr ""
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
msgid ""
"Which TTS engine should be used (modification requires restarting Advene to "
"take into account)"
msgstr ""
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
#, fuzzy
msgid "Automatic"
msgstr "Autor"
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
msgid "eSpeak"
msgstr ""
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
msgid "Custom script with standard input"
msgstr ""
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
msgid "Custom script with arguments"
msgstr ""
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
msgid "SAPI"
msgstr ""
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
msgid "MacOS X say"
msgstr ""
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
#, fuzzy
msgid "Generic (text output)"
msgstr "Plugin de vista generica"
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
msgid "You should restart Advene to take some options into account."
msgstr ""
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
#, python-format
msgid "Imagecache saved to %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
msgid "Restarting player..."
msgstr "Reiniciando el reproductor..."
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
#, fuzzy
msgid "Advene log"
msgstr "Advene"
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
msgid "Select the package to merge"
msgstr ""
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
msgid "Saving workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
msgid "Enter a view name to save the workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
#, fuzzy
msgid "Default workspace"
msgstr "Vista estatica predefinida"
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
msgid "Open this workspace when opening the package"
msgstr ""
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
#, python-format
msgid "Error: the view %s exists and is not a workspace view."
msgstr ""
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
#, python-format
msgid "Cannot save default workspace: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
msgid "Standard workspace has been saved"
msgstr ""
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
msgid "Website export"
msgstr ""
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
msgid "Exporting views to a website"
msgstr ""
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
msgid "Output directory"
msgstr ""
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
#, fuzzy
msgid "Specify the output directory"
msgstr "Especificar la compensacion en ms"
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
msgid "Maximum recursion depth"
msgstr ""
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
msgid "Video URL"
msgstr ""
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
msgstr ""
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
#, fuzzy
msgid "Could not export data: "
msgstr "No se puede guardar el archivo: %s"
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
#, fuzzy, python-format
msgid "Website export to %s completed"
msgstr "Importar datos de una fuente externa"
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
msgid "This video player is not able to grab specific screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
#, fuzzy, python-format
msgid "Updating %d snapshots"
msgstr "_Actualiza Fotografias"
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
#, fuzzy
msgid "No snapshot to update"
msgstr "Todas las fotografias estan actualizadas."
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
msgid "You first must load a movie into Advene"
msgstr ""
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
#, fuzzy, python-format
msgid "The movie %s does not seem to exist."
msgstr "<p>La vista GUI %s no existe.</p>"
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
msgid "Generating screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
msgid ""
"<b>Screenshot generation</b>\n"
"\n"
@@ -6838,43 +6998,43 @@ msgid ""
"open."
msgstr ""
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
msgid ""
"The <b>shotdetect</b> application does not seem to be installed. Please "
"check that it is present and that its path is correctly specified in "
"preferences."
msgstr ""
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
msgid ""
"Cannot import shotdetect output. Did you install the shotdetect software?"
msgstr ""
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
msgid "Incomplete shots"
msgstr ""
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
#, python-format
msgid "Detected %s shots"
msgstr ""
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
#, python-format
msgid "Could not run shotdetect: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
#, python-format
msgid "Detecting shots from %s"
msgstr ""
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
#, fuzzy
msgid "Shot detection"
msgstr "Importador de shotdetect"
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
msgid ""
"<b>Shot detection</b>\n"
"\n"
@@ -6884,14 +7044,14 @@ msgid ""
"to augment its value."
msgstr ""
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
#, fuzzy
msgid "Sensitivity"
msgstr "Desactivar"
#: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
msgid "Plain text content"
msgstr ""
@@ -6901,8 +7061,8 @@ msgid "HTML content"
msgstr "Plantilla HTML"
#: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
msgid "Simple-structured content"
msgstr ""
@@ -6911,8 +7071,8 @@ msgid "List of numeric values"
msgstr ""
#: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
msgid "SVG graphics content"
msgstr ""
@@ -7196,49 +7356,41 @@ msgstr ""
msgid "Importer"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
msgid "Advene package importer"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
#, fuzzy
msgid "Not likely"
msgstr "Sin mostrar"
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
#, python-format
msgid "Completed conversion: %(statistics)s"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
#: ../lib/advene/gui/edit/dvdselect.py:73
msgid "Stop"
msgstr "Detener"
-#: ../lib/advene/gui/edit/importer.py:141
-#, python-format
-msgid "Importing %s"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
msgid "Choose the file to import"
msgstr "Elige el archivo a importar"
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Filename"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
#, fuzzy
msgid "Filter"
msgstr "Concordar filtro"
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
#, fuzzy
msgid "Options"
msgstr "Acciones genericas"
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
#, fuzzy
msgid "Start"
msgstr "inicia"
@@ -7311,8 +7463,8 @@ msgstr ""
"debes de dar la siguiente informacion."
#: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
msgid "Rectangular zone content"
msgstr ""
@@ -7378,7 +7530,7 @@ msgid "New resource data"
msgstr ""
#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
msgid "Properties"
msgstr ""
@@ -7624,7 +7776,7 @@ msgid "Error: cannot find a content handler for %s"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
#, python-format
msgid ""
"Cannot read the data:\n"
@@ -7632,12 +7784,12 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
msgid "Save content to..."
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
#, python-format
msgid ""
"Cannot save the data:\n"
@@ -7645,17 +7797,17 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
msgid "Open a file (C-o)"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
msgid "Save to a file (C-s)"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
msgid "Reload the file (C-r)"
msgstr ""
@@ -7663,15 +7815,15 @@ msgstr ""
msgid "Insert a value from the browser (C-i)"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
msgid "Begin time is greater than end time"
msgstr "Tiempo de inicio es mayor que el tiempo final"
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
msgid "Expecting an integer."
msgstr "Esperando entero"
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
#, python-format
msgid ""
"The %(attribute)s attribute could not be updated:\n"
@@ -7681,7 +7833,7 @@ msgid ""
"Resetting to the original value."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
#, python-format
msgid ""
"The following attributes cannot be updated:\n"
@@ -7692,7 +7844,7 @@ msgstr ""
"\n"
"%s"
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
#, python-format
msgid ""
"The following attributes could not be updated:\n"
@@ -7703,25 +7855,25 @@ msgstr ""
"\n"
"%s"
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
msgid "Attribute"
msgstr "Atributo"
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
msgid "Insert an element"
msgstr "Insertar un elemento"
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
msgid "Choose the element to insert."
msgstr "Elegir elemento a insertar"
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
#, python-format
msgid "Some tags contain invalid characters: %s"
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
msgid "Tags:"
msgstr ""
@@ -7833,8 +7985,9 @@ msgid "Condition expression: %s"
msgstr "Expresión condicional: %s"
#: ../lib/advene/gui/edit/rules.py:765
-msgid "The id of the annotation type"
-msgstr ""
+#, fuzzy
+msgid "The annotation type"
+msgstr "tipo de anotacion"
#: ../lib/advene/gui/edit/rules.py:768
#, python-format
@@ -7892,8 +8045,9 @@ msgid "The element duration"
msgstr ""
#: ../lib/advene/gui/edit/rules.py:793
-msgid "The id of the element type"
-msgstr ""
+#, fuzzy
+msgid "The element type"
+msgstr "Si el elemento concuerda"
#: ../lib/advene/gui/edit/rules.py:794
msgid "The element's incoming relations"
@@ -7911,6 +8065,16 @@ msgstr ""
msgid "The context fragment"
msgstr ""
+#: ../lib/advene/gui/edit/rules.py:809
+#, fuzzy, python-format
+msgid "annotation-type %s"
+msgstr "tipos de anotaciones"
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, fuzzy, python-format
+msgid "relation-type %s"
+msgstr "tipos de relaciones"
+
#: ../lib/advene/gui/edit/rules.py:834
msgid "Select a condition"
msgstr "Selecciona una condicion"
@@ -7928,59 +8092,59 @@ msgstr "Selecciona una accion"
msgid "Activate?"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
msgid "Schema Editor"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
#, fuzzy
msgid "Display"
msgstr "Muestra %s"
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
#, fuzzy
msgid "Remove relation type"
msgstr "tipos de relacion"
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
msgid "Create HTML view"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
#, fuzzy
msgid "Remove annotation type"
msgstr "tipo de anotacion"
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
#, fuzzy
msgid "Create relation type between this one and..."
msgstr "Crear un nuevo tipo de relacion..."
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
#, fuzzy
msgid "New schema"
msgstr "Esquema"
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
#, fuzzy
msgid "New annotation type"
msgstr "tipo de anotacion"
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
#, fuzzy
msgid "New relation type"
msgstr "tipos de relacion"
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
msgid "Hide this schema"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
msgid "Export drawing to pdf"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
msgid "Choose a filename to export the schema as PDF"
msgstr ""
@@ -8267,104 +8431,104 @@ msgstr ""
msgid "Click to see more frames or scroll with the mouse wheel"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
msgid "Generic shape"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
#, python-format
msgid "Link to %s"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
msgid "Link"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
msgid "Link label"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
msgid "Linewidth"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
msgid "Filled"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
#, python-format
msgid "Properties of %s"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
msgid "Rectangle"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
msgid "Text"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
msgid "Textsize"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
msgid "Image"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
msgid "Href"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
msgid "Line"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
msgid "Draw an arrow"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
#, fuzzy
msgid "Arrow size"
msgstr "Navegar"
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
msgid "Circle"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
msgid "Ellipse"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
msgid "SVG"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
msgid "Load SVG"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
#, fuzzy
msgid "Save SVG"
msgstr "Guardar"
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
#, python-format
msgid "Decrement value by %.2f s"
msgstr "Disminuye el valor por %.2f s"
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
#, python-format
msgid "Increment value by %.2f s"
msgstr "Aumenta el valor por %.2f s"
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
msgid ""
"Click to play\n"
"Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8372,7 +8536,7 @@ msgid ""
"Right-click to invalidate screenshot"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
msgid ""
"Enter a timecode.\n"
"An integer value will be considered as milliseconds.\n"
@@ -8380,7 +8544,7 @@ msgid ""
"HH:MM:SS.sss values are possible."
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
msgid "Set to current player position"
msgstr ""
@@ -9026,6 +9190,25 @@ msgstr ""
msgid "Directory %s is not an extracted Advene zip package."
msgstr ""
+#, fuzzy
+#~ msgid "Aiff importer"
+#~ msgstr "Importador Xi"
+
+#~ msgid "Package _Imports"
+#~ msgstr "Importar_Paquetes"
+
+#~ msgid "Edit imported element from other packages"
+#~ msgstr "Editar elementos importados de otros paquetes"
+
+#~ msgid "_MediaInformation"
+#~ msgstr "_InformacionMedia"
+
+#~ msgid "Display information about the media"
+#~ msgstr "Muestra información acerca de la media"
+
+#~ msgid "Open %s"
+#~ msgstr "Abrir %s"
+
#~ msgid "Specify the regexp used to parse data"
#~ msgstr "Especifica la regexp utilizada para analizar la informacion "
@@ -9043,10 +9226,6 @@ msgstr ""
#~ msgstr "Muestra las relaciones"
#, fuzzy
-#~ msgid "Display snapshot"
-#~ msgstr "Muestra un popup"
-
-#, fuzzy
#~ msgid "Exporter"
#~ msgstr "Importar datos de una fuente externa"
diff --git a/po/fr.po b/po/fr.po
index bc662f0..842ecc9 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
-"PO-Revision-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
+"PO-Revision-Date: 2011-12-14 15:36+0100\n"
"Last-Translator: Olivier Aubert <olivier.aubert at liris.cnrs.fr>\n"
"Language-Team: advene at liris.cnrs.fr\n"
"Language: \n"
@@ -81,58 +81,63 @@ msgstr ""
"Impossible de démarrer le serveur web.\n"
"Les processus suivants semblent utiliser le port %(port)s: %(processes)s"
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr "Désactivation du serveur web"
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
#, python-format
msgid "Loaded %(uri)s as %(alias)s"
msgstr "Chargé %(uri)s sous %(alias)s"
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
#, python-format
msgid "Cannot load package from file %(uri)s: %(error)s"
msgstr "Impossible de charger le fichier %(uri)s : %(error)s"
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr "Désactivation du serveur web"
+
+#: ../lib/advene/core/controller.py:966
#, python-format
msgid "Cannot get audio volume: %s"
msgstr "Impossible d'obtenir le volume: %s"
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr "Impossible d'ouvrir l'URL Advene %s: le serveur web n'est pas actif."
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
msgid "None"
msgstr "Aucun"
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
#, python-format
msgid "Found matching video file in moviepath: %s"
msgstr "Trouvé fichier vidéo correspondant dans le chemin de recherche : %s"
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
msgid "Analysis of "
msgstr "Analyse de "
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
msgid "Cannot split the annotation: the given position is outside."
msgstr ""
"Impossible de supprimer l'annotation : la position indiquée est en dehors"
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
#, python-format
msgid "Cannot find the template package %(filename)s: %(error)s"
msgstr "Impossible de trouver le recueil modèle %(filename)s : %(error)s"
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
#, python-format
msgid "Cannot read the imported package %(uri)s: %(error)s"
msgstr "Impossible de lire le recueil importé %(uri)s : %(error)s"
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
msgid "Package URI has changed. Reloading package with new URI."
msgstr "L'URI du recueil a changé. Rechargement du recueil."
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
msgid ""
"Cannot load package: the following annotations do not have Millisecond "
"fragments:"
@@ -140,26 +145,26 @@ msgstr ""
"Impossible de charger le recueil: les annotations suivantes\n"
"n'ont pas de fragment de type Milliseconde :"
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
#, python-format
msgid "Cannot handle master attribute, the package %s is not imported."
msgstr ""
"Impossible de gérer l'attribut master, le recueil %s n'est pas importé."
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
#, python-format
msgid "Checking master package %s for not yet imported elements."
msgstr "Vérification des éléments à importer depuis le recueil maître %s."
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
msgid "Standard summary"
msgstr "Index standard"
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
msgid "Default view"
msgstr "Vue statique par défaut"
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
#, python-format
msgid ""
"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
@@ -167,31 +172,31 @@ msgstr ""
"Boucle infinie dans la vue dynamique %(name)s : la vue %(imp)s est invoquée "
"plusieurs fois."
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
#, python-format
msgid "Got exception %s when stopping player."
msgstr "Reçu l'exception %s à l'arrêt du lecteur"
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
#, python-format
msgid "Raised exception in update_status: %s"
msgstr "Exception dans update_status: %s"
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
msgid "Unable to start the player."
msgstr "Impossible de lancer le lecteur."
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
#, python-format
msgid "Comment on set of %d annotations"
msgstr "Commentaire sur %d annotations"
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
#, python-format
msgid "Comment on %s"
msgstr "Commentaire sur %s"
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
#, python-format
msgid ""
"<h1>Comment on %(title)s</h1>\n"
@@ -210,23 +215,23 @@ msgstr ""
"tal:attributes=\"src package/annotations/%(id)s/snapshot_url\" src="
"\"%(imgurl)s\" ></img></a></span>"
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
#, python-format
msgid "List of %s annotations"
msgstr "Ensemble de %s annotations"
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
#, python-format
msgid "Cannot export to %(filename)s: %(e)s"
msgstr "Impossible d'exporter vers %(filename)s: %(e)s"
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
#, python-format
msgid "Error when exporting: %s"
msgstr "Erreur lors de l'export de %s"
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
#, python-format
msgid "Data exported to %s"
msgstr "Données exportées vers %s"
@@ -1146,11 +1151,17 @@ msgstr ""
"<hr><p align=\"right\"><em>Document généré par <a href=\"http://liris.cnrs."
"fr/advene/\">Advene</a> v. %s.</em></p>"
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
#, python-format
msgid "Cannot start HTTP server: %s"
msgstr "Impossible de lancer le serveur HTTP : %s"
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+"Impossible de faire la capture en pleine résolution, une autre capture\n"
+"est en cours."
+
#: ../lib/advene/plugins/featuredetect.py:42
msgid "Feature detection (face...)"
msgstr "Reconnaissance de formes"
@@ -1194,7 +1205,7 @@ msgstr "%(count)d objet(s) détectés jusqu'à %(time)s"
msgid "Anvil importer"
msgstr "Importateur Anvil"
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
msgid "TED importer"
msgstr "Importateur TED"
@@ -1267,11 +1278,78 @@ msgstr ""
"La sensibilité de l'algorithme devrait typiquement être entre 50 et\n"
"80. Si trop de plans sont détectés, essayez d'augmenter sa valeur."
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
#, python-format
msgid "Detected shot #%(num)d at %(pos)s "
msgstr "Plan #%(num)d détecté à %(pos)s "
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+"Impossible d'activer la reconnaissance de la parole: les modules\n"
+"PocketSphinx ne sont pas présents. Voir\n"
+"http://cmusphinx.sourceforge.net/wiki/gstreamer pour plus d'informations."
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr "Reconnaissance vocale (PocketSphinx)"
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr "Niveau de filtrage du bruit [0..1]"
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+"Temps minimum (en millisecondes) de silence requis pour terminer\n"
+"l'annotation et en commencer une nouvelle. Diminuer cette durée\n"
+"produira beaucoup de petites annotations, l'augmenter donnera quelques\n"
+"longues annotations."
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr "Utiliser les modèles acoustiques et de langage standard."
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr "Modèle acoustique (répertoire)"
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr "Dictionnaire phonétique (fichier .dic)"
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr "Modèle de langage (fichier .dmp)"
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+msgid "Generating annotations"
+msgstr "Création des annotations"
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr "%(count)d paroles jusqu'Ã %(time)s"
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr "Parole"
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr "Parole reconnue"
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr "Reconnaissance en cours"
+
#: ../lib/advene/plugins/tts.py:77
msgid "Pronounce a text"
msgstr "Prononcer un texte"
@@ -1291,12 +1369,12 @@ msgstr "Chaîne à prononcer"
msgid "The annotation content"
msgstr "Le contenu de l'annotation"
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
#: ../lib/advene/gui/plugins/actions.py:234
msgid "Unknown rule"
msgstr "Règle inconnue"
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
#: ../lib/advene/gui/plugins/actions.py:235
#, python-format
msgid ""
@@ -1321,6 +1399,26 @@ msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
msgstr ""
"Synthèse vocale désactivée. Impossible de trouver l'application 'aplay'"
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr "Importateur Final Cut Pro XML"
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr "FCP clipitem"
+
+#: ../lib/advene/plugins/fcp.py:75
+msgid "Importing subtitles"
+msgstr "Import des sous-titres"
+
+#: ../lib/advene/plugins/fcp.py:90
+msgid "Importing clips"
+msgstr "Import des clips"
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr "Pas de clip"
+
#: ../lib/advene/plugins/mpeg7.py:54
msgid "MPEG7 importer"
msgstr "Importateur MPEG7"
@@ -1346,26 +1444,6 @@ msgstr "Conversion des vues"
msgid "Importing annotations"
msgstr "Import des annotations"
-#: ../lib/advene/plugins/aiff.py:35
-msgid "Aiff importer"
-msgstr "Importateur Aiff"
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr "AIFF clipitem"
-
-#: ../lib/advene/plugins/aiff.py:77
-msgid "Importing subtitles"
-msgstr "Import des sous-titres"
-
-#: ../lib/advene/plugins/aiff.py:92
-msgid "Importing clips"
-msgstr "Import des clips"
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr "Pas de clip"
-
#: ../lib/advene/plugins/dcp.py:65
msgid "DCP importer"
msgstr "Importateur DCP"
@@ -1375,11 +1453,11 @@ msgstr "Importateur DCP"
msgid "Converting #%(num)d / %(count)d"
msgstr "Conversion #%(num)d / %(count)d"
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
msgid "Input from the braille table."
msgstr "Entrée depuis la plage Braille"
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
msgid "BrlTTY not installed. There will be no braille support."
msgstr "BrlTTY n'est pas installé. Il n'y aura pas de support Braille."
@@ -1395,16 +1473,16 @@ msgstr "Afficher un message en Braille"
msgid "Message to display."
msgstr "Message à afficher"
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
#, python-format
msgid "BrlTTY connection error: %s"
msgstr "BrlTTY - erreur de connexion: %s"
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
msgid "Braille display: "
msgstr "Affichage braille :"
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
msgid "No message"
msgstr "Pas de message"
@@ -1448,17 +1526,17 @@ msgid "Parsing section information"
msgstr "Traitement des informations de section"
#: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
msgid "Creating package"
msgstr "Création du recueil"
#: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
msgid "Creating annotation types"
msgstr "Création des types d'annotation"
#: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
msgid "Parsing header information"
msgstr "Traitement de l'entête"
@@ -1485,10 +1563,6 @@ msgstr "Nombre maximum d'échantillons par annotation"
msgid "Channel selection."
msgstr "Choix du canal"
-#: ../lib/advene/plugins/soundenveloppe.py:90
-msgid "Generating annotations"
-msgstr "Création des annotations"
-
#: ../lib/advene/plugins/soundenveloppe.py:115
#, python-format
msgid "At %s"
@@ -1528,7 +1602,7 @@ msgstr ""
msgid "Starting silence detection"
msgstr "Démarrage de la détection audio"
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
msgid "Aeidon (subtitles) importer"
msgstr "Importateur sous-titres (Aeidon)"
@@ -1572,11 +1646,11 @@ msgstr ""
msgid "Converted from %s"
msgstr "Converti depuis %s"
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
msgid "ExternalApp importer"
msgstr "Importateur d'application externe"
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
#, python-format
msgid ""
"The <b>%s</b> application does not seem to be installed. Please check that "
@@ -1586,213 +1660,213 @@ msgstr ""
"est bien présente et que son chemin est correctement spécifié dans les "
"préférences."
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
#, python-format
msgid "The file %s does not seem to exist."
msgstr "Le fichier %s semble ne pas exister."
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
#, python-format
msgid "Could not run %(appname)s: %(msg)s"
msgstr "Impossible d'exécuter %(appname)s: %(msg)s"
# Traitement de %s
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
#, python-format
msgid "Processing %s"
msgstr "Traitement de %s"
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
msgid "Cleaning up..."
msgstr "Nettoyage..."
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
msgid "Text importer"
msgstr "Importateur texte"
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
msgid "Specify the encoding of the input file (latin1, utf8...)"
msgstr "Spécifiez l'encodage du fichier d'entrée (latin, utf8...)"
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
msgid "lsdvd importer"
msgstr "Importateur lsdvd"
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
msgid "Processing data"
msgstr "Traitement des données"
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
msgid "DVD Chapter"
msgstr "Chapitre DVD"
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
msgid "Launching lsdvd..."
msgstr "Lancement de lsdvd"
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
msgid "chaplin importer"
msgstr "Importateur chaplin"
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
msgid "Xi importer"
msgstr "Importateur Xi"
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
msgid "ELAN importer"
msgstr "Importateur ELAN"
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
#, python-format
msgid "Converting tier %s"
msgstr "Conversion du tier %s"
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
msgid "Processing time slots"
msgstr "Traitement des bornes temporelles"
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
msgid "Fixing forward references"
msgstr "Correction des références"
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
msgid "Creating relations"
msgstr "Création des relations"
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
msgid "Subtitle (SRT) importer"
msgstr "Importateur sous-titres (SRT)"
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
#, python-format
msgid "Subtitles from %s"
msgstr "Sous-titres de %s"
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
msgid "PRAAT importer"
msgstr "Importateur PRAAT"
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
msgid "CMML importer"
msgstr "Importateur CMML"
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
msgid "Parsing clip information"
msgstr "Traitement des informations de clip"
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
msgid "Creating CMML schema"
msgstr "Création du schéma CMML"
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
msgid "Parsing stream information"
msgstr "Traitement des informations sur le média"
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
msgid "IRI importer"
msgstr "Importateur IRI"
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
msgid "Generate one type per view"
msgstr "Générer un type par vue"
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
#, python-format
msgid "Parsing ensemble %s"
msgstr "Traitement de l'ensemble %s"
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
#, python-format
msgid "Parsing decoupage %s"
msgstr "Traitement du découpage %s"
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
msgid "Parsing views"
msgstr "Traitement des vues"
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
msgid "Initializing package"
msgstr "Initialisation du recueil"
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
msgid "IRIData importer"
msgstr "Importateur IRIData"
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
msgid "Parsing sound values"
msgstr "Traitement des valeurs d'échantillons de son"
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
msgid "Creating annotations"
msgstr "Création des annotations"
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
msgid "Package"
msgstr "Recueil"
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
msgid "Annotation"
msgstr "Annotation"
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
msgid "Relation"
msgstr "Relation"
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
msgid "Schema"
msgstr "Schéma"
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
msgid "Annotation Type"
msgstr "Type d'Annotation"
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
msgid "Relation Type"
msgstr "Type de Relation"
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
msgid "View"
msgstr "Vue"
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
#: ../lib/advene/gui/main.py:278
msgid "Query"
msgstr "Requête"
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
msgid "Resource Folder"
msgstr "Répertoire de ressources"
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
msgid "Resource File"
msgstr "Fichier de ressource"
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
msgid "---- Elements ----"
msgstr "---- Ãléments ----"
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
msgid "---- Attributes ----"
msgstr "---- Attributs ----"
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
msgid "---- Methods ----"
msgstr "---- Méthodes ----"
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
#, python-format
msgid "Cannot read %(filename)s: %(error)s"
msgstr "Impossible de lire %(filename)s : %(error)s"
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
#, python-format
msgid "File %s is not an Advene zip package."
msgstr "Le fichier %s n'est pas un recueil Advene compressé."
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
#, python-format
msgid ""
"Error:\n"
@@ -1801,7 +1875,7 @@ msgstr ""
"Erreur :\n"
"%s"
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
#, python-format
msgid ""
"Package %(title)s:\n"
@@ -1824,81 +1898,81 @@ msgstr ""
"Description:\n"
"%(description)s\n"
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schema"
msgstr "schéma"
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schemas"
msgstr "schémas"
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotation"
msgstr "annotation"
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotations"
msgstr "annotations"
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation type"
msgstr "type d'annotation"
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation types"
msgstr "types d'annotation"
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relation"
msgstr "relation"
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relations"
msgstr "relations"
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation type"
msgstr "type de relation"
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation types"
msgstr "types de relation"
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "query"
msgstr "requête"
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "queries"
msgstr "requêtes"
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "view"
msgstr "vue"
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "views"
msgstr "vues"
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "package"
msgstr "recueil"
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "packages"
msgstr "recueils"
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
#, python-format
msgid "No %s"
msgstr "Pas de %s"
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
#, python-format
msgid "1 %s"
msgstr "1 %s"
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
#, python-format
msgid "%(count)d %(plural)s"
msgstr "%(count)d %(plural)s"
@@ -1913,25 +1987,25 @@ msgstr "%s existe mais n'est pas un répertoire. Abandon de l'export."
msgid "%s does not exist"
msgstr "%s n'existe pas"
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
msgid "Starting export"
msgstr "Début de l'export"
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
#, python-format
msgid "Depth %d"
msgstr "Profondeur %d"
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
#, python-format
msgid "Depth %(depth)d: processing %(url)s"
msgstr "Profondeur %(depth)d: traitement de %(url)s"
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
msgid "Finalizing"
msgstr "Finalisation"
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
#, python-format
msgid ""
"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
@@ -1940,7 +2014,7 @@ msgstr ""
"<p><strong>Vous devriez probablement commencer à <a href=\"%(href)s\">"
"%(title)s</a>.</strong></p>"
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
msgid "Export complete"
msgstr "Export terminé"
@@ -2012,12 +2086,12 @@ msgstr ""
"<b>Statistiques sur %s</b>\n"
"\n"
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
#, python-format
msgid "Renumbering annotations of type %s"
msgstr "Renumérotation des annotations de type %s"
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
msgid ""
"<b>Renumber all annotations according to their order.</b>\n"
"\n"
@@ -2042,26 +2116,26 @@ msgstr ""
"Le paramètre offset permet de commencer la numérotation à partir de "
"l'annotation offset."
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
msgid "Offset"
msgstr "Offset"
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
#, python-format
msgid "Renumbering %d annotations"
msgstr "Renumérotation de %d annotations"
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
#, python-format
msgid "Annotation #%d"
msgstr "Annotation #%d"
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
#, python-format
msgid "Extracting %s"
msgstr "Extraction de %s"
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
#, python-format
msgid ""
"Exporting annotation %(title)s\n"
@@ -2072,262 +2146,266 @@ msgstr ""
"depuis %(begin)s à %(end)s\n"
"to %%(filename)s"
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
msgid "Edit"
msgstr "Ãditer"
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
msgid "Browse"
msgstr "Explorateur TALES"
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
msgid "Open in web browser"
msgstr "Afficher dans un navigateur web"
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
msgid "Delete"
msgstr "Supprimer"
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
msgid "Search/replace content"
msgstr "Rechercher/remplacer"
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
msgid "Activate"
msgstr "Activer"
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
msgid "Desactivate"
msgstr "Désactiver"
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
#: ../lib/advene/gui/plugins/tracetimeline.py:980
#: ../lib/advene/gui/plugins/tracetimeline.py:1001
#: ../lib/advene/gui/edit/transcribe.py:502
msgid "Go to..."
msgstr "Aller à ..."
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
msgid "Loop"
msgstr "Boucler"
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
msgid "Duplicate"
msgstr "Dupliquer"
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight"
msgstr "Mise en valeur"
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+msgid "Save snapshot..."
+msgstr "Prendre une capture d'écran"
+
+#: ../lib/advene/gui/popup.py:519
msgid "Extract video fragment"
msgstr "Extraire un fragment vidéo"
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
msgid "Incoming"
msgstr "Entrantes"
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
msgid "Outgoing"
msgstr "Sortantes"
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
msgid "Related annotations"
msgstr "Annotations liées"
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
msgid "Incoming relations"
msgstr "Relations entrantes"
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
msgid "Outgoing relations"
msgstr "Relations sortantes"
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
#, python-format
msgid "Begin: %s"
msgstr "Début : %s"
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
#, python-format
msgid "End: %s"
msgstr "Fin : %s"
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
#, python-format
msgid "Duration: %s"
msgstr "Durée : %s"
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
msgid "Members:"
msgstr "Membres:"
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
msgid "Edit package properties..."
msgstr "Ãditer les propriétés du recueil..."
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
#, python-format
msgid "%d annotations(s) - statistics"
msgstr "%d annotation(s) - statistiques"
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
msgid "Create a new static view..."
msgstr "Créer une nouvelle vue statique..."
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
msgid "Create a new dynamic view..."
msgstr "Créer une nouvelle vue dynamique..."
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
msgid "Create a new annotation..."
msgstr "Créer une nouvelle annotation..."
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
msgid "Create a new schema..."
msgstr "Créer un nouveau schéma"
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
msgid "Create a new query..."
msgstr "Créer une nouvelle requête"
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
msgid "Create a new folder..."
msgstr "Créer un nouveau répertoire..."
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
msgid "Create a new resource file..."
msgstr "Créer une nouvelle ressource"
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
msgid "Insert a new resource file..."
msgstr "Insérer un nouveau fichier ressource..."
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
msgid "Insert a new resource directory..."
msgstr "Insérer un nouveau répertoire ressource..."
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
msgid "Insert a soundclip..."
msgstr "Insérer un fichier son..."
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
msgid "Play sound"
msgstr "Jouer un son"
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
msgid "Create a new annotation type..."
msgstr "Créer un nouveau type d'annotation..."
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
msgid "Create a new relation type..."
msgstr "Créer un nouveau type de relation..."
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
msgid "Select a color"
msgstr "Choisissez une couleur"
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
#, python-format
msgid "A caption dynamic view for %s already seems to exist."
msgstr "Il semble qu'une vue de sous-titrage pour le type %s existe déjà ."
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
#, python-format
msgid "Caption %s annotations"
msgstr "Sous-titrer les annotations de type %s"
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
msgid "Caption the annotation"
msgstr "Sous-titrer l'annotation"
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
msgid "Create a comment view"
msgstr "Créer une nouvelle vue commentaire"
-#: ../lib/advene/gui/popup.py:740
-msgid "Generate a caption dynamic view"
-msgstr "Créer une vue dynamique de sous-titrage."
+#: ../lib/advene/gui/popup.py:739
+msgid "Generate a caption dynamic view..."
+msgstr "Créer une vue dynamique de sous-titrage..."
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
msgid "Display as transcription"
msgstr "Afficher en transcription"
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
msgid "Display annotations in table"
msgstr "Afficher les annotations dans un tableau"
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
msgid "Export to another format..."
msgstr "Exporter dans un autre format..."
+#: ../lib/advene/gui/popup.py:748
+msgid "Delete all annotations"
+msgstr "Supprimer toutes les annotations"
+
#: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
-msgstr "Supprimer toutes les annotations..."
+msgid "Renumber annotations..."
+msgstr "Renuméroter les annotations..."
#: ../lib/advene/gui/popup.py:750
-msgid "Renumber annotations"
-msgstr "Renuméroter les annotations"
+msgid "Adjust annotation bounds..."
+msgstr "Ajuster les bornes des annotations..."
-#: ../lib/advene/gui/popup.py:751
-msgid "Adjust annotation bounds"
-msgstr "Ajuster les bornes des annotations"
-
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
#, python-format
msgid "A follow dynamic view for %s already seems to exist."
msgstr "Il semble qu'une vue de suivi pour le type %s existe déjà ."
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
#, python-format
msgid "Follow %s relation-type"
msgstr "Suivre le type de relation %s"
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
msgid "Follow the relation"
msgstr "Suivre la relation"
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
msgid "Delete all relations..."
msgstr "Supprimer toutes les relations..."
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
msgid "Create montage from related annotations"
msgstr "Créer un montage suivant les relations"
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
msgid "Create dynamic view following relations"
msgstr "Créer une vue dynamique suivant les relations"
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
#, python-format
msgid "Exception in query: %s"
msgstr "Exception dans la requête : %s"
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
msgid "Apply query on..."
msgstr "Appliquer la requête sur..."
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
msgid "the package"
msgstr "le recueil"
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
msgid "all annotations of the package"
msgstr "toutes les annotations du recueil"
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
msgid "the first annotation of the package"
msgstr "la première annotation du recueil"
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
msgid "Activate view"
msgstr "Activation d'une vue"
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
msgid "Open adhoc view"
msgstr "Ouvrir une vue adhoc"
@@ -2493,31 +2571,31 @@ msgid "Cannot remove this widget, it is essential."
msgstr "Impossible de supprimer ce composant, il est essentiel."
#: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
msgid "...in its own window"
msgstr "...dans sa propre fenêtre"
#: ../lib/advene/gui/views/viewbook.py:125
#: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
msgid "...embedded east of the video"
msgstr "...intégrée à l'est de la vidéo"
#: ../lib/advene/gui/views/viewbook.py:126
#: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
msgid "...embedded west of the video"
msgstr "...intégrée à l'ouest de la vidéo"
#: ../lib/advene/gui/views/viewbook.py:127
#: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
msgid "...embedded south of the video"
msgstr "...intégrée au sud de la vidéo"
#: ../lib/advene/gui/views/viewbook.py:128
#: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
msgid "...embedded at the right of the window"
msgstr "...intégrée à droite de la vidéo"
@@ -2594,7 +2672,7 @@ msgid "to create a new static view"
msgstr "pour créer une nouvelle vue statique"
#: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
msgid "as a transcription"
msgstr "comme une transcription"
@@ -2720,8 +2798,8 @@ msgstr "Le résultat n'est pas une liste"
msgid "Path"
msgstr "Chemin"
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
#: ../lib/advene/gui/edit/elements.py:508
#: ../lib/advene/gui/edit/elements.py:557
#: ../lib/advene/gui/edit/elements.py:657
@@ -2729,44 +2807,65 @@ msgid "Type"
msgstr "Type"
#: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
msgid "Value"
msgstr "Valeur"
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr "Vérificateur"
+
+#: ../lib/advene/gui/views/checker.py:39
+msgid "Check various package properties"
+msgstr "Vérifier diverses propriétés du recueil"
+
+#: ../lib/advene/gui/views/checker.py:90
+msgid "List of possible issues in the current package"
+msgstr "Liste des problèmes possibles dans le recueil."
+
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr "Recouvrement"
+
+#: ../lib/advene/gui/views/table.py:55
msgid "Annotation table view"
msgstr "Tableau d'annotations"
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
msgid "Display annotations in a table"
msgstr "Affiche les annotations dans un tableau"
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
msgid "Snapshot"
msgstr "Copie d'écran"
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr "Impossible de l'annotation, sa représentation est trop complexe."
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
#: ../lib/advene/gui/edit/elements.py:675
#: ../lib/advene/gui/edit/elements.py:717
#: ../lib/advene/gui/edit/elements.py:1108
msgid "Content"
msgstr "Contenu"
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
msgid "Begin"
msgstr "Début"
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
msgid "End"
msgstr "Fin"
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
msgid "Duration"
msgstr "Durée"
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
#: ../lib/advene/gui/edit/elements.py:507
#: ../lib/advene/gui/edit/elements.py:556
@@ -2780,56 +2879,56 @@ msgstr "Durée"
msgid "Id"
msgstr "Id"
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
msgid "Export data to file..."
msgstr "Exporter les données vers le fichier..."
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
#, python-format
msgid "Error while exporting data to %(filename)s: %(error)s"
msgstr "Impossible d'exporter dans %(filename)s : %(error)s"
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "id"
msgstr "id"
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "type"
msgstr "type"
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "begin"
msgstr "début"
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "end"
msgstr "fin"
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "content"
msgstr "contenu"
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
msgid "Generic table view"
msgstr "Tableau d'éléments"
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
msgid "Display Advene elements in a table."
msgstr "Affiche des éléments Advene dans un tableau"
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element title"
msgstr "Titre de l'élément"
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element type"
msgstr "Type de l'élément"
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element id"
msgstr "Identificateur de l'élément"
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
#: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
#: ../lib/advene/gui/edit/imports.py:331
#: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2868,13 +2967,13 @@ msgstr "Vues administratives"
msgid "Adhoc views"
msgstr "Vues adhoc"
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
msgid "Tree view"
msgstr "Vue en arbre"
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
msgid "Refresh"
msgstr "Rafraîchir"
@@ -2882,25 +2981,80 @@ msgstr "Rafraîchir"
msgid "Package View"
msgstr "Vue du recueil"
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
+"Impossible de supprimer l'annotation :\n"
+"elle fait partie de relations."
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr "Dupliquer la sélection vers le type %s"
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, python-format
+msgid "Move selection to type %s"
+msgstr "Déplacer la sélection vers le type %s"
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, python-format
+msgid "Duplicate annotation to type %s"
+msgstr "Dupliquer l'annotation vers le type %s"
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, python-format
+msgid "Move annotation to type %s"
+msgstr "Déplacer l'annotation vers le type %s"
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+msgid "Duplicate and create a relation"
+msgstr "Dupliquer et créer une relation"
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+"Sélectionnez le schéma où vous désirez\n"
+"créer le nouveau type de relation."
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr "Créer une relation"
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+msgid "Create a new relation-type."
+msgstr "Créer un nouveau type de relation"
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
msgid "AnnotationDisplay"
msgstr "AfficheAnnotation"
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
msgid "Display the contents of an annotation"
msgstr "Affiche le contenu d'une annotation"
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
msgid "No annotation"
msgstr "Pas d'annotation"
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
msgid "Current time"
msgstr "Temps courant"
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
#, python-format
msgid ""
"Schema %(schema)s\n"
@@ -2913,15 +3067,20 @@ msgstr ""
"%(total)s\n"
"Id: %(id)s"
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
msgid "Screenshot"
msgstr "Aperçu"
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
#: ../lib/advene/gui/views/relationdisplay.py:104
msgid "Contents"
msgstr "Contenu"
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+msgid "Validate"
+msgstr "Valider"
+
#: ../lib/advene/gui/views/__init__.py:193
msgid "Invalid view id"
msgstr "Identificateur de vue invalide"
@@ -2945,7 +3104,7 @@ msgstr "Sauver %s"
msgid "Enter a view name to save this parametered view"
msgstr "Entrez un nom de vue pour sauvegarder cette vue paramétrée"
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
#, python-format
msgid "Error: the identifier %s contains invalid characters."
msgstr "Erreur : l'identifiant %s contient des caractères non valides."
@@ -2980,7 +3139,7 @@ msgstr "Actions"
msgid "Click or drag-and-drop to reattach view"
msgstr "Cliquer ou glisser-déposer pour réattacher la vue"
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
msgid "Caption"
msgstr "Sous-titreur"
@@ -2998,55 +3157,55 @@ msgstr "Fenêtre singleton"
msgid "Navigation popup"
msgstr "Fenêtre de navigation"
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
msgid "Transcription"
msgstr "Transcription"
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
msgid "Display annotations as a text transcription"
msgstr "Afficher les annotations sous forme de transcription"
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
#: ../lib/advene/gui/edit/montage.py:54
#: ../lib/advene/gui/edit/transcribe.py:85
msgid "Save view"
msgstr "Sauvegarder la vue"
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
#: ../lib/advene/gui/views/interactivequery.py:60
#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
#: ../lib/advene/gui/edit/transcribe.py:86
msgid "Save default options"
msgstr "Sauver les options par défaut"
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
#, python-format
msgid "Error in source evaluation %(source)s: %(error)s"
msgstr "Erreur dans l'évaluation de l'expression %(source)s: %(error)s"
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
msgid "Transcription options"
msgstr "Options de transcription"
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
msgid "Default representation"
msgstr "Représentation par défaut"
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
msgid "Use the default representation for annotations"
msgstr "Utiliser la représentation par défaut des annotations"
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
#: ../lib/advene/gui/edit/elements.py:962
msgid "Representation"
msgstr "Représentation"
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
msgid ""
"If default representation is unchecked,\n"
"this TALES expression that will be used to format the annotations."
@@ -3054,39 +3213,39 @@ msgstr ""
"Si la représentation par défaut n'est pas utilisée,\n"
"cette expression TALES sera utilisée pour formatter les annotations."
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
msgid "Separator"
msgstr "Séparateur"
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
msgid "This separator will be inserted between the annotations."
msgstr "Ce séparateur sera inséré entre les annotations."
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
msgid "Whitespace"
msgstr "Espace"
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
msgid "Newline"
msgstr "Retour à la ligne"
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
msgid "Tabulation"
msgstr "Tabulation"
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
msgid "Dash"
msgstr "Tiret"
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
msgid "User defined"
msgstr "Défini par l'utilisateur"
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid "User-defined separator"
msgstr "Séparateur défini par l'utilisateur"
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid ""
"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
"a tabulation."
@@ -3094,43 +3253,19 @@ msgstr ""
"Séparateur défini par l'utilisateur.\n"
"Utilisez \\\\n pour un retour à la ligne et \\\\t pour une tabulation."
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Display timestamps"
msgstr "Afficher les marques de temps"
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Insert timestsamp values"
msgstr "Insérer les marques de temps"
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
msgid "Display annotation bounds"
msgstr "Afficher les bornes des annotations"
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-"%d annotation(s) ont été modifiée(s)\n"
-"mais les modifications ne peuvent pas être propagées\n"
-"car un paramètre de représentation est utilisé."
-
-#: ../lib/advene/gui/views/transcription.py:207
-msgid "Updating modified annotations"
-msgstr "Mise à jour des annotations modifiées"
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-"%d annotation(s) ont été modifiée(s).\n"
-"Voulez-vous mettre leur contenu à jour ?"
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
#, python-format
msgid ""
"Cannot convert the following annotations,\n"
@@ -3141,7 +3276,7 @@ msgstr ""
"L'expression de représentation est trop complexe.\n"
"%s"
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
msgid ""
"Cannot validate the update.\n"
"The representation pattern is too complex."
@@ -3149,47 +3284,47 @@ msgstr ""
"Impossible de valider la mise à jour.\n"
"L'expression de représentation est trop complexe."
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
msgid "Save transcription to a text file"
msgstr "Sauvegarder la transcription dans un fichier texte"
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
msgid "Apply the modifications"
msgstr "Valider les modifications"
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
msgid "Find text"
msgstr "Chercher dans le texte"
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
msgid "Quickly switch display options"
msgstr "Modification rapide des options d'affichage"
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
msgid "Refresh the transcription"
msgstr "Rafraîchir la transcription"
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
msgid "Edit preferences"
msgstr "Ãditer les préférences"
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
#, python-format
msgid "Annotation %s"
msgstr "Annotation %s"
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
msgid "Play"
msgstr "Lecture"
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
#, python-format
msgid "Cannot write to %(filename)s: %(error)s:"
msgstr "Impossible d'écrire dans %(filename)s : %(error)s"
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
#: ../lib/advene/gui/edit/transcribe.py:884
#, python-format
msgid "Transcription saved to %s"
@@ -3345,7 +3480,7 @@ msgstr "Déposez une position ici pour l'enlever de la liste"
msgid "Convert bookmarks to annotations"
msgstr "Convertir les signets en annotations"
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
msgid "Comment here"
msgstr "Commentez ici"
@@ -3415,7 +3550,7 @@ msgid "Result of a query"
msgstr "Résultat d'une requête"
#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
#, python-format
msgid "'%s'"
msgstr "'%s'"
@@ -3440,7 +3575,7 @@ msgid "Search/replace content in %d elements"
msgstr "Rechercher/remplacer dans %d éléments"
#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
msgid "Empty quicksearch string"
msgstr "Chaîne de recherche vide"
@@ -3454,7 +3589,7 @@ msgid "Edit query"
msgstr "Ãditer la requête"
#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
msgid "String to search"
msgstr "Chaîne à rechercher"
@@ -3597,7 +3732,7 @@ msgstr "Essayer d'appliquer la requête sur..."
msgid "Edit resource"
msgstr "Ãditer la ressource"
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
msgid "Package finder"
msgstr "Navigateur de recueil"
@@ -3609,7 +3744,7 @@ msgstr "Afficher un navigateur en colonnes du recueil"
msgid "Tag Bag"
msgstr "Sac à tags"
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
msgid "Bag of tags"
msgstr "Sac à tags"
@@ -3618,8 +3753,8 @@ msgid "New tag"
msgstr "Nouveau tag"
#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
#: ../lib/advene/gui/edit/properties.py:46
#: ../lib/advene/gui/edit/transcribe.py:147
#: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3635,7 +3770,7 @@ msgid "Enter a new tag name and select its color."
msgstr "Entrez un nouveau tag et sélectionnez sa couleur."
#: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
msgid "Name"
msgstr "Nom"
@@ -3643,13 +3778,13 @@ msgstr "Nom"
#: ../lib/advene/gui/edit/elements.py:871
#: ../lib/advene/gui/edit/elements.py:951
#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
#: ../lib/advene/rules/actions.py:133
msgid "Color"
msgstr "Couleur"
#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
msgid "The tag contains invalid characters"
msgstr "Ce tag contient des caractères non valides."
@@ -3698,58 +3833,54 @@ msgstr "Afficher tous les tags"
msgid "EditAccumulator"
msgstr "Accumulateur d'édition"
-#: ../lib/advene/gui/views/editaccumulator.py:70
-msgid "Validate"
-msgstr "Valider"
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
msgid "Timeline"
msgstr "Ligne de Temps"
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
msgid "Display annotations on a timeline"
msgstr "Vue en ligne de temps"
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
msgid "Limit display to current area"
msgstr "Limiter l'affichage à la zone courante"
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
msgid "Display whole movie"
msgstr "Afficher tout le film"
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
#, python-format
msgid "Cannot find annotation type %s"
msgstr "Impossible de trouver le type d'annotation %s"
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
msgid "No scrolling"
msgstr "Pas de défilement"
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
msgid "Continuous scrolling"
msgstr "Défilement continu"
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
msgid "Discrete scrolling"
msgstr "Défilement discret"
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
msgid "Annotation scrolling"
msgstr "Défilement sur annotation"
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
#, python-format
msgid "%d annotations"
msgstr "%d annotations"
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
msgid "Display all types"
msgstr "Afficher tous les types"
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
#, python-format
msgid ""
"There are %d annotations.\n"
@@ -3764,286 +3895,268 @@ msgstr ""
"sélecteur de type (deuxième bouton dans la timeline) pour choisir d'autres "
"types à afficher, ou cliquer sur \"Afficher tous les types\" ci-dessous."
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
msgid "Split at current player position"
msgstr "Couper à la valeur de la position courante"
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
msgid "Center and zoom"
msgstr "Centrer et zoomer"
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
#: ../lib/advene/rules/elements.py:1000
msgid "Creation of a new annotation type"
msgstr "Création d'un nouveau type d'annotation"
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-"Sélectionnez le schéma où vous désirez\n"
-"créer le nouveau type de relation."
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr "Créer une relation"
-
-#: ../lib/advene/gui/views/timeline.py:1066
-msgid "Create a new relation-type."
-msgstr "Créer un nouveau type de relation"
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
msgid "Merge with this annotation"
msgstr "Fusionner avec cette annotation"
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
msgid "Align both begin times"
msgstr "Aligner les temps de début"
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
msgid "Align both end times"
msgstr "Aligner les temps de fin"
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
msgid "Align end time to selected begin time"
msgstr "Aligner le temps de fin sur le temps de début sélectionné"
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
msgid "Align begin time to selected end time"
msgstr "Aligner le temps de début sur le temps de fin sélectionné"
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
msgid "Align all times"
msgstr "Aligner tous les temps"
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
-"Impossible de supprimer l'annotation :\n"
-"elle fait partie de relations."
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
msgid "Select the appropriate relation type"
msgstr "Sélectionnez le type de relation"
-#: ../lib/advene/gui/views/timeline.py:1237
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr "Dupliquer la sélection vers le type %s"
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, python-format
-msgid "Move selection to type %s"
-msgstr "Déplacer la sélection vers le type %s"
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, python-format
-msgid "Duplicate annotation to type %s"
-msgstr "Dupliquer l'annotation vers le type %s"
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, python-format
-msgid "Move annotation to type %s"
-msgstr "Déplacer l'annotation vers le type %s"
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
#, python-format
msgid "Duplicate to type %(type)s at %(position)s"
msgstr "Dupliquer vers le type %(type)s à %(position)s"
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
#, python-format
msgid "Move to type %(type)s at %(position)s"
msgstr "Déplacer vers le type %(type)s à %(position)s"
-#: ../lib/advene/gui/views/timeline.py:1276
-msgid "Duplicate and create a relation"
-msgstr "Dupliquer et créer une relation"
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
#, python-format
msgid "Duplicate at %s and create a relation"
msgstr "Dupliquer vers %s et créer une relation"
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
msgid "Annotation filter"
msgstr "Filtre d'annotations "
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
msgid "Enter the searched string"
msgstr "Entrez la chaîne recherchée"
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
#, python-format
msgid "Duplicate all annotations to type %s"
msgstr "Dupliquer toutes les annotations vers le type %s"
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
#, python-format
msgid "Move all annotations to type %s"
msgstr "Déplacer toutes les annotations vers le type %s"
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
#, python-format
msgid "Duplicate all annotations matching a string to type %s"
msgstr ""
"Dupliquer toutes les annotations contenant une chaîne de caractères vers le "
"type %s"
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
#, python-format
msgid "Move all annotations matching a string to type %s"
msgstr ""
"Déplacer toutes les annotations contenant une chaîne de caractères vers le "
"type %s"
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
#, python-format
msgid "Align all annotation time codes using %s as reference."
msgstr "Aligner les temps pour toutes les annotations sur la base de %s"
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
#, python-format
msgid "Align all annotation contents using %s as reference"
msgstr "Copier les contenus pour toutes annotations sur la base de %s"
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Affichage de %(count)d / %(total)d annotations..."
+
+#: ../lib/advene/gui/views/timeline.py:1946
+msgid "Displaying done."
+msgstr "Affichage terminé."
+
+#: ../lib/advene/gui/views/timeline.py:2438
msgid "Create a new annotation"
msgstr "Créer une nouvelle annotation"
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
msgid "Zoom on region"
msgstr "Zoom sur la zone"
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
msgid "Restrict display to region"
msgstr "Limiter l'affichage à la zone sélectionnée"
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
#: ../lib/advene/gui/edit/transcribe.py:496
#, python-format
msgid "Position %s"
msgstr "Position %s"
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
msgid "New annotation at player time"
msgstr "Nouvelle annotation au temps du lecteur"
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
msgid "New annotation at mouse position"
msgstr "Nouvelle annotation à la position de la souris"
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
msgid "Selection"
msgstr "Sélection"
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
msgid "Cannot zoom more"
msgstr "Impossible de zoomer plus"
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
#, python-format
msgid "From schema %s"
msgstr "Schéma %s"
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
msgid "Restrict playing to this annotation-type"
msgstr "Restreindre le jeu à ce type d'annotation"
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
msgid "Goto previous annotation"
msgstr "Aller à l'annotation précédente"
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
msgid "Goto next annotation"
msgstr "Aller à l'annotation suivante"
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
msgid "+"
msgstr "+"
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
#: ../lib/advene/gui/edit/transcribe.py:1027
msgid "Create a new annotation type"
msgstr "Créer un nouveau type d'annotation"
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
msgid "Open an annotation display view"
msgstr "Ouvrir une vue d'affichage de l'annotation"
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
msgid "Open a slave montage view (coordinated zoom level)"
msgstr "Ouvrir une vue montage escale (avec zoom coordonné)"
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+"<b>Statistiques sur la sélection</b>\n"
+"\n"
+
+#: ../lib/advene/gui/views/timeline.py:3109
msgid "No selected annotation"
msgstr "Pas d'annotation sélectionnée"
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
#, python-format
msgid "%d selected annotation(s)"
msgstr "%d annotation(s) sélectionnée(s)"
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
msgid "Unselect all annotations"
msgstr "Déselectionner toutes les annotations"
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
msgid "Create a static view"
msgstr "Créer une vue statique"
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
msgid "Highlight selection in other views"
msgstr "Signaler les annotations actives dans les autres vues"
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
msgid "Tag selection"
msgstr "Taguer la sélection"
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
msgid "Delete selected annotations"
msgstr "Supprimer les annotations sélectionnées"
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
msgid "Display selection in a table"
msgstr "Affiche la sélection dans un tableau"
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
msgid "Center and zoom on selection"
msgstr "Centrer et zoomer sur la sélection"
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
msgid "Edit selected annotations"
msgstr "Ãditer les annotations sélectionnées"
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
msgid "Merge annotations"
msgstr "Fusionner les annotations"
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+msgid "Display statistics"
+msgstr "Afficher les statistiques"
+
+#: ../lib/advene/gui/views/timeline.py:3254
msgid "Goto previous page"
msgstr "Aller à la page précédente"
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
msgid "Goto next page"
msgstr "Aller à la page suivante"
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
#: ../lib/advene/gui/edit/montage.py:535
msgid "Inspector"
msgstr "Inspecteur"
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+"Inspecteur verrouillé. Cliquez ici ou dans le fond de la timeline pour\n"
+"déverrouiller."
+
+#: ../lib/advene/gui/views/timeline.py:3348
msgid ""
"Delete the selected annotations or drop an annotation here to delete it."
msgstr ""
"Supprimer les annotations sélectionnée ou déposer une annotation ici pour la "
"supprimer."
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
msgid ""
"Drag an annotation type here to remove it from display.\n"
"Click to edit all displayed types"
@@ -4051,124 +4164,136 @@ msgstr ""
"Déposez un type d'annotation ici pour l'enlever de l'affichage.\n"
"Cliquez pour éditer l'ensemble des types affichés."
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
msgid "Selection actions"
msgstr "Actions sur la sélection"
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
msgid "Display relations"
msgstr "Afficher les relations"
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
msgid "Display all relations"
msgstr "Afficher toutes les relations"
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
#: ../lib/advene/gui/plugins/tracetimeline.py:421
#: ../lib/advene/gui/edit/montage.py:439
msgid "Zoom out"
msgstr "Dézoomer"
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
#: ../lib/advene/gui/plugins/tracetimeline.py:426
#: ../lib/advene/gui/edit/montage.py:444
msgid "Zoom in"
msgstr "Zoomer"
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
msgid "Center on current player position."
msgstr "Centrer sur la position courante"
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
msgid "Automatically activate loop when clicking on an annotation"
msgstr "Activer la boucle automatiquement lors du clic sur une annotation"
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
msgid "Displayed"
msgstr "Affichés"
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
msgid "Not displayed"
msgstr "Pas affichés"
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
msgid "< All <"
msgstr "< Tout <"
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
msgid "> All >"
msgstr "> Tout >"
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
msgid "Displayed annotation types"
msgstr "Types d'annotations affichés"
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
msgid "Relation type"
msgstr "Type de relation"
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
msgid "Display relation types"
msgstr "Afficher les types de relation"
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
msgid "Relation content"
msgstr "Contenu de relation"
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
msgid "Display relation content"
msgstr "Afficher le contenu des relations"
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight active annotations"
msgstr "Signaler les annotations actives"
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
msgid "Enter the tag for the selection"
msgstr "Entrez le tag pour la sélection"
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
msgid "Scroller"
msgstr "Défileur"
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
#, python-format
msgid "Set of %s annotations"
msgstr "Ensemble de %s annotations"
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
msgid "Refresh snapshot"
msgstr "Rafraîchir la capture d'écran"
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+msgid "Save as..."
+msgstr "Sauvegarder sous..."
+
+#: ../lib/advene/gui/widget.py:1072
msgid "Use current player position"
msgstr "Utiliser la position courante du lecteur"
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+msgid "Adjust timestamp"
+msgstr "Ajuster le timecode"
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
msgid "Video player"
msgstr "Lecteur vidéo"
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
msgid "Complementary video player"
msgstr "Lecteur vidéo supplémentaire"
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
msgid "Select video file"
msgstr "Choisir un fichier vidéo"
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
msgid "Select a video file"
msgstr "Choisir un fichier vidéo"
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
msgid "Synchronize"
msgstr "Synchroniser"
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
msgid "Offset in ms"
msgstr "Offset en ms"
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+msgid "Drag and drop to get player time"
+msgstr "Glisser/déposer pour obtenir le temps du lecteur"
+
#: ../lib/advene/gui/plugins/actions.py:52
msgid "Display a popup"
msgstr "Afficher une popup"
@@ -4423,130 +4548,130 @@ msgstr "Navigation de relation"
msgid "New bookmark"
msgstr "Nouveau signet"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
#, python-format
msgid "Rendering type %(type)s as %(presentation)s"
msgstr "Rendu du type %(type)s sous forme de %(presentation)s"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
msgid "Snapshot only"
msgstr "Vignette seulement"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
msgid "Overlayed snapshot only"
msgstr "Vignette enrichiee seulement"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
msgid "Timestamp only"
msgstr "Temps seulement"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
msgid "Snapshot+timestamp"
msgstr "Vignette+temps"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
msgid "Annotation content"
msgstr "Le contenu de l'annotation"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
msgid "as a list"
msgstr "comme une liste"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
msgid "as a table"
msgstr "comme une table"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
msgid "Play video"
msgstr "Jouer la vidéo"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
msgid "Show timestamp only"
msgstr "Temps seulement"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
msgid "Show content only"
msgstr "Contenu seulement"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
msgid "Show snapshot only"
msgstr "Vignette seulement"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
msgid "Show overlayed timestamp"
msgstr "Vignette + timecode surimprimé"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
msgid "Show overlayed content"
msgstr "Vignette + contenu surimprimé"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
#, python-format
msgid "Annotation type %s"
msgstr "Type d'annotations %s"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
msgid "display as list"
msgstr "afficher comme une liste"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
msgid "display as table"
msgstr "afficher comme une table"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
msgid "display as transcription"
msgstr "afficher comme une transcription"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
msgid "Open link"
msgstr "Ouvrir le lien"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
#, python-format
msgid "HTML editor: cannot parse content (%s)"
msgstr "Ãditeur HTML: impossible de traiter le contenu (%s)"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
#, python-format
msgid "Heading %d"
msgstr "Titre %d"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
msgid "Bold"
msgstr "Gras"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
msgid "Italic"
msgstr "Italique"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
msgid "Header"
msgstr "Titre"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
msgid "Copy"
msgstr "Copier"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
msgid "Cut"
msgstr "Couper"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
msgid "Paste"
msgstr "Coller"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
msgid "Undo"
msgstr "Undo"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
msgid "WYSIWYG editor"
msgstr "Ãditeur WYSIWYG"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
msgid "Edit HTML source"
msgstr "Ãditer le source HTML"
@@ -4558,39 +4683,39 @@ msgstr "Vue de validation de plans"
msgid "Display shot validation interface"
msgstr "Afficher l'interface de validation de plans"
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
#, python-format
msgid "Merged #%(first)d-#%(second)d into #%(first)d"
msgstr "Fusionné #%(first)d-#%(second)d dans #%(first)d"
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
msgid "Last action undone"
msgstr "Annulé la dernière action"
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
#, python-format
msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
msgstr "Coupé l'annotation #%(current)d en #%(current)d et #%(next)d"
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
#, python-format
msgid "Cannot split annotation #%(current)d: out of bounds."
msgstr "Impossible de couper l'annotation #%(current)d: en dehors des bornes."
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
#, python-format
msgid "Changed cut between #%(first)d and %(second)d"
msgstr "Changé le cut entre #%(first)d et %(second)d"
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
msgid "Changed begin time for first annotation"
msgstr "Changé la borne de début pour la première annotation"
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
msgid "No annotations to adjust"
msgstr "Aucune annotation à ajuster"
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
msgid ""
"Click on the frame just after the cut to adjust the cut time.\n"
"Control-click on a frame to indicate a missing cut."
@@ -4598,54 +4723,54 @@ msgstr ""
"Cliquez sur l'image juste après le cut pour ajuster le moment du cut.\n"
"Contrôle-clique sur une image indique un cut manquant."
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
#, python-format
msgid "Begin of #%(index)d (title: %(content)s)"
msgstr "Début de #%(index)d (titre: %(content)s)"
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
msgid "< Previous cut"
msgstr "< Cut précédent"
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
msgid "Display previous cut"
msgstr "Afficher le cut précédent"
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
msgid "Next cut >"
msgstr "Cut suivant >"
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
msgid "Display next cut"
msgstr "Afficher le cut suivant"
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
msgid "Go to annotation containing current player time."
msgstr "Aller à l'annotation contenant le temps courant du lecteur"
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
#: ../lib/advene/gui/edit/frameselector.py:192
msgid "Refresh snapshots"
msgstr "Rafraîchir les captures d'écran"
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
#: ../lib/advene/gui/edit/frameselector.py:193
msgid "Refresh missing snapshots"
msgstr "Rafraîchir les captures d'écran"
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
msgid "Undo last modification"
msgstr "Annuler la dernière modification"
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
msgid "Merge with previous"
msgstr "Fusionner avec la précédente"
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
msgid "Merge with previous annotation, i.e. remove this bound."
msgstr "Fusionner avec la précédente annotation, i.e. supprimer cette borne."
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
msgid "Close view."
msgstr "Fermer la vue"
@@ -4689,7 +4814,7 @@ msgid " Filters"
msgstr "Filtres"
#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Reset"
msgstr "Reset"
@@ -4726,56 +4851,56 @@ msgstr "Définition de filtres"
#: ../lib/advene/gui/plugins/eventaccumulator.py:559
#: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
#, python-format
msgid "of an annotation (%s)"
msgstr "d'une annotation (%s)"
#: ../lib/advene/gui/plugins/eventaccumulator.py:561
#: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
#, python-format
msgid "of a relation (%s)"
msgstr "d'une relation (%s)"
#: ../lib/advene/gui/plugins/eventaccumulator.py:563
#: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
#, python-format
msgid "of an annotation type (%s)"
msgstr "d'un type d'annotation (%s)"
#: ../lib/advene/gui/plugins/eventaccumulator.py:565
#: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
#, python-format
msgid "of a relation type (%s)"
msgstr "d'un type de relation (%s)"
#: ../lib/advene/gui/plugins/eventaccumulator.py:567
#: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
#, python-format
msgid "of a schema (%s)"
msgstr "d'un schéma (%s)"
#: ../lib/advene/gui/plugins/eventaccumulator.py:569
#: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
#, python-format
msgid "of a view (%s)"
msgstr "d'une vue (%s)"
#: ../lib/advene/gui/plugins/eventaccumulator.py:571
#: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
#, python-format
msgid "of a package (%s)"
msgstr "d'un recueil (%s)"
#: ../lib/advene/gui/plugins/eventaccumulator.py:573
#: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
#, python-format
msgid "of an unknown item (%s)"
msgstr "d'un élément inconnu (%s)"
@@ -4819,7 +4944,7 @@ msgid "Search"
msgstr "Chercher"
#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
#, python-format
msgid "%(name)s (%(index)s)"
msgstr "%(name)s (%(index)s)"
@@ -4872,27 +4997,27 @@ msgstr "Recréer l'élément"
msgid "Zoom on action"
msgstr "Zoom sur l'action"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
msgid "Item Id"
msgstr "Id de l'élément"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
msgid "Item name or class"
msgstr "Nom ou classe de l'élément"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
msgid "Type or schema"
msgstr "Type ou schéma"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
msgid "Operations"
msgstr "Opérations"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
msgid "Comment"
msgstr "Commentaire"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
#: ../lib/advene/gui/edit/merge.py:191
msgid "Action"
msgstr "Action"
@@ -4943,18 +5068,22 @@ msgstr ""
msgid "Log Messages"
msgstr "Messages d'information"
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
msgid "_Select player"
msgstr "Sélection du lecteur"
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
msgid "_View"
msgstr "_Vues"
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
msgid "Packages"
msgstr "Recueils"
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+msgid "Open recent"
+msgstr "Recueils récents"
+
#: ../lib/advene/gui/main.py:239
msgid "Input from the keyboard (function keys)"
msgstr "Entrée depuis le clavier (touches de fonction)"
@@ -4980,126 +5109,130 @@ msgid "Open a package"
msgstr "Ouvrir un recueil"
#: ../lib/advene/gui/main.py:246
+msgid "Show recently opened packages"
+msgstr "Recueils ouverts récemments"
+
+#: ../lib/advene/gui/main.py:247
msgid "_Save package"
msgstr "_Sauvegarder recueil"
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
msgid "Save the package"
msgstr "Sauvegarder le recueil %s"
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
msgid "Save package as..."
msgstr "Sauvegarder sous..."
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
msgid "Save the package as..."
msgstr "Sauvegarder le recueil sous..."
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
msgid "Close package"
msgstr "Fermer recueil"
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
msgid "Close the package"
msgstr "Fermer le recueil"
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
msgid "Save session"
msgstr "Sauver la session"
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
msgid "Save the current session (list of opened packages)"
msgstr "Sauvegarder la session en cours (liste des recueils ouverts)"
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
msgid "Save workspace"
msgstr "Sauver l'environnement"
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
msgid "...as package view"
msgstr "...comme une vue du recueil"
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "...as standard workspace"
msgstr "... comme environnement standard"
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "Use the current layout as standard workspace in the future"
msgstr "Utiliser l'environnement courant comme environnement standard"
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
msgid "Associate a video _File"
msgstr "Associer un _Fichier vidéo"
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
msgid "Associate a video file"
msgstr "Associer un fichier vidéo"
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
msgid "Associate a _DVD"
msgstr "Associer un _DVD"
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
msgid "Associate a chapter from a DVD"
msgstr "Associer un chapitre de DVD"
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
msgid "Associate a _Video stream"
msgstr "Associer un flux _Vidéo"
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
msgid "Enter a video stream address"
msgstr "Entrer une adresse de flux vidéo"
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "_Import File"
msgstr "_Importer un fichier"
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "Import data from an external source"
msgstr "Importer des données depuis une source externe"
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
-msgstr "Traitement de la vidéo"
+#: ../lib/advene/gui/main.py:261
+msgid "_Process video"
+msgstr "_Traitement de la vidéo"
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
msgid "Import data from video processing algorithms"
msgstr "Extraire automatiquement des données depuis la vidéo"
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
msgid "Merge package"
msgstr "Fusionner un recueil"
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
msgid "Merge elements from another package"
msgstr "Fusionner les éléments d'un autres recueil"
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Import _DVD chapters"
msgstr "Importer les chapitres du _DVD"
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Create annotations based on DVD chapters"
msgstr "Créer des annotations correspondant aux chapitres du DVD"
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
msgid "_Export..."
msgstr "Exporter..."
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
msgid "Export data to another format"
msgstr "Exporter les données dans un autre format"
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
msgid "_Website export..."
msgstr "Exporter vers un site _Web..."
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
msgid "Export views to a website"
msgstr "Exporter les vues vers un site web"
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
msgid "_Quit"
msgstr "_Quitter"
@@ -5123,14 +5256,6 @@ msgstr "_Supprimer"
msgid "Create"
msgstr "Créer"
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr "Ãléments _Importés"
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr "Ãditer les éléments importés d'autres recueils"
-
#: ../lib/advene/gui/main.py:284
msgid "P_ackage properties"
msgstr "_Propriétés du recueil"
@@ -5171,18 +5296,10 @@ msgstr "Ãvaluateur"
msgid "Open python evaluator window"
msgstr "Ouvrir l'évaluateur python"
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
msgid "Webserver log"
msgstr "Statistiques du serveur web"
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr "Informations _Média"
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr "Informations sur le média"
-
#: ../lib/advene/gui/main.py:296
msgid "_Player"
msgstr "_Lecteur"
@@ -5219,14 +5336,6 @@ msgstr "_Redémarrer le lecteur"
msgid "Restart the player"
msgstr "Redémarrer le lecteur"
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr "Capturer les vignettes"
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr "Générer les captures d'écran pour la vidéo courante"
-
#: ../lib/advene/gui/main.py:302
msgid "Update annotation screenshots"
msgstr "Captures d'écran pour les annotations"
@@ -5295,76 +5404,85 @@ msgstr ""
msgid "_About"
msgstr "Ã _Propos"
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+"Impossible de charger le recueil %(filename)s :\n"
+"%(error)s"
+
+#: ../lib/advene/gui/main.py:344
msgid "Open a package file"
msgstr "Ouvrir un recueil"
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
msgid "Save the current package"
msgstr "Sauvegarder le recueil courant"
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
msgid "Save the package with a new name"
msgstr "Sauvegarder le recueil sous un nouveau nom"
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
msgid "Select movie file..."
msgstr "Sélectionner un fichier vidéo"
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
msgid "Select DVD"
msgstr "Sélectionner un DVD"
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr "Quitter"
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
msgid "Create a text annotation"
msgstr "Créer une annotation textuelle"
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
msgid "Create a graphical annotation"
msgstr "Créer une annotation graphique"
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr "Recueils récemment ouverts"
+
+#: ../lib/advene/gui/main.py:389
msgid "Snapshotter activity"
msgstr "Activité de prise de capture d'écran"
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
#, python-format
msgid "%d queued requests"
msgstr "%d requêtes en attente"
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
msgid "Cancel all requests"
msgstr "Annuler toutes les requêtes"
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
msgid "No snapshotter"
msgstr "Aucun composant de capture d'écran"
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
msgid "No snapshotting activity"
msgstr "Aucune requête de capture d'écran en cours"
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
msgid "Snapshotting"
msgstr "En cours de capture d'écran"
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
msgid "Display application log messages"
msgstr "Afficher les messages d'information de l'application"
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
msgid "Quicksearch lists"
msgstr "Listes de recherche"
-#: ../lib/advene/gui/main.py:479
+#: ../lib/advene/gui/main.py:488
msgid "Please specify the lists of elements to be searched."
msgstr "Spécifiez les listes d'éléments à rechercher."
-#: ../lib/advene/gui/main.py:498
+#: ../lib/advene/gui/main.py:507
#, python-format
msgid ""
"Searching on %s.\n"
@@ -5374,151 +5492,91 @@ msgstr ""
"Clic gauche pour lancer la recherche, click droit pour régler les options de "
"recherche"
-#: ../lib/advene/gui/main.py:499
+#: ../lib/advene/gui/main.py:508
#, python-format
msgid "String to search in %s"
msgstr "Chaîne à rechercher dans %s"
-#: ../lib/advene/gui/main.py:523
-msgid "Open this view..."
-msgstr "Ouvrir cette vue..."
-
-#: ../lib/advene/gui/main.py:540
-msgid "All available views"
-msgstr "Toutes les vues disponibles"
-
-#: ../lib/advene/gui/main.py:559
-msgid "Transcription of annotations"
-msgstr "Transcription d'annotations"
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr "Ãditeur de prise de notes"
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr "Signets actifs"
-
-#: ../lib/advene/gui/main.py:564
-msgid "Schema editor"
-msgstr "Ãditeur de schéma"
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr "Explorateur TALES"
-
-#: ../lib/advene/gui/main.py:569
-msgid "Dynamic montage"
-msgstr "Montage dynamique"
-
-#: ../lib/advene/gui/main.py:573
-msgid "Open a comment view in the web browser"
-msgstr "Ouvrir une vue de commentaire dans le navigateur web"
-
-#: ../lib/advene/gui/main.py:574
-msgid "Create or open a comment view"
-msgstr "Créer ou éditer une vue de commentaire"
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-"Emplacement de fenêtres d'édition (les fenêtres d'édition d'annotations et "
-"relations seront placées ici)"
-
-#: ../lib/advene/gui/main.py:578
-msgid "Display edition history"
-msgstr "Afficher l'historique d'édition"
-
-#: ../lib/advene/gui/main.py:579
-msgid "Visualise the activity trace preview"
-msgstr "Prévisualiser la trace d'activité"
-
-#: ../lib/advene/gui/main.py:580
-msgid "Visualise the activity trace as a timeline"
-msgstr "Visualiser la trace d'activité sous forme de ligne de temps"
-
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
msgid "Tracing : "
msgstr "Trace : "
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
msgid "off"
msgstr "off"
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
msgid "on"
msgstr "on"
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
msgid "Launch search"
msgstr "Lancer la recherche"
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
msgid "Ignore case"
msgstr "Ignorer la casse"
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
msgid "Searched elements"
msgstr "Ãléments recherchés"
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
msgid "Playing"
msgstr "Lecture"
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
msgid "Pause"
msgstr "Pause"
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
msgid "Init"
msgstr "Initialisation"
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
msgid "Undefined"
msgstr "Indéfini"
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
msgid "Enter the new time value"
msgstr "Entrez le nouveau temps"
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
#, python-format
msgid "Replace content in %d elements"
msgstr "Remplacer du texte dans %d elements"
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
msgid "Find word"
msgstr "Trouver le mot"
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
msgid "Replace by"
msgstr "Remplacer par"
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
#, python-format
msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
msgstr "%(search)s a été remplacé par %(replace)s dans %(count)d éléments(s)."
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
msgid "The video extracting feature is not available."
msgstr "La fonctionnalité d'extraction de vidéo n'est pas disponible"
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
msgid "Video export"
msgstr "Export vidéo"
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
#, python-format
msgid "Exporting video montage/fragment to %%(filename)s"
msgstr "Export du fragment/montage vidéo vers %%(filename)s"
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
msgid "Please choose a destination filename"
msgstr "Choisissez le fichier destination"
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
msgid ""
"No media association is defined in the package. Please use the 'File/"
"Associate a video file' menu item to associate a media file."
@@ -5526,7 +5584,7 @@ msgstr ""
"Aucun fichier vidéo n'est défini dans le recueil. Utilisez le menu 'Fichier/"
"Associer un fichier vidéo' pour associer un fichier vidéo"
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
#, python-format
msgid ""
"The associated media %s could not be found. Please use the 'File/Associate a "
@@ -5535,7 +5593,7 @@ msgstr ""
"La vidéo associée %s est introuvable. Utilisez le menu 'Fichier/Associer un "
"fichier vidéo' pour associer un fichier vidéo."
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
#, python-format
msgid ""
"You are now working with the following video:\n"
@@ -5544,7 +5602,73 @@ msgstr ""
"Vous travaillez maintenant avec la vidéo suivante :\\n\n"
"%s"
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+msgid "Open this view..."
+msgstr "Ouvrir cette vue..."
+
+#: ../lib/advene/gui/main.py:1205
+msgid "_All available views"
+msgstr "_Toutes les vues disponibles"
+
+#: ../lib/advene/gui/main.py:1224
+msgid "Transcription of annotations"
+msgstr "Transcription d'annotations"
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr "Ãditeur de prise de notes"
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr "Signets actifs"
+
+#: ../lib/advene/gui/main.py:1229
+msgid "Schema editor"
+msgstr "Ãditeur de schéma"
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr "Explorateur TALES"
+
+#: ../lib/advene/gui/main.py:1234
+msgid "Dynamic montage"
+msgstr "Montage dynamique"
+
+#: ../lib/advene/gui/main.py:1238
+msgid "Open a comment view in the web browser"
+msgstr "Ouvrir une vue de commentaire dans le navigateur web"
+
+#: ../lib/advene/gui/main.py:1239
+msgid "Create or open a comment view"
+msgstr "Créer ou éditer une vue de commentaire"
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+"Emplacement de fenêtres d'édition (les fenêtres d'édition d'annotations et "
+"relations seront placées ici)"
+
+#: ../lib/advene/gui/main.py:1243
+msgid "Display edition history"
+msgstr "Afficher l'historique d'édition"
+
+#: ../lib/advene/gui/main.py:1244
+msgid "Visualise the activity trace preview"
+msgstr "Prévisualiser la trace d'activité"
+
+#: ../lib/advene/gui/main.py:1245
+msgid "Visualise the activity trace as a timeline"
+msgstr "Visualiser la trace d'activité sous forme de ligne de temps"
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+"Le serveur web n'est pas lancé. Vous ne pouvez pas accéder aux vues "
+"statiques."
+
+#: ../lib/advene/gui/main.py:1348
#, python-format
msgid ""
"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5558,190 +5682,207 @@ msgstr ""
"Vous pouvez télécharger la dernière version depuis le site web d'Advene: "
"http://liris.cnrs.fr/advene/</span>"
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
msgid "Go to the website"
msgstr "Aller sur le site web"
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
msgid "Advene release"
msgstr "Nouvelle version d'Advene"
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
#, python-format
msgid "You are using a up-to-date version of Advene (%(current)s)."
msgstr "Vous utilisez une version à jour d'Advene (%(current)s)."
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
msgid "Advene is up-to-date"
msgstr "Advene est à jour"
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
msgid "Choose a color"
msgstr "Choisissez une couleur"
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
msgid "Select an annotation to loop on it"
msgstr "Sélectionnez l'annotation sur laquelle boucler"
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
#, python-format
msgid "Looping on %s"
msgstr "Boucler sur %s"
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
msgid "No active dynamic view"
msgstr "Aucune vue dynamique active"
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
msgid "Create a new dynamic view."
msgstr "Créer une nouvelle vue dynamique."
-#: ../lib/advene/gui/main.py:1471
-msgid "No dynamic view"
-msgstr "Pas de vue dynamique"
-
-#: ../lib/advene/gui/main.py:1473
+#: ../lib/advene/gui/main.py:1502
msgid "Edit the current dynamic view."
msgstr "Ãditer la vue dynamique courante"
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1514
+msgid "No dynamic view"
+msgstr "Pas de vue dynamique"
+
+#: ../lib/advene/gui/main.py:1546
msgid "Playing rate"
msgstr "Vitesse de lecture"
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
msgid "History"
msgstr "Historique"
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
msgid "Popups"
msgstr "Popups"
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid ""
"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
msgstr ""
-"Vous pouvez glisser-déposer les icônes des vues (ligne de temps, arbre, etc) "
-"dans cette fenêtre pour les y intégrer."
+"Vous pouvez glisser-déposer les icônes des vues (ligne de temps,\n"
+"arbre, etc) dans les zones d'onglets pour les y intégrer."
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid "Information"
msgstr "Information"
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
msgid "Cannot create annotation. There is no schema to put it in."
msgstr ""
"Impossible de créer l'annotation : il n'y a pas de schéma pour la contenir."
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
msgid "Default annotation type"
msgstr "Type d'annotation par défaut"
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
msgid "Annotation created"
msgstr "Annotation créée"
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
msgid "Play/Pause [Control-Tab / Control-Space]"
msgstr "Lecture/Pause [Contrôle-Tab / Contrôle-Espace]"
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
#, python-format
msgid "Rewind (%.02f s) [Control-Left]"
msgstr "Reculer (%.02f s) [Contrôle-gauche]"
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
#, python-format
msgid "Forward (%.02f s) [Control-Right]"
msgstr "Avancer (%.02f s) [Contrôle-droite]"
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
msgid "Previous frame [Control-Down]"
msgstr "Image précédente [Contrôle-bas]"
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
msgid "Next frame [Control-Up]"
msgstr "Image suivante [Contrôle-haut]"
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
msgid "Fullscreen"
msgstr "Plein écran"
-#: ../lib/advene/gui/main.py:2180
+#: ../lib/advene/gui/main.py:2210
+#, python-format
+msgid "Screenshot saved to %s"
+msgstr "Capture sauvegardée dans %s"
+
+#: ../lib/advene/gui/main.py:2212
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
+msgstr ""
+"Capture sauvegardée dans\n"
+" %s"
+
+#: ../lib/advene/gui/main.py:2214
+#, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr ""
+"Impossible de sauvegarder la capture:\n"
+" %s"
+
+#: ../lib/advene/gui/main.py:2222
+msgid "Save screenshot to..."
+msgstr "Sauver la capture d'écran sous..."
+
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr "Impossible de faire une capture avec suffisamment de précision"
+
+#: ../lib/advene/gui/main.py:2278
msgid "Export package data"
msgstr "Exporter les données du recueil"
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2280
#, python-format
msgid "Export annotation type %s"
msgstr "Exporter le type d'annotation %s"
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2282
#, python-format
msgid "Export element %s"
msgstr "Exporter l'élément %s"
-#: ../lib/advene/gui/main.py:2210
+#: ../lib/advene/gui/main.py:2308
msgid "Export format"
msgstr "Format d'export"
-#: ../lib/advene/gui/main.py:2247
+#: ../lib/advene/gui/main.py:2345
msgid " (modified)"
msgstr " (modifié)"
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2348
#, python-format
msgid "Activate %s"
msgstr "Activer %s"
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
-#, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
-msgstr ""
-"Impossible de charger le recueil %(filename)s :\n"
-"%(error)s"
-
-#: ../lib/advene/gui/main.py:2297
-#, python-format
-msgid "Open %s"
-msgstr "Ouvrir %s"
-
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
msgid "Saved workspace"
msgstr "Environnement sauvegardé"
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
msgid "Restoring workspace..."
msgstr "Restauration de l'environnement"
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
#, python-format
msgid "Do you wish to restore the %s workspace ?"
msgstr "Voulez-vous restaurer l'environnement %s ?"
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
msgid "Clear the current workspace"
msgstr "Vider l'environnement courant"
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
#, python-format
msgid "View %s is not an adhoc view"
msgstr "La vue %s n'est pas une vue adhoc"
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
#, python-format
msgid "Cannot identify the adhoc view %s"
msgstr "Impossible de trouver la vue adhoc %s"
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
msgid "Choose the annotation type to display as transcription."
msgstr ""
"Choisissez le type d'annotation\n"
"Ã afficher sous forme de transcription."
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
#, python-format
msgid ""
"Error: unable to find an edit popup for %(element)s:\n"
@@ -5750,50 +5891,50 @@ msgstr ""
"Erreur : impossible d'ouvrir une fenêtre d'édition pour %(element)s:\n"
"%(error)s"
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
#, python-format
msgid "Editing %s"
msgstr "Ãdition de %s"
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
#, python-format
msgid "Comment view (%s)"
msgstr "Vue de commentaire (%s)"
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
#, python-format
msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
msgstr "Recueil %(uri)s sauvé. %(annotations)s et %(relations)s."
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
#, python-format
msgid "Activating package %s"
msgstr "Activation du recueil %s"
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
#, python-format
msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
msgstr "Recueil %(uri)s chargé. %(annotations)s et %(relations)s."
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
msgid "Do you want to restore the saved workspace ?"
msgstr "Voulez-vous restaurer l'environnement sauvegardé ?"
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
msgid "Advene"
msgstr "Advene"
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
#, python-format
msgid "Got exception %s. Trying to continue."
msgstr "Reçu l'exception %s. On continue tout de même."
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
msgid "Unknown"
msgstr "Inconnu"
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
#, python-format
msgid ""
"The package(s) %s are modified.\n"
@@ -5802,23 +5943,23 @@ msgstr ""
"Le(s) recueil(s) %s a été modifié mais pas sauvegardé.\n"
"Sauvegarder maintenant ?"
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
msgid "Choose an annotation type."
msgstr "Choisissez un type d'annotation"
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
msgid "No annotation type is defined."
msgstr "Aucun type d'annotation n'est défini."
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
msgid "Creating a new type."
msgstr "Création d'un nouveau type."
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
msgid "Title of the new type"
msgstr "Titre du nouveau type"
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
msgid ""
"Id of the new type. It is generated from the title, but you may change it if "
"necessary."
@@ -5826,33 +5967,33 @@ msgstr ""
"Identifiant du nouveau type. Il est généré à partir du titre, mais vous "
"pouvez le changer si nécessaire."
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
msgid "Specify the content-type for the annotation type"
msgstr "Spécifiez le type de contenu pour le type d'annotation"
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
msgid "Content type"
msgstr "Type de contenu"
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
msgid "Create a new schema"
msgstr "Créer un nouveau schéma"
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
msgid "Choose an existing schema for the new type, or create a new one"
msgstr ""
"Choisissez un schéma existant pour le nouveau type, ou créez un nouveau "
"schéma."
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
msgid "Specify the schema title"
msgstr "Spécifiez le titre du schéma"
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
msgid "Title of the new schema"
msgstr "Titre du nouveau schéma"
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
msgid ""
"Id of the new schema. It is generated from the title, but you may change it "
"if necessary."
@@ -5860,19 +6001,19 @@ msgstr ""
"Identifiant du nouveau schéma. Il est généré à partir du titre, mais vous "
"pouvez le changer si nécessaire."
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
msgid ""
"You specified a annotation-type identifier that already exists. Aborting."
msgstr ""
"Vous avez spécifié un identifiant déjà existant. Annulation de l'opération."
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
msgid "You specified a existing schema identifier. Using the existing schema."
msgstr ""
"Vous avez spécifié un identifiant de schéma déjà existant. Ce dernier sera "
"utilisé."
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
msgid ""
"You specified an existing identifier that does not reference a schema. "
"Aborting."
@@ -5880,21 +6021,21 @@ msgstr ""
"Vous avez spécifié un identifiant déjà existant qui ne désigne pas un "
"schéma. Annulation de l'opération."
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
msgid "Choose a schema."
msgstr "Choisissez un schéma"
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
msgid "You specified an existing identifier. Aborting."
msgstr ""
"Vous avez spécifié un identifiant déjà existant. Annulation de l'opération."
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
#, python-format
msgid "Package %s modified"
msgstr "Recueil %s modifié"
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
#, python-format
msgid ""
"The package %s has been modified but not saved.\n"
@@ -5903,53 +6044,69 @@ msgstr ""
"Le recueil %s a été modifié mais pas sauvegardé.\n"
"Sauvegarder maintenant ?"
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
#, python-format
msgid "%s snapshots"
msgstr "%s captures d'écran"
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
#, python-format
msgid "Do you want to save the snapshots for media %s?"
msgstr "Voulez-vous sauvegarder les captures d'écran pour la vidéo %s ?"
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
#, python-format
msgid "Cannot save imagecache for %(media)s: %(e)s"
msgstr "Impossible de sauvegarder le cache pour %(media)s : %(e)s"
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
msgid "first frame"
msgstr "première image"
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
msgid "last frame"
msgstr "dernière image"
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
#, python-format
msgid "Click on %(bound)s of %(annotation)s"
msgstr "Cliquer sur %(bound)s de %(annotation)s"
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
#, python-format
msgid "Update %(bound)s of %(annotation)s"
msgstr "Ãditer %(bound)s de %(annotation)s"
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr "Cliquez sur l'image correspondant au temps désiré"
+
+#: ../lib/advene/gui/main.py:3516
+msgid "Set new timestamp value"
+msgstr "Fixer le nouveau timecode"
+
+#: ../lib/advene/gui/main.py:3523
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr ""
+"<b>Statistiques d'annotations</b>\n"
+"\n"
+
+#: ../lib/advene/gui/main.py:3602
msgid "Text annotation"
msgstr "Annotation textuelle"
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
msgid "Cannot find an appropriate annotation type"
msgstr "Impossible de trouver un type d'annotation approprié"
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
msgid "Graphical annotation"
msgstr "Annotation graphique"
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
msgid ""
"An unsaved template package exists\n"
"Save it first."
@@ -5957,11 +6114,11 @@ msgstr ""
"Un recueil modèle non sauvegardé existe.\n"
"Sauvegardez-le avant d'essayer d'en créer un nouveau."
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
msgid "Package modified"
msgstr "Recueil modifié"
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
msgid ""
"The package that you want to close has been modified but not saved.\n"
"Save it now?"
@@ -5969,11 +6126,11 @@ msgstr ""
"Le recueil que vous souhaitez fermer a été modifié mais pas sauvegardé.\n"
"Sauvegarder maintenant ?"
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
msgid "Load a package"
msgstr "Charger un recueil"
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
msgid ""
"A video file was selected. Pretend that the user selected 'Select a video "
"file'..."
@@ -5981,7 +6138,7 @@ msgstr ""
"Un fichier vidéo a été sélectionné. On fait comme si l'utilisateur est passé "
"par \"Sélectionner un fichier vidéo...\""
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
#, python-format
msgid ""
"The file %s does not look like a valid Advene package. It should have a .azp "
@@ -5990,7 +6147,7 @@ msgstr ""
"Le fichier %s ne ressemble pas à un recueil Advene valide. Il devrait avoir "
"une extension .azp ou .xml. Voulez-vous essayer tout de même de l'ouvrir ?"
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
msgid ""
"You are trying to load a session file, but there are unsaved packages. "
"Proceed anyway?"
@@ -5998,25 +6155,25 @@ msgstr ""
"Vous essayez de charger un fichier de session, mais il existe des recueil "
"non sauvegardés. Continuer tout de même ?"
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
msgid "Do you want to save the current workspace ?"
msgstr "Voulez-vous sauvegarder l'environnement en cours ?"
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
#, python-format
msgid "Could not save the package: %s"
msgstr "Impossible de sauvegarder le recueil: %s"
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
#, python-format
msgid "Save the package %s"
msgstr "Sauvegarde du recueil %s"
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
msgid "Invalid file extension"
msgstr "Extension de fichier invalide"
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
#, python-format
msgid ""
"Your package contains resources,\n"
@@ -6027,59 +6184,59 @@ msgstr ""
"le nom de fichier (%s) devrait avoir l'extension .azp.\n"
"Corriger le nom de fichier ?"
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
msgid "OK, the resources will be lost."
msgstr "OK, les ressources seront perdues."
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
msgid "Aborting package saving"
msgstr "Abandon de la sauvegarde"
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
msgid "Save the session in..."
msgstr "Sauver la session dans..."
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
#, python-format
msgid "Session saved in %s"
msgstr "Session sauvegardée dans %s"
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
msgid "Do you confirm the creation of annotations matching the DVD chapters?"
msgstr ""
"Confirmez-vous la création d'annotations correspondant aux chapitres du DVD ?"
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
msgstr ""
"Impossible d'importer les chapitres du DVD. Avez-vous installé l'application "
"lsdvd ?"
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
msgid "The associated media is not a DVD."
msgstr "Le média associé n'est pas un DVD."
# Traitement de %s
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
#, python-format
msgid "Processing %s video"
msgstr "Traitement de la vidéo %s"
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
msgid "No associated video file"
msgstr "Aucun fichier vidéo associé"
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
msgid "Standard RuleSet"
msgstr "Ensemble de règles standard"
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
#, python-format
msgid ""
"Player not active - cached duration : %(duration)s (%(durationms)d ms)"
msgstr "Lecteur inactif - Durée cachée : %(duration)s (%(durationms)d ms)"
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
msgid ""
"GNU General Public License\n"
"See http://www.gnu.org/copyleft/gpl.html for more details"
@@ -6087,37 +6244,37 @@ msgstr ""
"GNU General Public License\n"
"Voir http://www.gnu.org/copyleft/gpl.html pour plus d'informations"
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
msgid "Visit the Advene web site for examples and documentation."
msgstr "Consultez le site web d'Advene pour les exemples et la documentation."
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
msgid "Select a movie file"
msgstr "Choisissez un fichier vidéo"
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
msgid "Title/Chapter selection"
msgstr "Sélection du titre/chapître"
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
msgid "Select a video stream"
msgstr "Choisir un flux vidéo"
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
msgid "Enter the address of a video stream"
msgstr "Entrer l'adresse d'un flux vidéo"
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
#, python-format
msgid "Successfully extracted the video stream address (%s) from the url.\n"
msgstr ""
"L'adresse du flux vidéo (%s) a été extraite avec succès de l'URL donnée.\n"
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
msgid "Package properties"
msgstr "Proprietes du recueil"
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
#: ../lib/advene/gui/edit/elements.py:559
#: ../lib/advene/gui/edit/elements.py:644
#: ../lib/advene/gui/edit/elements.py:706
@@ -6129,11 +6286,11 @@ msgstr "Proprietes du recueil"
msgid "Author"
msgstr "Auteur"
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
msgid "Author name"
msgstr "Auteur"
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
#: ../lib/advene/gui/edit/elements.py:560
#: ../lib/advene/gui/edit/elements.py:645
#: ../lib/advene/gui/edit/elements.py:707
@@ -6145,39 +6302,39 @@ msgstr "Auteur"
msgid "Date"
msgstr "Date"
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
msgid "Package creation date"
msgstr "Date de création du recueil"
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
msgid "Package title"
msgstr "Titre du recueil"
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
msgid "Associated media"
msgstr "Media associe"
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Media duration in ms"
msgstr "Durée du média en ms"
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
msgid "Paths"
msgstr "Chemins"
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Data"
msgstr "Contenu"
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Standard directory for data files"
msgstr "Répertoire standard pour les fichiers de données"
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
msgid "Movie path"
msgstr "Chemin de recherche pour les fichiers vidéo"
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
#, python-format
msgid ""
"List of directories (separated by %s) to search for movie files (_ means "
@@ -6186,74 +6343,74 @@ msgstr ""
"Liste de répertoires (séparés par %s) où chercher les vidéos (_ signifie le "
"même répertoire que le recueil)"
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Imagecache"
msgstr "Cache d'images"
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Directory for storing the snapshot cache"
msgstr "Répertoire où sauvegarder le cache de captures d'écran"
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Player"
msgstr "Lecteur"
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Directory of the video player"
msgstr "Répertoire du lecteur vidéo"
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
msgid "Shotdetect"
msgstr "Détection de plans"
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
msgid "Shotdetect application"
msgstr "Application de détection de plans"
# Interface
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
msgid "GUI"
msgstr "Interface"
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid "Interface language (after restart)"
msgstr "Langage de l'interface (après redémarrage)"
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid ""
"Language used for the interface (necessitates to restart the application)"
msgstr ""
"Langage utilisé pour l'interface (nécessite de redémarrer l'application)"
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
msgid "System default"
msgstr "La valeur du système"
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
msgid "Record activity trace"
msgstr "Enregistrer la trace d'activité"
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Expert mode"
msgstr "Mode expert"
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Offer advanced possibilities"
msgstr "Afficher les fonctionnalités avancées"
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Prefer WYSIWYG"
msgstr "WYSIWYG préféré"
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Use WYSIWYG editors when possible (HTML, SVG)"
msgstr "Utiliser un éditeur WYSIWYG quand c'est possible (HTML, SVG)"
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid "Player control in edit popups"
msgstr "Contrôle du lecteur dans les fenêtres d'édition"
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid ""
"Enable generic player controls in edit windows. This may be undesirable "
"since it overloads some standard text-edition behaviours (esp. control-left/"
@@ -6263,180 +6420,180 @@ msgstr ""
"fenêtres d'édition. Ce comportement peut être indésirable car il\n"
"surcharge des raccourcis clavier standard comme contrôle-gauche/droite"
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
msgid "Open popups"
msgstr "Ouvrir les vues"
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
msgid "Where should we open adhoc views?"
msgstr "Où doit-on ouvrir les vues adhoc ?"
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
msgid "as a popup window"
msgstr "dans des fenêtres indépendantes"
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
msgid "embedded east of the video"
msgstr "intégrée à l'est de la vidéo"
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
msgid "embedded west of the video"
msgstr "intégrée à l'ouest de la vidéo"
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
msgid "embedded south of the video"
msgstr "intégrée au sud de la vidéo"
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
msgid "embedded at the right of the window"
msgstr "intégrée à droite de la fenêtre"
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History size"
msgstr "Taille de l'historique"
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History filelist size limit"
msgstr "Taille limite de la liste des fichiers"
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember window size"
msgstr "Mémoriser les tailles des fenêtres"
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember the size of opened windows"
msgstr "Mémoriser la taille des fenêtres"
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Bookmark snapshot width"
msgstr "Largeur des copies d'écran de signets"
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Width of the snapshots representing bookmarks"
msgstr "Largeur des captures d'écran représentant les signets"
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Bookmark snapshot precision"
msgstr "Précision des captures d'écran pour les signets"
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Precision (in ms) of the displayed bookmark snapshots."
msgstr "Précision (en ms) des captures d'écran pour les signets."
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
msgid "General"
msgstr "Générales"
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
msgid "Weekly update check"
msgstr "Vérification hebdomadaire des mises à jour"
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
msgid "Weekly check for updates on the Advene website"
msgstr ""
"Vérifier hebdomadairement si des mises à jour d'Advene sont disponibles"
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
msgid "On exit,"
msgstr "Ã la fin, "
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
msgid "How to handle screenshots on exit"
msgstr "Comment gérer les captures d'écran à la fin de l'application"
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
msgid "never save screenshots"
msgstr "ne jamais sauvegarder les captures d'écran"
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
msgid "always save screenshots"
msgstr "toujours sauvegarder les captures d'écran"
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
msgid "ask before saving screenshots"
msgstr "demander avant de sauvegarder les captures d'écran"
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
msgid "Auto-save"
msgstr "La sauvegarde automatique"
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
msgid "Data auto-save functionality"
msgstr "Sauvegarde automatique des recueils"
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
msgid "is desactivated"
msgstr "est désactivée"
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
msgid "is done automatically"
msgstr "est activée"
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
msgid "is done after confirmation"
msgstr "est activée avec confirmation"
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Auto-save interval (in s)"
msgstr "Intervalle de sauvegarde automatique (en s)"
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Interval (in seconds) between package auto-saves"
msgstr "Durée (en secondes) entre deux sauvegardes automatiques"
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
msgid "Workspace"
msgstr "Environnement"
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
msgid "On package saving,"
msgstr "Lors de la sauvegarde du recueil,"
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
msgid "Do you wish to save the default workspace with the package?"
msgstr "Voulez-vous sauvegarder l'environnement avec le recueil ?"
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
msgid "never save the current workspace"
msgstr "ne jamais sauvegarder l'environnement courant"
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
msgid "always save the current workspace"
msgstr "toujours sauvegarder l'environnement courant"
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
msgid "ask before saving the current workspace"
msgstr "demander avant de sauvegarder l'environnement courant"
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
msgid "On package load,"
msgstr "Lors du chargement du recueil,"
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
msgid "Do you wish to load the workspace saved with the package?"
msgstr "Voulez-vous restaurer l'environnement sauvegardé avec le recueil ?"
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
msgid "never load the saved workspace"
msgstr "ne jamais restaurer l'environnement sauvegardé"
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
msgid "always load the saved workspace"
msgstr "toujours restaurer l'environnement sauvegardé"
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
msgid "ask before loading the saved workspace"
msgstr "demander avant de restaurer l'environnement sauvegardé"
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
msgid "Video Player"
msgstr "Lecteur Vidéo"
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
msgid "Autostart"
msgstr "Démarrage automatique"
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
msgid ""
"Automatically start the player when loading a media file (either directly or "
"through a package)"
@@ -6444,161 +6601,161 @@ msgstr ""
"Lancer automatiquement le lecteur lors du chargement d'une vidéo (soit "
"directement, soit via un recueil)"
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
msgid "Fulscreen timestamp"
msgstr "Timestamp plein-écran"
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
msgid "Display the timestamp over the video when in fullscreen mode"
msgstr "Afficher le temps sur la vidéo en mode plein écran"
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
msgid "Enable captions"
msgstr "Activer le sous-titrage externe"
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
msgid "Enable captions over the video"
msgstr ""
"Activer le sous-titrage par le biais d'un composant d'affichage sous le "
"lecteur vidéo"
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
msgid "Caption font"
msgstr "Police de sous-titrage"
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
msgid "TrueType font for captions"
msgstr "Police TrueType pour les sous-titres"
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG"
msgstr "Activer le SVG"
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG captions over the video"
msgstr "Activer l'affichage de graphiques SVG sur la vidéo"
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
msgid "Enable snapshots"
msgstr "Activer les copies d'écran"
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width"
msgstr "Largeur des copies d'écran"
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width in pixels."
msgstr "Largeur (en pixels) des copies d'écran"
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity"
msgstr "Verbosité"
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity level. -1 for no messages."
msgstr "Niveau de verbosité. -1 pour pas de messages."
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
msgid "Devices"
msgstr "Périphériques"
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
msgid "Standard"
msgstr "Standard"
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "DVD drive"
msgstr "Lecteur DVD"
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "Drive letter for the DVD"
msgstr "Lettre du lecteur DVD"
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
msgid "GDI"
msgstr "GDI"
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
msgid "Direct X"
msgstr "Direct X"
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "DVD device"
msgstr "Périphérique DVD"
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "Device for the DVD"
msgstr "Device du DVD"
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
msgid "X11"
msgstr "X11"
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
msgid "XVideo"
msgstr "XVideo"
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
msgid "GL"
msgstr "GL"
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output"
msgstr "Sortie vidéo"
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output module"
msgstr "Module de sortie vidéo"
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
msgid "Recorder options"
msgstr "Options d'enregistrement"
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
msgid "Audio input"
msgstr "Entrée audio"
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
msgid "Device name for audio input (with gstrecorder plugin)"
msgstr "Nom du périphérique pour l'entrée audio (pour le plugin gstrecorder)"
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record video"
msgstr "Enregistrement vidéo"
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record both video and audio"
msgstr "Enregistrer audio et vidéo"
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
msgid "<i>Experimental</i>"
msgstr "Expérimental"
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
msgid "Embed the caption scroller below the video"
msgstr "Intégrer le dérouleur sous la vidéo"
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
msgid "Embed the caption view below the video"
msgstr "Intégrer la visuablisation de sous-titres sous la vidéo"
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
msgid "Time-related"
msgstr "Relatives au temps"
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
msgid "Time format"
msgstr "Format des temps"
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
msgid "Format used to display timecodes"
msgstr "Format utilisé pour afficher les timecodes"
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
msgid "Default FPS"
msgstr "FPS par défaut"
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
msgid ""
"Default FPS (frame-per-second) value, when entering or displaying timestamps "
"with frame numbers."
@@ -6606,11 +6763,11 @@ msgstr ""
"Valeur FPS (image par seconde) par défaut, lors de la saisie ou de\n"
"l'affichage de timecodes avec des numéros d'image."
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
msgid "Time increment"
msgstr "Durée pour navigation"
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
msgid ""
"Skip duration, when using control-left/right or forward/rewind buttons (in "
"ms)."
@@ -6618,40 +6775,40 @@ msgstr ""
"Réglage de la durée (en ms) utilisée avec contrôle-flèche ou les boutons "
"avance/retour rapide"
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
msgid "Second time increment"
msgstr "Seconde durée pour navigation"
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
msgid "Skip duration, when using control-shift-left/right (in ms)."
msgstr ""
"Réglage de la durée (en ms) utilisée avec contrôle-shift-flèche ou les "
"boutons avance/retour rapide"
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
msgid "Third time increment"
msgstr "Troisième durée pour navigation"
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
msgid "Skip duration, when using control-shift-up/down (in ms)."
msgstr "Réglage de la durée (en ms) utilisée avec contrôle-shift-haut/bas."
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid "Custom Up/Down"
msgstr "Haut/Bas personnalisés"
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid ""
"Use third time increment for up/down navigation without having to hold shift."
msgstr ""
"Utiliser la troisième durée pour naviguer avec Haut/Bas sans avoir à "
"utiliser Shift."
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid "Scroll increment"
msgstr "Incrément de temps"
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid ""
"On most annotations, control+scrollwheel will increment/decrement their "
"bounds by this value (in ms)."
@@ -6659,11 +6816,11 @@ msgstr ""
"Sur les annotations, contrôle + molette permet d'incrémenter/décrémenter "
"leurs bornes de cette valeur (en ms)."
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid "Second scroll increment"
msgstr "Second incrément de scroll"
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid ""
"On most annotations, control+shift+scrollwheel will increment/decrement "
"their bounds by this value (in ms)."
@@ -6671,11 +6828,11 @@ msgstr ""
"Sur les annotations, contrôle + shift + molette permet d'incrémenter/"
"décrémenter leurs bornes de cette valeur (en ms)."
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
msgid "Player sync"
msgstr "Synchro des lecteurs"
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
msgid ""
"Interval (in ms) with which we synchronize slave players. Setting a too-low "
"value could render the application unusable. Use 0 to disable continuous "
@@ -6685,59 +6842,59 @@ msgstr ""
"valeur trop basse peut rendre l'application inutilisable. Entrez 0 pour "
"désactiver la synchronisation continue."
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
msgid "Timeline parameters"
msgstr "Paramètres de la ligne de temps"
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
msgid "Font size"
msgstr "Taille de la police"
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
msgid "Font size for annotation widgets"
msgstr "Taille de la police pour les représentations d'annotations"
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
msgid "Button height"
msgstr "Hauteur des boutons"
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
msgid "Height of annotation widgets"
msgstr "Hauteur des représentations d'annotations"
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Interline height"
msgstr "Taille des interlignes"
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Height of interlines"
msgstr "Taille des interlignes"
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
msgid "Text content"
msgstr "Contenu textuel"
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
msgid "Completion mode"
msgstr "Mode de complétion"
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
msgid "Enable dynamic completion mode"
msgstr "Activer la complétion dynamique"
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
msgid "Abbreviation mode"
msgstr "Mode abbréviation"
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
msgid "Enable abbreviation mode"
msgstr "Activer l'expansion des abbréviations"
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
msgid "Abbreviations"
msgstr "Abbréviations"
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
msgid ""
"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
"followed by its replacement."
@@ -6745,45 +6902,45 @@ msgstr ""
"Abbréviations textuelles. Une entrée par ligne. Chaque ligne contient "
"l'abbréviation suivie par son remplacement."
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
msgid "Text-To-Speech"
msgstr "Synthèse vocale"
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
msgid "TTS language"
msgstr "Langue de la synthèse vocale"
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
msgid "What language settings should be used for text-to-speech"
msgstr "Quelle langue doit être utilisée pour la synthèse vocale"
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
msgid "English"
msgstr "Anglais"
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
msgid "French"
msgstr "Français"
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
msgid "Spanish"
msgstr "Espagnol"
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
msgid "TTS Encoding"
msgstr "Encodage TTS"
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
msgid "What encoding should be used to communicate with the TTS engine"
msgstr ""
"Quel encodage de caractères doit être utilisé pour communiquer avec le "
"moteur de synthèse vocale"
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
msgid "TTS Engine"
msgstr "Moteur de synthèse vocale"
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
msgid ""
"Which TTS engine should be used (modification requires restarting Advene to "
"take into account)"
@@ -6791,155 +6948,159 @@ msgstr ""
"Quel moteur de synthèse vocale doit être utilisé (le changement requiert le "
"redémarrage de l'application pour être pris en compte)"
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
msgid "Automatic"
msgstr "Automatique"
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
msgid "eSpeak"
msgstr "eSpeak"
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
msgid "Custom script with standard input"
msgstr "Script personnel via l'entrée standard"
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
msgid "Custom script with arguments"
msgstr "Script personnel via les arguments"
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
msgid "SAPI"
msgstr "SAPI"
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
msgid "MacOS X say"
msgstr "Commande \"say\" de MacOS X"
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
msgid "Generic (text output)"
msgstr "Générique (affichage du texte)"
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
msgid "You should restart Advene to take some options into account."
msgstr "Vous devez redémarrer Advene pour prendre certaines options en compte."
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
#, python-format
msgid "Imagecache saved to %s"
msgstr "Cache d'image sauvé dans %s"
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
msgid "Restarting player..."
msgstr "Redémarrage du lecteur multimédia..."
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
msgid "Advene log"
msgstr "Advene log"
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
msgid "Select the package to merge"
msgstr "Sélectionnez le recueil à fusionner"
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
msgid "Saving workspace"
msgstr "Sauvegarde de l'environnement"
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
msgid "Enter a view name to save the workspace"
msgstr "Entrez un nom de vue pour sauvegarder cet environnement"
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
msgid "Default workspace"
msgstr "Environnement standard"
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
msgid "Open this workspace when opening the package"
msgstr "Ouvrir cet environnement lors du chargement du recueil"
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
#, python-format
msgid "Error: the view %s exists and is not a workspace view."
msgstr "Erreur : la vue %s existe mais n'est pas une vue d'environnement"
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
#, python-format
msgid "Cannot save default workspace: %s"
msgstr "Impossible de sauvegarder l'environnement par défaut : %s"
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
msgid "Standard workspace has been saved"
msgstr "L'environnement standard a été sauvé"
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
msgid "Website export"
msgstr "Export de site web"
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
msgid "Exporting views to a website"
msgstr "Exporter les vues vers un site web"
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
msgid "Output directory"
msgstr "Répertoire destination"
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
msgid "Specify the output directory"
msgstr "Précisez le répertoire de destination"
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
msgid "Maximum recursion depth"
msgstr "Niveau maximal de récursivité"
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
msgid "Video URL"
msgstr "URL de la vidéo"
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
msgstr ""
-"URL de la vidéo si elle est disponible en ligne.\n"
-"YouTube et GoogleVideo seulement pour le moment."
+"URL pour la vidéo, si elle est disponible en ligne (youtube seulement\n"
+" pour le moment).\n"
+"Ce peut aussi être un fichier h264 ou ogg, qui sera dans ce cas\n"
+" intégré via un player HTML5."
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
msgid "Could not export data: "
msgstr "Impossible d'exporter les données : "
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
#, python-format
msgid "Website export to %s completed"
msgstr "Export de site web vers %s terminé"
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
msgid "This video player is not able to grab specific screenshots"
msgstr ""
"Ce lecteur vidéo n'est pas capable de faire des captures d'écran à des "
"moments précis."
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
#, python-format
msgid "Updating %d snapshots"
msgstr "Mise-Ã -jour de %d vignette(s)"
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
msgid "No snapshot to update"
msgstr "Aucune capture d'écran à mettre à jour"
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
msgid "You first must load a movie into Advene"
msgstr "Vous devez d'abord charger un fichier vidéo dans Advene"
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
#, python-format
msgid "The movie %s does not seem to exist."
msgstr "Le fichier vidéo %s ne semble pas exister."
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
msgid "Generating screenshots"
msgstr "Génération des vignettes"
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
msgid ""
"<b>Screenshot generation</b>\n"
"\n"
@@ -6959,7 +7120,7 @@ msgstr ""
"Notez que l'interface d'Advene ne sera pas mise à jour tant que cette "
"fenêtre est ouverte."
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
msgid ""
"The <b>shotdetect</b> application does not seem to be installed. Please "
"check that it is present and that its path is correctly specified in "
@@ -6969,37 +7130,37 @@ msgstr ""
"qu'elle est bien présente et que son chemin est correctement spécifié dans "
"les préférences."
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
msgid ""
"Cannot import shotdetect output. Did you install the shotdetect software?"
msgstr ""
"Impossible d'importer le résultat de shotdetect. Avez-vous bien installé le "
"logiciel shotdetect ?"
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
msgid "Incomplete shots"
msgstr "Plans incomplets"
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
#, python-format
msgid "Detected %s shots"
msgstr "Détecté %s plans"
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
#, python-format
msgid "Could not run shotdetect: %s"
msgstr "Impossible de lancer shotdetect : %s"
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
#, python-format
msgid "Detecting shots from %s"
msgstr "Détection des plans de %s"
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
msgid "Shot detection"
msgstr "Détection de plans"
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
msgid ""
"<b>Shot detection</b>\n"
"\n"
@@ -7015,13 +7176,13 @@ msgstr ""
"l'algorithme, et doit typiquement être entre 50 et 80. Si trop de plans sont "
"détectés, essayez d'augmenter cette valeur."
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
msgid "Sensitivity"
msgstr "Sensibilité"
#: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
msgid "Plain text content"
msgstr "Contenu textuel"
@@ -7030,8 +7191,8 @@ msgid "HTML content"
msgstr "Contenu HTML"
#: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
msgid "Simple-structured content"
msgstr "Contenu simplement structuré"
@@ -7040,8 +7201,8 @@ msgid "List of numeric values"
msgstr "Liste de valeurs numériques"
#: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
msgid "SVG graphics content"
msgstr "Contenu graphique SVG"
@@ -7338,46 +7499,38 @@ msgstr "Tout"
msgid "Importer"
msgstr "Importateur"
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
msgid "Advene package importer"
msgstr "Importateur de recueil Advene"
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
msgid "Not likely"
msgstr "Non-pertinents"
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
#, python-format
msgid "Completed conversion: %(statistics)s"
msgstr "Conversion terminée : %(statistics)s"
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
#: ../lib/advene/gui/edit/dvdselect.py:73
msgid "Stop"
msgstr "Stop"
-#: ../lib/advene/gui/edit/importer.py:141
-#, python-format
-msgid "Importing %s"
-msgstr "Import de %s"
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
msgid "Choose the file to import"
msgstr "Choisissez le fichier à importer"
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Filename"
-msgstr "Nom de fichier"
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
msgid "Filter"
msgstr "Filtre"
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
msgid "Options"
msgstr "Options"
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
msgid "Start"
msgstr "Lancer"
@@ -7449,8 +7602,8 @@ msgstr ""
"vous devez fournir les informations suivantes."
#: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
msgid "Rectangular zone content"
msgstr "Contenu de zone rectangulaire"
@@ -7516,7 +7669,7 @@ msgid "New resource data"
msgstr "Nouvelle ressource"
#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
msgid "Properties"
msgstr "Propriétés"
@@ -7759,7 +7912,7 @@ msgid "Error: cannot find a content handler for %s"
msgstr "Erreur : impossible d'ouvrir une fenêtre d'édition pour %s"
#: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
#, python-format
msgid ""
"Cannot read the data:\n"
@@ -7769,12 +7922,12 @@ msgstr ""
"%s"
#: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
msgid "Save content to..."
msgstr "Sauver le contenu..."
#: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
#, python-format
msgid ""
"Cannot save the data:\n"
@@ -7784,17 +7937,17 @@ msgstr ""
"%s"
#: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
msgid "Open a file (C-o)"
msgstr "Ouvrir un fichier (C-o)"
#: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
msgid "Save to a file (C-s)"
msgstr "Sauvegarder dans un fichier (C-s)"
#: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
msgid "Reload the file (C-r)"
msgstr "Recharger le fichier (C-r)"
@@ -7802,15 +7955,15 @@ msgstr "Recharger le fichier (C-r)"
msgid "Insert a value from the browser (C-i)"
msgstr "Insérer une valeur depuis le browser (C-i)"
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
msgid "Begin time is greater than end time"
msgstr "Le moment de début est plus grand que celui de fin"
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
msgid "Expecting an integer."
msgstr "Un entier est attendu."
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
#, python-format
msgid ""
"The %(attribute)s attribute could not be updated:\n"
@@ -7825,7 +7978,7 @@ msgstr ""
"\n"
"Il est remis à son ancienne valeur."
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
#, python-format
msgid ""
"The following attributes cannot be updated:\n"
@@ -7836,7 +7989,7 @@ msgstr ""
"\n"
"%s"
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
#, python-format
msgid ""
"The following attributes could not be updated:\n"
@@ -7847,25 +8000,25 @@ msgstr ""
"\n"
"%s"
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
msgid "Attribute"
msgstr "Attribut"
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
msgid "Insert an element"
msgstr "Insérer un élément"
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
msgid "Choose the element to insert."
msgstr "Choisissez l'élément à insérer."
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
#, python-format
msgid "Some tags contain invalid characters: %s"
msgstr "Certains tags contiennent des caractères non-valides: %s"
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
msgid "Tags:"
msgstr "Tags :"
@@ -7976,8 +8129,8 @@ msgid "Condition expression: %s"
msgstr "Expression de condition : %s"
#: ../lib/advene/gui/edit/rules.py:765
-msgid "The id of the annotation type"
-msgstr "L'id du type d'annotation"
+msgid "The annotation type"
+msgstr "Le type d'annotation"
#: ../lib/advene/gui/edit/rules.py:768
#, python-format
@@ -8035,8 +8188,8 @@ msgid "The element duration"
msgstr "La durée de l'élément"
#: ../lib/advene/gui/edit/rules.py:793
-msgid "The id of the element type"
-msgstr "L'id du type de l'élément"
+msgid "The element type"
+msgstr "Le type d'élément"
#: ../lib/advene/gui/edit/rules.py:794
msgid "The element's incoming relations"
@@ -8054,6 +8207,16 @@ msgstr "Le contexte"
msgid "The context fragment"
msgstr "Le fragment du contexte"
+#: ../lib/advene/gui/edit/rules.py:809
+#, python-format
+msgid "annotation-type %s"
+msgstr "Type d'annotation %s"
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, python-format
+msgid "relation-type %s"
+msgstr "type de relation %s"
+
#: ../lib/advene/gui/edit/rules.py:834
msgid "Select a condition"
msgstr "Sélectionnez une condition"
@@ -8071,52 +8234,52 @@ msgstr "Sélectionnez une action"
msgid "Activate?"
msgstr "Activer?"
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
msgid "Schema Editor"
msgstr "Ãditeur de schéma"
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
msgid "Display"
msgstr "Afficher"
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
msgid "Remove relation type"
msgstr "Supprimer le type de relation"
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
msgid "Create HTML view"
msgstr "Créer une vue HTML"
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
msgid "Remove annotation type"
msgstr "Supprimer le type d'annotation"
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
msgid "Create relation type between this one and..."
msgstr "Créer un type de relation entre cet élément et ..."
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
msgid "New schema"
msgstr "Nouveau schéma"
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
msgid "New annotation type"
msgstr "Nouveau type d'annotation"
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
msgid "New relation type"
msgstr "Nouveau type de relation"
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
msgid "Hide this schema"
msgstr "Cacher ce schéma"
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
msgid "Export drawing to pdf"
msgstr "Exporter le schéma en pdf"
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
msgid "Choose a filename to export the schema as PDF"
msgstr "Choisissez un nom pour l'export PDF"
@@ -8409,102 +8572,102 @@ msgstr "Sélectionnez l'image appropriée"
msgid "Click to see more frames or scroll with the mouse wheel"
msgstr "Cliquez pour voir plus d'images, ou défilez avec la molette"
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
msgid "Generic shape"
msgstr "Forme générique"
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
#, python-format
msgid "Link to %s"
msgstr "Lier à %s"
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
msgid "Link"
msgstr "Lien"
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
msgid "Link label"
msgstr "Label du lien"
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
msgid "Linewidth"
msgstr "Largeur de trait"
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
msgid "Filled"
msgstr "Rempli"
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
#, python-format
msgid "Properties of %s"
msgstr "Propriétés de %s"
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
msgid "Rectangle"
msgstr "Rectangle"
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
msgid "Text"
msgstr "Texte"
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
msgid "Textsize"
msgstr "Taille du texte"
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
msgid "Image"
msgstr "Image"
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
msgid "Href"
msgstr "Href"
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
msgid "Line"
msgstr "Ligne"
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
msgid "Draw an arrow"
msgstr "Dessiner une flêche"
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
msgid "Arrow size"
msgstr "Taille de la flêche"
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
msgid "Circle"
msgstr "Cercle"
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
msgid "Ellipse"
msgstr "Ellipse"
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
msgid "SVG"
msgstr "SVG"
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
msgid "Load SVG"
msgstr "Charger un fichier SVG"
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
msgid "Save SVG"
msgstr "Sauver le SVG"
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
#, python-format
msgid "Decrement value by %.2f s"
msgstr "Décrémenter la valeur de %.2f s"
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
#, python-format
msgid "Increment value by %.2f s"
msgstr "Incrémenter la valeur de %.2f s"
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
msgid ""
"Click to play\n"
"Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8516,7 +8679,7 @@ msgstr ""
"Scroll pour modifier la valeur (avec Contrôle/Shift)\n"
"Clic droit pour invalider la capture d'écran"
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
msgid ""
"Enter a timecode.\n"
"An integer value will be considered as milliseconds.\n"
@@ -8528,7 +8691,7 @@ msgstr ""
"Une valeur flottant (12.2) sera considérée comme des secondes.\n"
"Il est possible d'utiliser le format HH:MM:SS.sss"
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
msgid "Set to current player position"
msgstr "Fixer à la valeur de la position courante"
@@ -9161,6 +9324,74 @@ msgstr "Liste d'éléments de type %s"
msgid "Directory %s is not an extracted Advene zip package."
msgstr "Le répertoire %s n'est pas un recueil Advene décompressé."
+#~ msgid "locked"
+#~ msgstr "verr."
+
+#~ msgid ""
+#~ "URL for the video, if it is available on a sharing website.\n"
+#~ "Only for GoogleVideo and Youtube for the moment"
+#~ msgstr ""
+#~ "URL de la vidéo si elle est disponible en ligne.\n"
+#~ "YouTube et GoogleVideo seulement pour le moment."
+
+#~ msgid "Importing %s"
+#~ msgstr "Import de %s"
+
+#~ msgid "Aiff importer"
+#~ msgstr "Importateur Aiff"
+
+#~ msgid ""
+#~ "%d annotation(s) were modified\n"
+#~ "but we cannot propagate the modifications\n"
+#~ "since the representation parameter is used."
+#~ msgstr ""
+#~ "%d annotation(s) ont été modifiée(s)\n"
+#~ "mais les modifications ne peuvent pas être propagées\n"
+#~ "car un paramètre de représentation est utilisé."
+
+#~ msgid "Updating modified annotations"
+#~ msgstr "Mise à jour des annotations modifiées"
+
+#~ msgid ""
+#~ "%d annotations were modified.\n"
+#~ "Do you want to update their content?"
+#~ msgstr ""
+#~ "%d annotation(s) ont été modifiée(s).\n"
+#~ "Voulez-vous mettre leur contenu à jour ?"
+
+#~ msgid "Package _Imports"
+#~ msgstr "Ãléments _Importés"
+
+#~ msgid "Edit imported element from other packages"
+#~ msgstr "Ãditer les éléments importés d'autres recueils"
+
+#~ msgid "_MediaInformation"
+#~ msgstr "Informations _Média"
+
+#~ msgid "Display information about the media"
+#~ msgstr "Informations sur le média"
+
+#~ msgid "Capture screenshots"
+#~ msgstr "Capturer les vignettes"
+
+#~ msgid "Generate screenshots for the current video"
+#~ msgstr "Générer les captures d'écran pour la vidéo courante"
+
+#~ msgid "Quit"
+#~ msgstr "Quitter"
+
+#~ msgid "Open %s"
+#~ msgstr "Ouvrir %s"
+
+#~ msgid "Filename"
+#~ msgstr "Nom de fichier"
+
+#~ msgid "The id of the annotation type"
+#~ msgstr "L'id du type d'annotation"
+
+#~ msgid "The id of the element type"
+#~ msgstr "L'id du type de l'élément"
+
#~ msgid "SPARQL query"
#~ msgstr "Requête SPARQL"
@@ -9241,9 +9472,6 @@ msgstr "Le répertoire %s n'est pas un recueil Advene décompressé."
#~ "%(id)s: %(begin)s - %(end)s\n"
#~ "%(content)s"
-#~ msgid "Click on the frame just after the cut"
-#~ msgstr "Cliquez sur l'image juste après le cut"
-
#~ msgid "Exporter"
#~ msgstr "Exporteur"
diff --git a/po/it.po b/po/it.po
index 9d40a4a..5e0fc78 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: advene\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 15:38+0200\n"
+"POT-Creation-Date: 2011-12-14 15:35+0100\n"
"PO-Revision-Date: 2008-04-08 18:50+0000\n"
"Last-Translator: Luca Livraghi <luca.91 at hotmail.it>\n"
"Language-Team: Italian <it at li.org>\n"
@@ -83,111 +83,116 @@ msgid ""
"The following processes seem to use the %(port)s port: %(processes)s"
msgstr ""
-#: ../lib/advene/core/controller.py:794
-msgid "Deactivating web server"
-msgstr ""
-
-#: ../lib/advene/core/controller.py:804 ../lib/advene/core/controller.py:815
+#: ../lib/advene/core/controller.py:794 ../lib/advene/core/controller.py:805
#, python-format
msgid "Loaded %(uri)s as %(alias)s"
msgstr ""
-#: ../lib/advene/core/controller.py:806 ../lib/advene/core/controller.py:818
+#: ../lib/advene/core/controller.py:796 ../lib/advene/core/controller.py:808
#, python-format
msgid "Cannot load package from file %(uri)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:965
+#: ../lib/advene/core/controller.py:846
+msgid "Deactivating web server"
+msgstr ""
+
+#: ../lib/advene/core/controller.py:966
#, python-format
msgid "Cannot get audio volume: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:1110 ../lib/advene/gui/edit/merge.py:272
+#: ../lib/advene/core/controller.py:1016
+#, python-format
+msgid "Cannot open Advene URL %s: the webserver is not running."
+msgstr ""
+
+#: ../lib/advene/core/controller.py:1124 ../lib/advene/gui/edit/merge.py:272
msgid "None"
msgstr "Nessuno"
-#: ../lib/advene/core/controller.py:1204
+#: ../lib/advene/core/controller.py:1218
#, python-format
msgid "Found matching video file in moviepath: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:1245 ../lib/advene/core/controller.py:1247
+#: ../lib/advene/core/controller.py:1259 ../lib/advene/core/controller.py:1261
msgid "Analysis of "
msgstr ""
-#: ../lib/advene/core/controller.py:1447
+#: ../lib/advene/core/controller.py:1461
msgid "Cannot split the annotation: the given position is outside."
msgstr ""
-#: ../lib/advene/core/controller.py:1612
+#: ../lib/advene/core/controller.py:1626
#, python-format
msgid "Cannot find the template package %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:1654
+#: ../lib/advene/core/controller.py:1668
#, python-format
msgid "Cannot read the imported package %(uri)s: %(error)s"
msgstr ""
-#: ../lib/advene/core/controller.py:1889
+#: ../lib/advene/core/controller.py:1903
msgid "Package URI has changed. Reloading package with new URI."
msgstr ""
-#: ../lib/advene/core/controller.py:1907
+#: ../lib/advene/core/controller.py:1921
msgid ""
"Cannot load package: the following annotations do not have Millisecond "
"fragments:"
msgstr ""
-#: ../lib/advene/core/controller.py:1934
+#: ../lib/advene/core/controller.py:1948
#, python-format
msgid "Cannot handle master attribute, the package %s is not imported."
msgstr ""
-#: ../lib/advene/core/controller.py:1936
+#: ../lib/advene/core/controller.py:1950
#, python-format
msgid "Checking master package %s for not yet imported elements."
msgstr ""
-#: ../lib/advene/core/controller.py:1976
+#: ../lib/advene/core/controller.py:1990
msgid "Standard summary"
msgstr ""
-#: ../lib/advene/core/controller.py:1981
+#: ../lib/advene/core/controller.py:1995
msgid "Default view"
msgstr ""
-#: ../lib/advene/core/controller.py:2023
+#: ../lib/advene/core/controller.py:2037
#, python-format
msgid ""
"Infinite loop in STBV %(name)s: the %(imp)s view is invoked multiple times."
msgstr ""
-#: ../lib/advene/core/controller.py:2113
+#: ../lib/advene/core/controller.py:2127
#, python-format
msgid "Got exception %s when stopping player."
msgstr ""
-#: ../lib/advene/core/controller.py:2233
+#: ../lib/advene/core/controller.py:2210
#, python-format
msgid "Raised exception in update_status: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:2260
+#: ../lib/advene/core/controller.py:2237
msgid "Unable to start the player."
msgstr ""
-#: ../lib/advene/core/controller.py:2411
+#: ../lib/advene/core/controller.py:2444
#, fuzzy, python-format
msgid "Comment on set of %d annotations"
msgstr "Trascrizione delle annotazioni"
-#: ../lib/advene/core/controller.py:2413
+#: ../lib/advene/core/controller.py:2446
#, python-format
msgid "Comment on %s"
msgstr ""
-#: ../lib/advene/core/controller.py:2417
+#: ../lib/advene/core/controller.py:2450
#, python-format
msgid ""
"<h1>Comment on %(title)s</h1>\n"
@@ -199,23 +204,23 @@ msgid ""
"\"%(imgurl)s\" ></img></a></span>"
msgstr ""
-#: ../lib/advene/core/controller.py:2427
+#: ../lib/advene/core/controller.py:2460
#, fuzzy, python-format
msgid "List of %s annotations"
msgstr "Tutte le annotazioni"
-#: ../lib/advene/core/controller.py:2458
+#: ../lib/advene/core/controller.py:2491
#, fuzzy, python-format
msgid "Cannot export to %(filename)s: %(e)s"
msgstr "Impossibile salvare il file: %s"
-#: ../lib/advene/core/controller.py:2473 ../lib/advene/core/controller.py:2482
+#: ../lib/advene/core/controller.py:2506 ../lib/advene/core/controller.py:2515
#, python-format
msgid "Error when exporting: %s"
msgstr ""
-#: ../lib/advene/core/controller.py:2484 ../lib/advene/gui/views/table.py:336
-#: ../lib/advene/gui/views/table.py:454
+#: ../lib/advene/core/controller.py:2517 ../lib/advene/gui/views/table.py:404
+#: ../lib/advene/gui/views/table.py:534
#, python-format
msgid "Data exported to %s"
msgstr ""
@@ -951,11 +956,15 @@ msgid ""
"fr/advene/\">Advene</a> v. %s.</em></p>"
msgstr ""
-#: ../lib/advene/core/webcherry.py:2189
+#: ../lib/advene/core/webcherry.py:2189 ../lib/advene/core/webcherry.py:2198
#, python-format
msgid "Cannot start HTTP server: %s"
msgstr ""
+#: ../lib/advene/player/gstreamer.py:433
+msgid "Cannot capture full-resolution snapshot, another capture is ongoing."
+msgstr ""
+
#: ../lib/advene/plugins/featuredetect.py:42
msgid "Feature detection (face...)"
msgstr ""
@@ -999,7 +1008,7 @@ msgstr ""
msgid "Anvil importer"
msgstr ""
-#: ../lib/advene/plugins/ted.py:40
+#: ../lib/advene/plugins/ted.py:39
#, fuzzy
msgid "TED importer"
msgstr "Importatore"
@@ -1069,11 +1078,72 @@ msgid ""
"too many shots are detected, try to increase its value."
msgstr ""
-#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5006
+#: ../lib/advene/plugins/shotdetectapp.py:139 ../lib/advene/gui/main.py:5128
#, python-format
msgid "Detected shot #%(num)d at %(pos)s "
msgstr ""
+#: ../lib/advene/plugins/pocketsphinx.py:37
+msgid ""
+"Cannot register speech recognition: Pocketsphinx plugins not found. See "
+"http://cmusphinx.sourceforge.net/wiki/gstreamer for details."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:41
+msgid "Speech recognition (PocketSphinx)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:61
+msgid "Filtering noise level [0..1]."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:65
+msgid ""
+"Minimum amount (in milliseconds) of silence required to terminate the "
+"current annotation and start a new one. Decreasing this length will result "
+"in a large amount of short annotations and increasing this length will "
+"result in a small amount of long annotations."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:69
+msgid "Use default acoustic and language models."
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:73
+msgid "Acoustic model (directory)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:77
+msgid "Phonetic dictionary (.dic file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:81
+msgid "Language model (.DMP file)"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:119
+#: ../lib/advene/plugins/soundenveloppe.py:90
+#, fuzzy
+msgid "Generating annotations"
+msgstr "Tutte le annotazioni"
+
+#: ../lib/advene/plugins/pocketsphinx.py:144
+#, python-format
+msgid "%(count)d utterances until %(time)s"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:153
+msgid "Speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:155
+msgid "Recognized speech"
+msgstr ""
+
+#: ../lib/advene/plugins/pocketsphinx.py:191
+msgid "Recognizing speech"
+msgstr ""
+
#: ../lib/advene/plugins/tts.py:77
msgid "Pronounce a text"
msgstr ""
@@ -1093,12 +1163,12 @@ msgstr ""
msgid "The annotation content"
msgstr ""
-#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:227
+#: ../lib/advene/plugins/tts.py:110 ../lib/advene/plugins/brltty.py:240
#: ../lib/advene/gui/plugins/actions.py:234
msgid "Unknown rule"
msgstr ""
-#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:228
+#: ../lib/advene/plugins/tts.py:111 ../lib/advene/plugins/brltty.py:241
#: ../lib/advene/gui/plugins/actions.py:235
#, python-format
msgid ""
@@ -1120,6 +1190,27 @@ msgstr ""
msgid "TTS disabled. Cannot find the application 'aplay' in PATH"
msgstr ""
+#: ../lib/advene/plugins/fcp.py:33
+msgid "Final Cut Pro XML importer"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:55
+msgid "FCP clipitem"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:75
+#, fuzzy
+msgid "Importing subtitles"
+msgstr "_Importa file"
+
+#: ../lib/advene/plugins/fcp.py:90
+msgid "Importing clips"
+msgstr ""
+
+#: ../lib/advene/plugins/fcp.py:93
+msgid "No clip"
+msgstr ""
+
#: ../lib/advene/plugins/mpeg7.py:54
msgid "MPEG7 importer"
msgstr ""
@@ -1149,28 +1240,6 @@ msgstr "Vista statica predefinita"
msgid "Importing annotations"
msgstr "Tutte le annotazioni"
-#: ../lib/advene/plugins/aiff.py:35
-#, fuzzy
-msgid "Aiff importer"
-msgstr "Importatore"
-
-#: ../lib/advene/plugins/aiff.py:57
-msgid "AIFF clipitem"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:77
-#, fuzzy
-msgid "Importing subtitles"
-msgstr "_Importa file"
-
-#: ../lib/advene/plugins/aiff.py:92
-msgid "Importing clips"
-msgstr ""
-
-#: ../lib/advene/plugins/aiff.py:95
-msgid "No clip"
-msgstr ""
-
#: ../lib/advene/plugins/dcp.py:65
#, fuzzy
msgid "DCP importer"
@@ -1181,11 +1250,11 @@ msgstr "Importatore"
msgid "Converting #%(num)d / %(count)d"
msgstr ""
-#: ../lib/advene/plugins/brltty.py:63
+#: ../lib/advene/plugins/brltty.py:62
msgid "Input from the braille table."
msgstr ""
-#: ../lib/advene/plugins/brltty.py:67
+#: ../lib/advene/plugins/brltty.py:66
msgid "BrlTTY not installed. There will be no braille support."
msgstr ""
@@ -1201,16 +1270,16 @@ msgstr ""
msgid "Message to display."
msgstr ""
-#: ../lib/advene/plugins/brltty.py:243
+#: ../lib/advene/plugins/brltty.py:256
#, python-format
msgid "BrlTTY connection error: %s"
msgstr ""
-#: ../lib/advene/plugins/brltty.py:257
+#: ../lib/advene/plugins/brltty.py:273
msgid "Braille display: "
msgstr ""
-#: ../lib/advene/plugins/brltty.py:264
+#: ../lib/advene/plugins/brltty.py:279
msgid "No message"
msgstr ""
@@ -1254,17 +1323,17 @@ msgid "Parsing section information"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:254
-#: ../lib/advene/util/importer.py:1408
+#: ../lib/advene/util/importer.py:1425
msgid "Creating package"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:260
-#: ../lib/advene/util/importer.py:1415
+#: ../lib/advene/util/importer.py:1432
msgid "Creating annotation types"
msgstr ""
#: ../lib/advene/plugins/transcriber.py:265
-#: ../lib/advene/util/importer.py:1421
+#: ../lib/advene/util/importer.py:1438
msgid "Parsing header information"
msgstr ""
@@ -1291,11 +1360,6 @@ msgstr ""
msgid "Channel selection."
msgstr ""
-#: ../lib/advene/plugins/soundenveloppe.py:90
-#, fuzzy
-msgid "Generating annotations"
-msgstr "Tutte le annotazioni"
-
#: ../lib/advene/plugins/soundenveloppe.py:115
#, fuzzy, python-format
msgid "At %s"
@@ -1334,7 +1398,7 @@ msgstr ""
msgid "Starting silence detection"
msgstr ""
-#: ../lib/advene/plugins/aeidon.py:41
+#: ../lib/advene/plugins/aeidon.py:48
msgid "Aeidon (subtitles) importer"
msgstr ""
@@ -1374,232 +1438,232 @@ msgstr ""
msgid "Converted from %s"
msgstr ""
-#: ../lib/advene/util/importer.py:451
+#: ../lib/advene/util/importer.py:457
#, fuzzy
msgid "ExternalApp importer"
msgstr "Importatore"
-#: ../lib/advene/util/importer.py:465
+#: ../lib/advene/util/importer.py:471
#, python-format
msgid ""
"The <b>%s</b> application does not seem to be installed. Please check that "
"it is present and that its path is correctly specified in preferences."
msgstr ""
-#: ../lib/advene/util/importer.py:467
+#: ../lib/advene/util/importer.py:473
#, python-format
msgid "The file %s does not seem to exist."
msgstr ""
-#: ../lib/advene/util/importer.py:489
+#: ../lib/advene/util/importer.py:495
#, fuzzy, python-format
msgid "Could not run %(appname)s: %(msg)s"
msgstr "Impossibile salvare il file: %s"
-#: ../lib/advene/util/importer.py:491
+#: ../lib/advene/util/importer.py:497
#, fuzzy, python-format
msgid "Processing %s"
msgstr "Modifica %s"
-#: ../lib/advene/util/importer.py:495
+#: ../lib/advene/util/importer.py:501
msgid "Cleaning up..."
msgstr ""
-#: ../lib/advene/util/importer.py:611
+#: ../lib/advene/util/importer.py:617
msgid "Text importer"
msgstr ""
-#: ../lib/advene/util/importer.py:620 ../lib/advene/util/importer.py:1094
+#: ../lib/advene/util/importer.py:626 ../lib/advene/util/importer.py:1100
msgid "Specify the encoding of the input file (latin1, utf8...)"
msgstr ""
-#: ../lib/advene/util/importer.py:716
+#: ../lib/advene/util/importer.py:722
msgid "lsdvd importer"
msgstr ""
-#: ../lib/advene/util/importer.py:743
+#: ../lib/advene/util/importer.py:749
msgid "Processing data"
msgstr ""
-#: ../lib/advene/util/importer.py:761 ../lib/advene/util/importer.py:821
+#: ../lib/advene/util/importer.py:767 ../lib/advene/util/importer.py:827
#, fuzzy
msgid "DVD Chapter"
msgstr "Capitolo"
-#: ../lib/advene/util/importer.py:765
+#: ../lib/advene/util/importer.py:771
msgid "Launching lsdvd..."
msgstr ""
-#: ../lib/advene/util/importer.py:777
+#: ../lib/advene/util/importer.py:783
msgid "chaplin importer"
msgstr ""
-#: ../lib/advene/util/importer.py:835
+#: ../lib/advene/util/importer.py:841
msgid "Xi importer"
msgstr ""
-#: ../lib/advene/util/importer.py:904
+#: ../lib/advene/util/importer.py:910
msgid "ELAN importer"
msgstr ""
-#: ../lib/advene/util/importer.py:957
+#: ../lib/advene/util/importer.py:963
#, python-format
msgid "Converting tier %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1058
+#: ../lib/advene/util/importer.py:1064
msgid "Processing time slots"
msgstr ""
-#: ../lib/advene/util/importer.py:1073
+#: ../lib/advene/util/importer.py:1079
msgid "Fixing forward references"
msgstr ""
-#: ../lib/advene/util/importer.py:1075
+#: ../lib/advene/util/importer.py:1081
msgid "Creating relations"
msgstr ""
-#: ../lib/advene/util/importer.py:1087
+#: ../lib/advene/util/importer.py:1093
msgid "Subtitle (SRT) importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1145
+#: ../lib/advene/util/importer.py:1162
#, python-format
msgid "Subtitles from %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1158
+#: ../lib/advene/util/importer.py:1175
msgid "PRAAT importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1248
+#: ../lib/advene/util/importer.py:1265
msgid "CMML importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1311
+#: ../lib/advene/util/importer.py:1328
msgid "Parsing clip information"
msgstr ""
-#: ../lib/advene/util/importer.py:1411
+#: ../lib/advene/util/importer.py:1428
msgid "Creating CMML schema"
msgstr ""
-#: ../lib/advene/util/importer.py:1435
+#: ../lib/advene/util/importer.py:1452
msgid "Parsing stream information"
msgstr ""
-#: ../lib/advene/util/importer.py:1469
+#: ../lib/advene/util/importer.py:1486
msgid "IRI importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1478
+#: ../lib/advene/util/importer.py:1495
msgid "Generate one type per view"
msgstr ""
-#: ../lib/advene/util/importer.py:1498
+#: ../lib/advene/util/importer.py:1515
#, python-format
msgid "Parsing ensemble %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1509
+#: ../lib/advene/util/importer.py:1526
#, python-format
msgid "Parsing decoupage %s"
msgstr ""
-#: ../lib/advene/util/importer.py:1545
+#: ../lib/advene/util/importer.py:1562
msgid "Parsing views"
msgstr ""
-#: ../lib/advene/util/importer.py:1593 ../lib/advene/util/importer.py:1682
+#: ../lib/advene/util/importer.py:1610 ../lib/advene/util/importer.py:1699
msgid "Initializing package"
msgstr ""
-#: ../lib/advene/util/importer.py:1631
+#: ../lib/advene/util/importer.py:1648
msgid "IRIData importer"
msgstr ""
-#: ../lib/advene/util/importer.py:1645
+#: ../lib/advene/util/importer.py:1662
msgid "Parsing sound values"
msgstr ""
-#: ../lib/advene/util/importer.py:1657
+#: ../lib/advene/util/importer.py:1674
msgid "Creating annotations"
msgstr ""
-#: ../lib/advene/util/helper.py:400
+#: ../lib/advene/util/helper.py:398
msgid "Package"
msgstr ""
-#: ../lib/advene/util/helper.py:401
+#: ../lib/advene/util/helper.py:399
msgid "Annotation"
msgstr ""
-#: ../lib/advene/util/helper.py:402
+#: ../lib/advene/util/helper.py:400
msgid "Relation"
msgstr ""
-#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:276
-#: ../lib/advene/gui/main.py:3185 ../lib/advene/gui/edit/schemaeditor.py:110
+#: ../lib/advene/util/helper.py:401 ../lib/advene/gui/main.py:276
+#: ../lib/advene/gui/main.py:3266 ../lib/advene/gui/edit/schemaeditor.py:111
msgid "Schema"
msgstr "Schema"
-#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:279
+#: ../lib/advene/util/helper.py:402 ../lib/advene/gui/main.py:279
msgid "Annotation Type"
msgstr "Tipo di Annotazione"
-#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/main.py:280
+#: ../lib/advene/util/helper.py:403 ../lib/advene/gui/main.py:280
msgid "Relation Type"
msgstr ""
-#: ../lib/advene/util/helper.py:406 ../lib/advene/gui/main.py:277
+#: ../lib/advene/util/helper.py:404 ../lib/advene/gui/main.py:277
#: ../lib/advene/gui/edit/rules.py:1087 ../lib/advene/rules/actions.py:236
msgid "View"
msgstr "Visualizza"
-#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/popup.py:463
+#: ../lib/advene/util/helper.py:405 ../lib/advene/gui/popup.py:457
#: ../lib/advene/gui/main.py:278
msgid "Query"
msgstr "Ricerca"
-#: ../lib/advene/util/helper.py:408
+#: ../lib/advene/util/helper.py:406
msgid "Resource Folder"
msgstr ""
-#: ../lib/advene/util/helper.py:409 ../lib/advene/gui/edit/create.py:123
+#: ../lib/advene/util/helper.py:407 ../lib/advene/gui/edit/create.py:123
msgid "Resource File"
msgstr ""
-#: ../lib/advene/util/helper.py:444
+#: ../lib/advene/util/helper.py:442
msgid "---- Elements ----"
msgstr ""
-#: ../lib/advene/util/helper.py:450
+#: ../lib/advene/util/helper.py:448
msgid "---- Attributes ----"
msgstr ""
-#: ../lib/advene/util/helper.py:453
+#: ../lib/advene/util/helper.py:451
msgid "---- Methods ----"
msgstr ""
-#: ../lib/advene/util/helper.py:529
+#: ../lib/advene/util/helper.py:527
#, python-format
msgid "Cannot read %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/util/helper.py:536 ../lib/advene/util/helper.py:538
+#: ../lib/advene/util/helper.py:534 ../lib/advene/util/helper.py:536
#: ../lib/advene/model/zippackage.py:187 ../lib/advene/model/zippackage.py:189
#, python-format
msgid "File %s is not an Advene zip package."
msgstr ""
-#: ../lib/advene/util/helper.py:553
+#: ../lib/advene/util/helper.py:551
#, python-format
msgid ""
"Error:\n"
"%s"
msgstr ""
-#: ../lib/advene/util/helper.py:563
+#: ../lib/advene/util/helper.py:561
#, python-format
msgid ""
"Package %(title)s:\n"
@@ -1613,81 +1677,81 @@ msgid ""
"%(description)s\n"
msgstr ""
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schema"
msgstr ""
-#: ../lib/advene/util/helper.py:586
+#: ../lib/advene/util/helper.py:584
msgid "schemas"
msgstr ""
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotation"
msgstr ""
-#: ../lib/advene/util/helper.py:587
+#: ../lib/advene/util/helper.py:585
msgid "annotations"
msgstr ""
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation type"
msgstr ""
-#: ../lib/advene/util/helper.py:588 ../lib/advene/util/helper.py:589
+#: ../lib/advene/util/helper.py:586 ../lib/advene/util/helper.py:587
msgid "annotation types"
msgstr ""
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relation"
msgstr ""
-#: ../lib/advene/util/helper.py:590
+#: ../lib/advene/util/helper.py:588
msgid "relations"
msgstr ""
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation type"
msgstr ""
-#: ../lib/advene/util/helper.py:591 ../lib/advene/util/helper.py:592
+#: ../lib/advene/util/helper.py:589 ../lib/advene/util/helper.py:590
msgid "relation types"
msgstr ""
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "query"
msgstr ""
-#: ../lib/advene/util/helper.py:593
+#: ../lib/advene/util/helper.py:591
msgid "queries"
msgstr ""
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "view"
msgstr ""
-#: ../lib/advene/util/helper.py:594
+#: ../lib/advene/util/helper.py:592
msgid "views"
msgstr ""
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "package"
msgstr ""
-#: ../lib/advene/util/helper.py:595
+#: ../lib/advene/util/helper.py:593
msgid "packages"
msgstr ""
-#: ../lib/advene/util/helper.py:607
+#: ../lib/advene/util/helper.py:605
#, python-format
msgid "No %s"
msgstr ""
-#: ../lib/advene/util/helper.py:609
+#: ../lib/advene/util/helper.py:607
#, python-format
msgid "1 %s"
msgstr ""
-#: ../lib/advene/util/helper.py:611
+#: ../lib/advene/util/helper.py:609
#, python-format
msgid "%(count)d %(plural)s"
msgstr ""
@@ -1702,32 +1766,32 @@ msgstr ""
msgid "%s does not exist"
msgstr ""
-#: ../lib/advene/util/website_export.py:417
+#: ../lib/advene/util/website_export.py:418
msgid "Starting export"
msgstr ""
-#: ../lib/advene/util/website_export.py:446
+#: ../lib/advene/util/website_export.py:447
#, python-format
msgid "Depth %d"
msgstr ""
-#: ../lib/advene/util/website_export.py:450
+#: ../lib/advene/util/website_export.py:451
#, python-format
msgid "Depth %(depth)d: processing %(url)s"
msgstr ""
-#: ../lib/advene/util/website_export.py:472
+#: ../lib/advene/util/website_export.py:473
msgid "Finalizing"
msgstr ""
-#: ../lib/advene/util/website_export.py:500
+#: ../lib/advene/util/website_export.py:507
#, python-format
msgid ""
"<p><strong>You should probably begin at <a href=\"%(href)s\">%(title)s</a>.</"
"strong></p>"
msgstr ""
-#: ../lib/advene/util/website_export.py:543
+#: ../lib/advene/util/website_export.py:550
msgid "Export complete"
msgstr ""
@@ -1791,12 +1855,12 @@ msgid ""
"\n"
msgstr ""
-#: ../lib/advene/gui/popup.py:368
+#: ../lib/advene/gui/popup.py:362
#, python-format
msgid "Renumbering annotations of type %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:375
+#: ../lib/advene/gui/popup.py:369
msgid ""
"<b>Renumber all annotations according to their order.</b>\n"
"\n"
@@ -1810,26 +1874,26 @@ msgid ""
"The offset parameter allows you to renumber from a given annotation."
msgstr ""
-#: ../lib/advene/gui/popup.py:381 ../lib/advene/gui/popup.py:488
+#: ../lib/advene/gui/popup.py:375 ../lib/advene/gui/popup.py:482
msgid "Offset"
msgstr ""
-#: ../lib/advene/gui/popup.py:403
+#: ../lib/advene/gui/popup.py:397
#, fuzzy, python-format
msgid "Renumbering %d annotations"
msgstr "Tutte le annotazioni"
-#: ../lib/advene/gui/popup.py:412
+#: ../lib/advene/gui/popup.py:406
#, fuzzy, python-format
msgid "Annotation #%d"
msgstr "Tipo di Annotazione"
-#: ../lib/advene/gui/popup.py:448 ../lib/advene/gui/edit/montage.py:303
+#: ../lib/advene/gui/popup.py:442 ../lib/advene/gui/edit/montage.py:303
#, fuzzy, python-format
msgid "Extracting %s"
msgstr "Modifica %s"
-#: ../lib/advene/gui/popup.py:449
+#: ../lib/advene/gui/popup.py:443
#, python-format
msgid ""
"Exporting annotation %(title)s\n"
@@ -1837,268 +1901,275 @@ msgid ""
"to %%(filename)s"
msgstr ""
-#: ../lib/advene/gui/popup.py:460 ../lib/advene/gui/edit/transcribe.py:506
+#: ../lib/advene/gui/popup.py:454 ../lib/advene/gui/edit/transcribe.py:506
msgid "Edit"
msgstr ""
-#: ../lib/advene/gui/popup.py:462
+#: ../lib/advene/gui/popup.py:456
msgid "Browse"
msgstr ""
-#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:850
+#: ../lib/advene/gui/popup.py:464 ../lib/advene/gui/popup.py:849
msgid "Open in web browser"
msgstr ""
-#: ../lib/advene/gui/popup.py:476 ../lib/advene/gui/popup.py:480
-#: ../lib/advene/gui/edit/schemaeditor.py:154
-#: ../lib/advene/gui/edit/shapewidget.py:1316
+#: ../lib/advene/gui/popup.py:470 ../lib/advene/gui/popup.py:474
+#: ../lib/advene/gui/edit/schemaeditor.py:155
+#: ../lib/advene/gui/edit/shapewidget.py:1310
msgid "Delete"
msgstr "Elimina"
-#: ../lib/advene/gui/popup.py:483
+#: ../lib/advene/gui/popup.py:477
#, fuzzy
msgid "Search/replace content"
msgstr "Elementi cercati"
-#: ../lib/advene/gui/popup.py:500 ../lib/advene/gui/views/finder.py:342
+#: ../lib/advene/gui/popup.py:494 ../lib/advene/gui/views/finder.py:342
msgid "Activate"
msgstr ""
-#: ../lib/advene/gui/popup.py:501
+#: ../lib/advene/gui/popup.py:495
msgid "Desactivate"
msgstr ""
-#: ../lib/advene/gui/popup.py:513 ../lib/advene/gui/views/timeline.py:2503
+#: ../lib/advene/gui/popup.py:511 ../lib/advene/gui/views/timeline.py:2555
#: ../lib/advene/gui/plugins/tracetimeline.py:980
#: ../lib/advene/gui/plugins/tracetimeline.py:1001
#: ../lib/advene/gui/edit/transcribe.py:502
msgid "Go to..."
msgstr ""
-#: ../lib/advene/gui/popup.py:514
+#: ../lib/advene/gui/popup.py:512
msgid "Loop"
msgstr ""
-#: ../lib/advene/gui/popup.py:515
+#: ../lib/advene/gui/popup.py:513
msgid "Duplicate"
msgstr ""
-#: ../lib/advene/gui/popup.py:516 ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/popup.py:514 ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight"
msgstr ""
-#: ../lib/advene/gui/popup.py:520
+#: ../lib/advene/gui/popup.py:517
+#, fuzzy
+msgid "Save snapshot..."
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/popup.py:519
#, fuzzy
msgid "Extract video fragment"
msgstr "Inserisci un indirizzo di un video stream"
-#: ../lib/advene/gui/popup.py:550
+#: ../lib/advene/gui/popup.py:549
msgid "Incoming"
msgstr ""
-#: ../lib/advene/gui/popup.py:566
+#: ../lib/advene/gui/popup.py:565
msgid "Outgoing"
msgstr ""
-#: ../lib/advene/gui/popup.py:581
+#: ../lib/advene/gui/popup.py:580
msgid "Related annotations"
msgstr ""
-#: ../lib/advene/gui/popup.py:588
+#: ../lib/advene/gui/popup.py:587
msgid "Incoming relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:595
+#: ../lib/advene/gui/popup.py:594
msgid "Outgoing relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:611
+#: ../lib/advene/gui/popup.py:610
#, python-format
msgid "Begin: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:613
+#: ../lib/advene/gui/popup.py:612
#, python-format
msgid "End: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:614
+#: ../lib/advene/gui/popup.py:613
#, fuzzy, python-format
msgid "Duration: %s"
msgstr "Relazioni"
-#: ../lib/advene/gui/popup.py:621
+#: ../lib/advene/gui/popup.py:620
msgid "Members:"
msgstr ""
-#: ../lib/advene/gui/popup.py:634
+#: ../lib/advene/gui/popup.py:633
msgid "Edit package properties..."
msgstr ""
-#: ../lib/advene/gui/popup.py:635 ../lib/advene/gui/popup.py:753
+#: ../lib/advene/gui/popup.py:634 ../lib/advene/gui/popup.py:752
#, python-format
msgid "%d annotations(s) - statistics"
msgstr ""
-#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
+#: ../lib/advene/gui/popup.py:636 ../lib/advene/gui/popup.py:860
msgid "Create a new static view..."
msgstr ""
-#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:862
+#: ../lib/advene/gui/popup.py:637 ../lib/advene/gui/popup.py:861
msgid "Create a new dynamic view..."
msgstr ""
-#: ../lib/advene/gui/popup.py:639 ../lib/advene/gui/popup.py:748
+#: ../lib/advene/gui/popup.py:638 ../lib/advene/gui/popup.py:747
msgid "Create a new annotation..."
msgstr ""
-#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:864
+#: ../lib/advene/gui/popup.py:640 ../lib/advene/gui/popup.py:863
msgid "Create a new schema..."
msgstr ""
-#: ../lib/advene/gui/popup.py:642 ../lib/advene/gui/popup.py:859
+#: ../lib/advene/gui/popup.py:641 ../lib/advene/gui/popup.py:858
msgid "Create a new query..."
msgstr ""
-#: ../lib/advene/gui/popup.py:650
+#: ../lib/advene/gui/popup.py:649
msgid "Create a new folder..."
msgstr ""
-#: ../lib/advene/gui/popup.py:651
+#: ../lib/advene/gui/popup.py:650
msgid "Create a new resource file..."
msgstr ""
-#: ../lib/advene/gui/popup.py:652
+#: ../lib/advene/gui/popup.py:651
msgid "Insert a new resource file..."
msgstr ""
-#: ../lib/advene/gui/popup.py:653
+#: ../lib/advene/gui/popup.py:652
msgid "Insert a new resource directory..."
msgstr ""
-#: ../lib/advene/gui/popup.py:662 ../lib/advene/gui/popup.py:664
+#: ../lib/advene/gui/popup.py:661 ../lib/advene/gui/popup.py:663
msgid "Insert a soundclip..."
msgstr ""
-#: ../lib/advene/gui/popup.py:675
+#: ../lib/advene/gui/popup.py:674
msgid "Play sound"
msgstr ""
-#: ../lib/advene/gui/popup.py:685
+#: ../lib/advene/gui/popup.py:684
msgid "Create a new annotation type..."
msgstr ""
-#: ../lib/advene/gui/popup.py:687
+#: ../lib/advene/gui/popup.py:686
msgid "Create a new relation type..."
msgstr ""
-#: ../lib/advene/gui/popup.py:689 ../lib/advene/gui/popup.py:747
-#: ../lib/advene/gui/popup.py:800 ../lib/advene/gui/edit/schemaeditor.py:984
+#: ../lib/advene/gui/popup.py:688 ../lib/advene/gui/popup.py:746
+#: ../lib/advene/gui/popup.py:799 ../lib/advene/gui/edit/schemaeditor.py:985
msgid "Select a color"
msgstr ""
-#: ../lib/advene/gui/popup.py:698
+#: ../lib/advene/gui/popup.py:697
#, python-format
msgid "A caption dynamic view for %s already seems to exist."
msgstr ""
-#: ../lib/advene/gui/popup.py:707
+#: ../lib/advene/gui/popup.py:706
#, fuzzy, python-format
msgid "Caption %s annotations"
msgstr "Trascrizione delle annotazioni"
-#: ../lib/advene/gui/popup.py:717 ../lib/advene/rules/actions.py:119
+#: ../lib/advene/gui/popup.py:716 ../lib/advene/rules/actions.py:119
msgid "Caption the annotation"
msgstr ""
-#: ../lib/advene/gui/popup.py:739
+#: ../lib/advene/gui/popup.py:738
#, fuzzy
msgid "Create a comment view"
msgstr "Vista statica predefinita"
-#: ../lib/advene/gui/popup.py:740
+#: ../lib/advene/gui/popup.py:739
#, fuzzy
-msgid "Generate a caption dynamic view"
+msgid "Generate a caption dynamic view..."
msgstr "Vista dinamica predefinita"
-#: ../lib/advene/gui/popup.py:741
+#: ../lib/advene/gui/popup.py:740
msgid "Display as transcription"
msgstr ""
-#: ../lib/advene/gui/popup.py:742
+#: ../lib/advene/gui/popup.py:741
msgid "Display annotations in table"
msgstr ""
-#: ../lib/advene/gui/popup.py:743
+#: ../lib/advene/gui/popup.py:742
msgid "Export to another format..."
msgstr ""
+#: ../lib/advene/gui/popup.py:748
+#, fuzzy
+msgid "Delete all annotations"
+msgstr "Tutte le annotazioni"
+
#: ../lib/advene/gui/popup.py:749
-msgid "Delete all annotations..."
-msgstr ""
+#, fuzzy
+msgid "Renumber annotations..."
+msgstr "Tutte le annotazioni"
#: ../lib/advene/gui/popup.py:750
-msgid "Renumber annotations"
-msgstr ""
-
-#: ../lib/advene/gui/popup.py:751
#, fuzzy
-msgid "Adjust annotation bounds"
+msgid "Adjust annotation bounds..."
msgstr "Tutte le annotazioni"
-#: ../lib/advene/gui/popup.py:763
+#: ../lib/advene/gui/popup.py:762
#, python-format
msgid "A follow dynamic view for %s already seems to exist."
msgstr ""
-#: ../lib/advene/gui/popup.py:772
+#: ../lib/advene/gui/popup.py:771
#, fuzzy, python-format
msgid "Follow %s relation-type"
msgstr "Tipo di Annotazione"
-#: ../lib/advene/gui/popup.py:781
+#: ../lib/advene/gui/popup.py:780
msgid "Follow the relation"
msgstr ""
-#: ../lib/advene/gui/popup.py:801
+#: ../lib/advene/gui/popup.py:800
msgid "Delete all relations..."
msgstr ""
-#: ../lib/advene/gui/popup.py:802
+#: ../lib/advene/gui/popup.py:801
#, fuzzy
msgid "Create montage from related annotations"
msgstr "Trascrizione delle annotazioni"
-#: ../lib/advene/gui/popup.py:803
+#: ../lib/advene/gui/popup.py:802
msgid "Create dynamic view following relations"
msgstr ""
-#: ../lib/advene/gui/popup.py:818
+#: ../lib/advene/gui/popup.py:817
#, python-format
msgid "Exception in query: %s"
msgstr ""
-#: ../lib/advene/gui/popup.py:821
+#: ../lib/advene/gui/popup.py:820
msgid "Apply query on..."
msgstr ""
-#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:464
+#: ../lib/advene/gui/popup.py:825 ../lib/advene/gui/views/finder.py:464
msgid "the package"
msgstr ""
-#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:465
+#: ../lib/advene/gui/popup.py:826 ../lib/advene/gui/views/finder.py:465
msgid "all annotations of the package"
msgstr ""
-#: ../lib/advene/gui/popup.py:828 ../lib/advene/gui/views/finder.py:466
+#: ../lib/advene/gui/popup.py:827 ../lib/advene/gui/views/finder.py:466
msgid "the first annotation of the package"
msgstr ""
-#: ../lib/advene/gui/popup.py:846
+#: ../lib/advene/gui/popup.py:845
msgid "Activate view"
msgstr ""
-#: ../lib/advene/gui/popup.py:848
+#: ../lib/advene/gui/popup.py:847
msgid "Open adhoc view"
msgstr ""
@@ -2261,31 +2332,31 @@ msgid "Cannot remove this widget, it is essential."
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:124
-#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:524
+#: ../lib/advene/gui/plugins/actions.py:286 ../lib/advene/gui/main.py:1189
msgid "...in its own window"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:125
#: ../lib/advene/gui/views/__init__.py:381
-#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:525
+#: ../lib/advene/gui/plugins/actions.py:287 ../lib/advene/gui/main.py:1190
msgid "...embedded east of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:126
#: ../lib/advene/gui/views/__init__.py:382
-#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:526
+#: ../lib/advene/gui/plugins/actions.py:288 ../lib/advene/gui/main.py:1191
msgid "...embedded west of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:127
#: ../lib/advene/gui/views/__init__.py:383
-#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:527
+#: ../lib/advene/gui/plugins/actions.py:289 ../lib/advene/gui/main.py:1192
msgid "...embedded south of the video"
msgstr ""
#: ../lib/advene/gui/views/viewbook.py:128
#: ../lib/advene/gui/views/__init__.py:384
-#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:528
+#: ../lib/advene/gui/plugins/actions.py:290 ../lib/advene/gui/main.py:1193
msgid "...embedded at the right of the window"
msgstr ""
@@ -2363,7 +2434,7 @@ msgid "to create a new static view"
msgstr "Vista statica predefinita"
#: ../lib/advene/gui/views/viewbook.py:380
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:535
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:527
msgid "as a transcription"
msgstr ""
@@ -2494,8 +2565,8 @@ msgstr ""
msgid "Path"
msgstr ""
-#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:193
-#: ../lib/advene/gui/views/table.py:476 ../lib/advene/gui/edit/create.py:92
+#: ../lib/advene/gui/views/browser.py:362 ../lib/advene/gui/views/table.py:249
+#: ../lib/advene/gui/views/table.py:556 ../lib/advene/gui/edit/create.py:92
#: ../lib/advene/gui/edit/elements.py:508
#: ../lib/advene/gui/edit/elements.py:557
#: ../lib/advene/gui/edit/elements.py:657
@@ -2503,44 +2574,67 @@ msgid "Type"
msgstr ""
#: ../lib/advene/gui/views/browser.py:366
-#: ../lib/advene/gui/edit/elements.py:2137
+#: ../lib/advene/gui/edit/elements.py:2148
msgid "Value"
msgstr ""
-#: ../lib/advene/gui/views/table.py:54
+#: ../lib/advene/gui/views/checker.py:37
+msgid "Checker"
+msgstr ""
+
+#: ../lib/advene/gui/views/checker.py:39
+#, fuzzy
+msgid "Check various package properties"
+msgstr "Modifica proprietà pacchetto"
+
+#: ../lib/advene/gui/views/checker.py:90
+#, fuzzy
+msgid "List of possible issues in the current package"
+msgstr "Salva il pacchetto attuale"
+
+#: ../lib/advene/gui/views/checker.py:108
+msgid "Overlapping"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:55
msgid "Annotation table view"
msgstr ""
-#: ../lib/advene/gui/views/table.py:56
+#: ../lib/advene/gui/views/table.py:57
msgid "Display annotations in a table"
msgstr ""
-#: ../lib/advene/gui/views/table.py:187 ../lib/advene/gui/views/table.py:371
+#: ../lib/advene/gui/views/table.py:225 ../lib/advene/gui/views/table.py:450
msgid "Snapshot"
msgstr ""
-#: ../lib/advene/gui/views/table.py:192 ../lib/advene/gui/edit/elements.py:600
+#: ../lib/advene/gui/views/table.py:238
+#: ../lib/advene/gui/views/timeline.py:1641
+msgid "Cannot update the annotation, its representation is too complex"
+msgstr ""
+
+#: ../lib/advene/gui/views/table.py:248 ../lib/advene/gui/edit/elements.py:600
#: ../lib/advene/gui/edit/elements.py:675
#: ../lib/advene/gui/edit/elements.py:717
#: ../lib/advene/gui/edit/elements.py:1108
msgid "Content"
msgstr ""
-#: ../lib/advene/gui/views/table.py:194
-#: ../lib/advene/gui/edit/elements.py:1772
+#: ../lib/advene/gui/views/table.py:250
+#: ../lib/advene/gui/edit/elements.py:1783
msgid "Begin"
msgstr ""
-#: ../lib/advene/gui/views/table.py:195 ../lib/advene/gui/main.py:722
-#: ../lib/advene/gui/edit/elements.py:1781
+#: ../lib/advene/gui/views/table.py:251 ../lib/advene/gui/main.py:628
+#: ../lib/advene/gui/edit/elements.py:1792
msgid "End"
msgstr ""
-#: ../lib/advene/gui/views/table.py:196 ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/views/table.py:252 ../lib/advene/gui/main.py:4177
msgid "Duration"
msgstr ""
-#: ../lib/advene/gui/views/table.py:197 ../lib/advene/gui/views/table.py:477
+#: ../lib/advene/gui/views/table.py:253 ../lib/advene/gui/views/table.py:557
#: ../lib/advene/gui/util/dialog.py:385 ../lib/advene/gui/edit/imports.py:325
#: ../lib/advene/gui/edit/elements.py:507
#: ../lib/advene/gui/edit/elements.py:556
@@ -2554,56 +2648,56 @@ msgstr ""
msgid "Id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:312 ../lib/advene/gui/views/table.py:429
+#: ../lib/advene/gui/views/table.py:380 ../lib/advene/gui/views/table.py:509
msgid "Export data to file..."
msgstr ""
-#: ../lib/advene/gui/views/table.py:321 ../lib/advene/gui/views/table.py:438
+#: ../lib/advene/gui/views/table.py:389 ../lib/advene/gui/views/table.py:518
#, python-format
msgid "Error while exporting data to %(filename)s: %(error)s"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "type"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "begin"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "end"
msgstr ""
-#: ../lib/advene/gui/views/table.py:332
+#: ../lib/advene/gui/views/table.py:400
msgid "content"
msgstr ""
-#: ../lib/advene/gui/views/table.py:379
+#: ../lib/advene/gui/views/table.py:458
msgid "Generic table view"
msgstr ""
-#: ../lib/advene/gui/views/table.py:381
+#: ../lib/advene/gui/views/table.py:460
msgid "Display Advene elements in a table."
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element title"
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element type"
msgstr ""
-#: ../lib/advene/gui/views/table.py:450
+#: ../lib/advene/gui/views/table.py:530
msgid "Element id"
msgstr ""
-#: ../lib/advene/gui/views/table.py:475 ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/views/table.py:555 ../lib/advene/gui/main.py:4175
#: ../lib/advene/gui/util/dialog.py:376 ../lib/advene/gui/edit/dvdselect.py:95
#: ../lib/advene/gui/edit/imports.py:331
#: ../lib/advene/gui/edit/transcribe.py:1055
@@ -2642,13 +2736,13 @@ msgstr ""
msgid "Adhoc views"
msgstr ""
-#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:557
+#: ../lib/advene/gui/views/tree.py:421 ../lib/advene/gui/main.py:1222
msgid "Tree view"
msgstr ""
-#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:131
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:782
-#: ../lib/advene/gui/edit/schemaeditor.py:63
+#: ../lib/advene/gui/views/tree.py:428 ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/edit/schemaeditor.py:64
msgid "Refresh"
msgstr ""
@@ -2656,25 +2750,76 @@ msgstr ""
msgid "Package View"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:39
+#: ../lib/advene/gui/views/tree.py:700
+#: ../lib/advene/gui/views/timeline.py:1157
+msgid "Cannot delete the annotation : it has relations."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:757
+#: ../lib/advene/gui/views/timeline.py:1251
+#, python-format
+msgid "Duplicate selection to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:760
+#: ../lib/advene/gui/views/timeline.py:1254
+#, fuzzy, python-format
+msgid "Move selection to type %s"
+msgstr "Tipo di Annotazione"
+
+#: ../lib/advene/gui/views/tree.py:769
+#: ../lib/advene/gui/views/timeline.py:1263
+#, python-format
+msgid "Duplicate annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:773
+#: ../lib/advene/gui/views/timeline.py:1267
+#, python-format
+msgid "Move annotation to type %s"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:784
+#: ../lib/advene/gui/views/timeline.py:1290
+msgid "Duplicate and create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:808
+#: ../lib/advene/gui/views/timeline.py:1057 ../lib/advene/gui/main.py:4561
+msgid ""
+"Select the schema where you want to\n"
+"create the new relation type."
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:821
+#: ../lib/advene/gui/views/timeline.py:1070
+msgid "Create a relation"
+msgstr ""
+
+#: ../lib/advene/gui/views/tree.py:831
+#: ../lib/advene/gui/views/timeline.py:1080
+msgid "Create a new relation-type."
+msgstr ""
+
+#: ../lib/advene/gui/views/annotationdisplay.py:40
msgid "AnnotationDisplay"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:41
+#: ../lib/advene/gui/views/annotationdisplay.py:42
msgid "Display the contents of an annotation"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:79
+#: ../lib/advene/gui/views/annotationdisplay.py:80
msgid "No annotation"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:85
-#: ../lib/advene/gui/views/timeline.py:79
-#: ../lib/advene/gui/plugins/shotvalidation.py:248
+#: ../lib/advene/gui/views/annotationdisplay.py:86
+#: ../lib/advene/gui/views/timeline.py:81
+#: ../lib/advene/gui/plugins/shotvalidation.py:251
msgid "Current time"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:105
+#: ../lib/advene/gui/views/annotationdisplay.py:106
#, python-format
msgid ""
"Schema %(schema)s\n"
@@ -2683,15 +2828,20 @@ msgid ""
"Id: %(id)s"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:211
+#: ../lib/advene/gui/views/annotationdisplay.py:227
msgid "Screenshot"
msgstr ""
-#: ../lib/advene/gui/views/annotationdisplay.py:217
+#: ../lib/advene/gui/views/annotationdisplay.py:249
#: ../lib/advene/gui/views/relationdisplay.py:104
msgid "Contents"
msgstr ""
+#: ../lib/advene/gui/views/annotationdisplay.py:252
+#: ../lib/advene/gui/views/editaccumulator.py:70
+msgid "Validate"
+msgstr ""
+
#: ../lib/advene/gui/views/__init__.py:193
msgid "Invalid view id"
msgstr ""
@@ -2715,7 +2865,7 @@ msgstr ""
msgid "Enter a view name to save this parametered view"
msgstr ""
-#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4520
+#: ../lib/advene/gui/views/__init__.py:288 ../lib/advene/gui/main.py:4628
#, python-format
msgid "Error: the identifier %s contains invalid characters."
msgstr ""
@@ -2748,7 +2898,7 @@ msgstr ""
msgid "Click or drag-and-drop to reattach view"
msgstr ""
-#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/views/caption.py:30 ../lib/advene/gui/main.py:4337
msgid "Caption"
msgstr ""
@@ -2766,131 +2916,112 @@ msgstr ""
msgid "Navigation popup"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:48
+#: ../lib/advene/gui/views/transcription.py:47
msgid "Transcription"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:50
+#: ../lib/advene/gui/views/transcription.py:49
#, fuzzy
msgid "Display annotations as a text transcription"
msgstr "Visualizza le annotazione come una trascrizione"
-#: ../lib/advene/gui/views/transcription.py:56
+#: ../lib/advene/gui/views/transcription.py:55
#: ../lib/advene/gui/views/bookmarks.py:245
-#: ../lib/advene/gui/views/timeline.py:132
-#: ../lib/advene/gui/plugins/videoplayer.py:43
+#: ../lib/advene/gui/views/timeline.py:135
+#: ../lib/advene/gui/plugins/videoplayer.py:44
#: ../lib/advene/gui/edit/montage.py:54
#: ../lib/advene/gui/edit/transcribe.py:85
msgid "Save view"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:57
+#: ../lib/advene/gui/views/transcription.py:56
#: ../lib/advene/gui/views/interactivequery.py:60
#: ../lib/advene/gui/views/tagbag.py:62
-#: ../lib/advene/gui/views/timeline.py:133
-#: ../lib/advene/gui/plugins/videoplayer.py:44
+#: ../lib/advene/gui/views/timeline.py:136
+#: ../lib/advene/gui/plugins/videoplayer.py:45
#: ../lib/advene/gui/edit/transcribe.py:86
msgid "Save default options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:146
+#: ../lib/advene/gui/views/transcription.py:145
#, python-format
msgid "Error in source evaluation %(source)s: %(error)s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:163
+#: ../lib/advene/gui/views/transcription.py:162
msgid "Transcription options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
msgid "Default representation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:164
+#: ../lib/advene/gui/views/transcription.py:163
msgid "Use the default representation for annotations"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
#: ../lib/advene/gui/edit/elements.py:962
msgid "Representation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:165
+#: ../lib/advene/gui/views/transcription.py:164
msgid ""
"If default representation is unchecked,\n"
"this TALES expression that will be used to format the annotations."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:166
+#: ../lib/advene/gui/views/transcription.py:165
msgid "Separator"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:167
+#: ../lib/advene/gui/views/transcription.py:166
msgid "This separator will be inserted between the annotations."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:168
+#: ../lib/advene/gui/views/transcription.py:167
msgid "Whitespace"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:169
+#: ../lib/advene/gui/views/transcription.py:168
msgid "Newline"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:170
+#: ../lib/advene/gui/views/transcription.py:169
msgid "Tabulation"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:171
+#: ../lib/advene/gui/views/transcription.py:170
msgid "Dash"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:172
+#: ../lib/advene/gui/views/transcription.py:171
msgid "User defined"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid "User-defined separator"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:174
+#: ../lib/advene/gui/views/transcription.py:173
msgid ""
"Separator used if user-defined is selected.Use \\n for a newline and \\t for "
"a tabulation."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Display timestamps"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:175
+#: ../lib/advene/gui/views/transcription.py:174
msgid "Insert timestsamp values"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:176
+#: ../lib/advene/gui/views/transcription.py:175
msgid "Display annotation bounds"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:204
-#, python-format
-msgid ""
-"%d annotation(s) were modified\n"
-"but we cannot propagate the modifications\n"
-"since the representation parameter is used."
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:207
-msgid "Updating modified annotations"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:212
-#, python-format
-msgid ""
-"%d annotations were modified.\n"
-"Do you want to update their content?"
-msgstr ""
-
-#: ../lib/advene/gui/views/transcription.py:279
+#: ../lib/advene/gui/views/transcription.py:235
#, python-format
msgid ""
"Cannot convert the following annotations,\n"
@@ -2898,53 +3029,53 @@ msgid ""
"%s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:290
+#: ../lib/advene/gui/views/transcription.py:246
msgid ""
"Cannot validate the update.\n"
"The representation pattern is too complex."
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:316
+#: ../lib/advene/gui/views/transcription.py:272
msgid "Save transcription to a text file"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:317
+#: ../lib/advene/gui/views/transcription.py:273
msgid "Apply the modifications"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:318
+#: ../lib/advene/gui/views/transcription.py:274
msgid "Find text"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:319
+#: ../lib/advene/gui/views/transcription.py:275
msgid "Quickly switch display options"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:320
+#: ../lib/advene/gui/views/transcription.py:276
msgid "Refresh the transcription"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:321
+#: ../lib/advene/gui/views/transcription.py:277
msgid "Edit preferences"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:494
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:653
+#: ../lib/advene/gui/views/transcription.py:460
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:645
#, python-format
msgid "Annotation %s"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:505
-#: ../lib/advene/gui/widget.py:1045 ../lib/advene/gui/edit/montage.py:56
+#: ../lib/advene/gui/views/transcription.py:471
+#: ../lib/advene/gui/widget.py:1059 ../lib/advene/gui/edit/montage.py:56
msgid "Play"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:723
+#: ../lib/advene/gui/views/transcription.py:696
#, python-format
msgid "Cannot write to %(filename)s: %(error)s:"
msgstr ""
-#: ../lib/advene/gui/views/transcription.py:729
+#: ../lib/advene/gui/views/transcription.py:702
#: ../lib/advene/gui/edit/transcribe.py:884
#, python-format
msgid "Transcription saved to %s"
@@ -3097,7 +3228,7 @@ msgstr ""
msgid "Convert bookmarks to annotations"
msgstr ""
-#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3507
+#: ../lib/advene/gui/views/bookmarks.py:292 ../lib/advene/gui/main.py:3612
msgid "Comment here"
msgstr ""
@@ -3162,7 +3293,7 @@ msgid "Result of a query"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:280
-#: ../lib/advene/gui/main.py:3103
+#: ../lib/advene/gui/main.py:3184
#, python-format
msgid "'%s'"
msgstr ""
@@ -3187,7 +3318,7 @@ msgid "Search/replace content in %d elements"
msgstr "Elementi cercati"
#: ../lib/advene/gui/views/interactivequery.py:375
-#: ../lib/advene/gui/main.py:3100
+#: ../lib/advene/gui/main.py:3181
msgid "Empty quicksearch string"
msgstr ""
@@ -3201,7 +3332,7 @@ msgid "Edit query"
msgstr ""
#: ../lib/advene/gui/views/interactivequery.py:409
-#: ../lib/advene/gui/main.py:641
+#: ../lib/advene/gui/main.py:537
msgid "String to search"
msgstr ""
@@ -3339,7 +3470,7 @@ msgstr ""
msgid "Edit resource"
msgstr ""
-#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:558
+#: ../lib/advene/gui/views/finder.py:523 ../lib/advene/gui/main.py:1223
msgid "Package finder"
msgstr ""
@@ -3351,7 +3482,7 @@ msgstr ""
msgid "Tag Bag"
msgstr ""
-#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:567
+#: ../lib/advene/gui/views/tagbag.py:54 ../lib/advene/gui/main.py:1232
msgid "Bag of tags"
msgstr "Raccolta di tag"
@@ -3360,8 +3491,8 @@ msgid "New tag"
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:61
-#: ../lib/advene/gui/views/timeline.py:3390
-#: ../lib/advene/gui/views/timeline.py:3531 ../lib/advene/gui/main.py:4132
+#: ../lib/advene/gui/views/timeline.py:3479
+#: ../lib/advene/gui/views/timeline.py:3620 ../lib/advene/gui/main.py:4234
#: ../lib/advene/gui/edit/properties.py:46
#: ../lib/advene/gui/edit/transcribe.py:147
#: ../lib/advene/gui/edit/transcribe.py:1195
@@ -3377,7 +3508,7 @@ msgid "Enter a new tag name and select its color."
msgstr ""
#: ../lib/advene/gui/views/tagbag.py:132
-#: ../lib/advene/gui/edit/shapewidget.py:311
+#: ../lib/advene/gui/edit/shapewidget.py:305
msgid "Name"
msgstr "Nome"
@@ -3385,13 +3516,13 @@ msgstr "Nome"
#: ../lib/advene/gui/edit/elements.py:871
#: ../lib/advene/gui/edit/elements.py:951
#: ../lib/advene/gui/edit/elements.py:1065
-#: ../lib/advene/gui/edit/shapewidget.py:332
+#: ../lib/advene/gui/edit/shapewidget.py:326
#: ../lib/advene/rules/actions.py:133
msgid "Color"
msgstr "Colore"
#: ../lib/advene/gui/views/tagbag.py:162
-#: ../lib/advene/gui/views/timeline.py:3627
+#: ../lib/advene/gui/views/timeline.py:3716
msgid "The tag contains invalid characters"
msgstr ""
@@ -3441,60 +3572,56 @@ msgstr ""
msgid "EditAccumulator"
msgstr ""
-#: ../lib/advene/gui/views/editaccumulator.py:70
-msgid "Validate"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:118 ../lib/advene/gui/main.py:556
+#: ../lib/advene/gui/views/timeline.py:121 ../lib/advene/gui/main.py:1221
msgid "Timeline"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:120
+#: ../lib/advene/gui/views/timeline.py:123
msgid "Display annotations on a timeline"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:134
+#: ../lib/advene/gui/views/timeline.py:137
msgid "Limit display to current area"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:135
-#: ../lib/advene/gui/views/timeline.py:3184
+#: ../lib/advene/gui/views/timeline.py:138
+#: ../lib/advene/gui/views/timeline.py:3261
msgid "Display whole movie"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:164
+#: ../lib/advene/gui/views/timeline.py:168
#, python-format
msgid "Cannot find annotation type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:252
+#: ../lib/advene/gui/views/timeline.py:218
msgid "No scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:253
+#: ../lib/advene/gui/views/timeline.py:219
msgid "Continuous scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:254
+#: ../lib/advene/gui/views/timeline.py:220
msgid "Discrete scrolling"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:255
+#: ../lib/advene/gui/views/timeline.py:221
#, fuzzy
msgid "Annotation scrolling"
msgstr "Tipo di Annotazione"
-#: ../lib/advene/gui/views/timeline.py:518
+#: ../lib/advene/gui/views/timeline.py:483
#, fuzzy, python-format
msgid "%d annotations"
msgstr "Tutte le annotazioni"
-#: ../lib/advene/gui/views/timeline.py:521
+#: ../lib/advene/gui/views/timeline.py:486
#, fuzzy
msgid "Display all types"
msgstr "Visualizza %s"
-#: ../lib/advene/gui/views/timeline.py:523
+#: ../lib/advene/gui/views/timeline.py:488
#, python-format
msgid ""
"There are %d annotations.\n"
@@ -3504,408 +3631,406 @@ msgid ""
"click on the 'Display all types' button below."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:948
+#: ../lib/advene/gui/views/timeline.py:962
msgid "Split at current player position"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:952
+#: ../lib/advene/gui/views/timeline.py:966
msgid "Center and zoom"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1014 ../lib/advene/gui/main.py:4447
+#: ../lib/advene/gui/views/timeline.py:1028 ../lib/advene/gui/main.py:4553
#: ../lib/advene/rules/elements.py:1000
msgid "Creation of a new annotation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1043 ../lib/advene/gui/main.py:4455
-msgid ""
-"Select the schema where you want to\n"
-"create the new relation type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1056
-msgid "Create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1066
-msgid "Create a new relation-type."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1092
+#: ../lib/advene/gui/views/timeline.py:1106
msgid "Merge with this annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1101
+#: ../lib/advene/gui/views/timeline.py:1115
msgid "Align both begin times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1102
+#: ../lib/advene/gui/views/timeline.py:1116
msgid "Align both end times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1103
+#: ../lib/advene/gui/views/timeline.py:1117
msgid "Align end time to selected begin time"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1104
+#: ../lib/advene/gui/views/timeline.py:1118
msgid "Align begin time to selected end time"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1105
+#: ../lib/advene/gui/views/timeline.py:1119
msgid "Align all times"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1143
-msgid "Cannot delete the annotation : it has relations."
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1218
+#: ../lib/advene/gui/views/timeline.py:1232
msgid "Select the appropriate relation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1237
-#, python-format
-msgid "Duplicate selection to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1240
-#, fuzzy, python-format
-msgid "Move selection to type %s"
-msgstr "Tipo di Annotazione"
-
-#: ../lib/advene/gui/views/timeline.py:1249
-#, python-format
-msgid "Duplicate annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1253
-#, python-format
-msgid "Move annotation to type %s"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1260
+#: ../lib/advene/gui/views/timeline.py:1274
#, python-format
msgid "Duplicate to type %(type)s at %(position)s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1266
+#: ../lib/advene/gui/views/timeline.py:1280
#, python-format
msgid "Move to type %(type)s at %(position)s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1276
-msgid "Duplicate and create a relation"
-msgstr ""
-
-#: ../lib/advene/gui/views/timeline.py:1287
+#: ../lib/advene/gui/views/timeline.py:1301
#, python-format
msgid "Duplicate at %s and create a relation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1318
+#: ../lib/advene/gui/views/timeline.py:1332
msgid "Annotation filter"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1319
+#: ../lib/advene/gui/views/timeline.py:1333
msgid "Enter the searched string"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1427
+#: ../lib/advene/gui/views/timeline.py:1441
#, python-format
msgid "Duplicate all annotations to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1429
+#: ../lib/advene/gui/views/timeline.py:1443
#, python-format
msgid "Move all annotations to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1431
+#: ../lib/advene/gui/views/timeline.py:1445
#, python-format
msgid "Duplicate all annotations matching a string to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1433
+#: ../lib/advene/gui/views/timeline.py:1447
#, python-format
msgid "Move all annotations matching a string to type %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1435
+#: ../lib/advene/gui/views/timeline.py:1449
#, python-format
msgid "Align all annotation time codes using %s as reference."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:1437
+#: ../lib/advene/gui/views/timeline.py:1451
#, python-format
msgid "Align all annotation contents using %s as reference"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2386
+#: ../lib/advene/gui/views/timeline.py:1935
+#: ../lib/advene/gui/views/timeline.py:1964
+#, fuzzy, python-format
+msgid "Displaying %(count)d / %(total)d annotations..."
+msgstr "Trascrizione delle annotazioni"
+
+#: ../lib/advene/gui/views/timeline.py:1946
+#, fuzzy
+msgid "Displaying done."
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/views/timeline.py:2438
msgid "Create a new annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2387
+#: ../lib/advene/gui/views/timeline.py:2439
#, fuzzy
msgid "Zoom on region"
msgstr "Tutte le annotazioni"
-#: ../lib/advene/gui/views/timeline.py:2388
+#: ../lib/advene/gui/views/timeline.py:2440
msgid "Restrict display to region"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2497
+#: ../lib/advene/gui/views/timeline.py:2549
#: ../lib/advene/gui/edit/transcribe.py:496
#, python-format
msgid "Position %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2507
+#: ../lib/advene/gui/views/timeline.py:2559
#, fuzzy
msgid "New annotation at player time"
msgstr "di un tipo di annotazione"
-#: ../lib/advene/gui/views/timeline.py:2511
+#: ../lib/advene/gui/views/timeline.py:2563
#, fuzzy
msgid "New annotation at mouse position"
msgstr "di un tipo di annotazione"
-#: ../lib/advene/gui/views/timeline.py:2515
+#: ../lib/advene/gui/views/timeline.py:2567
msgid "Selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2634
+#: ../lib/advene/gui/views/timeline.py:2693
msgid "Cannot zoom more"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2841
+#: ../lib/advene/gui/views/timeline.py:2911
#, python-format
msgid "From schema %s"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2903
+#: ../lib/advene/gui/views/timeline.py:2973
msgid "Restrict playing to this annotation-type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2910
+#: ../lib/advene/gui/views/timeline.py:2980
msgid "Goto previous annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2921
+#: ../lib/advene/gui/views/timeline.py:2991
msgid "Goto next annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2932
+#: ../lib/advene/gui/views/timeline.py:3002
msgid "+"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2935 ../lib/advene/gui/main.py:3137
+#: ../lib/advene/gui/views/timeline.py:3005 ../lib/advene/gui/main.py:3218
#: ../lib/advene/gui/edit/transcribe.py:1027
msgid "Create a new annotation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2990
+#: ../lib/advene/gui/views/timeline.py:3060
msgid "Open an annotation display view"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:2997
+#: ../lib/advene/gui/views/timeline.py:3067
msgid "Open a slave montage view (coordinated zoom level)"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3034
+#: ../lib/advene/gui/views/timeline.py:3102
+msgid ""
+"<b>Statistics about current selection</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3109
msgid "No selected annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3038
+#: ../lib/advene/gui/views/timeline.py:3113
#, python-format
msgid "%d selected annotation(s)"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3045
+#: ../lib/advene/gui/views/timeline.py:3120
msgid "Unselect all annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3046
+#: ../lib/advene/gui/views/timeline.py:3121
#, fuzzy
msgid "Create a static view"
msgstr "Vista statica predefinita"
-#: ../lib/advene/gui/views/timeline.py:3047
+#: ../lib/advene/gui/views/timeline.py:3122
msgid "Highlight selection in other views"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3048
-#: ../lib/advene/gui/views/timeline.py:3620
+#: ../lib/advene/gui/views/timeline.py:3123
+#: ../lib/advene/gui/views/timeline.py:3709
msgid "Tag selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3049
+#: ../lib/advene/gui/views/timeline.py:3124
msgid "Delete selected annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3050
+#: ../lib/advene/gui/views/timeline.py:3125
msgid "Display selection in a table"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3051
+#: ../lib/advene/gui/views/timeline.py:3126
msgid "Center and zoom on selection"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3052
+#: ../lib/advene/gui/views/timeline.py:3127
msgid "Edit selected annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3053
+#: ../lib/advene/gui/views/timeline.py:3128
msgid "Merge annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3177
+#: ../lib/advene/gui/views/timeline.py:3129
+#, fuzzy
+msgid "Display statistics"
+msgstr "Visualizza %s"
+
+#: ../lib/advene/gui/views/timeline.py:3254
msgid "Goto previous page"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3189
+#: ../lib/advene/gui/views/timeline.py:3266
msgid "Goto next page"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3235
-#: ../lib/advene/gui/plugins/tracetimeline.py:2025
+#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/plugins/tracetimeline.py:2030
#: ../lib/advene/gui/edit/montage.py:535
msgid "Inspector"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3259
+#: ../lib/advene/gui/views/timeline.py:3320
+msgid "Inspector locked. Click here or in the timeline background to unlock."
+msgstr ""
+
+#: ../lib/advene/gui/views/timeline.py:3348
msgid ""
"Delete the selected annotations or drop an annotation here to delete it."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3281
+#: ../lib/advene/gui/views/timeline.py:3370
msgid ""
"Drag an annotation type here to remove it from display.\n"
"Click to edit all displayed types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3293
+#: ../lib/advene/gui/views/timeline.py:3382
msgid "Selection actions"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3308
+#: ../lib/advene/gui/views/timeline.py:3397
msgid "Display relations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3314
+#: ../lib/advene/gui/views/timeline.py:3403
#, fuzzy
msgid "Display all relations"
msgstr "Visualizza cronologia di navigazione"
-#: ../lib/advene/gui/views/timeline.py:3351
+#: ../lib/advene/gui/views/timeline.py:3440
#: ../lib/advene/gui/plugins/tracetimeline.py:421
#: ../lib/advene/gui/edit/montage.py:439
msgid "Zoom out"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3356
+#: ../lib/advene/gui/views/timeline.py:3445
#: ../lib/advene/gui/plugins/tracetimeline.py:426
#: ../lib/advene/gui/edit/montage.py:444
msgid "Zoom in"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3391
+#: ../lib/advene/gui/views/timeline.py:3480
msgid "Center on current player position."
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3407
+#: ../lib/advene/gui/views/timeline.py:3496
msgid "Automatically activate loop when clicking on an annotation"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3431
+#: ../lib/advene/gui/views/timeline.py:3520
msgid "Displayed"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3439
+#: ../lib/advene/gui/views/timeline.py:3528
msgid "Not displayed"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3487
+#: ../lib/advene/gui/views/timeline.py:3576
msgid "< All <"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3491
+#: ../lib/advene/gui/views/timeline.py:3580
msgid "> All >"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3507
+#: ../lib/advene/gui/views/timeline.py:3596
msgid "Displayed annotation types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
msgid "Relation type"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3532
+#: ../lib/advene/gui/views/timeline.py:3621
msgid "Display relation types"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
msgid "Relation content"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3533
+#: ../lib/advene/gui/views/timeline.py:3622
msgid "Display relation content"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3534
+#: ../lib/advene/gui/views/timeline.py:3623
msgid "Highlight active annotations"
msgstr ""
-#: ../lib/advene/gui/views/timeline.py:3621
+#: ../lib/advene/gui/views/timeline.py:3710
msgid "Enter the tag for the selection"
msgstr ""
-#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/views/scroller.py:29 ../lib/advene/gui/main.py:4336
msgid "Scroller"
msgstr ""
-#: ../lib/advene/gui/widget.py:329
+#: ../lib/advene/gui/widget.py:327
#, fuzzy, python-format
msgid "Set of %s annotations"
msgstr "Tutte le annotazioni"
-#: ../lib/advene/gui/widget.py:1049
-#: ../lib/advene/gui/edit/timeadjustment.py:75
+#: ../lib/advene/gui/widget.py:1063
+#: ../lib/advene/gui/edit/timeadjustment.py:74
#, fuzzy
msgid "Refresh snapshot"
msgstr "Visualizza %s"
-#: ../lib/advene/gui/widget.py:1053
+#: ../lib/advene/gui/widget.py:1067
+#, fuzzy
+msgid "Save as..."
+msgstr "Pacchetto %s"
+
+#: ../lib/advene/gui/widget.py:1072
msgid "Use current player position"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:35 ../lib/advene/gui/main.py:570
+#: ../lib/advene/gui/widget.py:1078
+msgid "Adjust timestamp"
+msgstr ""
+
+#: ../lib/advene/gui/plugins/videoplayer.py:36 ../lib/advene/gui/main.py:1235
#, fuzzy
msgid "Video player"
msgstr "Seleziona un DVD"
-#: ../lib/advene/gui/plugins/videoplayer.py:37
+#: ../lib/advene/gui/plugins/videoplayer.py:38
msgid "Complementary video player"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:45
+#: ../lib/advene/gui/plugins/videoplayer.py:46
#, fuzzy
msgid "Select video file"
msgstr "Seleziona un video stream"
-#: ../lib/advene/gui/plugins/videoplayer.py:124
+#: ../lib/advene/gui/plugins/videoplayer.py:127
#, fuzzy
msgid "Select a video file"
msgstr "Seleziona un video stream"
-#: ../lib/advene/gui/plugins/videoplayer.py:230
+#: ../lib/advene/gui/plugins/videoplayer.py:250
msgid "Synchronize"
msgstr ""
-#: ../lib/advene/gui/plugins/videoplayer.py:246
+#: ../lib/advene/gui/plugins/videoplayer.py:266
msgid "Offset in ms"
msgstr ""
+#: ../lib/advene/gui/plugins/videoplayer.py:274
+#, fuzzy
+msgid "Drag and drop to get player time"
+msgstr "di un tipo di annotazione"
+
#: ../lib/advene/gui/plugins/actions.py:52
msgid "Display a popup"
msgstr ""
@@ -4157,138 +4282,138 @@ msgstr ""
msgid "New bookmark"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:369
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:361
#, python-format
msgid "Rendering type %(type)s as %(presentation)s"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:514
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:506
msgid "Snapshot only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:515
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:507
msgid "Overlayed snapshot only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:516
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:508
msgid "Timestamp only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:517
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:509
msgid "Snapshot+timestamp"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:518
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:510
#, fuzzy
msgid "Annotation content"
msgstr "Tipo di Annotazione"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:533
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:525
msgid "as a list"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:534
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:526
msgid "as a table"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:672
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:646
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
msgid "Play video"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:647
msgid "Show timestamp only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:648
#, fuzzy
msgid "Show content only"
msgstr "Salva contenuto in..."
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:649
msgid "Show snapshot only"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:659
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:651
msgid "Show overlayed timestamp"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:660
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:652
#, fuzzy
msgid "Show overlayed content"
msgstr "Elementi cercati"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:662
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:654
#, fuzzy, python-format
msgid "Annotation type %s"
msgstr "Tipo di Annotazione"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:663
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:655
#, fuzzy
msgid "display as list"
msgstr "Visualizza cronologia di navigazione"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:664
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:656
#, fuzzy
msgid "display as table"
msgstr "Visualizza %s"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:665
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:657
#, fuzzy
msgid "display as transcription"
msgstr "Visualizza le annotazione come una trascrizione"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:674
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:666
#, fuzzy
msgid "Open link"
msgstr "Apri"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:730
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:722
#, python-format
msgid "HTML editor: cannot parse content (%s)"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:763
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:755
#, fuzzy, python-format
msgid "Heading %d"
msgstr "Modifica %s"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:774
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:766
msgid "Bold"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:775
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:767
msgid "Italic"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:776
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:768
msgid "Header"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:778
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:770
msgid "Copy"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:779
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:771
msgid "Cut"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:780
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:772
#, fuzzy
msgid "Paste"
msgstr "Data"
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:797
-#: ../lib/advene/gui/plugins/shotvalidation.py:258
-#: ../lib/advene/gui/main.py:329 ../lib/advene/gui/edit/transcribe.py:1211
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:789
+#: ../lib/advene/gui/plugins/shotvalidation.py:261
+#: ../lib/advene/gui/main.py:350 ../lib/advene/gui/edit/transcribe.py:1211
msgid "Undo"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:838
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:830
msgid "WYSIWYG editor"
msgstr ""
-#: ../lib/advene/gui/plugins/htmlcontenhandler.py:848
+#: ../lib/advene/gui/plugins/htmlcontenhandler.py:840
#, fuzzy
msgid "Edit HTML source"
msgstr "Modifica %s"
@@ -4303,97 +4428,97 @@ msgstr "Seleziona un'azione"
msgid "Display shot validation interface"
msgstr "Visualizza cronologia di navigazione"
-#: ../lib/advene/gui/plugins/shotvalidation.py:108
+#: ../lib/advene/gui/plugins/shotvalidation.py:111
#, python-format
msgid "Merged #%(first)d-#%(second)d into #%(first)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:133
+#: ../lib/advene/gui/plugins/shotvalidation.py:136
msgid "Last action undone"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:151
+#: ../lib/advene/gui/plugins/shotvalidation.py:154
#, python-format
msgid "Split annotation #%(current)d into #%(current)d and #%(next)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:156
+#: ../lib/advene/gui/plugins/shotvalidation.py:159
#, python-format
msgid "Cannot split annotation #%(current)d: out of bounds."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:176
+#: ../lib/advene/gui/plugins/shotvalidation.py:179
#, python-format
msgid "Changed cut between #%(first)d and %(second)d"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:179
+#: ../lib/advene/gui/plugins/shotvalidation.py:182
msgid "Changed begin time for first annotation"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:185
+#: ../lib/advene/gui/plugins/shotvalidation.py:188
#, fuzzy
msgid "No annotations to adjust"
msgstr "di un tipo di annotazione"
-#: ../lib/advene/gui/plugins/shotvalidation.py:192
+#: ../lib/advene/gui/plugins/shotvalidation.py:195
msgid ""
"Click on the frame just after the cut to adjust the cut time.\n"
"Control-click on a frame to indicate a missing cut."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:200
+#: ../lib/advene/gui/plugins/shotvalidation.py:203
#, python-format
msgid "Begin of #%(index)d (title: %(content)s)"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:214
+#: ../lib/advene/gui/plugins/shotvalidation.py:217
msgid "< Previous cut"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:215
+#: ../lib/advene/gui/plugins/shotvalidation.py:218
#, fuzzy
msgid "Display previous cut"
msgstr "Tutte le annotazioni"
-#: ../lib/advene/gui/plugins/shotvalidation.py:222
+#: ../lib/advene/gui/plugins/shotvalidation.py:225
msgid "Next cut >"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:223
+#: ../lib/advene/gui/plugins/shotvalidation.py:226
#, fuzzy
msgid "Display next cut"
msgstr "Tutte le annotazioni"
-#: ../lib/advene/gui/plugins/shotvalidation.py:249
+#: ../lib/advene/gui/plugins/shotvalidation.py:252
#, fuzzy
msgid "Go to annotation containing current player time."
msgstr "di un tipo di annotazione"
-#: ../lib/advene/gui/plugins/shotvalidation.py:253
+#: ../lib/advene/gui/plugins/shotvalidation.py:256
#: ../lib/advene/gui/edit/frameselector.py:192
#, fuzzy
msgid "Refresh snapshots"
msgstr "Visualizza %s"
-#: ../lib/advene/gui/plugins/shotvalidation.py:254
+#: ../lib/advene/gui/plugins/shotvalidation.py:257
#: ../lib/advene/gui/edit/frameselector.py:193
msgid "Refresh missing snapshots"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:259
+#: ../lib/advene/gui/plugins/shotvalidation.py:262
msgid "Undo last modification"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:265
+#: ../lib/advene/gui/plugins/shotvalidation.py:268
msgid "Merge with previous"
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:266
+#: ../lib/advene/gui/plugins/shotvalidation.py:269
msgid "Merge with previous annotation, i.e. remove this bound."
msgstr ""
-#: ../lib/advene/gui/plugins/shotvalidation.py:271
+#: ../lib/advene/gui/plugins/shotvalidation.py:274
#, fuzzy
msgid "Close view."
msgstr "Scegliere un file"
@@ -4439,7 +4564,7 @@ msgid " Filters"
msgstr "_File"
#: ../lib/advene/gui/plugins/eventaccumulator.py:142
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Reset"
msgstr ""
@@ -4476,56 +4601,56 @@ msgstr "_File"
#: ../lib/advene/gui/plugins/eventaccumulator.py:559
#: ../lib/advene/gui/plugins/eventaccumulator.py:614
-#: ../lib/advene/gui/plugins/tracepreview.py:213
+#: ../lib/advene/gui/plugins/tracepreview.py:214
#, fuzzy, python-format
msgid "of an annotation (%s)"
msgstr "Tutte le annotazioni"
#: ../lib/advene/gui/plugins/eventaccumulator.py:561
#: ../lib/advene/gui/plugins/eventaccumulator.py:616
-#: ../lib/advene/gui/plugins/tracepreview.py:215
+#: ../lib/advene/gui/plugins/tracepreview.py:216
#, fuzzy, python-format
msgid "of a relation (%s)"
msgstr "Relazioni"
#: ../lib/advene/gui/plugins/eventaccumulator.py:563
#: ../lib/advene/gui/plugins/eventaccumulator.py:618
-#: ../lib/advene/gui/plugins/tracepreview.py:217
+#: ../lib/advene/gui/plugins/tracepreview.py:218
#, fuzzy, python-format
msgid "of an annotation type (%s)"
msgstr "di un tipo di annotazione"
#: ../lib/advene/gui/plugins/eventaccumulator.py:565
#: ../lib/advene/gui/plugins/eventaccumulator.py:620
-#: ../lib/advene/gui/plugins/tracepreview.py:219
+#: ../lib/advene/gui/plugins/tracepreview.py:220
#, fuzzy, python-format
msgid "of a relation type (%s)"
msgstr "Tipo di Annotazione"
#: ../lib/advene/gui/plugins/eventaccumulator.py:567
#: ../lib/advene/gui/plugins/eventaccumulator.py:622
-#: ../lib/advene/gui/plugins/tracepreview.py:221
+#: ../lib/advene/gui/plugins/tracepreview.py:222
#, fuzzy, python-format
msgid "of a schema (%s)"
msgstr "Schemi"
#: ../lib/advene/gui/plugins/eventaccumulator.py:569
#: ../lib/advene/gui/plugins/eventaccumulator.py:624
-#: ../lib/advene/gui/plugins/tracepreview.py:223
+#: ../lib/advene/gui/plugins/tracepreview.py:224
#, python-format
msgid "of a view (%s)"
msgstr ""
#: ../lib/advene/gui/plugins/eventaccumulator.py:571
#: ../lib/advene/gui/plugins/eventaccumulator.py:626
-#: ../lib/advene/gui/plugins/tracepreview.py:225
+#: ../lib/advene/gui/plugins/tracepreview.py:226
#, fuzzy, python-format
msgid "of a package (%s)"
msgstr "Pacchetto %s"
#: ../lib/advene/gui/plugins/eventaccumulator.py:573
#: ../lib/advene/gui/plugins/eventaccumulator.py:628
-#: ../lib/advene/gui/plugins/tracepreview.py:227
+#: ../lib/advene/gui/plugins/tracepreview.py:228
#, fuzzy, python-format
msgid "of an unknown item (%s)"
msgstr "Parametro %s"
@@ -4572,7 +4697,7 @@ msgid "Search"
msgstr ""
#: ../lib/advene/gui/plugins/tracetimeline.py:249
-#: ../lib/advene/gui/plugins/tracetimeline.py:1225
+#: ../lib/advene/gui/plugins/tracetimeline.py:1224
#, python-format
msgid "%(name)s (%(index)s)"
msgstr ""
@@ -4629,29 +4754,29 @@ msgstr ""
msgid "Zoom on action"
msgstr "Tutte le annotazioni"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2030
+#: ../lib/advene/gui/plugins/tracetimeline.py:2035
msgid "Item Id"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2033
+#: ../lib/advene/gui/plugins/tracetimeline.py:2038
msgid "Item name or class"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2037
+#: ../lib/advene/gui/plugins/tracetimeline.py:2042
#, fuzzy
msgid "Type or schema"
msgstr "Schema"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2040
+#: ../lib/advene/gui/plugins/tracetimeline.py:2045
#, fuzzy
msgid "Operations"
msgstr "Relazioni"
-#: ../lib/advene/gui/plugins/tracetimeline.py:2082
+#: ../lib/advene/gui/plugins/tracetimeline.py:2087
msgid "Comment"
msgstr ""
-#: ../lib/advene/gui/plugins/tracetimeline.py:2114
+#: ../lib/advene/gui/plugins/tracetimeline.py:2119
#: ../lib/advene/gui/edit/merge.py:191
msgid "Action"
msgstr "Azione"
@@ -4695,19 +4820,24 @@ msgstr ""
msgid "Log Messages"
msgstr ""
-#: ../lib/advene/gui/main.py:196 ../lib/advene/gui/main.py:304
+#: ../lib/advene/gui/main.py:193 ../lib/advene/gui/main.py:304
#, fuzzy
msgid "_Select player"
msgstr "Seleziona un DVD"
-#: ../lib/advene/gui/main.py:198 ../lib/advene/gui/main.py:287
+#: ../lib/advene/gui/main.py:195 ../lib/advene/gui/main.py:287
msgid "_View"
msgstr "_Visualizza"
-#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:306
+#: ../lib/advene/gui/main.py:197 ../lib/advene/gui/main.py:306
msgid "Packages"
msgstr "Pacchetti"
+#: ../lib/advene/gui/main.py:200 ../lib/advene/gui/main.py:246
+#, fuzzy
+msgid "Open recent"
+msgstr "Apri"
+
#: ../lib/advene/gui/main.py:239
msgid "Input from the keyboard (function keys)"
msgstr ""
@@ -4736,139 +4866,144 @@ msgid "Open a package"
msgstr "Apri un file pacchetto"
#: ../lib/advene/gui/main.py:246
+msgid "Show recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:247
#, fuzzy
msgid "_Save package"
msgstr "Nessun pacchetto"
-#: ../lib/advene/gui/main.py:246
+#: ../lib/advene/gui/main.py:247
#, fuzzy
msgid "Save the package"
msgstr "Tutte le visualizzazioni del pacchetto"
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
#, fuzzy
msgid "Save package as..."
msgstr "Pacchetto %s"
-#: ../lib/advene/gui/main.py:247
+#: ../lib/advene/gui/main.py:248
#, fuzzy
msgid "Save the package as..."
msgstr "Salva il pacchetto attuale"
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
#, fuzzy
msgid "Close package"
msgstr "Nessun pacchetto"
-#: ../lib/advene/gui/main.py:248
+#: ../lib/advene/gui/main.py:249
#, fuzzy
msgid "Close the package"
msgstr "Tutte le visualizzazioni del pacchetto"
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
msgid "Save session"
msgstr "Salva sessione"
-#: ../lib/advene/gui/main.py:250
+#: ../lib/advene/gui/main.py:251
msgid "Save the current session (list of opened packages)"
msgstr ""
-#: ../lib/advene/gui/main.py:251
+#: ../lib/advene/gui/main.py:252
msgid "Save workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:252
+#: ../lib/advene/gui/main.py:253
msgid "...as package view"
msgstr ""
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "...as standard workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:253
+#: ../lib/advene/gui/main.py:254
msgid "Use the current layout as standard workspace in the future"
msgstr ""
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
#, fuzzy
msgid "Associate a video _File"
msgstr "Seleziona un file video"
-#: ../lib/advene/gui/main.py:255
+#: ../lib/advene/gui/main.py:256
#, fuzzy
msgid "Associate a video file"
msgstr "Seleziona un file video"
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
#, fuzzy
msgid "Associate a _DVD"
msgstr "Seleziona un capitolo da un DVD"
-#: ../lib/advene/gui/main.py:256
+#: ../lib/advene/gui/main.py:257
#, fuzzy
msgid "Associate a chapter from a DVD"
msgstr "Seleziona un capitolo da un DVD"
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
#, fuzzy
msgid "Associate a _Video stream"
msgstr "Seleziona un video stream"
-#: ../lib/advene/gui/main.py:257
+#: ../lib/advene/gui/main.py:258
msgid "Enter a video stream address"
msgstr "Inserisci un indirizzo di un video stream"
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "_Import File"
msgstr "_Importa file"
-#: ../lib/advene/gui/main.py:259
+#: ../lib/advene/gui/main.py:260
msgid "Import data from an external source"
msgstr "Importa dati da una sorgente esterna"
-#: ../lib/advene/gui/main.py:260
-msgid "Process video"
-msgstr ""
+#: ../lib/advene/gui/main.py:261
+#, fuzzy
+msgid "_Process video"
+msgstr "Modifica %s"
-#: ../lib/advene/gui/main.py:260
+#: ../lib/advene/gui/main.py:261
#, fuzzy
msgid "Import data from video processing algorithms"
msgstr "Importa dati da una sorgente esterna"
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
msgid "Merge package"
msgstr "Unisci pacchetto"
-#: ../lib/advene/gui/main.py:262
+#: ../lib/advene/gui/main.py:263
msgid "Merge elements from another package"
msgstr "Unisci elementi da un altro pacchetto"
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Import _DVD chapters"
msgstr "Importa capitoli _DVD"
-#: ../lib/advene/gui/main.py:263
+#: ../lib/advene/gui/main.py:264
msgid "Create annotations based on DVD chapters"
msgstr "Crea annotazioni basate sui capitoli DVD"
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
#, fuzzy
msgid "_Export..."
msgstr "Importatore"
-#: ../lib/advene/gui/main.py:265
+#: ../lib/advene/gui/main.py:266
msgid "Export data to another format"
msgstr ""
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
msgid "_Website export..."
msgstr ""
-#: ../lib/advene/gui/main.py:266
+#: ../lib/advene/gui/main.py:267
msgid "Export views to a website"
msgstr ""
-#: ../lib/advene/gui/main.py:268
+#: ../lib/advene/gui/main.py:269
#, fuzzy
msgid "_Quit"
msgstr "_Modifica"
@@ -4895,14 +5030,6 @@ msgstr "Elimina"
msgid "Create"
msgstr "Crea"
-#: ../lib/advene/gui/main.py:282
-msgid "Package _Imports"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:282
-msgid "Edit imported element from other packages"
-msgstr "Modifica elementi importati da altri pacchetti"
-
#: ../lib/advene/gui/main.py:284
msgid "P_ackage properties"
msgstr "Proprietà P_acchetto"
@@ -4944,18 +5071,10 @@ msgstr ""
msgid "Open python evaluator window"
msgstr ""
-#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:3919
+#: ../lib/advene/gui/main.py:293 ../lib/advene/gui/main.py:4021
msgid "Webserver log"
msgstr ""
-#: ../lib/advene/gui/main.py:294
-msgid "_MediaInformation"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:294
-msgid "Display information about the media"
-msgstr ""
-
#: ../lib/advene/gui/main.py:296
msgid "_Player"
msgstr ""
@@ -4992,14 +5111,6 @@ msgstr ""
msgid "Restart the player"
msgstr ""
-#: ../lib/advene/gui/main.py:301
-msgid "Capture screenshots"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:301
-msgid "Generate screenshots for the current video"
-msgstr ""
-
#: ../lib/advene/gui/main.py:302
#, fuzzy
msgid "Update annotation screenshots"
@@ -5071,255 +5182,266 @@ msgstr ""
msgid "_About"
msgstr "_Informazioni"
-#: ../lib/advene/gui/main.py:322
+#: ../lib/advene/gui/main.py:336 ../lib/advene/gui/main.py:3757
+#, python-format
+msgid ""
+"Cannot load package %(filename)s:\n"
+"%(error)s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:344
msgid "Open a package file"
msgstr "Apri un file pacchetto"
-#: ../lib/advene/gui/main.py:323
+#: ../lib/advene/gui/main.py:345
msgid "Save the current package"
msgstr "Salva il pacchetto attuale"
-#: ../lib/advene/gui/main.py:324
+#: ../lib/advene/gui/main.py:346
msgid "Save the package with a new name"
msgstr "Salva il pacchetto con un nuovo nome"
-#: ../lib/advene/gui/main.py:325
+#: ../lib/advene/gui/main.py:347
msgid "Select movie file..."
msgstr ""
-#: ../lib/advene/gui/main.py:326
+#: ../lib/advene/gui/main.py:348
msgid "Select DVD"
msgstr "Seleziona DVD"
-#: ../lib/advene/gui/main.py:327
-msgid "Quit"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:331
+#: ../lib/advene/gui/main.py:352
#, fuzzy
msgid "Create a text annotation"
msgstr "Trascrizione delle annotazioni"
-#: ../lib/advene/gui/main.py:332
+#: ../lib/advene/gui/main.py:353
#, fuzzy
msgid "Create a graphical annotation"
msgstr "Trascrizione delle annotazioni"
-#: ../lib/advene/gui/main.py:357
+#: ../lib/advene/gui/main.py:359
+msgid "List recently opened packages"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:389
msgid "Snapshotter activity"
msgstr ""
-#: ../lib/advene/gui/main.py:359
+#: ../lib/advene/gui/main.py:391
#, python-format
msgid "%d queued requests"
msgstr ""
-#: ../lib/advene/gui/main.py:360
+#: ../lib/advene/gui/main.py:392
msgid "Cancel all requests"
msgstr ""
-#: ../lib/advene/gui/main.py:365
+#: ../lib/advene/gui/main.py:397
#, fuzzy
msgid "No snapshotter"
msgstr "Visualizza %s"
-#: ../lib/advene/gui/main.py:387
+#: ../lib/advene/gui/main.py:419
msgid "No snapshotting activity"
msgstr ""
-#: ../lib/advene/gui/main.py:391
+#: ../lib/advene/gui/main.py:423
msgid "Snapshotting"
msgstr ""
-#: ../lib/advene/gui/main.py:408
+#: ../lib/advene/gui/main.py:440
#, fuzzy
msgid "Display application log messages"
msgstr "Visualizza %s"
-#: ../lib/advene/gui/main.py:473
+#: ../lib/advene/gui/main.py:482
msgid "Quicksearch lists"
msgstr ""
-#: ../lib/advene/gui/main.py:479
-msgid "Please specify the lists of elements to be searched."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:498
-#, python-format
-msgid ""
-"Searching on %s.\n"
-"Left click to launch the search, right-click to set the quicksearch options"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:499
-#, python-format
-msgid "String to search in %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:523
-msgid "Open this view..."
-msgstr "Apri questa vista..."
-
-#: ../lib/advene/gui/main.py:540
-#, fuzzy
-msgid "All available views"
-msgstr "Nessun tipo disponibile"
-
-#: ../lib/advene/gui/main.py:559
-msgid "Transcription of annotations"
-msgstr "Trascrizione delle annotazioni"
-
-#: ../lib/advene/gui/main.py:562
-msgid "Note-taking editor"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:563
-msgid "Active bookmarks"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:564
-#, fuzzy
-msgid "Schema editor"
-msgstr "Schema"
-
-#: ../lib/advene/gui/main.py:568
-msgid "TALES explorer"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:569
-msgid "Dynamic montage"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:573
-msgid "Open a comment view in the web browser"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:574
-#, fuzzy
-msgid "Create or open a comment view"
-msgstr "Vista statica predefinita"
-
-#: ../lib/advene/gui/main.py:577
-msgid ""
-"Edit window placeholder (annotation and relation edit windows will be put "
-"here)"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:578
-#, fuzzy
-msgid "Display edition history"
-msgstr "Visualizza cronologia di navigazione"
-
-#: ../lib/advene/gui/main.py:579
-msgid "Visualise the activity trace preview"
+#: ../lib/advene/gui/main.py:488
+msgid "Please specify the lists of elements to be searched."
msgstr ""
-#: ../lib/advene/gui/main.py:580
-msgid "Visualise the activity trace as a timeline"
+#: ../lib/advene/gui/main.py:507
+#, python-format
+msgid ""
+"Searching on %s.\n"
+"Left click to launch the search, right-click to set the quicksearch options"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:508
+#, python-format
+msgid "String to search in %s"
msgstr ""
-#: ../lib/advene/gui/main.py:625 ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:521 ../lib/advene/gui/main.py:525
msgid "Tracing : "
msgstr ""
-#: ../lib/advene/gui/main.py:625
+#: ../lib/advene/gui/main.py:521
msgid "off"
msgstr ""
-#: ../lib/advene/gui/main.py:629
+#: ../lib/advene/gui/main.py:525
#, fuzzy
msgid "on"
msgstr "Nessuno"
-#: ../lib/advene/gui/main.py:649
+#: ../lib/advene/gui/main.py:545
msgid "Launch search"
msgstr ""
-#: ../lib/advene/gui/main.py:654
+#: ../lib/advene/gui/main.py:550
msgid "Ignore case"
msgstr ""
-#: ../lib/advene/gui/main.py:659
+#: ../lib/advene/gui/main.py:555
msgid "Searched elements"
msgstr "Elementi cercati"
-#: ../lib/advene/gui/main.py:719
+#: ../lib/advene/gui/main.py:625
msgid "Playing"
msgstr ""
-#: ../lib/advene/gui/main.py:720
+#: ../lib/advene/gui/main.py:626
msgid "Pause"
msgstr ""
-#: ../lib/advene/gui/main.py:721
+#: ../lib/advene/gui/main.py:627
msgid "Init"
msgstr ""
-#: ../lib/advene/gui/main.py:723
+#: ../lib/advene/gui/main.py:629
msgid "Undefined"
msgstr ""
-#: ../lib/advene/gui/main.py:995
+#: ../lib/advene/gui/main.py:901
msgid "Enter the new time value"
msgstr ""
-#: ../lib/advene/gui/main.py:1019
+#: ../lib/advene/gui/main.py:925
#, python-format
msgid "Replace content in %d elements"
msgstr ""
-#: ../lib/advene/gui/main.py:1032
+#: ../lib/advene/gui/main.py:938
msgid "Find word"
msgstr ""
-#: ../lib/advene/gui/main.py:1039
+#: ../lib/advene/gui/main.py:945
msgid "Replace by"
msgstr ""
-#: ../lib/advene/gui/main.py:1067
+#: ../lib/advene/gui/main.py:973
#, python-format
msgid "%(search)s has been replaced by %(replace)s in %(count)d element(s)."
msgstr ""
-#: ../lib/advene/gui/main.py:1076
+#: ../lib/advene/gui/main.py:982
msgid "The video extracting feature is not available."
msgstr ""
-#: ../lib/advene/gui/main.py:1079
+#: ../lib/advene/gui/main.py:985
#, fuzzy
msgid "Video export"
msgstr "Seleziona un DVD"
-#: ../lib/advene/gui/main.py:1081
+#: ../lib/advene/gui/main.py:987
#, python-format
msgid "Exporting video montage/fragment to %%(filename)s"
msgstr ""
-#: ../lib/advene/gui/main.py:1083
+#: ../lib/advene/gui/main.py:989
msgid "Please choose a destination filename"
msgstr ""
-#: ../lib/advene/gui/main.py:1161
+#: ../lib/advene/gui/main.py:1067
msgid ""
"No media association is defined in the package. Please use the 'File/"
"Associate a video file' menu item to associate a media file."
msgstr ""
-#: ../lib/advene/gui/main.py:1163
+#: ../lib/advene/gui/main.py:1069
#, python-format
msgid ""
"The associated media %s could not be found. Please use the 'File/Associate a "
"video file' menu item to associate a media file."
msgstr ""
-#: ../lib/advene/gui/main.py:1165
+#: ../lib/advene/gui/main.py:1071
#, python-format
msgid ""
"You are now working with the following video:\n"
"%s"
msgstr ""
-#: ../lib/advene/gui/main.py:1306
+#: ../lib/advene/gui/main.py:1188
+msgid "Open this view..."
+msgstr "Apri questa vista..."
+
+#: ../lib/advene/gui/main.py:1205
+#, fuzzy
+msgid "_All available views"
+msgstr "Nessun tipo disponibile"
+
+#: ../lib/advene/gui/main.py:1224
+msgid "Transcription of annotations"
+msgstr "Trascrizione delle annotazioni"
+
+#: ../lib/advene/gui/main.py:1227
+msgid "Note-taking editor"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1228
+msgid "Active bookmarks"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1229
+#, fuzzy
+msgid "Schema editor"
+msgstr "Schema"
+
+#: ../lib/advene/gui/main.py:1233
+msgid "TALES explorer"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1234
+msgid "Dynamic montage"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1238
+msgid "Open a comment view in the web browser"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1239
+#, fuzzy
+msgid "Create or open a comment view"
+msgstr "Vista statica predefinita"
+
+#: ../lib/advene/gui/main.py:1242
+msgid ""
+"Edit window placeholder (annotation and relation edit windows will be put "
+"here)"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1243
+#, fuzzy
+msgid "Display edition history"
+msgstr "Visualizza cronologia di navigazione"
+
+#: ../lib/advene/gui/main.py:1244
+msgid "Visualise the activity trace preview"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1245
+msgid "Visualise the activity trace as a timeline"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1274
+msgid "The webserver could not be started. Static views cannot be accessed."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1348
#, python-format
msgid ""
"<span background=\"#ff8888\" size=\"large\"><b>Advene %(version)s has been "
@@ -5328,438 +5450,468 @@ msgid ""
"cnrs.fr/advene/</span>"
msgstr ""
-#: ../lib/advene/gui/main.py:1311
+#: ../lib/advene/gui/main.py:1353
msgid "Go to the website"
msgstr ""
-#: ../lib/advene/gui/main.py:1317
+#: ../lib/advene/gui/main.py:1359
msgid "Advene release"
msgstr ""
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
#, python-format
msgid "You are using a up-to-date version of Advene (%(current)s)."
msgstr ""
-#: ../lib/advene/gui/main.py:1323
+#: ../lib/advene/gui/main.py:1365
msgid "Advene is up-to-date"
msgstr ""
-#: ../lib/advene/gui/main.py:1337
+#: ../lib/advene/gui/main.py:1379
msgid "Choose a color"
msgstr ""
-#: ../lib/advene/gui/main.py:1369
+#: ../lib/advene/gui/main.py:1411
msgid "Select an annotation to loop on it"
msgstr ""
-#: ../lib/advene/gui/main.py:1371
+#: ../lib/advene/gui/main.py:1413
#, python-format
msgid "Looping on %s"
msgstr ""
-#: ../lib/advene/gui/main.py:1430 ../lib/advene/gui/main.py:2265
+#: ../lib/advene/gui/main.py:1472 ../lib/advene/gui/main.py:2363
msgid "No active dynamic view"
msgstr ""
-#: ../lib/advene/gui/main.py:1441 ../lib/advene/gui/main.py:1470
+#: ../lib/advene/gui/main.py:1483
msgid "Create a new dynamic view."
msgstr ""
-#: ../lib/advene/gui/main.py:1471
+#: ../lib/advene/gui/main.py:1502
+msgid "Edit the current dynamic view."
+msgstr ""
+
+#: ../lib/advene/gui/main.py:1514
#, fuzzy
msgid "No dynamic view"
msgstr "Vista dinamica"
-#: ../lib/advene/gui/main.py:1473
-msgid "Edit the current dynamic view."
-msgstr ""
-
-#: ../lib/advene/gui/main.py:1502
+#: ../lib/advene/gui/main.py:1546
msgid "Playing rate"
msgstr ""
-#: ../lib/advene/gui/main.py:1648
+#: ../lib/advene/gui/main.py:1694
msgid "History"
msgstr ""
-#: ../lib/advene/gui/main.py:1655
+#: ../lib/advene/gui/main.py:1701
msgid "Popups"
msgstr ""
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid ""
"You can drag and drop view icons (timeline, treeview, transcription...) in "
-"this notebook to embed various views."
+"notebooks to embed various views."
msgstr ""
-#: ../lib/advene/gui/main.py:1659
+#: ../lib/advene/gui/main.py:1705
msgid "Information"
msgstr ""
-#: ../lib/advene/gui/main.py:1954
+#: ../lib/advene/gui/main.py:2000
msgid "Cannot create annotation. There is no schema to put it in."
msgstr ""
-#: ../lib/advene/gui/main.py:1963
+#: ../lib/advene/gui/main.py:2009
#, fuzzy
msgid "Default annotation type"
msgstr "di un tipo di annotazione"
-#: ../lib/advene/gui/main.py:1975
+#: ../lib/advene/gui/main.py:2021
#, fuzzy
msgid "Annotation created"
msgstr "Tipo di Annotazione"
-#: ../lib/advene/gui/main.py:2007
+#: ../lib/advene/gui/main.py:2053
msgid "Play/Pause [Control-Tab / Control-Space]"
msgstr ""
-#: ../lib/advene/gui/main.py:2008
+#: ../lib/advene/gui/main.py:2054
#, python-format
msgid "Rewind (%.02f s) [Control-Left]"
msgstr ""
-#: ../lib/advene/gui/main.py:2009
+#: ../lib/advene/gui/main.py:2055
#, python-format
msgid "Forward (%.02f s) [Control-Right]"
msgstr ""
-#: ../lib/advene/gui/main.py:2010
+#: ../lib/advene/gui/main.py:2056
msgid "Previous frame [Control-Down]"
msgstr ""
-#: ../lib/advene/gui/main.py:2011
+#: ../lib/advene/gui/main.py:2057
msgid "Next frame [Control-Up]"
msgstr ""
-#: ../lib/advene/gui/main.py:2012
+#: ../lib/advene/gui/main.py:2058
msgid "Fullscreen"
msgstr ""
-#: ../lib/advene/gui/main.py:2180
+#: ../lib/advene/gui/main.py:2210
+#, python-format
+msgid "Screenshot saved to %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2212
+#, python-format
+msgid ""
+"Screenshot saved in\n"
+" %s"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2214
+#, fuzzy, python-format
+msgid ""
+"Could not save screenshot:\n"
+" %s"
+msgstr "Tutte le annotazioni"
+
+#: ../lib/advene/gui/main.py:2222
+#, fuzzy
+msgid "Save screenshot to..."
+msgstr "Salva contenuto in..."
+
+#: ../lib/advene/gui/main.py:2240
+msgid "Could not take snapshot with enough precision"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:2278
#, fuzzy
msgid "Export package data"
msgstr "Nessun pacchetto"
-#: ../lib/advene/gui/main.py:2182
+#: ../lib/advene/gui/main.py:2280
#, fuzzy, python-format
msgid "Export annotation type %s"
msgstr "di un tipo di annotazione"
-#: ../lib/advene/gui/main.py:2184
+#: ../lib/advene/gui/main.py:2282
#, fuzzy, python-format
msgid "Export element %s"
msgstr "Crea elemento"
-#: ../lib/advene/gui/main.py:2210
+#: ../lib/advene/gui/main.py:2308
msgid "Export format"
msgstr ""
-#: ../lib/advene/gui/main.py:2247
+#: ../lib/advene/gui/main.py:2345
msgid " (modified)"
msgstr ""
-#: ../lib/advene/gui/main.py:2250
+#: ../lib/advene/gui/main.py:2348
#, python-format
msgid "Activate %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2288 ../lib/advene/gui/main.py:3649
-#, python-format
-msgid ""
-"Cannot load package %(filename)s:\n"
-"%(error)s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2297
-#, python-format
-msgid "Open %s"
-msgstr ""
-
-#: ../lib/advene/gui/main.py:2441
+#: ../lib/advene/gui/main.py:2519
msgid "Saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:2493
+#: ../lib/advene/gui/main.py:2571
msgid "Restoring workspace..."
msgstr ""
-#: ../lib/advene/gui/main.py:2499
+#: ../lib/advene/gui/main.py:2577
#, python-format
msgid "Do you wish to restore the %s workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:2504
+#: ../lib/advene/gui/main.py:2582
msgid "Clear the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:2525
+#: ../lib/advene/gui/main.py:2603
#, python-format
msgid "View %s is not an adhoc view"
msgstr ""
-#: ../lib/advene/gui/main.py:2536
+#: ../lib/advene/gui/main.py:2614
#, python-format
msgid "Cannot identify the adhoc view %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2550
+#: ../lib/advene/gui/main.py:2628
msgid "Choose the annotation type to display as transcription."
msgstr ""
-#: ../lib/advene/gui/main.py:2585
+#: ../lib/advene/gui/main.py:2663
#, python-format
msgid ""
"Error: unable to find an edit popup for %(element)s:\n"
"%(error)s"
msgstr ""
-#: ../lib/advene/gui/main.py:2592
+#: ../lib/advene/gui/main.py:2671
#, fuzzy, python-format
msgid "Editing %s"
msgstr "Modifica %s"
-#: ../lib/advene/gui/main.py:2604
+#: ../lib/advene/gui/main.py:2683
#, python-format
msgid "Comment view (%s)"
msgstr ""
-#: ../lib/advene/gui/main.py:2671
+#: ../lib/advene/gui/main.py:2750
#, python-format
msgid "Package %(uri)s saved: %(annotations)s and %(relations)s."
msgstr ""
-#: ../lib/advene/gui/main.py:2682
+#: ../lib/advene/gui/main.py:2761
#, python-format
msgid "Activating package %s"
msgstr ""
-#: ../lib/advene/gui/main.py:2710
+#: ../lib/advene/gui/main.py:2789
#, python-format
msgid "Package %(uri)s loaded: %(annotations)s and %(relations)s."
msgstr ""
-#: ../lib/advene/gui/main.py:2747
+#: ../lib/advene/gui/main.py:2822
msgid "Do you want to restore the saved workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:2754
+#: ../lib/advene/gui/main.py:2829
msgid "Advene"
msgstr "Advene"
-#: ../lib/advene/gui/main.py:2959
+#: ../lib/advene/gui/main.py:3034
#, python-format
msgid "Got exception %s. Trying to continue."
msgstr ""
-#: ../lib/advene/gui/main.py:2983 ../lib/advene/gui/main.py:3004
-#: ../lib/advene/gui/main.py:3930
+#: ../lib/advene/gui/main.py:3058 ../lib/advene/gui/main.py:3079
+#: ../lib/advene/gui/main.py:4032
#, fuzzy
msgid "Unknown"
msgstr "Tutte le annotazioni"
-#: ../lib/advene/gui/main.py:3068
+#: ../lib/advene/gui/main.py:3149
#, python-format
msgid ""
"The package(s) %s are modified.\n"
"Save them now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3118
+#: ../lib/advene/gui/main.py:3199
msgid "Choose an annotation type."
msgstr ""
-#: ../lib/advene/gui/main.py:3162
+#: ../lib/advene/gui/main.py:3243
msgid "No annotation type is defined."
msgstr ""
-#: ../lib/advene/gui/main.py:3171
+#: ../lib/advene/gui/main.py:3252
msgid "Creating a new type."
msgstr ""
-#: ../lib/advene/gui/main.py:3175
+#: ../lib/advene/gui/main.py:3256
msgid "Title of the new type"
msgstr ""
-#: ../lib/advene/gui/main.py:3176
+#: ../lib/advene/gui/main.py:3257
msgid ""
"Id of the new type. It is generated from the title, but you may change it if "
"necessary."
msgstr ""
-#: ../lib/advene/gui/main.py:3180
+#: ../lib/advene/gui/main.py:3261
msgid "Specify the content-type for the annotation type"
msgstr ""
-#: ../lib/advene/gui/main.py:3182
+#: ../lib/advene/gui/main.py:3263
msgid "Content type"
msgstr ""
-#: ../lib/advene/gui/main.py:3189 ../lib/advene/gui/main.py:3298
+#: ../lib/advene/gui/main.py:3270 ../lib/advene/gui/main.py:3379
msgid "Create a new schema"
msgstr ""
-#: ../lib/advene/gui/main.py:3202
+#: ../lib/advene/gui/main.py:3283
msgid "Choose an existing schema for the new type, or create a new one"
msgstr ""
-#: ../lib/advene/gui/main.py:3205 ../lib/advene/gui/main.py:3313
+#: ../lib/advene/gui/main.py:3286 ../lib/advene/gui/main.py:3394
msgid "Specify the schema title"
msgstr ""
-#: ../lib/advene/gui/main.py:3209
+#: ../lib/advene/gui/main.py:3290
msgid "Title of the new schema"
msgstr ""
-#: ../lib/advene/gui/main.py:3210
+#: ../lib/advene/gui/main.py:3291
msgid ""
"Id of the new schema. It is generated from the title, but you may change it "
"if necessary."
msgstr ""
-#: ../lib/advene/gui/main.py:3233
+#: ../lib/advene/gui/main.py:3314
msgid ""
"You specified a annotation-type identifier that already exists. Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3251
+#: ../lib/advene/gui/main.py:3332
msgid "You specified a existing schema identifier. Using the existing schema."
msgstr ""
-#: ../lib/advene/gui/main.py:3253
+#: ../lib/advene/gui/main.py:3334
msgid ""
"You specified an existing identifier that does not reference a schema. "
"Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3280
+#: ../lib/advene/gui/main.py:3361
msgid "Choose a schema."
msgstr ""
-#: ../lib/advene/gui/main.py:3340
+#: ../lib/advene/gui/main.py:3421
msgid "You specified an existing identifier. Aborting."
msgstr ""
-#: ../lib/advene/gui/main.py:3360
+#: ../lib/advene/gui/main.py:3441
#, python-format
msgid "Package %s modified"
msgstr ""
-#: ../lib/advene/gui/main.py:3361
+#: ../lib/advene/gui/main.py:3442
#, python-format
msgid ""
"The package %s has been modified but not saved.\n"
"Save it now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3371
+#: ../lib/advene/gui/main.py:3452
#, python-format
msgid "%s snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:3372
+#: ../lib/advene/gui/main.py:3453
#, python-format
msgid "Do you want to save the snapshots for media %s?"
msgstr ""
-#: ../lib/advene/gui/main.py:3379 ../lib/advene/gui/main.py:3388
-#: ../lib/advene/gui/main.py:4345
+#: ../lib/advene/gui/main.py:3460 ../lib/advene/gui/main.py:3469
+#: ../lib/advene/gui/main.py:4447
#, fuzzy, python-format
msgid "Cannot save imagecache for %(media)s: %(e)s"
msgstr "Impossibile salvare il file: %s"
-#: ../lib/advene/gui/main.py:3402
+#: ../lib/advene/gui/main.py:3483
msgid "first frame"
msgstr ""
-#: ../lib/advene/gui/main.py:3403
+#: ../lib/advene/gui/main.py:3484
msgid "last frame"
msgstr ""
-#: ../lib/advene/gui/main.py:3411
+#: ../lib/advene/gui/main.py:3492
#, fuzzy, python-format
msgid "Click on %(bound)s of %(annotation)s"
msgstr "Trascrizione delle annotazioni"
-#: ../lib/advene/gui/main.py:3414
+#: ../lib/advene/gui/main.py:3495
#, fuzzy, python-format
msgid "Update %(bound)s of %(annotation)s"
msgstr "Trascrizione delle annotazioni"
-#: ../lib/advene/gui/main.py:3497
+#: ../lib/advene/gui/main.py:3514
+msgid "Click on the frame corresponding to the timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3516
+msgid "Set new timestamp value"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3523
+msgid ""
+"<b>Annotation statistics</b>\n"
+"\n"
+msgstr ""
+
+#: ../lib/advene/gui/main.py:3602
#, fuzzy
msgid "Text annotation"
msgstr "Tutte le annotazioni"
-#: ../lib/advene/gui/main.py:3505 ../lib/advene/gui/main.py:3530
+#: ../lib/advene/gui/main.py:3610 ../lib/advene/gui/main.py:3635
#, fuzzy
msgid "Cannot find an appropriate annotation type"
msgstr "di un tipo di annotazione"
-#: ../lib/advene/gui/main.py:3523
+#: ../lib/advene/gui/main.py:3628
#, fuzzy
msgid "Graphical annotation"
msgstr "Trascrizione delle annotazioni"
-#: ../lib/advene/gui/main.py:3579
+#: ../lib/advene/gui/main.py:3684
msgid ""
"An unsaved template package exists\n"
"Save it first."
msgstr ""
-#: ../lib/advene/gui/main.py:3587
+#: ../lib/advene/gui/main.py:3693
msgid "Package modified"
msgstr ""
-#: ../lib/advene/gui/main.py:3588
+#: ../lib/advene/gui/main.py:3694
msgid ""
"The package that you want to close has been modified but not saved.\n"
"Save it now?"
msgstr ""
-#: ../lib/advene/gui/main.py:3619
+#: ../lib/advene/gui/main.py:3725
msgid "Load a package"
msgstr ""
-#: ../lib/advene/gui/main.py:3628
+#: ../lib/advene/gui/main.py:3734
msgid ""
"A video file was selected. Pretend that the user selected 'Select a video "
"file'..."
msgstr ""
-#: ../lib/advene/gui/main.py:3633
+#: ../lib/advene/gui/main.py:3739
#, python-format
msgid ""
"The file %s does not look like a valid Advene package. It should have a .azp "
"or .xml extension. Try to open anyway?"
msgstr ""
-#: ../lib/advene/gui/main.py:3642
+#: ../lib/advene/gui/main.py:3748
msgid ""
"You are trying to load a session file, but there are unsaved packages. "
"Proceed anyway?"
msgstr ""
-#: ../lib/advene/gui/main.py:3668 ../lib/advene/gui/main.py:3720
+#: ../lib/advene/gui/main.py:3776 ../lib/advene/gui/main.py:3828
msgid "Do you want to save the current workspace ?"
msgstr ""
-#: ../lib/advene/gui/main.py:3679 ../lib/advene/gui/main.py:3731
+#: ../lib/advene/gui/main.py:3787 ../lib/advene/gui/main.py:3839
#, python-format
msgid "Could not save the package: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3692
+#: ../lib/advene/gui/main.py:3800
#, python-format
msgid "Save the package %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3705
+#: ../lib/advene/gui/main.py:3813
msgid "Invalid file extension"
msgstr ""
-#: ../lib/advene/gui/main.py:3706
+#: ../lib/advene/gui/main.py:3814
#, python-format
msgid ""
"Your package contains resources,\n"
@@ -5767,91 +5919,91 @@ msgid ""
"Should I put the correct extension?"
msgstr ""
-#: ../lib/advene/gui/main.py:3710
+#: ../lib/advene/gui/main.py:3818
msgid "OK, the resources will be lost."
msgstr ""
-#: ../lib/advene/gui/main.py:3712
+#: ../lib/advene/gui/main.py:3820
msgid "Aborting package saving"
msgstr ""
-#: ../lib/advene/gui/main.py:3742
+#: ../lib/advene/gui/main.py:3850
msgid "Save the session in..."
msgstr ""
-#: ../lib/advene/gui/main.py:3753
+#: ../lib/advene/gui/main.py:3861
#, python-format
msgid "Session saved in %s"
msgstr ""
-#: ../lib/advene/gui/main.py:3762
+#: ../lib/advene/gui/main.py:3870
msgid "Do you confirm the creation of annotations matching the DVD chapters?"
msgstr ""
-#: ../lib/advene/gui/main.py:3768
+#: ../lib/advene/gui/main.py:3876
msgid "Cannot import DVD chapters. Did you install the lsdvd software?"
msgstr ""
-#: ../lib/advene/gui/main.py:3776
+#: ../lib/advene/gui/main.py:3884
msgid "The associated media is not a DVD."
msgstr ""
-#: ../lib/advene/gui/main.py:3787
+#: ../lib/advene/gui/main.py:3895
#, fuzzy, python-format
msgid "Processing %s video"
msgstr "Modifica %s"
-#: ../lib/advene/gui/main.py:3789
+#: ../lib/advene/gui/main.py:3898
#, fuzzy
msgid "No associated video file"
msgstr "Seleziona un file video"
-#: ../lib/advene/gui/main.py:3823
+#: ../lib/advene/gui/main.py:3925
msgid "Standard RuleSet"
msgstr ""
-#: ../lib/advene/gui/main.py:3939
+#: ../lib/advene/gui/main.py:4041
#, python-format
msgid ""
"Player not active - cached duration : %(duration)s (%(durationms)d ms)"
msgstr ""
-#: ../lib/advene/gui/main.py:3951
+#: ../lib/advene/gui/main.py:4053
msgid ""
"GNU General Public License\n"
"See http://www.gnu.org/copyleft/gpl.html for more details"
msgstr ""
-#: ../lib/advene/gui/main.py:3953
+#: ../lib/advene/gui/main.py:4055
msgid "Visit the Advene web site for examples and documentation."
msgstr ""
-#: ../lib/advene/gui/main.py:3986 ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4088 ../lib/advene/gui/main.py:4176
msgid "Select a movie file"
msgstr ""
-#: ../lib/advene/gui/main.py:3998
+#: ../lib/advene/gui/main.py:4100
msgid "Title/Chapter selection"
msgstr ""
-#: ../lib/advene/gui/main.py:4040
+#: ../lib/advene/gui/main.py:4142
msgid "Select a video stream"
msgstr "Seleziona un video stream"
-#: ../lib/advene/gui/main.py:4041
+#: ../lib/advene/gui/main.py:4143
msgid "Enter the address of a video stream"
msgstr ""
-#: ../lib/advene/gui/main.py:4045
+#: ../lib/advene/gui/main.py:4147
#, python-format
msgid "Successfully extracted the video stream address (%s) from the url.\n"
msgstr ""
-#: ../lib/advene/gui/main.py:4070
+#: ../lib/advene/gui/main.py:4172
msgid "Package properties"
msgstr ""
-#: ../lib/advene/gui/main.py:4071 ../lib/advene/gui/edit/elements.py:510
+#: ../lib/advene/gui/main.py:4173 ../lib/advene/gui/edit/elements.py:510
#: ../lib/advene/gui/edit/elements.py:559
#: ../lib/advene/gui/edit/elements.py:644
#: ../lib/advene/gui/edit/elements.py:706
@@ -5863,11 +6015,11 @@ msgstr ""
msgid "Author"
msgstr "Autore"
-#: ../lib/advene/gui/main.py:4071
+#: ../lib/advene/gui/main.py:4173
msgid "Author name"
msgstr ""
-#: ../lib/advene/gui/main.py:4072 ../lib/advene/gui/edit/elements.py:511
+#: ../lib/advene/gui/main.py:4174 ../lib/advene/gui/edit/elements.py:511
#: ../lib/advene/gui/edit/elements.py:560
#: ../lib/advene/gui/edit/elements.py:645
#: ../lib/advene/gui/edit/elements.py:707
@@ -5879,782 +6031,784 @@ msgstr ""
msgid "Date"
msgstr "Data"
-#: ../lib/advene/gui/main.py:4072
+#: ../lib/advene/gui/main.py:4174
msgid "Package creation date"
msgstr ""
-#: ../lib/advene/gui/main.py:4073
+#: ../lib/advene/gui/main.py:4175
msgid "Package title"
msgstr ""
-#: ../lib/advene/gui/main.py:4074
+#: ../lib/advene/gui/main.py:4176
msgid "Associated media"
msgstr ""
-#: ../lib/advene/gui/main.py:4075
+#: ../lib/advene/gui/main.py:4177
msgid "Media duration in ms"
msgstr ""
-#: ../lib/advene/gui/main.py:4134
+#: ../lib/advene/gui/main.py:4236
msgid "Paths"
msgstr ""
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Data"
msgstr ""
-#: ../lib/advene/gui/main.py:4136
+#: ../lib/advene/gui/main.py:4238
msgid "Standard directory for data files"
msgstr ""
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
msgid "Movie path"
msgstr ""
-#: ../lib/advene/gui/main.py:4137
+#: ../lib/advene/gui/main.py:4239
#, python-format
msgid ""
"List of directories (separated by %s) to search for movie files (_ means "
"package directory)"
msgstr ""
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Imagecache"
msgstr ""
-#: ../lib/advene/gui/main.py:4138
+#: ../lib/advene/gui/main.py:4240
msgid "Directory for storing the snapshot cache"
msgstr ""
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Player"
msgstr ""
-#: ../lib/advene/gui/main.py:4139
+#: ../lib/advene/gui/main.py:4241
msgid "Directory of the video player"
msgstr ""
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
msgid "Shotdetect"
msgstr ""
-#: ../lib/advene/gui/main.py:4140
+#: ../lib/advene/gui/main.py:4242
#, fuzzy
msgid "Shotdetect application"
msgstr "Seleziona un'azione"
-#: ../lib/advene/gui/main.py:4142
+#: ../lib/advene/gui/main.py:4244
msgid "GUI"
msgstr ""
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid "Interface language (after restart)"
msgstr ""
-#: ../lib/advene/gui/main.py:4143
+#: ../lib/advene/gui/main.py:4245
msgid ""
"Language used for the interface (necessitates to restart the application)"
msgstr ""
-#: ../lib/advene/gui/main.py:4144 ../lib/advene/gui/util/initialconfig.py:88
+#: ../lib/advene/gui/main.py:4246 ../lib/advene/gui/util/initialconfig.py:88
msgid "System default"
msgstr ""
-#: ../lib/advene/gui/main.py:4149
+#: ../lib/advene/gui/main.py:4251
msgid "Record activity trace"
msgstr ""
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Expert mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4150
+#: ../lib/advene/gui/main.py:4252
msgid "Offer advanced possibilities"
msgstr ""
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Prefer WYSIWYG"
msgstr ""
-#: ../lib/advene/gui/main.py:4151
+#: ../lib/advene/gui/main.py:4253
msgid "Use WYSIWYG editors when possible (HTML, SVG)"
msgstr ""
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid "Player control in edit popups"
msgstr ""
-#: ../lib/advene/gui/main.py:4152
+#: ../lib/advene/gui/main.py:4254
msgid ""
"Enable generic player controls in edit windows. This may be undesirable "
"since it overloads some standard text-edition behaviours (esp. control-left/"
"right)."
msgstr ""
-#: ../lib/advene/gui/main.py:4154
+#: ../lib/advene/gui/main.py:4256
msgid "Open popups"
msgstr ""
-#: ../lib/advene/gui/main.py:4155
+#: ../lib/advene/gui/main.py:4257
msgid "Where should we open adhoc views?"
msgstr ""
-#: ../lib/advene/gui/main.py:4156
+#: ../lib/advene/gui/main.py:4258
msgid "as a popup window"
msgstr ""
-#: ../lib/advene/gui/main.py:4157
+#: ../lib/advene/gui/main.py:4259
msgid "embedded east of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4158
+#: ../lib/advene/gui/main.py:4260
msgid "embedded west of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4159
+#: ../lib/advene/gui/main.py:4261
msgid "embedded south of the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4160
+#: ../lib/advene/gui/main.py:4262
msgid "embedded at the right of the window"
msgstr ""
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History size"
msgstr ""
-#: ../lib/advene/gui/main.py:4163
+#: ../lib/advene/gui/main.py:4265
msgid "History filelist size limit"
msgstr ""
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember window size"
msgstr ""
-#: ../lib/advene/gui/main.py:4165
+#: ../lib/advene/gui/main.py:4267
msgid "Remember the size of opened windows"
msgstr ""
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Bookmark snapshot width"
msgstr ""
-#: ../lib/advene/gui/main.py:4166
+#: ../lib/advene/gui/main.py:4268
msgid "Width of the snapshots representing bookmarks"
msgstr ""
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Bookmark snapshot precision"
msgstr ""
-#: ../lib/advene/gui/main.py:4167
+#: ../lib/advene/gui/main.py:4269
msgid "Precision (in ms) of the displayed bookmark snapshots."
msgstr ""
-#: ../lib/advene/gui/main.py:4169
+#: ../lib/advene/gui/main.py:4271
msgid "General"
msgstr ""
-#: ../lib/advene/gui/main.py:4170
+#: ../lib/advene/gui/main.py:4272
msgid "Weekly update check"
msgstr ""
-#: ../lib/advene/gui/main.py:4170 ../lib/advene/gui/util/initialconfig.py:90
+#: ../lib/advene/gui/main.py:4272 ../lib/advene/gui/util/initialconfig.py:90
msgid "Weekly check for updates on the Advene website"
msgstr ""
-#: ../lib/advene/gui/main.py:4171
+#: ../lib/advene/gui/main.py:4273
msgid "On exit,"
msgstr ""
-#: ../lib/advene/gui/main.py:4172
+#: ../lib/advene/gui/main.py:4274
msgid "How to handle screenshots on exit"
msgstr ""
-#: ../lib/advene/gui/main.py:4173
+#: ../lib/advene/gui/main.py:4275
msgid "never save screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4174
+#: ../lib/advene/gui/main.py:4276
msgid "always save screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4175
+#: ../lib/advene/gui/main.py:4277
msgid "ask before saving screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4177
+#: ../lib/advene/gui/main.py:4279
msgid "Auto-save"
msgstr ""
-#: ../lib/advene/gui/main.py:4178
+#: ../lib/advene/gui/main.py:4280
msgid "Data auto-save functionality"
msgstr ""
-#: ../lib/advene/gui/main.py:4179
+#: ../lib/advene/gui/main.py:4281
msgid "is desactivated"
msgstr ""
-#: ../lib/advene/gui/main.py:4180
+#: ../lib/advene/gui/main.py:4282
msgid "is done automatically"
msgstr ""
-#: ../lib/advene/gui/main.py:4181
+#: ../lib/advene/gui/main.py:4283
msgid "is done after confirmation"
msgstr ""
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Auto-save interval (in s)"
msgstr ""
-#: ../lib/advene/gui/main.py:4183
+#: ../lib/advene/gui/main.py:4285
msgid "Interval (in seconds) between package auto-saves"
msgstr ""
-#: ../lib/advene/gui/main.py:4185
+#: ../lib/advene/gui/main.py:4287
#, fuzzy
msgid "Workspace"
msgstr "Vista statica predefinita"
-#: ../lib/advene/gui/main.py:4187
+#: ../lib/advene/gui/main.py:4289
msgid "On package saving,"
msgstr ""
-#: ../lib/advene/gui/main.py:4188
+#: ../lib/advene/gui/main.py:4290
msgid "Do you wish to save the default workspace with the package?"
msgstr ""
-#: ../lib/advene/gui/main.py:4189
+#: ../lib/advene/gui/main.py:4291
msgid "never save the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4190
+#: ../lib/advene/gui/main.py:4292
msgid "always save the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4191
+#: ../lib/advene/gui/main.py:4293
msgid "ask before saving the current workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4194
+#: ../lib/advene/gui/main.py:4296
#, fuzzy
msgid "On package load,"
msgstr "Apri un file pacchetto"
-#: ../lib/advene/gui/main.py:4195
+#: ../lib/advene/gui/main.py:4297
msgid "Do you wish to load the workspace saved with the package?"
msgstr ""
-#: ../lib/advene/gui/main.py:4196
+#: ../lib/advene/gui/main.py:4298
msgid "never load the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4197
+#: ../lib/advene/gui/main.py:4299
msgid "always load the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4198
+#: ../lib/advene/gui/main.py:4300
msgid "ask before loading the saved workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4201
+#: ../lib/advene/gui/main.py:4303
#, fuzzy
msgid "Video Player"
msgstr "Seleziona un DVD"
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
#, fuzzy
msgid "Autostart"
msgstr "Autore"
-#: ../lib/advene/gui/main.py:4202
+#: ../lib/advene/gui/main.py:4304
msgid ""
"Automatically start the player when loading a media file (either directly or "
"through a package)"
msgstr ""
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
msgid "Fulscreen timestamp"
msgstr ""
-#: ../lib/advene/gui/main.py:4203
+#: ../lib/advene/gui/main.py:4305
msgid "Display the timestamp over the video when in fullscreen mode"
msgstr ""
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
#, fuzzy
msgid "Enable captions"
msgstr "Relazioni"
-#: ../lib/advene/gui/main.py:4204
+#: ../lib/advene/gui/main.py:4306
msgid "Enable captions over the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
msgid "Caption font"
msgstr ""
-#: ../lib/advene/gui/main.py:4205
+#: ../lib/advene/gui/main.py:4307
msgid "TrueType font for captions"
msgstr ""
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG"
msgstr ""
-#: ../lib/advene/gui/main.py:4206
+#: ../lib/advene/gui/main.py:4308
msgid "Enable SVG captions over the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4208
+#: ../lib/advene/gui/main.py:4310
msgid "Enable snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width"
msgstr ""
-#: ../lib/advene/gui/main.py:4209
+#: ../lib/advene/gui/main.py:4311
msgid "Snapshot width in pixels."
msgstr ""
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity"
msgstr ""
-#: ../lib/advene/gui/main.py:4210
+#: ../lib/advene/gui/main.py:4312
msgid "Verbosity level. -1 for no messages."
msgstr ""
-#: ../lib/advene/gui/main.py:4213
+#: ../lib/advene/gui/main.py:4315
msgid "Devices"
msgstr ""
-#: ../lib/advene/gui/main.py:4215
+#: ../lib/advene/gui/main.py:4317
msgid "Standard"
msgstr ""
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "DVD drive"
msgstr ""
-#: ../lib/advene/gui/main.py:4217
+#: ../lib/advene/gui/main.py:4319
msgid "Drive letter for the DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:4218
+#: ../lib/advene/gui/main.py:4320
msgid "GDI"
msgstr ""
-#: ../lib/advene/gui/main.py:4219
+#: ../lib/advene/gui/main.py:4321
msgid "Direct X"
msgstr ""
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "DVD device"
msgstr ""
-#: ../lib/advene/gui/main.py:4221
+#: ../lib/advene/gui/main.py:4323
msgid "Device for the DVD"
msgstr ""
-#: ../lib/advene/gui/main.py:4222
+#: ../lib/advene/gui/main.py:4324
msgid "X11"
msgstr ""
-#: ../lib/advene/gui/main.py:4223
+#: ../lib/advene/gui/main.py:4325
msgid "XVideo"
msgstr ""
-#: ../lib/advene/gui/main.py:4224
+#: ../lib/advene/gui/main.py:4326
msgid "GL"
msgstr ""
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output"
msgstr ""
-#: ../lib/advene/gui/main.py:4226
+#: ../lib/advene/gui/main.py:4328
msgid "Video output module"
msgstr ""
-#: ../lib/advene/gui/main.py:4228
+#: ../lib/advene/gui/main.py:4330
msgid "Recorder options"
msgstr ""
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
#, fuzzy
msgid "Audio input"
msgstr "Aggiungi file..."
-#: ../lib/advene/gui/main.py:4229
+#: ../lib/advene/gui/main.py:4331
msgid "Device name for audio input (with gstrecorder plugin)"
msgstr ""
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record video"
msgstr ""
-#: ../lib/advene/gui/main.py:4230
+#: ../lib/advene/gui/main.py:4332
msgid "Record both video and audio"
msgstr ""
-#: ../lib/advene/gui/main.py:4233
+#: ../lib/advene/gui/main.py:4335
msgid "<i>Experimental</i>"
msgstr ""
-#: ../lib/advene/gui/main.py:4234
+#: ../lib/advene/gui/main.py:4336
msgid "Embed the caption scroller below the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4235
+#: ../lib/advene/gui/main.py:4337
msgid "Embed the caption view below the video"
msgstr ""
-#: ../lib/advene/gui/main.py:4237
+#: ../lib/advene/gui/main.py:4339
msgid "Time-related"
msgstr ""
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
msgid "Time format"
msgstr ""
-#: ../lib/advene/gui/main.py:4238
+#: ../lib/advene/gui/main.py:4340
msgid "Format used to display timecodes"
msgstr ""
-#: ../lib/advene/gui/main.py:4252
+#: ../lib/advene/gui/main.py:4354
msgid "Default FPS"
msgstr ""
-#: ../lib/advene/gui/main.py:4253
+#: ../lib/advene/gui/main.py:4355
msgid ""
"Default FPS (frame-per-second) value, when entering or displaying timestamps "
"with frame numbers."
msgstr ""
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
msgid "Time increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4254
+#: ../lib/advene/gui/main.py:4356
msgid ""
"Skip duration, when using control-left/right or forward/rewind buttons (in "
"ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
msgid "Second time increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4255
+#: ../lib/advene/gui/main.py:4357
msgid "Skip duration, when using control-shift-left/right (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
msgid "Third time increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4256
+#: ../lib/advene/gui/main.py:4358
msgid "Skip duration, when using control-shift-up/down (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid "Custom Up/Down"
msgstr ""
-#: ../lib/advene/gui/main.py:4257
+#: ../lib/advene/gui/main.py:4359
msgid ""
"Use third time increment for up/down navigation without having to hold shift."
msgstr ""
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid "Scroll increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4259
+#: ../lib/advene/gui/main.py:4361
msgid ""
"On most annotations, control+scrollwheel will increment/decrement their "
"bounds by this value (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid "Second scroll increment"
msgstr ""
-#: ../lib/advene/gui/main.py:4260
+#: ../lib/advene/gui/main.py:4362
msgid ""
"On most annotations, control+shift+scrollwheel will increment/decrement "
"their bounds by this value (in ms)."
msgstr ""
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
msgid "Player sync"
msgstr ""
-#: ../lib/advene/gui/main.py:4262
+#: ../lib/advene/gui/main.py:4364
msgid ""
"Interval (in ms) with which we synchronize slave players. Setting a too-low "
"value could render the application unusable. Use 0 to disable continuous "
"synchronization."
msgstr ""
-#: ../lib/advene/gui/main.py:4263
+#: ../lib/advene/gui/main.py:4365
msgid "Timeline parameters"
msgstr ""
-#: ../lib/advene/gui/main.py:4264 ../lib/advene/gui/edit/transcribe.py:155
+#: ../lib/advene/gui/main.py:4366 ../lib/advene/gui/edit/transcribe.py:155
msgid "Font size"
msgstr ""
-#: ../lib/advene/gui/main.py:4264
+#: ../lib/advene/gui/main.py:4366
msgid "Font size for annotation widgets"
msgstr ""
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
msgid "Button height"
msgstr ""
-#: ../lib/advene/gui/main.py:4265
+#: ../lib/advene/gui/main.py:4367
msgid "Height of annotation widgets"
msgstr ""
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Interline height"
msgstr ""
-#: ../lib/advene/gui/main.py:4266
+#: ../lib/advene/gui/main.py:4368
msgid "Height of interlines"
msgstr ""
-#: ../lib/advene/gui/main.py:4268
+#: ../lib/advene/gui/main.py:4370
#, fuzzy
msgid "Text content"
msgstr "template HTML"
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
#, fuzzy
msgid "Completion mode"
msgstr "Relazioni"
-#: ../lib/advene/gui/main.py:4269
+#: ../lib/advene/gui/main.py:4371
#, fuzzy
msgid "Enable dynamic completion mode"
msgstr "Relazioni"
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
#, fuzzy
msgid "Abbreviation mode"
msgstr "Tempo di reazione"
-#: ../lib/advene/gui/main.py:4270
+#: ../lib/advene/gui/main.py:4372
#, fuzzy
msgid "Enable abbreviation mode"
msgstr "Relazioni"
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
#, fuzzy
msgid "Abbreviations"
msgstr "Relazioni"
-#: ../lib/advene/gui/main.py:4271
+#: ../lib/advene/gui/main.py:4373
msgid ""
"Text abbreviations. 1 entry per line. Each line consists of the abbreviation "
"followed by its replacement."
msgstr ""
-#: ../lib/advene/gui/main.py:4273
+#: ../lib/advene/gui/main.py:4375
msgid "Text-To-Speech"
msgstr ""
-#: ../lib/advene/gui/main.py:4274
+#: ../lib/advene/gui/main.py:4376
msgid "TTS language"
msgstr ""
-#: ../lib/advene/gui/main.py:4275
+#: ../lib/advene/gui/main.py:4377
msgid "What language settings should be used for text-to-speech"
msgstr ""
-#: ../lib/advene/gui/main.py:4276
+#: ../lib/advene/gui/main.py:4378
msgid "English"
msgstr ""
-#: ../lib/advene/gui/main.py:4277
+#: ../lib/advene/gui/main.py:4379
msgid "French"
msgstr ""
-#: ../lib/advene/gui/main.py:4278
+#: ../lib/advene/gui/main.py:4380
msgid "Spanish"
msgstr ""
-#: ../lib/advene/gui/main.py:4280
+#: ../lib/advene/gui/main.py:4382
msgid "TTS Encoding"
msgstr ""
-#: ../lib/advene/gui/main.py:4281
+#: ../lib/advene/gui/main.py:4383
msgid "What encoding should be used to communicate with the TTS engine"
msgstr ""
-#: ../lib/advene/gui/main.py:4282
+#: ../lib/advene/gui/main.py:4384
msgid "TTS Engine"
msgstr ""
-#: ../lib/advene/gui/main.py:4283
+#: ../lib/advene/gui/main.py:4385
msgid ""
"Which TTS engine should be used (modification requires restarting Advene to "
"take into account)"
msgstr ""
-#: ../lib/advene/gui/main.py:4284
+#: ../lib/advene/gui/main.py:4386
#, fuzzy
msgid "Automatic"
msgstr "Autore"
-#: ../lib/advene/gui/main.py:4285
+#: ../lib/advene/gui/main.py:4387
msgid "eSpeak"
msgstr ""
-#: ../lib/advene/gui/main.py:4286
+#: ../lib/advene/gui/main.py:4388
msgid "Custom script with standard input"
msgstr ""
-#: ../lib/advene/gui/main.py:4287
+#: ../lib/advene/gui/main.py:4389
msgid "Custom script with arguments"
msgstr ""
-#: ../lib/advene/gui/main.py:4288
+#: ../lib/advene/gui/main.py:4390
msgid "SAPI"
msgstr ""
-#: ../lib/advene/gui/main.py:4289
+#: ../lib/advene/gui/main.py:4391
msgid "MacOS X say"
msgstr ""
-#: ../lib/advene/gui/main.py:4290
+#: ../lib/advene/gui/main.py:4392
msgid "Generic (text output)"
msgstr ""
-#: ../lib/advene/gui/main.py:4334
+#: ../lib/advene/gui/main.py:4436
msgid "You should restart Advene to take some options into account."
msgstr ""
-#: ../lib/advene/gui/main.py:4343
+#: ../lib/advene/gui/main.py:4445
#, python-format
msgid "Imagecache saved to %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4356
+#: ../lib/advene/gui/main.py:4458
msgid "Restarting player..."
msgstr ""
-#: ../lib/advene/gui/main.py:4404
+#: ../lib/advene/gui/main.py:4510
#, fuzzy
msgid "Advene log"
msgstr "Advene"
-#: ../lib/advene/gui/main.py:4473
+#: ../lib/advene/gui/main.py:4579
msgid "Select the package to merge"
msgstr ""
-#: ../lib/advene/gui/main.py:4492
+#: ../lib/advene/gui/main.py:4600
msgid "Saving workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4495
+#: ../lib/advene/gui/main.py:4603
msgid "Enter a view name to save the workspace"
msgstr ""
-#: ../lib/advene/gui/main.py:4496
+#: ../lib/advene/gui/main.py:4604
#, fuzzy
msgid "Default workspace"
msgstr "Vista statica predefinita"
-#: ../lib/advene/gui/main.py:4497
+#: ../lib/advene/gui/main.py:4605
msgid "Open this workspace when opening the package"
msgstr ""
-#: ../lib/advene/gui/main.py:4531
+#: ../lib/advene/gui/main.py:4639
#, python-format
msgid "Error: the view %s exists and is not a workspace view."
msgstr ""
-#: ../lib/advene/gui/main.py:4562
+#: ../lib/advene/gui/main.py:4670
#, python-format
msgid "Cannot save default workspace: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4572
+#: ../lib/advene/gui/main.py:4680
msgid "Standard workspace has been saved"
msgstr ""
-#: ../lib/advene/gui/main.py:4579
+#: ../lib/advene/gui/main.py:4687
msgid "Website export"
msgstr ""
-#: ../lib/advene/gui/main.py:4580
+#: ../lib/advene/gui/main.py:4688
msgid "Exporting views to a website"
msgstr ""
-#: ../lib/advene/gui/main.py:4583
+#: ../lib/advene/gui/main.py:4691
#, fuzzy
msgid "Output directory"
msgstr "Cartella"
-#: ../lib/advene/gui/main.py:4592
+#: ../lib/advene/gui/main.py:4700
msgid "Specify the output directory"
msgstr ""
-#: ../lib/advene/gui/main.py:4601
+#: ../lib/advene/gui/main.py:4709
msgid "Maximum recursion depth"
msgstr ""
-#: ../lib/advene/gui/main.py:4608
+#: ../lib/advene/gui/main.py:4716
msgid "Video URL"
msgstr ""
-#: ../lib/advene/gui/main.py:4610
+#: ../lib/advene/gui/main.py:4718
msgid ""
-"URL for the video, if it is available on a sharing website.\n"
-"Only for GoogleVideo and Youtube for the moment"
+"URL for the video, if it is available on a sharing website (Only Youtube for "
+"the moment).\n"
+" It can also be a h264/ogg file, which will in this case be handled by the "
+"HTML5 video player."
msgstr ""
-#: ../lib/advene/gui/main.py:4648
+#: ../lib/advene/gui/main.py:4768
#, fuzzy
msgid "Could not export data: "
msgstr "Impossibile salvare il file: %s"
-#: ../lib/advene/gui/main.py:4650
+#: ../lib/advene/gui/main.py:4770
#, python-format
msgid "Website export to %s completed"
msgstr ""
-#: ../lib/advene/gui/main.py:4686
+#: ../lib/advene/gui/main.py:4809
msgid "This video player is not able to grab specific screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4696
+#: ../lib/advene/gui/main.py:4819
#, python-format
msgid "Updating %d snapshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4701
+#: ../lib/advene/gui/main.py:4824
msgid "No snapshot to update"
msgstr ""
-#: ../lib/advene/gui/main.py:4710 ../lib/advene/gui/main.py:4822
+#: ../lib/advene/gui/main.py:4833 ../lib/advene/gui/main.py:4945
msgid "You first must load a movie into Advene"
msgstr ""
-#: ../lib/advene/gui/main.py:4713 ../lib/advene/gui/main.py:4825
+#: ../lib/advene/gui/main.py:4836 ../lib/advene/gui/main.py:4948
#, python-format
msgid "The movie %s does not seem to exist."
msgstr ""
-#: ../lib/advene/gui/main.py:4770
+#: ../lib/advene/gui/main.py:4893
msgid "Generating screenshots"
msgstr ""
-#: ../lib/advene/gui/main.py:4775
+#: ../lib/advene/gui/main.py:4898
msgid ""
"<b>Screenshot generation</b>\n"
"\n"
@@ -6666,42 +6820,42 @@ msgid ""
"open."
msgstr ""
-#: ../lib/advene/gui/main.py:4816
+#: ../lib/advene/gui/main.py:4939
msgid ""
"The <b>shotdetect</b> application does not seem to be installed. Please "
"check that it is present and that its path is correctly specified in "
"preferences."
msgstr ""
-#: ../lib/advene/gui/main.py:4856
+#: ../lib/advene/gui/main.py:4979
msgid ""
"Cannot import shotdetect output. Did you install the shotdetect software?"
msgstr ""
-#: ../lib/advene/gui/main.py:4873
+#: ../lib/advene/gui/main.py:4996
msgid "Incomplete shots"
msgstr ""
-#: ../lib/advene/gui/main.py:4876
+#: ../lib/advene/gui/main.py:4999
#, python-format
msgid "Detected %s shots"
msgstr ""
-#: ../lib/advene/gui/main.py:4979
+#: ../lib/advene/gui/main.py:5101
#, python-format
msgid "Could not run shotdetect: %s"
msgstr ""
-#: ../lib/advene/gui/main.py:4983
+#: ../lib/advene/gui/main.py:5105
#, python-format
msgid "Detecting shots from %s"
msgstr ""
-#: ../lib/advene/gui/main.py:5036
+#: ../lib/advene/gui/main.py:5158
msgid "Shot detection"
msgstr ""
-#: ../lib/advene/gui/main.py:5042
+#: ../lib/advene/gui/main.py:5164
msgid ""
"<b>Shot detection</b>\n"
"\n"
@@ -6711,13 +6865,13 @@ msgid ""
"to augment its value."
msgstr ""
-#: ../lib/advene/gui/main.py:5058
+#: ../lib/advene/gui/main.py:5180
msgid "Sensitivity"
msgstr ""
#: ../lib/advene/gui/util/__init__.py:38 ../lib/advene/gui/edit/create.py:106
-#: ../lib/advene/gui/edit/schemaeditor.py:1080
-#: ../lib/advene/gui/edit/schemaeditor.py:1202
+#: ../lib/advene/gui/edit/schemaeditor.py:1081
+#: ../lib/advene/gui/edit/schemaeditor.py:1203
msgid "Plain text content"
msgstr ""
@@ -6727,8 +6881,8 @@ msgid "HTML content"
msgstr "template HTML"
#: ../lib/advene/gui/util/__init__.py:40 ../lib/advene/gui/edit/create.py:107
-#: ../lib/advene/gui/edit/schemaeditor.py:1081
-#: ../lib/advene/gui/edit/schemaeditor.py:1203
+#: ../lib/advene/gui/edit/schemaeditor.py:1082
+#: ../lib/advene/gui/edit/schemaeditor.py:1204
msgid "Simple-structured content"
msgstr ""
@@ -6737,8 +6891,8 @@ msgid "List of numeric values"
msgstr ""
#: ../lib/advene/gui/util/__init__.py:42 ../lib/advene/gui/edit/create.py:109
-#: ../lib/advene/gui/edit/schemaeditor.py:1083
-#: ../lib/advene/gui/edit/schemaeditor.py:1205
+#: ../lib/advene/gui/edit/schemaeditor.py:1084
+#: ../lib/advene/gui/edit/schemaeditor.py:1206
msgid "SVG graphics content"
msgstr ""
@@ -7019,49 +7173,41 @@ msgstr "Tutto"
msgid "Importer"
msgstr "Importatore"
-#: ../lib/advene/gui/edit/importer.py:87 ../lib/advene/gui/edit/importer.py:97
+#: ../lib/advene/gui/edit/importer.py:100
+#: ../lib/advene/gui/edit/importer.py:110
#, fuzzy
msgid "Advene package importer"
msgstr "Modifica proprietà pacchetto"
-#: ../lib/advene/gui/edit/importer.py:101
+#: ../lib/advene/gui/edit/importer.py:114
msgid "Not likely"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:123
+#: ../lib/advene/gui/edit/importer.py:136
#, python-format
msgid "Completed conversion: %(statistics)s"
msgstr ""
-#: ../lib/advene/gui/edit/importer.py:129
+#: ../lib/advene/gui/edit/importer.py:142
#: ../lib/advene/gui/edit/dvdselect.py:73
msgid "Stop"
msgstr "Stop"
-#: ../lib/advene/gui/edit/importer.py:141
-#, python-format
-msgid "Importing %s"
-msgstr ""
-
-#: ../lib/advene/gui/edit/importer.py:234
+#: ../lib/advene/gui/edit/importer.py:251
msgid "Choose the file to import"
msgstr "Scegli un file da importare"
-#: ../lib/advene/gui/edit/importer.py:253
-msgid "Filename"
-msgstr "Nome file"
-
-#: ../lib/advene/gui/edit/importer.py:266
+#: ../lib/advene/gui/edit/importer.py:269
#, fuzzy
msgid "Filter"
msgstr "_File"
-#: ../lib/advene/gui/edit/importer.py:270
+#: ../lib/advene/gui/edit/importer.py:273
#, fuzzy
msgid "Options"
msgstr "Relazioni"
-#: ../lib/advene/gui/edit/importer.py:278
+#: ../lib/advene/gui/edit/importer.py:284
msgid "Start"
msgstr ""
@@ -7131,8 +7277,8 @@ msgid ""
msgstr ""
#: ../lib/advene/gui/edit/create.py:108
-#: ../lib/advene/gui/edit/schemaeditor.py:1082
-#: ../lib/advene/gui/edit/schemaeditor.py:1204
+#: ../lib/advene/gui/edit/schemaeditor.py:1083
+#: ../lib/advene/gui/edit/schemaeditor.py:1205
msgid "Rectangular zone content"
msgstr ""
@@ -7195,7 +7341,7 @@ msgid "New resource data"
msgstr ""
#: ../lib/advene/gui/edit/properties.py:32
-#: ../lib/advene/gui/edit/shapewidget.py:1317
+#: ../lib/advene/gui/edit/shapewidget.py:1311
msgid "Properties"
msgstr "Proprietà "
@@ -7440,7 +7586,7 @@ msgid "Error: cannot find a content handler for %s"
msgstr ""
#: ../lib/advene/gui/edit/elements.py:1437
-#: ../lib/advene/gui/edit/elements.py:1651
+#: ../lib/advene/gui/edit/elements.py:1662
#, python-format
msgid ""
"Cannot read the data:\n"
@@ -7450,12 +7596,12 @@ msgstr ""
"%s"
#: ../lib/advene/gui/edit/elements.py:1461
-#: ../lib/advene/gui/edit/elements.py:1676
+#: ../lib/advene/gui/edit/elements.py:1687
msgid "Save content to..."
msgstr "Salva contenuto in..."
#: ../lib/advene/gui/edit/elements.py:1472
-#: ../lib/advene/gui/edit/elements.py:1689
+#: ../lib/advene/gui/edit/elements.py:1700
#, python-format
msgid ""
"Cannot save the data:\n"
@@ -7465,17 +7611,17 @@ msgstr ""
"%s"
#: ../lib/advene/gui/edit/elements.py:1491
-#: ../lib/advene/gui/edit/elements.py:1703
+#: ../lib/advene/gui/edit/elements.py:1714
msgid "Open a file (C-o)"
msgstr "Apri un file (C-o)"
#: ../lib/advene/gui/edit/elements.py:1496
-#: ../lib/advene/gui/edit/elements.py:1708
+#: ../lib/advene/gui/edit/elements.py:1719
msgid "Save to a file (C-s)"
msgstr "Salva in un file (C-s)"
#: ../lib/advene/gui/edit/elements.py:1501
-#: ../lib/advene/gui/edit/elements.py:1713
+#: ../lib/advene/gui/edit/elements.py:1724
msgid "Reload the file (C-r)"
msgstr "Ricarica il file (C-r)"
@@ -7483,15 +7629,15 @@ msgstr "Ricarica il file (C-r)"
msgid "Insert a value from the browser (C-i)"
msgstr "Inserisci un valore dal browser (C-i)"
-#: ../lib/advene/gui/edit/elements.py:1742
+#: ../lib/advene/gui/edit/elements.py:1753
msgid "Begin time is greater than end time"
msgstr "Il tempo di inizio è più grande di quello finale"
-#: ../lib/advene/gui/edit/elements.py:2013
+#: ../lib/advene/gui/edit/elements.py:2024
msgid "Expecting an integer."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2045
+#: ../lib/advene/gui/edit/elements.py:2056
#, python-format
msgid ""
"The %(attribute)s attribute could not be updated:\n"
@@ -7501,7 +7647,7 @@ msgid ""
"Resetting to the original value."
msgstr ""
-#: ../lib/advene/gui/edit/elements.py:2072
+#: ../lib/advene/gui/edit/elements.py:2083
#, python-format
msgid ""
"The following attributes cannot be updated:\n"
@@ -7512,7 +7658,7 @@ msgstr ""
"\n"
"%s"
-#: ../lib/advene/gui/edit/elements.py:2112
+#: ../lib/advene/gui/edit/elements.py:2123
#, python-format
msgid ""
"The following attributes could not be updated:\n"
@@ -7523,25 +7669,25 @@ msgstr ""
"\n"
"%s"
-#: ../lib/advene/gui/edit/elements.py:2129
+#: ../lib/advene/gui/edit/elements.py:2140
msgid "Attribute"
msgstr "Attributo"
-#: ../lib/advene/gui/edit/elements.py:2228
+#: ../lib/advene/gui/edit/elements.py:2239
msgid "Insert an element"
msgstr "Inserisci un elemento"
-#: ../lib/advene/gui/edit/elements.py:2229
+#: ../lib/advene/gui/edit/elements.py:2240
msgid "Choose the element to insert."
msgstr "Scegli un elemento da inserire."
-#: ../lib/advene/gui/edit/elements.py:2299
-#: ../lib/advene/gui/edit/elements.py:2342
+#: ../lib/advene/gui/edit/elements.py:2310
+#: ../lib/advene/gui/edit/elements.py:2353
#, python-format
msgid "Some tags contain invalid characters: %s"
msgstr "Qualche tag contiene caratteri invalidi: %s"
-#: ../lib/advene/gui/edit/elements.py:2322
+#: ../lib/advene/gui/edit/elements.py:2333
msgid "Tags:"
msgstr ""
@@ -7652,8 +7798,9 @@ msgid "Condition expression: %s"
msgstr ""
#: ../lib/advene/gui/edit/rules.py:765
-msgid "The id of the annotation type"
-msgstr ""
+#, fuzzy
+msgid "The annotation type"
+msgstr "di un tipo di annotazione"
#: ../lib/advene/gui/edit/rules.py:768
#, python-format
@@ -7711,8 +7858,9 @@ msgid "The element duration"
msgstr ""
#: ../lib/advene/gui/edit/rules.py:793
-msgid "The id of the element type"
-msgstr ""
+#, fuzzy
+msgid "The element type"
+msgstr "L'elemento"
#: ../lib/advene/gui/edit/rules.py:794
msgid "The element's incoming relations"
@@ -7730,6 +7878,16 @@ msgstr ""
msgid "The context fragment"
msgstr ""
+#: ../lib/advene/gui/edit/rules.py:809
+#, fuzzy, python-format
+msgid "annotation-type %s"
+msgstr "Tipo di Annotazione"
+
+#: ../lib/advene/gui/edit/rules.py:812
+#, fuzzy, python-format
+msgid "relation-type %s"
+msgstr "Tipo di Annotazione"
+
#: ../lib/advene/gui/edit/rules.py:834
msgid "Select a condition"
msgstr "Seleziona una condizione"
@@ -7747,58 +7905,58 @@ msgstr "Seleziona un'azione"
msgid "Activate?"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:56
+#: ../lib/advene/gui/edit/schemaeditor.py:57
msgid "Schema Editor"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:131
+#: ../lib/advene/gui/edit/schemaeditor.py:132
#, fuzzy
msgid "Display"
msgstr "Visualizza %s"
-#: ../lib/advene/gui/edit/schemaeditor.py:761
+#: ../lib/advene/gui/edit/schemaeditor.py:762
#, fuzzy
msgid "Remove relation type"
msgstr "Tipo di Annotazione"
-#: ../lib/advene/gui/edit/schemaeditor.py:764
-#: ../lib/advene/gui/edit/schemaeditor.py:996
+#: ../lib/advene/gui/edit/schemaeditor.py:765
+#: ../lib/advene/gui/edit/schemaeditor.py:997
msgid "Create HTML view"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:830
+#: ../lib/advene/gui/edit/schemaeditor.py:831
#, fuzzy
msgid "Remove annotation type"
msgstr "di un tipo di annotazione"
-#: ../lib/advene/gui/edit/schemaeditor.py:833
+#: ../lib/advene/gui/edit/schemaeditor.py:834
msgid "Create relation type between this one and..."
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:968
+#: ../lib/advene/gui/edit/schemaeditor.py:969
#, fuzzy
msgid "New schema"
msgstr "Schema"
-#: ../lib/advene/gui/edit/schemaeditor.py:987
+#: ../lib/advene/gui/edit/schemaeditor.py:988
#, fuzzy
msgid "New annotation type"
msgstr "di un tipo di annotazione"
-#: ../lib/advene/gui/edit/schemaeditor.py:990
+#: ../lib/advene/gui/edit/schemaeditor.py:991
#, fuzzy
msgid "New relation type"
msgstr "Tipo di Annotazione"
-#: ../lib/advene/gui/edit/schemaeditor.py:993
+#: ../lib/advene/gui/edit/schemaeditor.py:994
msgid "Hide this schema"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:999
+#: ../lib/advene/gui/edit/schemaeditor.py:1000
msgid "Export drawing to pdf"
msgstr ""
-#: ../lib/advene/gui/edit/schemaeditor.py:1041
+#: ../lib/advene/gui/edit/schemaeditor.py:1042
msgid "Choose a filename to export the schema as PDF"
msgstr ""
@@ -8085,103 +8243,103 @@ msgstr ""
msgid "Click to see more frames or scroll with the mouse wheel"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:89
+#: ../lib/advene/gui/edit/shapewidget.py:83
msgid "Generic shape"
msgstr "Forma generica"
-#: ../lib/advene/gui/edit/shapewidget.py:224
-#: ../lib/advene/gui/edit/shapewidget.py:719
+#: ../lib/advene/gui/edit/shapewidget.py:218
+#: ../lib/advene/gui/edit/shapewidget.py:713
#, python-format
msgid "Link to %s"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:316
-#: ../lib/advene/gui/edit/shapewidget.py:1032
+#: ../lib/advene/gui/edit/shapewidget.py:310
+#: ../lib/advene/gui/edit/shapewidget.py:1026
msgid "Link"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:321
+#: ../lib/advene/gui/edit/shapewidget.py:315
msgid "Link label"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:339
+#: ../lib/advene/gui/edit/shapewidget.py:333
msgid "Linewidth"
msgstr "LarghezzaLinea"
-#: ../lib/advene/gui/edit/shapewidget.py:344
+#: ../lib/advene/gui/edit/shapewidget.py:338
msgid "Filled"
msgstr "Riempito"
-#: ../lib/advene/gui/edit/shapewidget.py:385
+#: ../lib/advene/gui/edit/shapewidget.py:379
#, python-format
msgid "Properties of %s"
msgstr "Proprietà di %s"
-#: ../lib/advene/gui/edit/shapewidget.py:429
+#: ../lib/advene/gui/edit/shapewidget.py:423
msgid "Rectangle"
msgstr "Rettangolo"
-#: ../lib/advene/gui/edit/shapewidget.py:510
-#: ../lib/advene/gui/edit/shapewidget.py:630
+#: ../lib/advene/gui/edit/shapewidget.py:504
+#: ../lib/advene/gui/edit/shapewidget.py:624
msgid "Text"
msgstr "Testo"
-#: ../lib/advene/gui/edit/shapewidget.py:641
+#: ../lib/advene/gui/edit/shapewidget.py:635
msgid "Textsize"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:655
+#: ../lib/advene/gui/edit/shapewidget.py:649
msgid "Image"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:739
+#: ../lib/advene/gui/edit/shapewidget.py:733
msgid "Href"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:749
+#: ../lib/advene/gui/edit/shapewidget.py:743
msgid "Line"
msgstr "Linea"
-#: ../lib/advene/gui/edit/shapewidget.py:848
+#: ../lib/advene/gui/edit/shapewidget.py:842
msgid "Draw an arrow"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:859
+#: ../lib/advene/gui/edit/shapewidget.py:853
msgid "Arrow size"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:914
+#: ../lib/advene/gui/edit/shapewidget.py:908
msgid "Circle"
msgstr "Cerchio"
-#: ../lib/advene/gui/edit/shapewidget.py:972
+#: ../lib/advene/gui/edit/shapewidget.py:966
msgid "Ellipse"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1318
+#: ../lib/advene/gui/edit/shapewidget.py:1312
msgid "SVG"
msgstr "SVG"
-#: ../lib/advene/gui/edit/shapewidget.py:1861
+#: ../lib/advene/gui/edit/shapewidget.py:1855
msgid "Load SVG"
msgstr ""
-#: ../lib/advene/gui/edit/shapewidget.py:1867
+#: ../lib/advene/gui/edit/shapewidget.py:1861
#, fuzzy
msgid "Save SVG"
msgstr "Salva"
-#: ../lib/advene/gui/edit/timeadjustment.py:100
+#: ../lib/advene/gui/edit/timeadjustment.py:102
#, python-format
msgid "Decrement value by %.2f s"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:102
+#: ../lib/advene/gui/edit/timeadjustment.py:104
#, python-format
msgid "Increment value by %.2f s"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:126
+#: ../lib/advene/gui/edit/timeadjustment.py:128
msgid ""
"Click to play\n"
"Control+click to set to current time\\Scroll to modify value (with control/"
@@ -8189,7 +8347,7 @@ msgid ""
"Right-click to invalidate screenshot"
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:141
+#: ../lib/advene/gui/edit/timeadjustment.py:143
msgid ""
"Enter a timecode.\n"
"An integer value will be considered as milliseconds.\n"
@@ -8197,7 +8355,7 @@ msgid ""
"HH:MM:SS.sss values are possible."
msgstr ""
-#: ../lib/advene/gui/edit/timeadjustment.py:155
+#: ../lib/advene/gui/edit/timeadjustment.py:157
msgid "Set to current player position"
msgstr ""
@@ -8834,6 +8992,16 @@ msgstr ""
msgid "Directory %s is not an extracted Advene zip package."
msgstr ""
+#, fuzzy
+#~ msgid "Aiff importer"
+#~ msgstr "Importatore"
+
+#~ msgid "Edit imported element from other packages"
+#~ msgstr "Modifica elementi importati da altri pacchetti"
+
+#~ msgid "Filename"
+#~ msgstr "Nome file"
+
#~ msgid "SPARQL query"
#~ msgstr "Ricerca SPARQL"
@@ -8842,10 +9010,6 @@ msgstr ""
#~ msgstr "Visualizza %s"
#, fuzzy
-#~ msgid "Display snapshot"
-#~ msgstr "Visualizza %s"
-
-#, fuzzy
#~ msgid "Exporter"
#~ msgstr "Importatore"
diff --git a/scripts/package_sorter.py b/scripts/package_sorter.py
index 9bec72e..5299ddc 100755
--- a/scripts/package_sorter.py
+++ b/scripts/package_sorter.py
@@ -21,8 +21,8 @@ by timestamp, and all other elements ordered by id.
"""
import sys
-import elementtree.ElementTree
-from elementtree.ElementTree import parse, Element, ElementTree, QName
+import xml.etree.ElementTree as ET
+from xml.etree.ElementTree import parse, Element, ElementTree, QName
import string
def tag(name):
@@ -89,9 +89,9 @@ def sort_time(source):
# Namespace handling
ns='http://experience.univ-lyon1.fr/advene/ns'
-elementtree.ElementTree._namespace_map[ns]=''
-elementtree.ElementTree._namespace_map['http://purl.org/dc/elements/1.1/']='dc'
-elementtree.ElementTree._namespace_map['http://experience.univ-lyon1.fr/advene/ns/advenetool']='advenetool'
+ET._namespace_map[ns]=''
+ET._namespace_map['http://purl.org/dc/elements/1.1/']='dc'
+ET._namespace_map['http://experience.univ-lyon1.fr/advene/ns/advenetool']='advenetool'
# Hack into elementtree to generate a readable (namespace-prefix-wise)
# Advene package
@@ -103,7 +103,7 @@ def my_fixtag(tag, namespaces):
namespace_uri, tag = string.split(tag[1:], "}", 1)
prefix = namespaces.get(namespace_uri)
if prefix is None:
- prefix = elementtree.ElementTree._namespace_map.get(namespace_uri)
+ prefix = ET._namespace_map.get(namespace_uri)
if prefix is None:
prefix = "ns%d" % len(namespaces)
namespaces[namespace_uri] = prefix
@@ -123,7 +123,7 @@ def my_fixtag(tag, namespaces):
return "%s:%s" % (prefix, tag), xmlns
# Hook into elementtree
-elementtree.ElementTree.fixtag = my_fixtag
+ET.fixtag = my_fixtag
tree = parse(sys.argv[1])
source = tree.getroot()
diff --git a/setup.py b/setup.py
index 115565b..4dc0634 100755
--- a/setup.py
+++ b/setup.py
@@ -114,7 +114,7 @@ def get_packages_list():
"""
l=[]
def ispackage(pl, dirname, fnames):
- if sys.platform == 'linux2' and ('cherrypy' in dirname or dirname.endswith('simpletal')):
+ if 'linux' in sys.platform and ('cherrypy' in dirname or dirname.endswith('simpletal')):
# On linux (at least, Debian and Ubuntu), cherrypy and
# simpletal are packaged. So do not consider them in the
# packages list.
@@ -165,7 +165,7 @@ def generate_data_files():
if os.path.isdir("locale"):
r.extend(generate_data_dir("locale", prefix=prefix))
else:
- raise Exception("""**WARNING** You should generate the locales with "cd po; make mo".""")
+ print """**WARNING** You should generate the locales with "cd po; make mo"."""
if sys.platform.startswith('linux'):
# Install specific data files
r.append( ( 'share/applications', [ 'debian/advene.desktop' ] ) )
diff --git a/share/exporters.xml b/share/exporters.xml
index 3bdc7d2..50ecaaa 100644
--- a/share/exporters.xml
+++ b/share/exporters.xml
@@ -359,7 +359,7 @@ div.${a/id} {
<view dc:creator="oaubert" dc:date="2008-01-17" id="Advene2" viewable-class="package">
<meta>
<title xmlns="http://purl.org/dc/elements/1.1/">Advene2</title>
- <extension xmlns="http://experience.univ-lyon1.fr/advene/ns/advenetool">advene2.xml</extension>
+ <extension xmlns="http://experience.univ-lyon1.fr/advene/ns/advenetool">cxp</extension>
</meta>
<content encoding="utf-8" mime-type="application/xml"><!-- Cinelab Advene XML exporter - v0.2 -->
<package xmlns="http://advene.org/ns/cinelab/"
diff --git a/share/pixmaps/align.svg b/share/pixmaps/align.svg
index 27c2c45..3b612ba 100644
--- a/share/pixmaps/align.svg
+++ b/share/pixmaps/align.svg
@@ -1,121 +1,52 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 20010904//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
-<svg
- xmlns="http://www.w3.org/2000/svg"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- height="60.0000000"
- id="svg1"
- inkscape:version="0.38.1"
- sodipodi:docname="/home/oaubert/align.svg"
- sodipodi:version="0.34"
- version="1.0"
- width="60.0000000"
- x="0"
- y="0"
- sodipodi:docbase="/home/oaubert">
- <metadata
- id="metadata603">
- <rdf:RDF
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <cc:Work
- rdf:about="">
- <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
- <dc:description />
- <dc:subject>
- <rdf:Bag>
- <rdf:li>hash</rdf:li>
- <rdf:li />
- <rdf:li>action</rdf:li>
- <rdf:li>computer</rdf:li>
- <rdf:li>icons</rdf:li>
- <rdf:li>theme</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:publisher>
- <cc:Agent
- rdf:about="http://www.openclipart.org">
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:publisher>
- <dc:creator>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:rights>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:rights>
- <dc:date />
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- <cc:License
- rdf:about="http://web.resource.org/cc/PublicDomain">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- id="base"
- inkscape:cx="42.359450"
- inkscape:cy="21.800884"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="685"
- inkscape:window-width="1016"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:zoom="9.8238822"
- pagecolor="#ffffff" />
- <defs
- id="defs3" />
- <rect
- height="19.5551453"
- id="rect827"
- rx="1.07113779"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="font-size:12;fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.684026;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.684 3.684 ;stroke-dashoffset:0;"
- transform="scale(-1,1)"
- width="27.1772994"
- x="-46.2274172"
- y="4.93179989" />
- <rect
- height="24.409506"
- id="rect828"
- rx="1.1264629"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
- transform="scale(-1.000000,1.000000)"
- width="28.581030"
- x="-47.460871"
- y="31.196968" />
- <path
- d="M 11.089338,3.8867457 L 11.089338,56.055531"
- id="path829"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;" />
- <path
- d="M 54.08614 3.886746 L 54.08614 56.05553 "
- id="path609"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;" />
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata id="metadata603">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <cc:Work rdf:about="">
+ <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+ <dc:description/>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>hash</rdf:li>
+ <rdf:li/>
+ <rdf:li>action</rdf:li>
+ <rdf:li>computer</rdf:li>
+ <rdf:li>icons</rdf:li>
+ <rdf:li>theme</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org">
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date/>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx="1.0711" transform="scale(-1,1)" height="19.555" width="27.177" stroke="#333" stroke-linecap="round" stroke-dasharray="3.684 3.684" y="4.9318" x="-46.227" stroke-width="3.684" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" transform="scale(-1 1)" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="-47.461" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path829" stroke-linejoin="round" d="m11.089 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
+ <path id="path609" stroke-linejoin="round" d="m54.086 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
</svg>
diff --git a/share/pixmaps/begin-begin.svg b/share/pixmaps/begin-begin.svg
index f1caac4..0bb4472 100644
--- a/share/pixmaps/begin-begin.svg
+++ b/share/pixmaps/begin-begin.svg
@@ -1,53 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="60.0000000" id="svg1" inkscape:version="0.38.1" sodipodi:docbase="/home/danny/flat/scalable/actions" sodipodi:docname="aoleft.svg" sodipodi:version="0.32" version="1.0" width="60.0000000" x="0" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" y="0">
- <metadata>
- <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <cc:Work rdf:about="">
- <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
- <dc:description></dc:description>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>hash</rdf:li>
- <rdf:li></rdf:li>
- <rdf:li>action</rdf:li>
- <rdf:li>computer</rdf:li>
- <rdf:li>icons</rdf:li>
- <rdf:li>theme</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:publisher>
- <cc:Agent rdf:about="http://www.openclipart.org">
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:publisher>
- <dc:creator>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:rights>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:rights>
- <dc:date></dc:date>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
- <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
- <dc:language>en</dc:language>
- </cc:Work>
- <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
- <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
- <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
- <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:cx="42.359450" inkscape:cy="21.800884" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="685" inkscape:window-width="1016" inkscape:window-x="0" inkscape:window-y="0" inkscape:zoom="9.8238822" pagecolor="#ffffff"/>
- <defs id="defs3"/>
- <rect height="19.555145" id="rect827" rx="0.77072614" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;" transform="scale(-1.000000,1.000000)" width="19.555145" x="-38.605261" y="4.9317999"/>
- <rect height="24.409506" id="rect828" rx="1.1264629" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;" transform="scale(-1.000000,1.000000)" width="28.581030" x="-47.460871" y="31.196968"/>
- <path d="M 11.089338,3.8867457 L 11.089338,56.055531" id="path829" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;"/>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 20010904//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <cc:Work rdf:about="">
+ <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+ <dc:description/>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>hash</rdf:li>
+ <rdf:li/>
+ <rdf:li>action</rdf:li>
+ <rdf:li>computer</rdf:li>
+ <rdf:li>icons</rdf:li>
+ <rdf:li>theme</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org">
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date/>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx=".77073" transform="scale(-1 1)" height="19.555" width="19.555" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="4.9318" x="-38.605" stroke-width="3.125" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" transform="scale(-1 1)" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="-47.461" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path829" stroke-linejoin="round" d="m11.089 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
</svg>
diff --git a/share/pixmaps/begin-end.svg b/share/pixmaps/begin-end.svg
index ba3a377..5579fa7 100644
--- a/share/pixmaps/begin-end.svg
+++ b/share/pixmaps/begin-end.svg
@@ -1,116 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 20010904//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
-<svg
- xmlns="http://www.w3.org/2000/svg"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- height="60.0000000"
- id="svg1"
- inkscape:version="0.38.1"
- sodipodi:docname="/home/oaubert/icons/begin-end.svg"
- sodipodi:version="0.34"
- version="1.0"
- width="60.0000000"
- x="0"
- y="0"
- sodipodi:docbase="/home/oaubert/icons">
- <metadata
- id="metadata603">
- <rdf:RDF
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <cc:Work
- rdf:about="">
- <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
- <dc:description />
- <dc:subject>
- <rdf:Bag>
- <rdf:li>hash</rdf:li>
- <rdf:li />
- <rdf:li>action</rdf:li>
- <rdf:li>computer</rdf:li>
- <rdf:li>icons</rdf:li>
- <rdf:li>theme</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:publisher>
- <cc:Agent
- rdf:about="http://www.openclipart.org">
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:publisher>
- <dc:creator>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:rights>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:rights>
- <dc:date />
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- <cc:License
- rdf:about="http://web.resource.org/cc/PublicDomain">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- id="base"
- inkscape:cx="42.359450"
- inkscape:cy="21.800884"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="685"
- inkscape:window-width="1016"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:zoom="9.8238822"
- pagecolor="#ffffff" />
- <defs
- id="defs3" />
- <rect
- height="19.5551453"
- id="rect827"
- rx="0.77072614"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
- transform="scale(-1,1)"
- width="19.5551453"
- x="-58.1492523"
- y="4.93179989" />
- <rect
- height="24.4095058"
- id="rect828"
- rx="1.12646294"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
- transform="scale(-1,1)"
- width="28.5810299"
- x="-29.8712841"
- y="31.1969681" />
- <path
- d="M 34.54214 3.886746 L 34.54214 56.05553 "
- id="path829"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;" />
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata id="metadata603">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <cc:Work rdf:about="">
+ <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+ <dc:description/>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>hash</rdf:li>
+ <rdf:li/>
+ <rdf:li>action</rdf:li>
+ <rdf:li>computer</rdf:li>
+ <rdf:li>icons</rdf:li>
+ <rdf:li>theme</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org">
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date/>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx=".77073" transform="scale(-1,1)" height="19.555" width="19.555" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="4.9318" x="-58.149" stroke-width="3.125" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" transform="scale(-1,1)" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="-29.871" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path829" stroke-linejoin="round" d="m34.542 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
</svg>
diff --git a/share/pixmaps/create-relations.svg b/share/pixmaps/create-relations.svg
index 16c81b6..4a5938a 100644
--- a/share/pixmaps/create-relations.svg
+++ b/share/pixmaps/create-relations.svg
@@ -1,116 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 20010904//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
-<svg
- xmlns="http://www.w3.org/2000/svg"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- height="60.0000000"
- id="svg1"
- inkscape:version="0.38.1"
- sodipodi:docname="create_relations.svg"
- sodipodi:version="0.34"
- version="1.0"
- width="60.0000000"
- x="0"
- y="0">
- <metadata
- id="metadata603">
- <rdf:RDF
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <cc:Work
- rdf:about="">
- <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
- <dc:description />
- <dc:subject>
- <rdf:Bag>
- <rdf:li>hash</rdf:li>
- <rdf:li />
- <rdf:li>action</rdf:li>
- <rdf:li>computer</rdf:li>
- <rdf:li>icons</rdf:li>
- <rdf:li>theme</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:publisher>
- <cc:Agent
- rdf:about="http://www.openclipart.org">
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:publisher>
- <dc:creator>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:rights>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:rights>
- <dc:date />
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- <cc:License
- rdf:about="http://web.resource.org/cc/PublicDomain">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- id="base"
- inkscape:cx="42.359450"
- inkscape:cy="21.800884"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="685"
- inkscape:window-width="1016"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:zoom="9.8238822"
- pagecolor="#ffffff" />
- <defs
- id="defs3" />
- <rect
- height="19.5551453"
- id="rect827"
- rx="0.77072614"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
- transform="scale(-1,1)"
- width="19.5551453"
- x="-24.924477"
- y="4.93179989" />
- <rect
- height="24.4095058"
- id="rect828"
- rx="1.12646294"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
- transform="scale(-1,1)"
- width="28.5810299"
- x="-53.3240715"
- y="31.1969681" />
- <path
- d="M 19.93695 13.62965 C 35.15077 21.16129 32.57066 33.91648 32.57066 34.03796 L 27.10415 34.03796 L 35.38843 41.12594 L 43.32147 33.97722 L 37.79422 33.97722 C 37.79422 33.97722 40.48656 16.30216 19.93695 13.62965 z "
- id="path968"
- sodipodi:nodetypes="ccccccc"
- sodipodi:stroke-cmyk="(0 0 0 0.8)"
- style="font-size:12;fill:#7f7f7f;fill-rule:evenodd;stroke:#333333;stroke-width:2.777366;stroke-linecap:round;stroke-linejoin:round;" />
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata id="metadata603">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <cc:Work rdf:about="">
+ <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+ <dc:description/>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>hash</rdf:li>
+ <rdf:li/>
+ <rdf:li>action</rdf:li>
+ <rdf:li>computer</rdf:li>
+ <rdf:li>icons</rdf:li>
+ <rdf:li>theme</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org">
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date/>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx=".77073" transform="scale(-1,1)" height="19.555" width="19.555" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="4.9318" x="-24.924" stroke-width="3.125" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" transform="scale(-1,1)" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="-53.324" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path968" stroke-linejoin="round" d="m19.937 13.63c15.214 7.531 12.634 20.286 12.634 20.408h-5.467l8.284 7.088 7.933-7.149h-5.527s2.693-17.675-17.857-20.347z" fill-rule="evenodd" stroke="#333" stroke-linecap="round" stroke-width="2.7774" fill="#7f7f7f"/>
</svg>
diff --git a/share/pixmaps/end-begin.svg b/share/pixmaps/end-begin.svg
index e54b9f7..42236f6 100644
--- a/share/pixmaps/end-begin.svg
+++ b/share/pixmaps/end-begin.svg
@@ -1,116 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 20010904//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
-<svg
- xmlns="http://www.w3.org/2000/svg"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- height="60.0000000"
- id="svg1"
- inkscape:version="0.38.1"
- sodipodi:docname="/home/oaubert/icons/end-begin.svg"
- sodipodi:version="0.34"
- version="1.0"
- width="60.0000000"
- x="0"
- y="0"
- sodipodi:docbase="/home/oaubert/icons">
- <metadata
- id="metadata603">
- <rdf:RDF
- xmlns:cc="http://web.resource.org/cc/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <cc:Work
- rdf:about="">
- <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
- <dc:description />
- <dc:subject>
- <rdf:Bag>
- <rdf:li>hash</rdf:li>
- <rdf:li />
- <rdf:li>action</rdf:li>
- <rdf:li>computer</rdf:li>
- <rdf:li>icons</rdf:li>
- <rdf:li>theme</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:publisher>
- <cc:Agent
- rdf:about="http://www.openclipart.org">
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:publisher>
- <dc:creator>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:rights>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:rights>
- <dc:date />
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <cc:license
- rdf:resource="http://web.resource.org/cc/PublicDomain" />
- <dc:language>en</dc:language>
- </cc:Work>
- <cc:License
- rdf:about="http://web.resource.org/cc/PublicDomain">
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Reproduction" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/Distribution" />
- <cc:permits
- rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview
- bordercolor="#666666"
- borderopacity="1.0"
- id="base"
- inkscape:cx="42.359450"
- inkscape:cy="21.800884"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:window-height="685"
- inkscape:window-width="1016"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:zoom="9.8238822"
- pagecolor="#ffffff" />
- <defs
- id="defs3" />
- <rect
- height="19.5551453"
- id="rect827"
- rx="0.77072614"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
- transform="scale(-1,1)"
- width="19.5551453"
- x="-21.0156819"
- y="4.93179989" />
- <rect
- height="24.4095058"
- id="rect828"
- rx="1.12646294"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;"
- transform="scale(-1,1)"
- width="28.5810299"
- x="-57.2328666"
- y="31.1969681" />
- <path
- d="M 24.77014 3.886746 L 24.77014 56.05553 "
- id="path829"
- sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)"
- style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;" />
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata id="metadata603">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <cc:Work rdf:about="">
+ <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+ <dc:description/>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>hash</rdf:li>
+ <rdf:li/>
+ <rdf:li>action</rdf:li>
+ <rdf:li>computer</rdf:li>
+ <rdf:li>icons</rdf:li>
+ <rdf:li>theme</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org">
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date/>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx=".77073" transform="scale(-1,1)" height="19.555" width="19.555" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="4.9318" x="-21.016" stroke-width="3.125" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" transform="scale(-1,1)" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="-57.233" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path829" stroke-linejoin="round" d="m24.77 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
</svg>
diff --git a/share/pixmaps/end-end.svg b/share/pixmaps/end-end.svg
index 2e2cb0b..53ee559 100644
--- a/share/pixmaps/end-end.svg
+++ b/share/pixmaps/end-end.svg
@@ -1,53 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<!-- Created with Inkscape (http://www.inkscape.org/) --><svg height="60.0000000" id="svg1" inkscape:version="0.38.1" sodipodi:docbase="/home/danny/flat/scalable/actions" sodipodi:docname="aoright.svg" sodipodi:version="0.32" version="1.0" width="60.0000000" x="0" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" y="0">
- <metadata>
- <rdf:RDF xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <cc:Work rdf:about="">
- <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
- <dc:description></dc:description>
- <dc:subject>
- <rdf:Bag>
- <rdf:li>hash</rdf:li>
- <rdf:li></rdf:li>
- <rdf:li>action</rdf:li>
- <rdf:li>computer</rdf:li>
- <rdf:li>icons</rdf:li>
- <rdf:li>theme</rdf:li>
- </rdf:Bag>
- </dc:subject>
- <dc:publisher>
- <cc:Agent rdf:about="http://www.openclipart.org">
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:publisher>
- <dc:creator>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:creator>
- <dc:rights>
- <cc:Agent>
- <dc:title>Danny Allen</dc:title>
- </cc:Agent>
- </dc:rights>
- <dc:date></dc:date>
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
- <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
- <dc:language>en</dc:language>
- </cc:Work>
- <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
- <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
- <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
- <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
- </cc:License>
- </rdf:RDF>
- </metadata>
- <sodipodi:namedview bordercolor="#666666" borderopacity="1.0" id="base" inkscape:cx="42.359450" inkscape:cy="21.800884" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="685" inkscape:window-width="1016" inkscape:window-x="0" inkscape:window-y="0" inkscape:zoom="9.8238822" pagecolor="#ffffff"/>
- <defs id="defs3"/>
- <rect height="19.555145" id="rect827" rx="0.77072614" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#b3b3b3;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;" width="19.555145" x="19.944946" y="4.9317999"/>
- <rect height="24.409506" id="rect828" rx="1.1264629" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#4c4c4c;fill-rule:evenodd;stroke:#333333;stroke-width:3.1250000;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:3.1250000 3.1250000 ;stroke-dashoffset:0.0000000;" width="28.581030" x="11.089336" y="31.196968"/>
- <path d="M 47.460870,3.8867457 L 47.460870,56.055531" id="path829" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:3.1250000;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;"/>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 20010904//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg id="svg1" xmlns="http://www.w3.org/2000/svg" height="60" width="60" version="1.0" y="0" x="0" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <cc:Work rdf:about="">
+ <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:29:46 2004)</dc:title>
+ <dc:description/>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>hash</rdf:li>
+ <rdf:li/>
+ <rdf:li>action</rdf:li>
+ <rdf:li>computer</rdf:li>
+ <rdf:li>icons</rdf:li>
+ <rdf:li>theme</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org">
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <dc:date/>
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <cc:license rdf:resource="http://web.resource.org/cc/PublicDomain"/>
+ <dc:language>en</dc:language>
+ </cc:Work>
+ <cc:License rdf:about="http://web.resource.org/cc/PublicDomain">
+ <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+ <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <rect id="rect827" stroke-linejoin="round" fill-rule="evenodd" rx=".77073" height="19.555" width="19.555" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="4.9318" x="19.945" stroke-width="3.125" fill="#b3b3b3"/>
+ <rect id="rect828" stroke-linejoin="round" fill-rule="evenodd" rx="1.1265" height="24.41" width="28.581" stroke="#333" stroke-linecap="round" stroke-dasharray="3.1250000 3.1250000" y="31.197" x="11.089" stroke-width="3.125" fill="#4c4c4c"/>
+ <path id="path829" stroke-linejoin="round" d="m47.461 3.8867v52.169" stroke="#333" stroke-linecap="round" stroke-width="3.125" fill="none"/>
</svg>
diff --git a/share/pixmaps/notavailable.svg b/share/pixmaps/notavailable.svg
index 88f690a..16a70f5 100644
--- a/share/pixmaps/notavailable.svg
+++ b/share/pixmaps/notavailable.svg
@@ -1,231 +1,36 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="744.09448819"
- height="1052.3622047"
- id="svg2"
- version="1.1"
- inkscape:version="0.47 r22583"
- sodipodi:docname="New document 1">
- <defs
- id="defs4">
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective10" />
- <linearGradient
- xlink:href="#linearGradient584"
- id="linearGradient713" />
- <linearGradient
- xlink:href="#linearGradient584"
- id="linearGradient655" />
- <linearGradient
- y2="27.92713"
- y1="27.300219"
- xlink:href="#linearGradient584"
- x2="82.883222"
- x1="8.6040409"
- id="linearGradient654"
- gradientTransform="scale(0.98641893,1.0137681)"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- y2="0.97656250"
- y1="0.00000000"
- xlink:href="#linearGradient584"
- x2="0.99264705"
- x1="-0.00000000"
- id="linearGradient583" />
- <linearGradient
- y2="0.30468750"
- y1="0.29687500"
- xlink:href="#linearGradient584"
- x2="1.7348485"
- x1="0.11363637"
- id="linearGradient581" />
- <linearGradient
- id="linearGradient578">
- <stop
- style="stop-color:#faf8fd;stop-opacity:1.0000000;"
- offset="0.0000000"
- id="stop579" />
- <stop
- style="stop-color:#e7e7ec;stop-opacity:1.0000000;"
- offset="1.0000000"
- id="stop580" />
- </linearGradient>
- <linearGradient
- id="linearGradient584">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0.00000000"
- id="stop585" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1.00000000"
- id="stop586" />
- </linearGradient>
- <inkscape:perspective
- id="perspective3813"
- inkscape:persp3d-origin="30 : 20 : 1"
- inkscape:vp_z="60 : 30 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 30 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.4"
- inkscape:cx="219.58823"
- inkscape:cy="825.15838"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- inkscape:window-width="1185"
- inkscape:window-height="956"
- inkscape:window-x="436"
- inkscape:window-y="85"
- inkscape:window-maximized="0" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <g
- id="g3827"
- transform="translate(95.645286,66.733254)">
- <path
- transform="matrix(1.361979,0,0,1.312826,-11.00257,-10.33036)"
- style="fill:#040000;fill-opacity:0.38709675;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-dasharray:none"
- sodipodi:type="arc"
- sodipodi:ry="19.581497"
- sodipodi:rx="19.033215"
- sodipodi:cy="31.489342"
- sodipodi:cx="32.505283"
- id="path868"
- d="m 51.538498,31.489342 c 0,10.814562 -8.52146,19.581497 -19.033215,19.581497 -10.511754,0 -19.033214,-8.766935 -19.033214,-19.581497 0,-10.814563 8.52146,-19.581497 19.033214,-19.581497 10.511755,0 19.033215,8.766934 19.033215,19.581497 z" />
- <path
- transform="matrix(1.361979,0,0,1.312826,-14.98163,-11.82263)"
- style="fill:url(#linearGradient654);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.48410451;stroke-dasharray:none"
- sodipodi:type="arc"
- sodipodi:ry="19.581497"
- sodipodi:rx="19.033215"
- sodipodi:cy="31.489342"
- sodipodi:cx="32.505283"
- id="path867"
- d="m 51.538498,31.489342 c 0,10.814562 -8.52146,19.581497 -19.033215,19.581497 -10.511754,0 -19.033214,-8.766935 -19.033214,-19.581497 0,-10.814563 8.52146,-19.581497 19.033214,-19.581497 10.511755,0 19.033215,8.766934 19.033215,19.581497 z" />
- <rect
- y="-10.326379"
- x="27.806158"
- width="2.2618494"
- transform="matrix(0.00954856,0.999954,-0.999954,0.00954856,0,0)"
- style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128801"
- ry="0.44765007"
- id="rect867"
- height="4.5154271" />
- <rect
- y="-10.326379"
- x="31.252497"
- width="2.2618494"
- transform="matrix(0.00954856,0.999954,-0.999954,0.00954856,0,0)"
- style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128801"
- ry="0.44765007"
- id="rect869"
- height="4.5154271" />
- <rect
- y="8.7426128"
- x="25.558443"
- width="2.2618504"
- style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128816"
- ry="0.44765025"
- id="rect870"
- height="4.515429" />
- <rect
- y="8.7426128"
- x="29.004787"
- width="2.2618504"
- style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128816"
- ry="0.44765025"
- id="rect871"
- height="4.515429" />
- <rect
- y="46.965694"
- x="26.341703"
- width="2.2618504"
- style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128816"
- ry="0.44765025"
- id="rect872"
- height="4.515429" />
- <rect
- y="46.965694"
- x="29.788048"
- width="2.2618504"
- style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128816"
- ry="0.44765025"
- id="rect873"
- height="4.515429" />
- <rect
- y="-52.152042"
- x="28.048891"
- width="2.2618494"
- transform="matrix(0.00954856,0.999954,-0.999954,0.00954856,0,0)"
- style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128801"
- ry="0.44765007"
- id="rect874"
- height="4.5154271" />
- <rect
- y="-52.152042"
- x="31.495232"
- width="2.2618494"
- transform="matrix(0.00954856,0.999954,-0.999954,0.00954856,0,0)"
- style="fill:#0a0608;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.36128801"
- ry="0.44765007"
- id="rect875"
- height="4.5154271" />
- <path
- style="fill:#060000;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.9311511pt"
- sodipodi:nodetypes="ccccc"
- id="path878"
- d="M 44.363193,2.2659208 C 40.620747,6.212992 31.984577,19.003567 28.862911,24.185346 c -2.525545,4.7451 -4.25612,7.57534 -4.447045,12.371088 3.667771,-2.393283 5.423096,-4.408826 8.19705,-9.573844 C 35.436522,22.01915 42.880723,7.531867 44.363193,2.2659208 z" />
- <path
- style="fill:#060000;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.69347134pt"
- sodipodi:nodetypes="ccccc"
- id="path879"
- d="m 48.606771,25.363257 c -4.154694,0.129301 -15.620391,2.325809 -20.049679,3.407639 -3.865456,1.160226 -6.299312,1.738104 -8.854761,4.113045 3.319414,0.633638 5.351872,0.488327 9.573655,-0.761892 4.147372,-1.121027 15.796492,-4.799024 19.330785,-6.758792 z" />
- </g>
- <rect
- y="37.362183"
- x="45.714287"
- height="120"
- width="160"
- id="rect3590"
- style="fill:#d8d8d8;fill-opacity:0.73305082;stroke:#bababa;stroke-width:3;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="1052.4" width="744.09" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <defs id="defs4">
+ <linearGradient id="linearGradient654" y2="27.927" gradientUnits="userSpaceOnUse" x2="82.883" gradientTransform="scale(.98642 1.0138)" y1="27.3" x1="8.604">
+ <stop id="stop585" stop-color="#fff" offset="0"/>
+ <stop id="stop586" stop-color="#fff" stop-opacity="0" offset="1"/>
+ </linearGradient>
+ </defs>
+ <metadata id="metadata7">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ <dc:title/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g id="layer1">
+ <g id="g3827" fill-rule="evenodd" transform="translate(95.645 66.733)">
+ <path id="path868" d="m51.538 31.489c0 10.815-8.5215 19.581-19.033 19.581s-19.033-8.7669-19.033-19.581c0-10.815 8.5215-19.581 19.033-19.581s19.033 8.7669 19.033 19.581z" fill-opacity=".38710" transform="matrix(1.362 0 0 1.3128 -11.003 -10.33)" stroke-width="0" fill="#040000"/>
+ <path id="path867" d="m51.538 31.489c0 10.815-8.5215 19.581-19.033 19.581s-19.033-8.7669-19.033-19.581c0-10.815 8.5215-19.581 19.033-19.581s19.033 8.7669 19.033 19.581z" transform="matrix(1.362 0 0 1.3128 -14.982 -11.823)" stroke="#000" stroke-width="1.4841" fill="url(#linearGradient654)"/>
+ <rect id="rect867" stroke-width=".36129" fill-opacity=".75" transform="matrix(.0095486 .99995 -.99995 .0095486 0 0)" ry=".44765" width="2.2618" stroke="#000" y="-10.326" x="27.806" height="4.5154" fill="#0a0608"/>
+ <rect id="rect869" stroke-width=".36129" fill-opacity=".75" transform="matrix(.0095486 .99995 -.99995 .0095486 0 0)" ry=".44765" width="2.2618" stroke="#000" y="-10.326" x="31.252" height="4.5154" fill="#0a0608"/>
+ <rect id="rect870" fill-opacity=".75" ry=".44765" height="4.5154" width="2.2619" stroke="#000" y="8.7426" x="25.558" stroke-width=".36129" fill="#0a0608"/>
+ <rect id="rect871" fill-opacity=".75" ry=".44765" height="4.5154" width="2.2619" stroke="#000" y="8.7426" x="29.005" stroke-width=".36129" fill="#0a0608"/>
+ <rect id="rect872" fill-opacity=".75" ry=".44765" height="4.5154" width="2.2619" stroke="#000" y="46.966" x="26.342" stroke-width=".36129" fill="#0a0608"/>
+ <rect id="rect873" fill-opacity=".75" ry=".44765" height="4.5154" width="2.2619" stroke="#000" y="46.966" x="29.788" stroke-width=".36129" fill="#0a0608"/>
+ <rect id="rect874" stroke-width=".36129" fill-opacity=".75" transform="matrix(.0095486 .99995 -.99995 .0095486 0 0)" ry=".44765" width="2.2618" stroke="#000" y="-52.152" x="28.049" height="4.5154" fill="#0a0608"/>
+ <rect id="rect875" stroke-width=".36129" fill-opacity=".75" transform="matrix(.0095486 .99995 -.99995 .0095486 0 0)" ry=".44765" width="2.2618" stroke="#000" y="-52.152" x="31.495" height="4.5154" fill="#0a0608"/>
+ <path id="path878" d="m44.363 2.2659c-3.742 3.9471-12.378 16.738-15.5 21.919-2.5255 4.7451-4.2561 7.5753-4.447 12.371 3.6678-2.3933 5.4231-4.4088 8.197-9.5738 2.824-4.963 10.268-19.45 11.75-24.716z" fill-opacity=".75" stroke="#000" stroke-width=".93115pt" fill="#060000"/>
+ <path id="path879" d="m48.607 25.363c-4.1547 0.1293-15.62 2.3258-20.05 3.4076-3.8655 1.1602-6.2993 1.7381-8.8548 4.113 3.3194 0.63364 5.3519 0.48833 9.5737-0.76189 4.1474-1.121 15.796-4.799 19.331-6.7588z" fill-opacity=".75" stroke="#000" stroke-width=".69347pt" fill="#060000"/>
</g>
+ <rect id="rect3590" stroke-linejoin="round" fill-opacity=".73305" height="120" width="160" stroke="#bababa" y="37.362" x="45.714" stroke-width="3" fill="#d8d8d8"/>
+ </g>
</svg>
diff --git a/share/pixmaps/small_locked.png b/share/pixmaps/small_locked.png
new file mode 100644
index 0000000..b1fb09d
Binary files /dev/null and b/share/pixmaps/small_locked.png differ
diff --git a/share/pixmaps/snapshotter-running.png b/share/pixmaps/snapshotter-running.png
index a8b75f5..9931b10 100644
Binary files a/share/pixmaps/snapshotter-running.png and b/share/pixmaps/snapshotter-running.png differ
diff --git a/share/web/HTML5/advene.js b/share/web/HTML5/advene.js
index 6689df1..4524476 100644
--- a/share/web/HTML5/advene.js
+++ b/share/web/HTML5/advene.js
@@ -97,6 +97,7 @@ $.widget("ui.video", {
"error",
"loadedfirstframe",
"loadedmetadata",
+ "loadeddata",
"loadstart",
"pause",
"play",
@@ -330,7 +331,6 @@ $.widget("ui.video", {
_stop: function() {
var self = this;
self.stop();
- $(".activeTranscript").each( $(this).removeClass("activeTranscript") );
},
_tooglePlayLoop: function() {
var self = this;
@@ -403,13 +403,28 @@ $.widget("ui.video", {
// Event handling
_event_progress: function(e) {
var self = this;
- var lengthComputable = e.originalEvent.lengthComputable,
- loaded = e.originalEvent.loaded,
- total = e.originalEvent.total;
- if( lengthComputable ) {
- var fraction = Math.max(Math.min(loaded / total,1),0);
- this._bufferStatus.width(Math.max(fraction * self._timeLinerSliderAbsoluteWidth));
+ // Cf https://github.com/aFarkas/jMediaelement/blob/1.1.3/src/mm.base-api.js#L312 for more complete implementation
+ if (this.buffered && this.buffered.length) {
+ // current w3 spec using buffered TimeRange
+ fraction = this.buffered.end(0) / this.duration;
+ this._bufferStatus.width(fraction * self._timeLinerSliderAbsoluteWidth);
+ self._waiting.text("Loaded " + str(fraction*100) + "%...");
+ } else if (e.originalEvent && 'lengthComputable' in e.originalEvent && e.originalEvent.loaded) {
+ // Firefox/old webkits
+ var lengthComputable = e.originalEvent.lengthComputable,
+ loaded = e.originalEvent.loaded,
+ total = e.originalEvent.total;
+ if( total && lengthComputable ) {
+ var fraction = Math.max(Math.min(loaded / total, 1), 0);
+
+ this._bufferStatus.width(fraction * self._timeLinerSliderAbsoluteWidth);
+ self._waiting.text("Loaded " + str(fraction*100) + "%...");
+ }
+ else
+ {
+ self._waiting.text("Loaded " + (loaded / 1024) + " Kbytes...");
+ }
}
},
_event_seeked: function() {
@@ -420,6 +435,14 @@ $.widget("ui.video", {
var self = this;
self._hideWaiting();
},
+ _event_loadeddata: function() {
+ var self = this;
+ self._hideWaiting();
+ },
+ _event_canplaythrough: function() {
+ var self = this;
+ self._hideWaiting();
+ },
_event_loadstart: function() {
var self = this;
self._showWaiting("Loading...");
@@ -458,6 +481,11 @@ $.widget("ui.video", {
var duration = self.element[0].duration;
var currentTime = self.element[0].currentTime;
+ if( self._waitingId ) {
+ // Should not be "Waiting"
+ self._hideWaiting();
+ }
+
if (self.options.fragmentPlay) {
if (currentTime < self.options.startPoint) {
self.element[0].currentTime = self.options.startPoint
@@ -599,12 +627,9 @@ $.widget("ui.video", {
_event_keydown: function(e) {
var self = this;
+ var handled_event = true;
if (!e)
- var e = window.event
- // handle event and stop propagating it!
- e.cancelBubble = true;
- if (e.preventDefault) e.preventDefault();
- if (e.stopPropagation) e.stopPropagation();
+ var e = window.event;
switch (e.keyCode){
case 32: // Space
@@ -628,6 +653,17 @@ $.widget("ui.video", {
case 27: // Escape
self.stop();
break;
+ default:
+ handled_event = false;
+ }
+ if (! handled_event) {
+ // handled event, stop propagating it!
+ e.cancelBubble = true;
+ if (e.preventDefault) e.preventDefault();
+ if (e.stopPropagation) e.stopPropagation();
+ return false;
+ } else {
+ return true;
}
},
@@ -643,8 +679,8 @@ $.widget("ui.video", {
// Trigger Events manually
triggerKeyBoardEvent: function(e) {
- var self = this;
- self._event_keydown(e);
+ var self = this;
+ return self._event_keydown(e);
},
getIntrinsicWidth: function() {
@@ -672,7 +708,7 @@ $.widget("ui.video", {
self._timeLinerSlider.slider('value', 0);
self._currentProgressSpan.text(_formatTime(0));
- $(".activeTranscript").each( $(this).removeClass("activeTranscript") );
+ $(".activeTranscript").each( function() { $(this).removeClass("activeTranscript") } );
},
mute: function() {
var self = this;
@@ -972,9 +1008,8 @@ $.widget("ui.video", {
// Capture CTRL + KEY events and forward them to the video widget of the main player
document.onkeydown = function(e) {
- if (event.ctrlKey == 1) {
+ if (e.ctrlKey == 1) {
uiPlayer.find('video', this).video('triggerKeyBoardEvent', e);
- return false;
}
}
@@ -1031,7 +1066,7 @@ $.widget("ui.video", {
begin = $(self).attr('data-begin');
end = $(self).attr('data-end');
$(".transcript[data-begin]", $(document)).each( function() {
- if (Math.max(begin, $(this).attr('data-begin')) <= Math.min(end, $(this).attr('data-end'))) {
+ if (Math.max(begin, $(this).attr('data-begin')) < Math.min(end, $(this).attr('data-end'))) {
$(this).addClass('relatedTranscript');
}
});
@@ -1043,7 +1078,7 @@ $.widget("ui.video", {
}
$("body").append("<div class='player_container' style='position:relative; overflow:visible; '>" +
- "<video preload='auto' autoplay='true' style='overflow:visible; width:100%; height:auto; border:thick #00FF00; top:10; bottom:10;right:10;left:10; ' src='" + video_url + "'>" +
+ "<video preload='auto' style='overflow:visible; width:100%; height:auto; border:thick #00FF00; top:10; bottom:10;right:10;left:10; ' src='" + video_url + "'>" +
"</video></div>");
playerOptions = { title:'Advene main player',
@@ -1053,6 +1088,30 @@ $.widget("ui.video", {
for (key in options)
playerOptions[key] = options[key];
$('.player_container').player( playerOptions );
+
+ check_hash = function () {
+ // Check location.hash. If it is set, we look for the
+ // first child containing a time reference and start
+ // playing from this position.
+ if (window.location.hash.length) {
+ hash = window.location.hash.substr(1);
+ nodes = $("[name="+hash+"]").find('[data-begin]:first');
+ if (! nodes.length) {
+ // Not found in children. Try in the siblings.
+ nodes = $("[name="+hash+"]").siblings().find('[data-begin]:first');
+ }
+ if (nodes.length) {
+ //console.log("Playing directly at " + nodes.attr('data-begin'));
+ $('.player_container').player('fragmentPlay',
+ nodes.attr('data-begin'),
+ nodes.attr('data-end'));
+ }
+ }
+ }
+ // For initial document loading
+ check_hash();
+ // When following links inside the same document
+ window.onhashchange = function () { check_hash() };
},
'overlay': function() {
@@ -1198,7 +1257,7 @@ $.widget("ui.video", {
'startPoint': self.options.start_point,
'endPoint': self.options.end_point,
'poster':'resources/HTML5/advene_logo.png',
- 'autoPlay': true
+ 'autoPlay': false
});
parentC = $(self).parent();
diff --git a/share/web/HTML5/style.css b/share/web/HTML5/style.css
index 811028a..0da575f 100644
--- a/share/web/HTML5/style.css
+++ b/share/web/HTML5/style.css
@@ -27,8 +27,7 @@
position: absolute;
right: 10px;
top: 4px;
- font:caption;
- font:bolder;
+ font-style:bold;
color:white;
background-color:#333333
}
@@ -243,8 +242,8 @@
overflow:visible;
text-align:center;
margin: 0;
- padding: 5;
- border: 2;
+ padding: 5 5;
+ border: 2 2;
}
.ui-video-widget {
@@ -255,10 +254,10 @@
text-align: center;
}
-.ui-dialog .ui-dialog-content { border: 0; padding: 0 !important;margin:0% !important; overflow: auto; zoom: 1;background-color: #C1CDCD ;}
+.ui-dialog .ui-dialog-content { border: 0; padding: 0 !important;margin:0% !important; overflow: auto; background-color: #C1CDCD ;}
.ui-dialog .ui-dialog-titlebar { padding: .3em .0em .0em 0em; position: relative; height:10 !important; text-align:left;background-image: none;background-color: #B9D3EE ;border-color:#42426F}
-.ui-dialog .ui-dialog-title { float: right; margin-top:-5; font-size:12px; color:#2F4F4F; font-style: bolder;font-variant: small-caps; }
+.ui-dialog .ui-dialog-title { float: right; margin-top:-5; font-size:12px; color:#2F4F4F; font-style: bold;font-variant: small-caps; }
@@ -282,7 +281,7 @@
.ui-dialog .ui-dialog-titlebar-nostickonwindow{float: left; left:.83em; top: 50%; width: 19px; margin: -6px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-nostickonwindow span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-nostickonwindow:hover, .ui-dialog .ui-dialog-titlebar-nostickonwindow:focus { padding: 0; }
-.ui-dialog-fragment-title{position:absolute; top:30; left:10;width:auto;height:auto;font-size:12; color:white;oveflow:visible;}
+.ui-dialog-fragment-title{position:absolute; top:30; left:10;width:auto;height:auto;font-size:12; color:white;overflow:visible;}
/* SCREENSHOT OVERLAY */
.image-overlay { list-style: none; text-align: left; }
--
advene packaging
More information about the pkg-multimedia-commits
mailing list