This commit is contained in:
Jean-Francois Dockes 2014-09-11 08:40:09 +02:00
parent 7b4c1d8859
commit 1c0d3bd8cf
74 changed files with 3893 additions and 2522 deletions

View file

@ -12,18 +12,18 @@ More documentation can be found in the doc/ directory or at http://www.recoll.or
---------------------------------------------------------------------- ----------------------------------------------------------------------
Chapter 5. Installation and configuration Chapter 5. Installation and configuration
5.1. Installing a binary copy 5.1. Installing a binary copy
There are three types of binary Recoll installations: There are three types of binary Recoll installations:
o Through your system normal software distribution framework (ie, * Through your system normal software distribution framework (ie,
Debian/Ubuntu apt, FreeBSD ports, etc.). Debian/Ubuntu apt, FreeBSD ports, etc.).
o From a package downloaded from the Recoll web site. * From a package downloaded from the Recoll web site.
o From a prebuilt tree downloaded from the Recoll web site. * From a prebuilt tree downloaded from the Recoll web site.
In all cases, the strict software dependancies (ie on Xapian or iconv) In all cases, the strict software dependancies (ie on Xapian or iconv)
will be automatically satisfied, you should not have to worry about them. will be automatically satisfied, you should not have to worry about them.
@ -58,7 +58,7 @@ Chapter 5. Installation and configuration
---------------------------------------------------------------------- ----------------------------------------------------------------------
Prev Next Prev Next
4.3. API Home 5.2. Supporting packages 4.3. API Home 5.2. Supporting packages
Link: home: Recoll user manual Link: home: Recoll user manual
Link: up: Chapter 5. Installation and configuration Link: up: Chapter 5. Installation and configuration
Link: prev: Chapter 5. Installation and configuration Link: prev: Chapter 5. Installation and configuration
@ -101,64 +101,64 @@ Chapter 5. Installation and configuration
Now for the list: Now for the list:
o Openoffice files need unzip and xsltproc. * Openoffice files need unzip and xsltproc.
o PDF files need pdftotext which is part of the Xpdf or Poppler * PDF files need pdftotext which is part of the Xpdf or Poppler
packages. packages.
o Postscript files need pstotext. The original version has an issue with * Postscript files need pstotext. The original version has an issue with
shell character in file names, which is corrected in recent packages. shell character in file names, which is corrected in recent packages.
See http://www.recoll.org/features.html for more detail. See http://www.recoll.org/features.html for more detail.
o MS Word needs antiword. It is also useful to have wvWare installed as * MS Word needs antiword. It is also useful to have wvWare installed as
it may be be used as a fallback for some files which antiword does not it may be be used as a fallback for some files which antiword does not
handle. handle.
o MS Excel and PowerPoint are processed by internal Python handlers. * MS Excel and PowerPoint are processed by internal Python handlers.
o MS Open XML (docx) needs xsltproc. * MS Open XML (docx) needs xsltproc.
o Wordperfect files need wpd2html from the libwpd (or libwpd-tools on * Wordperfect files need wpd2html from the libwpd (or libwpd-tools on
Ubuntu) package. Ubuntu) package.
o RTF files need unrtf, which, in its standard version, has much trouble * RTF files need unrtf, which, in its standard version, has much trouble
with non-western character sets. Check with non-western character sets. Check
http://www.recoll.org/features.html. http://www.recoll.org/features.html.
o TeX files need untex or detex. Check * TeX files need untex or detex. Check
http://www.recoll.org/features.html for sources if it's not packaged http://www.recoll.org/features.html for sources if it's not packaged
for your distribution. for your distribution.
o dvi files need dvips. * dvi files need dvips.
o djvu files need djvutxt and djvused from the DjVuLibre package. * djvu files need djvutxt and djvused from the DjVuLibre package.
o Audio files: Recoll releases 1.14 and later use a single Python * Audio files: Recoll releases 1.14 and later use a single Python
handler based on mutagen for all audio file types. handler based on mutagen for all audio file types.
o Pictures: Recoll uses the Exiftool Perl package to extract tag * Pictures: Recoll uses the Exiftool Perl package to extract tag
information. Most image file formats are supported. Note that there information. Most image file formats are supported. Note that there
may not be much interest in indexing the technical tags (image size, may not be much interest in indexing the technical tags (image size,
aperture, etc.). This is only of interest if you store personal tags aperture, etc.). This is only of interest if you store personal tags
or textual descriptions inside the image files. or textual descriptions inside the image files.
o chm: files in Microsoft help format need Python and the pychm module * chm: files in Microsoft help format need Python and the pychm module
(which needs chmlib). (which needs chmlib).
o ICS: up to Recoll 1.13, iCalendar files need Python and the icalendar * ICS: up to Recoll 1.13, iCalendar files need Python and the icalendar
module. icalendar is not needed for newer versions, which use internal module. icalendar is not needed for newer versions, which use internal
code. code.
o Zip archives need Python (and the standard zipfile module). * Zip archives need Python (and the standard zipfile module).
o Rar archives need Python, the rarfile Python module and the unrar * Rar archives need Python, the rarfile Python module and the unrar
utility. utility.
o Midi karaoke files need Python and the Midi module * Midi karaoke files need Python and the Midi module
o Konqueror webarchive format with Python (uses the Tarfile module). * Konqueror webarchive format with Python (uses the Tarfile module).
o Mimehtml web archive format (support based on the email handler, which * Mimehtml web archive format (support based on the email handler, which
introduces some mild weirdness, but still usable). introduces some mild weirdness, but still usable).
Text, HTML, email folders, and Scribus files are processed internally. Lyx Text, HTML, email folders, and Scribus files are processed internally. Lyx
@ -191,10 +191,10 @@ Chapter 5. Installation and configuration
The shopping list: The shopping list:
o C++ compiler. Up to Recoll version 1.13.04, its absence can manifest * C++ compiler. Up to Recoll version 1.13.04, its absence can manifest
itself by strange messages about a missing iconv_open. itself by strange messages about a missing iconv_open.
o Development files for Xapian core. * Development files for Xapian core.
Important Important
@ -203,14 +203,14 @@ Chapter 5. Installation and configuration
command. Else all Xapian application will crash with an illegal command. Else all Xapian application will crash with an illegal
instruction error. instruction error.
o Development files for Qt 4 . Recoll has not been tested with Qt 5 yet. * Development files for Qt 4 . Recoll has not been tested with Qt 5 yet.
Recoll 1.15.9 was the last version to support Qt 3. If you do not want Recoll 1.15.9 was the last version to support Qt 3. If you do not want
to install or build the Qt Webkit module, Recoll has a configuration to install or build the Qt Webkit module, Recoll has a configuration
option to disable its use (see further). option to disable its use (see further).
o Development files for X11 and zlib. * Development files for X11 and zlib.
o You may also need libiconv. On Linux systems, the iconv interface is * You may also need libiconv. On Linux systems, the iconv interface is
part of libc and you should not need to do anything special. part of libc and you should not need to do anything special.
Check the Recoll download page for up to date version information. Check the Recoll download page for up to date version information.
@ -224,21 +224,21 @@ Chapter 5. Installation and configuration
Configure options: Configure options:
o --without-aspell will disable the code for phonetic matching of search * --without-aspell will disable the code for phonetic matching of search
terms. terms.
o --with-fam or --with-inotify will enable the code for real time * --with-fam or --with-inotify will enable the code for real time
indexing. Inotify support is enabled by default on recent Linux indexing. Inotify support is enabled by default on recent Linux
systems. systems.
o --with-qzeitgeist will enable sending Zeitgeist events about the * --with-qzeitgeist will enable sending Zeitgeist events about the
visited search results, and needs the qzeitgeist package. visited search results, and needs the qzeitgeist package.
o --disable-webkit is available from version 1.17 to implement the * --disable-webkit is available from version 1.17 to implement the
result list with a Qt QTextBrowser instead of a WebKit widget if you result list with a Qt QTextBrowser instead of a WebKit widget if you
do not or can't depend on the latter. do not or can't depend on the latter.
o --disable-idxthreads is available from version 1.19 to suppress * --disable-idxthreads is available from version 1.19 to suppress
multithreading inside the indexing process. You can also use the multithreading inside the indexing process. You can also use the
run-time configuration to restrict recollindex to using a single run-time configuration to restrict recollindex to using a single
thread, but the compile-time option may disable a few more unused thread, but the compile-time option may disable a few more unused
@ -246,37 +246,37 @@ Chapter 5. Installation and configuration
index processing (data input). The Recoll monitor mode always uses at index processing (data input). The Recoll monitor mode always uses at
least two threads of execution. least two threads of execution.
o --disable-python-module will avoid building the Python module. * --disable-python-module will avoid building the Python module.
o --disable-xattr will prevent fetching data from file extended * --disable-xattr will prevent fetching data from file extended
attributes. Beyond a few standard attributes, fetching extended attributes. Beyond a few standard attributes, fetching extended
attributes data can only be useful is some application stores data in attributes data can only be useful is some application stores data in
there, and also needs some simple configuration (see comments in the there, and also needs some simple configuration (see comments in the
fields configuration file). fields configuration file).
o --enable-camelcase will enable splitting camelCase words. This is not * --enable-camelcase will enable splitting camelCase words. This is not
enabled by default as it has the unfortunate side-effect of making enabled by default as it has the unfortunate side-effect of making
some phrase searches quite confusing: ie, "MySQL manual" would be some phrase searches quite confusing: ie, "MySQL manual" would be
matched by "MySQL manual" and "my sql manual" but not "mysql manual" matched by "MySQL manual" and "my sql manual" but not "mysql manual"
(only inside phrase searches). (only inside phrase searches).
o --with-file-command Specify the version of the 'file' command to use * --with-file-command Specify the version of the 'file' command to use
(ie: --with-file-command=/usr/local/bin/file). Can be useful to enable (ie: --with-file-command=/usr/local/bin/file). Can be useful to enable
the gnu version on systems where the native one is bad. the gnu version on systems where the native one is bad.
o --disable-qtgui Disable the Qt interface. Will allow building the * --disable-qtgui Disable the Qt interface. Will allow building the
indexer and the command line search program in absence of a Qt indexer and the command line search program in absence of a Qt
environment. environment.
o --disable-x11mon Disable X11 connection monitoring inside recollindex. * --disable-x11mon Disable X11 connection monitoring inside recollindex.
Together with --disable-qtgui, this allows building recoll without Qt Together with --disable-qtgui, this allows building recoll without Qt
and X11. and X11.
o --disable-pic will compile Recoll with position-dependant code. This * --disable-pic will compile Recoll with position-dependant code. This
is incompatible with building the KIO or the Python or PHP extensions, is incompatible with building the KIO or the Python or PHP extensions,
but might yield very marginally faster code. but might yield very marginally faster code.
o Of course the usual autoconf configure options, like --prefix apply. * Of course the usual autoconf configure options, like --prefix apply.
Normal procedure: Normal procedure:
@ -318,14 +318,14 @@ Chapter 5. Installation and configuration
---------------------------------------------------------------------- ----------------------------------------------------------------------
Prev Up Next Prev Up Next
5.2. Supporting packages Home 5.4. Configuration overview 5.2. Supporting packages Home 5.4. Configuration overview
Link: home: Recoll user manual Link: home: Recoll user manual
Link: up: Chapter 5. Installation and configuration Link: up: Chapter 5. Installation and configuration
Link: prev: 5.3. Building from source Link: prev: 5.3. Building from source
5.4. Configuration overview 5.4. Configuration overview
Prev Chapter 5. Installation and configuration Prev Chapter 5. Installation and configuration
---------------------------------------------------------------------- ----------------------------------------------------------------------
@ -395,11 +395,11 @@ Chapter 5. Installation and configuration
There are three kinds of lines: There are three kinds of lines:
o Comment (starts with #) or empty. * Comment (starts with #) or empty.
o Parameter affectation (name = value). * Parameter affectation (name = value).
o Section definition ([somedirname]). * Section definition ([somedirname]).
Depending on the type of configuration file, section definitions either Depending on the type of configuration file, section definitions either
separate groups of parameters or allow redefining some parameters for a separate groups of parameters or allow redefining some parameters for a
@ -418,12 +418,12 @@ Chapter 5. Installation and configuration
Encoding issues. Most of the configuration parameters are plain ASCII. Two Encoding issues. Most of the configuration parameters are plain ASCII. Two
particular sets of values may cause encoding issues: particular sets of values may cause encoding issues:
o File path parameters may contain non-ascii characters and should use * File path parameters may contain non-ascii characters and should use
the exact same byte values as found in the file system directory. the exact same byte values as found in the file system directory.
Usually, this means that the configuration file should use the system Usually, this means that the configuration file should use the system
default locale encoding. default locale encoding.
o The unac_except_trans parameter should be encoded in UTF-8. If your * The unac_except_trans parameter should be encoded in UTF-8. If your
system locale is not UTF-8, and you need to also specify non-ascii system locale is not UTF-8, and you need to also specify non-ascii
file paths, this poses a difficulty because common text editors cannot file paths, this poses a difficulty because common text editors cannot
handle multiple encodings in a single file. In this relatively handle multiple encodings in a single file. In this relatively
@ -578,11 +578,17 @@ Chapter 5. Installation and configuration
usesystemfilecommand usesystemfilecommand
Decide if we use the file -i system command as a final step for Decide if we execute a system command (file -i by default) as a
determining the MIME type for a file (the main procedure uses final step for determining the MIME type for a file (the main
suffix associations as defined in the mimemap file). This can be procedure uses suffix associations as defined in the mimemap
useful for files with suffix-less names, but it will also cause file). This can be useful for files with suffix-less names, but it
the indexing of many bogus "text" files. will also cause the indexing of many bogus "text" files.
systemfilecommand
Command to use for mime for mime type determination if
usesystefilecommand is set. Recent versions of xdg-mime sometimes
work better than file.
processwebqueue processwebqueue
@ -1004,7 +1010,7 @@ Chapter 5. Installation and configuration
obtain the desired behaviour. obtain the desired behaviour.
We will only give a short description here, you should refer to the We will only give a short description here, you should refer to the
comments inside the file for more detailed information. comments inside the default file for more detailed information.
Field names should be lowercase alphabetic ASCII. Field names should be lowercase alphabetic ASCII.
@ -1023,6 +1029,13 @@ Chapter 5. Installation and configuration
This section defines lists of synonyms for the canonical names This section defines lists of synonyms for the canonical names
used inside the [prefixes] and [stored] sections used inside the [prefixes] and [stored] sections
[queryaliases]
This section also defines aliases for the canonic field names,
with the difference that the substitution will only be used at
query time, avoiding any possibility that the value would pick-up
random metadata from documents.
handler-specific sections handler-specific sections
Some input handlers may need specific configuration for handling Some input handlers may need specific configuration for handling
@ -1046,6 +1059,10 @@ Chapter 5. Installation and configuration
# displayed - as %(mailmytag) - in result lists). # displayed - as %(mailmytag) - in result lists).
mailmytag = mailmytag =
[queryaliases]
filename = fn
containerfilename = cfn
[mail] [mail]
# Extract the X-My-Tag mail header, and use it internally with the # Extract the X-My-Tag mail header, and use it internally with the
# mailmytag field name # mailmytag field name
@ -1139,31 +1156,29 @@ Chapter 5. Installation and configuration
The right side of each assignment holds a command to be executed for The right side of each assignment holds a command to be executed for
opening the file. The following substitutions are performed: opening the file. The following substitutions are performed:
o %D. Document date * %D. Document date
o %f. File name. This may be the name of a temporary file if it was * %f. File name. This may be the name of a temporary file if it was
necessary to create one (ie: to extract a subdocument from a necessary to create one (ie: to extract a subdocument from a
container). container).
o %F. Original file name. Same as %f except if a temporary file is used. * %i. Internal path, for subdocuments of containers. The format depends
o %i. Internal path, for subdocuments of containers. The format depends
on the container type. If this appears in the command line, Recoll on the container type. If this appears in the command line, Recoll
will not create a temporary file to extract the subdocument, expecting will not create a temporary file to extract the subdocument, expecting
the called application (possibly a script) to be able to handle it. the called application (possibly a script) to be able to handle it.
o %M. MIME type * %M. MIME type
o %p. Page index. Only significant for a subset of document types, * %p. Page index. Only significant for a subset of document types,
currently only PDF, Postscript and DVI files. Can be used to start the currently only PDF, Postscript and DVI files. Can be used to start the
editor at the right page for a match or snippet. editor at the right page for a match or snippet.
o %s. Search term. The value will only be set for documents with indexed * %s. Search term. The value will only be set for documents with indexed
page numbers (ie: PDF). The value will be one of the matched search page numbers (ie: PDF). The value will be one of the matched search
terms. It would allow pre-setting the value in the "Find" entry inside terms. It would allow pre-setting the value in the "Find" entry inside
Evince for example, for easy highlighting of the term. Evince for example, for easy highlighting of the term.
o %U, %u. Url. * %u. Url.
In addition to the predefined values above, all strings like %(fieldname) In addition to the predefined values above, all strings like %(fieldname)
will be replaced by the value of the field named fieldname for the will be replaced by the value of the field named fieldname for the
@ -1200,7 +1215,7 @@ Chapter 5. Installation and configuration
You need two entries in the configuration files for this to work: You need two entries in the configuration files for this to work:
o In $RECOLL_CONFDIR/mimemap (typically ~/.recoll/mimemap), add the * In $RECOLL_CONFDIR/mimemap (typically ~/.recoll/mimemap), add the
following line: following line:
.blob = application/x-blobapp .blob = application/x-blobapp
@ -1208,7 +1223,7 @@ Chapter 5. Installation and configuration
Note that the MIME type is made up here, and you could call it Note that the MIME type is made up here, and you could call it
diesel/oil just the same. diesel/oil just the same.
o In $RECOLL_CONFDIR/mimeview under the [view] section, add: * In $RECOLL_CONFDIR/mimeview under the [view] section, add:
application/x-blobapp = blobviewer %f application/x-blobapp = blobviewer %f
@ -1229,16 +1244,16 @@ Chapter 5. Installation and configuration
alteration, and also to add data to the mimeconf file (typically in alteration, and also to add data to the mimeconf file (typically in
~/.recoll/mimeconf): ~/.recoll/mimeconf):
o Under the [index] section, add the following line (more about the * Under the [index] section, add the following line (more about the
rclblob indexing script later): rclblob indexing script later):
application/x-blobapp = exec rclblob application/x-blobapp = exec rclblob
o Under the [icons] section, you should choose an icon to be displayed * Under the [icons] section, you should choose an icon to be displayed
for the files inside the result lists. Icons are normally 64x64 pixels for the files inside the result lists. Icons are normally 64x64 pixels
PNG files which live in /usr/[local/]share/recoll/images. PNG files which live in /usr/[local/]share/recoll/images.
o Under the [categories] section, you should add the MIME type where it * Under the [categories] section, you should add the MIME type where it
makes sense (you can also create a category). Categories may be used makes sense (you can also create a category). Categories may be used
for filtering in advanced search. for filtering in advanced search.
@ -1252,5 +1267,5 @@ Chapter 5. Installation and configuration
---------------------------------------------------------------------- ----------------------------------------------------------------------
Prev Up Prev Up
5.3. Building from source Home 5.3. Building from source Home

File diff suppressed because it is too large Load diff

View file

@ -1 +1 @@
1.20.0 1.20.0p2

View file

@ -847,16 +847,19 @@ bool RclConfig::readFieldsConfig(const string& cnferrloc)
ft.wdfinc = atoi(tval.c_str()); ft.wdfinc = atoi(tval.c_str());
if (attrs.get("boost", tval)) if (attrs.get("boost", tval))
ft.boost = atof(tval.c_str()); ft.boost = atof(tval.c_str());
if (attrs.get("pfxonly", tval))
ft.pfxonly = stringToBool(tval);
m_fldtotraits[stringtolower(*it)] = ft; m_fldtotraits[stringtolower(*it)] = ft;
LOGDEB2(("readFieldsConfig: [%s] -> [%s] %d %.1f\n", LOGDEB2(("readFieldsConfig: [%s] -> [%s] %d %.1f\n",
it->c_str(), ft.pfx.c_str(), ft.wdfinc, ft.boost)); it->c_str(), ft.pfx.c_str(), ft.wdfinc, ft.boost));
} }
// Add prefixes for aliases an build alias-to-canonic map while we're at it // Add prefixes for aliases and build alias-to-canonic map while
// Having the aliases in the prefix map avoids an additional indirection // we're at it. Having the aliases in the prefix map avoids an
// at index time. // additional indirection at index time.
tps = m_fields->getNames("aliases"); tps = m_fields->getNames("aliases");
for (vector<string>::const_iterator it = tps.begin(); it != tps.end();it++) { for (vector<string>::const_iterator it = tps.begin();
it != tps.end(); it++){
string canonic = stringtolower(*it); // canonic name string canonic = stringtolower(*it); // canonic name
FieldTraits ft; FieldTraits ft;
map<string, FieldTraits>::const_iterator pit = map<string, FieldTraits>::const_iterator pit =
@ -876,6 +879,21 @@ bool RclConfig::readFieldsConfig(const string& cnferrloc)
} }
} }
// Query aliases map
tps = m_fields->getNames("queryaliases");
for (vector<string>::const_iterator it = tps.begin();
it != tps.end(); it++){
string canonic = stringtolower(*it); // canonic name
string aliases;
m_fields->get(canonic, aliases, "queryaliases");
vector<string> l;
stringToStrings(aliases, l);
for (vector<string>::const_iterator ait = l.begin();
ait != l.end(); ait++) {
m_aliastoqcanon[stringtolower(*ait)] = canonic;
}
}
#if 0 #if 0
for (map<string, FieldTraits>::const_iterator it = m_fldtotraits.begin(); for (map<string, FieldTraits>::const_iterator it = m_fldtotraits.begin();
it != m_fldtotraits.end(); it++) { it != m_fldtotraits.end(); it++) {
@ -907,10 +925,10 @@ bool RclConfig::readFieldsConfig(const string& cnferrloc)
} }
// Return specifics for field name: // Return specifics for field name:
bool RclConfig::getFieldTraits(const string& _fld, const FieldTraits **ftpp) bool RclConfig::getFieldTraits(const string& _fld, const FieldTraits **ftpp,
const bool isquery) const
{ {
string fld = fieldCanon(_fld); string fld = isquery ? fieldQCanon(_fld) : fieldCanon(_fld);
map<string, FieldTraits>::const_iterator pit = m_fldtotraits.find(fld); map<string, FieldTraits>::const_iterator pit = m_fldtotraits.find(fld);
if (pit != m_fldtotraits.end()) { if (pit != m_fldtotraits.end()) {
*ftpp = &pit->second; *ftpp = &pit->second;
@ -949,6 +967,18 @@ string RclConfig::fieldCanon(const string& f) const
return fld; return fld;
} }
string RclConfig::fieldQCanon(const string& f) const
{
string fld = stringtolower(f);
map<string, string>::const_iterator it = m_aliastoqcanon.find(fld);
if (it != m_aliastoqcanon.end()) {
LOGDEB1(("RclConfig::fieldQCanon: [%s] -> [%s]\n",
f.c_str(), it->second.c_str()));
return it->second;
}
return fieldCanon(f);
}
vector<string> RclConfig::getFieldSectNames(const string &sk, const char* patrn) vector<string> RclConfig::getFieldSectNames(const string &sk, const char* patrn)
const const
{ {
@ -1420,6 +1450,7 @@ void RclConfig::initFrom(const RclConfig& r)
m_ptrans = new ConfSimple(*(r.m_ptrans)); m_ptrans = new ConfSimple(*(r.m_ptrans));
m_fldtotraits = r.m_fldtotraits; m_fldtotraits = r.m_fldtotraits;
m_aliastocanon = r.m_aliastocanon; m_aliastocanon = r.m_aliastocanon;
m_aliastoqcanon = r.m_aliastoqcanon;
m_storedFields = r.m_storedFields; m_storedFields = r.m_storedFields;
m_xattrtofld = r.m_xattrtofld; m_xattrtofld = r.m_xattrtofld;
if (r.m_stopsuffixes) if (r.m_stopsuffixes)

View file

@ -65,9 +65,11 @@ struct FieldTraits {
string pfx; // indexing prefix, string pfx; // indexing prefix,
int wdfinc; // Index time term frequency increment (default 1) int wdfinc; // Index time term frequency increment (default 1)
double boost; // Query time boost (default 1.0) double boost; // Query time boost (default 1.0)
FieldTraits(int i, double f) {wdfinc = i; boost = f;} bool pfxonly; // Suppress prefix-less indexing
FieldTraits() : wdfinc(1), boost(1.0) {}
FieldTraits(const string& s) : pfx(s), wdfinc(1), boost(1.0) {} FieldTraits()
: wdfinc(1), boost(1.0), pfxonly(false)
{}
}; };
class RclConfig { class RclConfig {
@ -239,8 +241,10 @@ class RclConfig {
/** mimeconf: get query lang frag for named filter */ /** mimeconf: get query lang frag for named filter */
bool getGuiFilter(const string& filtername, string& frag) const; bool getGuiFilter(const string& filtername, string& frag) const;
/** fields: get field prefix from field name */ /** fields: get field prefix from field name. Use additional query
bool getFieldTraits(const string& fldname, const FieldTraits **) const; aliases if isquery is set */
bool getFieldTraits(const string& fldname, const FieldTraits **,
bool isquery = false) const;
const set<string>& getStoredFields() const {return m_storedFields;} const set<string>& getStoredFields() const {return m_storedFields;}
@ -249,6 +253,9 @@ class RclConfig {
/** Get canonic name for possible alias */ /** Get canonic name for possible alias */
string fieldCanon(const string& fld) const; string fieldCanon(const string& fld) const;
/** Get canonic name for possible alias, including query-only aliases */
string fieldQCanon(const string& fld) const;
/** Get xattr name to field names translations */ /** Get xattr name to field names translations */
const map<string, string>& getXattrToField() const {return m_xattrtofld;} const map<string, string>& getXattrToField() const {return m_xattrtofld;}
@ -321,6 +328,7 @@ class RclConfig {
ConfSimple *m_ptrans; // Paths translations ConfSimple *m_ptrans; // Paths translations
map<string, FieldTraits> m_fldtotraits; // Field to field params map<string, FieldTraits> m_fldtotraits; // Field to field params
map<string, string> m_aliastocanon; map<string, string> m_aliastocanon;
map<string, string> m_aliastoqcanon;
set<string> m_storedFields; set<string> m_storedFields;
map<string, string> m_xattrtofld; map<string, string> m_xattrtofld;

View file

@ -656,7 +656,13 @@ bool TextSplit::text_to_words(const string &in)
break; break;
case '#': case '#':
// Keep it only at end of word ... Special case for c# you see... // Keep it only at the beginning of a word (hashtag),
if (m_wordLen == 0) {
m_wordLen += it.appendchartostring(m_span);
STATS_INC_WORDCHARS;
break;
}
// or at the end (special case for c# ...)
if (m_wordLen > 0) { if (m_wordLen > 0) {
int w = whatcc(it[it.getCpos()+1]); int w = whatcc(it[it.getCpos()+1]);
if (w == SPACE || w == '\n' || w == '\r') { if (w == SPACE || w == '\n' || w == '\r') {
@ -729,7 +735,10 @@ bool TextSplit::text_to_words(const string &in)
m_wordLen--; m_wordLen--;
if (!doemit(false, it.getBpos())) if (!doemit(false, it.getBpos()))
return false; return false;
m_wordStart--; // m_wordstart could be 0 here if the span was reset
// for excessive length
if (m_wordStart)
m_wordStart--;
m_wordLen++; m_wordLen++;
} }
goto NORMALCHAR; goto NORMALCHAR;

View file

@ -1,5 +1,4 @@
.\" $Id: recoll.conf.5,v 1.5 2007-07-13 10:18:49 dockes Exp $ (C) 2005 J.F.Dockes\$ .TH RECOLL.CONF 5 "14 November 2012"
.TH RECOLL.CONF 5 "8 January 2006"
.SH NAME .SH NAME
recoll.conf \- main personal configuration file for Recoll recoll.conf \- main personal configuration file for Recoll
.SH DESCRIPTION .SH DESCRIPTION

View file

@ -3,7 +3,7 @@
<!ENTITY RCL "<application>Recoll</application>"> <!ENTITY RCL "<application>Recoll</application>">
<!ENTITY RCLAPPS "<ulink url='http://www.recoll.org/features.html'>http://www.recoll.org/features.html</ulink>"> <!ENTITY RCLAPPS "<ulink url='http://www.recoll.org/features.html'>http://www.recoll.org/features.html</ulink>">
<!ENTITY RCLVERSION "1.19"> <!ENTITY RCLVERSION "1.20">
<!ENTITY XAP "<application>Xapian</application>"> <!ENTITY XAP "<application>Xapian</application>">
<!ENTITY WIKI "http://bitbucket.org/medoc/recoll/wiki/"> <!ENTITY WIKI "http://bitbucket.org/medoc/recoll/wiki/">
]> ]>
@ -22,7 +22,7 @@
</author> </author>
<copyright> <copyright>
<year>2005-2013</year> <year>2005-2014</year>
<holder role="mailto:jfd@recoll.org">Jean-Francois Dockes</holder> <holder role="mailto:jfd@recoll.org">Jean-Francois Dockes</holder>
</copyright> </copyright>
<abstract> <abstract>
@ -1269,6 +1269,11 @@ fs.inotify.max_user_watches=32768
<filename>mimeview</filename></link> configuration file if you find <filename>mimeview</filename></link> configuration file if you find
this more convenient.</para> this more convenient.</para>
<para>Each result entry also has a right-click menu with an
<guilabel>Open With</guilabel> entry. This lets you choose an
application from the list of those which registered with the desktop
for the document MIME type.</para>
<para>The <literal>Preview</literal> and <literal>Open</literal> <para>The <literal>Preview</literal> and <literal>Open</literal>
edit links may not be present for all entries, meaning that edit links may not be present for all entries, meaning that
&RCL; has no configured way to preview a given file type (which &RCL; has no configured way to preview a given file type (which
@ -2031,6 +2036,19 @@ fs.inotify.max_user_watches=32768
also save the result list in CSV format.</para> also save the result list in CSV format.</para>
</formalpara> </formalpara>
<formalpara><title>Changing the GUI geometry</title>
<para>It is possible to configure the GUI in wide form
factor by dragging the toolbars to one of the sides (their
location is remembered between sessions), and moving the
category filters to a menu (can be set in the
<menuchoice>
<guimenu>Preferences</guimenu>
<guimenuitem>GUI configuration</guimenuitem>
<guimenuitem>User interface</guimenuitem>
</menuchoice> panel).</para>
</formalpara>
<formalpara><title>Query explanation</title> <formalpara><title>Query explanation</title>
<para>You can get an exact description of what the query <para>You can get an exact description of what the query
looked for, including stem expansion, and Boolean operators looked for, including stem expansion, and Boolean operators
@ -2421,6 +2439,10 @@ fs.inotify.max_user_watches=32768
<listitem><formalpara><title>%N</title><para>result Number inside <listitem><formalpara><title>%N</title><para>result Number inside
the result page</para></formalpara> the result page</para></formalpara>
</listitem> </listitem>
<listitem><formalpara><title>%P</title><para>Parent folder
Url. In the case of an embedded document, this is the parent folder
for the top level container file.</para></formalpara>
</listitem>
<listitem><formalpara><title>%R</title><para>Relevance <listitem><formalpara><title>%R</title><para>Relevance
percentage</para></formalpara> percentage</para></formalpara>
</listitem> </listitem>
@ -2445,6 +2467,14 @@ fs.inotify.max_user_watches=32768
where <replaceable>docnum</replaceable> (%N) expands to the document where <replaceable>docnum</replaceable> (%N) expands to the document
number inside the result page).</para> number inside the result page).</para>
<para>It is also possible to use a <literal>"F%N"</literal> value
as a link target. This will open the document corresponding to the
<literal>%P</literal> parent folder expansion, usually creating a
file manager window on the folder where the container file
resides. E.g.:
<programlisting>&lt;a href="F%N"&gt;%P&lt;/a&gt;</programlisting>
</para>
<para>In addition to the predefined values above, all strings <para>In addition to the predefined values above, all strings
like <literal>%(fieldname)</literal> will be replaced by the like <literal>%(fieldname)</literal> will be replaced by the
value of the field named <literal>fieldname</literal> for this value of the field named <literal>fieldname</literal> for this
@ -2781,6 +2811,16 @@ text/html [file:///Users/uncrypted-dockes/projets/bateaux/ilur/factEtCie/r
<replaceable>title:prejudice title:pride</replaceable>, and is <replaceable>title:prejudice title:pride</replaceable>, and is
unlikely to find a result.</para> unlikely to find a result.</para>
<para>To save you some typing, recent &RCL; versions (1.20 and later)
interpret a comma-separated list of terms as an AND list inside the
field. Use slash characters ('/') for an OR list. No white space
is allowed. So
<programlisting>author:john,lennon</programlisting> will search for
documents with <literal>john</literal> and <literal>lennon</literal>
inside the <literal>author</literal> field (in any order), and
<programlisting>author:john/ringo</programlisting> would search for
<literal>john</literal> or <literal>ringo</literal>.</para>
<para>Modifiers can be set on a phrase clause, for example to specify <para>Modifiers can be set on a phrase clause, for example to specify
a proximity search (unordered). See a proximity search (unordered). See
<link linkend="RCL.SEARCH.LANG.MODIFIERS">the modifier <link linkend="RCL.SEARCH.LANG.MODIFIERS">the modifier
@ -2811,14 +2851,38 @@ text/html [file:///Users/uncrypted-dockes/projets/bateaux/ilur/factEtCie/r
any).</para> any).</para>
</listitem> </listitem>
<listitem><para><literal>filename</literal> for the document's <listitem><para><literal>filename</literal> for the document's
file name.</para></listitem> file name. This is not necessarily set for all documents:
internal documents contained inside a compound one (for example
an EPUB section) do not inherit the container file name any more,
this was replaced by an explicit field (see next). Sub-documents
can still have a specific <literal>filename</literal>, if it is
implied by the document format, for example the attachment file
name for an email attachment.</para></listitem>
<listitem><para><literal>containerfilename</literal>. This is
set for all documents, both top-level and contained
sub-documents, and is always the name of the filesystem directory
entry which contains the data. The terms from this field can
only be matched by an explicit field specification (as opposed
to terms from <literal>filename</literal> which are also indexed
as general document content). This avoids getting matches for
all the sub-documents when searching for the container file
name.</para></listitem>
<listitem><para><literal>ext</literal> specifies the file <listitem><para><literal>ext</literal> specifies the file
name extension (Ex: <literal>ext:html</literal>)</para> name extension (Ex: <literal>ext:html</literal>)</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
<para>&RCL; 1.20 and later have a way to specify aliases for the
field names, which will save typing, for example by aliasing
<literal>filename</literal> to <replaceable>fn</replaceable> or
<literal>containerfilename</literal> to
<replaceable>cfn</replaceable>. See the <link
linkend="RCL.INSTALL.CONFIG.FIELDS">section about the
<filename>fields</filename> file</link></para>
<para>The field syntax also supports a few field-like, but <para>The field syntax also supports a few field-like, but
special, criteria:</para> special, criteria:</para>
@ -5076,8 +5140,8 @@ skippedPaths = ~/somedir/*.txt
</varlistentry> </varlistentry>
<varlistentry><term><varname>usesystemfilecommand</varname></term> <varlistentry><term><varname>usesystemfilecommand</varname></term>
<listitem><para>Decide if we use the <listitem><para>Decide if we execute a system command
<command>file</command> <option>-i</option> system command (<command>file</command> <option>-i</option> by default)
as a final step for determining the MIME type for a file as a final step for determining the MIME type for a file
(the main procedure uses suffix associations as defined in (the main procedure uses suffix associations as defined in
the <filename>mimemap</filename> file). This can be useful the <filename>mimemap</filename> file). This can be useful
@ -5086,6 +5150,14 @@ skippedPaths = ~/somedir/*.txt
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry><term><varname>systemfilecommand</varname></term>
<listitem><para>Command to use for mime for mime type
determination if <literal>usesystefilecommand</literal> is
set. Recent versions of <command>xdg-mime</command> sometimes
work better than <command>file</command>.</para>
</listitem>
</varlistentry>
<varlistentry><term><varname>processwebqueue</varname></term> <varlistentry><term><varname>processwebqueue</varname></term>
<listitem><para>If this is set, process the directory where <listitem><para>If this is set, process the directory where
Web browser plugins copy visited pages for indexing.</para> Web browser plugins copy visited pages for indexing.</para>
@ -5657,7 +5729,8 @@ mondelaypatterns = *.log:20 "this one has spaces*:10"
behaviour.</para> behaviour.</para>
<para>We will only give a short description here, you should refer <para>We will only give a short description here, you should refer
to the comments inside the file for more detailed information.</para> to the comments inside the default file for more detailed
information.</para>
<para>Field names should be lowercase alphabetic ASCII.</para> <para>Field names should be lowercase alphabetic ASCII.</para>
@ -5683,6 +5756,14 @@ mondelaypatterns = *.log:20 "this one has spaces*:10"
and <literal>[stored]</literal> sections</para> and <literal>[stored]</literal> sections</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>[queryaliases]</term>
<listitem><para>This section also defines aliases for the
canonic field names, with the difference that the substitution
will only be used at query time, avoiding any possibility that
the value would pick-up random metadata from documents.</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term>handler-specific sections</term> <term>handler-specific sections</term>
<listitem><para>Some input handlers may need specific <listitem><para>Some input handlers may need specific
@ -5713,6 +5794,10 @@ mailmytag = XMTAG
# displayed - as %(mailmytag) - in result lists). # displayed - as %(mailmytag) - in result lists).
mailmytag = mailmytag =
[queryaliases]
filename = fn
containerfilename = cfn
[mail] [mail]
# Extract the X-My-Tag mail header, and use it internally with the # Extract the X-My-Tag mail header, and use it internally with the
# mailmytag field name # mailmytag field name
@ -5863,11 +5948,6 @@ x-my-tag = mailmytag
from a container).</para></formalpara> from a container).</para></formalpara>
</listitem> </listitem>
<listitem><formalpara><title>%F</title>
<para>Original file name. Same as %f except if a temporary
file is used.</para></formalpara>
</listitem>
<listitem><formalpara><title>%i</title> <listitem><formalpara><title>%i</title>
<para>Internal path, for subdocuments of containers. The <para>Internal path, for subdocuments of containers. The
format depends on the container type. If this appears in the format depends on the container type. If this appears in the
@ -5895,7 +5975,7 @@ x-my-tag = mailmytag
highlighting of the term.</para></formalpara> highlighting of the term.</para></formalpara>
</listitem> </listitem>
<listitem><formalpara><title>%U, %u</title> <listitem><formalpara><title>%u</title>
<para>Url.</para></formalpara> <para>Url.</para></formalpara>
</listitem> </listitem>
</itemizedlist> </itemizedlist>

View file

@ -53,7 +53,7 @@ class PPTDumper(object):
try: try:
dirstrm = strm.getDirectoryStreamByName(dirname) dirstrm = strm.getDirectoryStreamByName(dirname)
except Exception, err: except Exception, err:
error("getDirectoryStreamByName(%s): %s\n" % (dirname,str(err))) error("getDirectoryStreamByName(%s): %s - %s\n" % (dirname,str(err),self.filepath))
# The previous version was killed by the exception # The previous version was killed by the exception
# here, so the equivalent is to break, but maybe there # here, so the equivalent is to break, but maybe there
# is no reason to do so. # is no reason to do so.
@ -119,9 +119,9 @@ def main (args):
try: try:
dumper = PPTDumper(args[0], globals.params) dumper = PPTDumper(args[0], globals.params)
if not dumper.dump(): if not dumper.dump():
error("ppt-dump: dump error\n") error("ppt-dump: dump error " + args[0] + "\n")
except: except:
error("ppt-dump: FAILURE (bad format?)\n") error("ppt-dump: FAILURE (bad format?) " + args[0] + "\n")
if globals.params.dumpText: if globals.params.dumpText:
print(globals.textdump.replace("\r", "\n")) print(globals.textdump.replace("\r", "\n"))

View file

@ -90,23 +90,30 @@ umask 77
checkcmds awk antiword iconv checkcmds awk antiword iconv
# output the result # We need to do some strange stuff to retrieve the status from antiword. Things
# would be simpler if we relied on using bash.
# Explanations:
#http://stackoverflow.com/questions/1221833/bash-pipe-output-and-capture-exit-status
stdintoexitstatus() {
read exitstatus
return $exitstatus
}
# The strange 'BEGIN' setup is to prevent 'file' from thinking this file # The strange 'BEGIN' setup is to prevent 'file' from thinking this file
# is an awk program # is an awk program
$decoder "$infile" | (((($decoder "$infile"; echo $? >&3) |
awk 'BEGIN'\ awk 'BEGIN'\
' { ' {
cont = "" cont = ""
gotdata = 0 gotdata = 0
} }
{ {
if (!($0 ~ /^[ ]*$/)) { if (!($0 ~ /^[ ]*$/) && gotdata == 0) {
print "<html><head><title></title>"
print "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">"
print "</head>\n<body>\n<p>"
gotdata = 1 gotdata = 1
if (gotdata == 0) {
print "<html><head><title></title>"
print "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">"
print "</head>\n<body>\n<p>"
}
} }
$0 = cont $0 $0 = cont $0
cont = "" cont = ""
@ -124,17 +131,19 @@ awk 'BEGIN'\
print "</p><hr><p>" print "</p><hr><p>"
next next
} }
gsub(/&/, "\\&amp;", $0)
gsub(/</, "\\&lt;", $0)
gsub(/>/, "\\&gt;", $0)
print $0 "<br>" if (gotdata == 1) {
gsub(/&/, "\\&amp;", $0)
gsub(/</, "\\&lt;", $0)
gsub(/>/, "\\&gt;", $0)
print $0 "<br>"
}
} }
END { END {
if (gotdata == 0) if (gotdata == 1)
exit(1) print "</p></body></html>"
print "</p></body></html>" }' >&4) 3>&1) | stdintoexitstatus) 4>&1
}'
# Antiword rarely fails, we try to catch the most common reasons: # Antiword rarely fails, we try to catch the most common reasons:

View file

@ -1,22 +1,18 @@
#!/bin/sh #!/bin/sh
# @(#$Id: rclpdf,v 1.10 2007-07-12 17:13:38 dockes Exp $ (C) 2004 J.F.Dockes
# This is copied almost verbatim from Estraier:
#================================================================ #================================================================
# Some parts are Copyright Estraier (GPL v2).
# Estraier: a personal full-text search system # Estraier: a personal full-text search system
# Copyright (C) 2003-2004 Mikio Hirabayashi # Copyright (C) 2003-2004 Mikio Hirabayashi
# Copyright (C) 2014 J.F. Dockes
# This file is licensed under the GPL v2
#================================================================ #================================================================
#================================================================ #================================================================
# Convert a pdf file to HTML. # Convert a pdf file to HTML.
# #
# We use pdftotxt from the xpdf package. This does not perfect results as # We use pdftotext from the xpdf/poppler-utils package.
# whitespace is sometimes either arbitrarily inserted or stripped from the
# text. This seems to depend on the usage of option -raw, and,
# unfortunately also of the document itself, so that there does not seem to
# be an universally good solution
# #
# Also, the filter sometimes seems to output problematic utf-8. I did not # pdftotext sometimes outputs unescaped text inside HTML text sections.
# check if it was actually incorrect or just mis-understood by qtextedit # We try to correct.
# (tobedone)
# Uncomment the following if you get better results without. The # Uncomment the following if you get better results without. The
# pdftotext manual says that the option is no longer recommended The # pdftotext manual says that the option is no longer recommended The
@ -133,6 +129,19 @@ awk 'BEGIN'\
mid = "<title>" mid "</title>" mid = "<title>" mid "</title>"
$0 = part1 mid part2 $0 = part1 mid part2
} }
if(doescape == 0 && $0 ~ /content=".*"\/>/){
match($0, /content=".*"\/>/)
part1 = substr($0, 0, RSTART-1)
mid = substr($0, RSTART, RLENGTH)
part2 = substr($0, RSTART + RLENGTH, length($0))
gsub(/content="/, "", mid)
gsub(/"\/>/, "", mid)
gsub(/&/, "\\&amp;", mid)
gsub(/</, "\\&lt;", mid)
gsub(/>/, "\\&gt;", mid)
mid = "content=\"" mid "\"/>"
$0 = part1 mid part2
}
# Recoll treats "Subject" as a "title" element (based on emails). The PDF # Recoll treats "Subject" as a "title" element (based on emails). The PDF
# "Subject" metadata field is more like an HTML "description" # "Subject" metadata field is more like an HTML "description"

View file

@ -98,7 +98,8 @@ class ZipExtractor:
try: try:
self.zip = ZipFile(filename) self.zip = ZipFile(filename)
return True return True
except: except Exception, err:
self.em.rclog("openfile: failed: [%s]" % err)
return False return False
def getipath(self, params): def getipath(self, params):

View file

@ -2,6 +2,8 @@
import sys import sys
import xml.sax import xml.sax
sys.path.append(sys.path[0]+"/msodump.zip")
from msodumper.globals import error
dtt = True dtt = True
@ -47,6 +49,8 @@ class XlsXmlHandler(xml.sax.handler.ContentHandler):
try: try:
xml.sax.parse(sys.stdin, XlsXmlHandler()) xml.sax.parse(sys.stdin, XlsXmlHandler())
except: except BaseException as err:
error("xml-parse: %s\n" % (str(sys.exc_info()[:2]),))
sys.exit(1) sys.exit(1)
sys.exit(0) sys.exit(0)

View file

@ -455,6 +455,7 @@ BeagleQueueIndexer::processone(const string &path,
if (doc.fmtime.empty()) if (doc.fmtime.empty())
doc.fmtime = ascdate; doc.fmtime = ascdate;
dotdoc.fmtime = doc.fmtime;
char cbuf[100]; char cbuf[100];
sprintf(cbuf, "%lld", (long long)stp->st_size); sprintf(cbuf, "%lld", (long long)stp->st_size);

View file

@ -724,9 +724,12 @@ FsIndexer::processonefile(RclConfig *config,
if (doc.url.empty()) if (doc.url.empty())
doc.url = cstr_fileu + fn; doc.url = cstr_fileu + fn;
const string *fnp = 0; const string *fnp = 0;
if (doc.ipath.empty() && if (doc.ipath.empty()) {
(!doc.peekmeta(Rcl::Doc::keyfn, &fnp) || fnp->empty())) if (!doc.peekmeta(Rcl::Doc::keyfn, &fnp) || fnp->empty())
doc.meta[Rcl::Doc::keyfn] = utf8fn; doc.meta[Rcl::Doc::keyfn] = utf8fn;
}
// Set container file name for all docs, top or subdoc
doc.meta[Rcl::Doc::keytcfn] = utf8fn;
char cbuf[100]; char cbuf[100];
sprintf(cbuf, "%lld", (long long)stp->st_size); sprintf(cbuf, "%lld", (long long)stp->st_size);
@ -811,7 +814,8 @@ FsIndexer::processonefile(RclConfig *config,
fileDoc.onlyxattr = true; fileDoc.onlyxattr = true;
} else { } else {
fileDoc.fmtime = ascdate; fileDoc.fmtime = ascdate;
fileDoc.meta[Rcl::Doc::keyfn] = utf8fn; fileDoc.meta[Rcl::Doc::keyfn] =
fileDoc.meta[Rcl::Doc::keytcfn] = utf8fn;
fileDoc.haschildren = true; fileDoc.haschildren = true;
fileDoc.mimetype = mimetype; fileDoc.mimetype = mimetype;
fileDoc.url = cstr_fileu + fn; fileDoc.url = cstr_fileu + fn;

View file

@ -46,15 +46,21 @@ using namespace std;
/// current/interesting file types. /// current/interesting file types.
/// As a last resort we execute 'file' (except if forbidden by config) /// As a last resort we execute 'file' (except if forbidden by config)
static string mimetypefromdata(const string &fn, bool usfc) static string mimetypefromdata(RclConfig *cfg, const string &fn, bool usfc)
{ {
// First try the internal identifying routine // First try the internal identifying routine
string mime = idFile(fn.c_str()); string mime = idFile(fn.c_str());
#ifdef USE_SYSTEM_FILE_COMMAND #ifdef USE_SYSTEM_FILE_COMMAND
if (usfc && mime.empty()) { if (usfc && mime.empty()) {
// Last resort: use "file -i" // Last resort: use "file -i", or its configured replacement.
vector<string> cmd = create_vector<string>(FILE_PROG) ("-i") (fn); vector<string> cmd = create_vector<string>(FILE_PROG) ("-i") (fn);
string scommand;
if (cfg->getConfParam("systemfilecommand", scommand)) {
stringToStrings(scommand, cmd);
cmd.push_back(fn);
}
string result; string result;
if (!ExecCmd::backtick(cmd, result)) { if (!ExecCmd::backtick(cmd, result)) {
LOGERR(("mimetypefromdata: exec %s failed\n", FILE_PROG)); LOGERR(("mimetypefromdata: exec %s failed\n", FILE_PROG));
@ -164,7 +170,7 @@ string mimetype(const string &fn, const struct stat *stp,
// only do this if we have an actual file (as opposed to a pure // only do this if we have an actual file (as opposed to a pure
// name). // name).
if (mtype.empty() && stp) if (mtype.empty() && stp)
mtype = mimetypefromdata(fn, usfc); mtype = mimetypefromdata(cfg, fn, usfc);
out: out:
return mtype; return mtype;

View file

@ -279,13 +279,9 @@ python/samples/docdups.py
python/samples/mutt-recoll.py python/samples/mutt-recoll.py
python/samples/rcldlkp.py python/samples/rcldlkp.py
python/samples/rclmbox.py python/samples/rclmbox.py
python/samples/recoll/
python/samples/recoll/cur/
python/samples/recoll/new/
python/samples/recollgui/ python/samples/recollgui/
python/samples/recollgui/Makefile python/samples/recollgui/Makefile
python/samples/recollgui/qrecoll.py python/samples/recollgui/qrecoll.py
python/samples/recollgui/rclmain.py
python/samples/recollgui/rclmain.ui python/samples/recollgui/rclmain.ui
python/samples/recollq.py python/samples/recollq.py
python/samples/recollqsd.py python/samples/recollqsd.py

View file

@ -62,7 +62,9 @@ typedef struct {
static void static void
SearchData_dealloc(recoll_SearchDataObject *self) SearchData_dealloc(recoll_SearchDataObject *self)
{ {
LOGDEB(("SearchData_dealloc\n")); LOGDEB(("SearchData_dealloc. Releasing. Count before: %d\n",
self->sd.getcnt()));
self->sd.release();
Py_TYPE(self)->tp_free((PyObject*)self); Py_TYPE(self)->tp_free((PyObject*)self);
} }
@ -178,7 +180,7 @@ static PyObject *
SearchData_addclause(recoll_SearchDataObject* self, PyObject *args, SearchData_addclause(recoll_SearchDataObject* self, PyObject *args,
PyObject *kwargs) PyObject *kwargs)
{ {
LOGDEB(("SearchData_addclause\n")); LOGDEB0(("SearchData_addclause\n"));
if (self->sd.isNull()) { if (self->sd.isNull()) {
LOGERR(("SearchData_addclause: not init??\n")); LOGERR(("SearchData_addclause: not init??\n"));
PyErr_SetString(PyExc_AttributeError, "sd"); PyErr_SetString(PyExc_AttributeError, "sd");
@ -302,8 +304,8 @@ Doc_dealloc(recoll_DocObject *self)
static PyObject * static PyObject *
Doc_new(PyTypeObject *type, PyObject *args, PyObject *kwds) Doc_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{ {
recoll_DocObject *self;
LOGDEB(("Doc_new\n")); LOGDEB(("Doc_new\n"));
recoll_DocObject *self;
self = (recoll_DocObject *)type->tp_alloc(type, 0); self = (recoll_DocObject *)type->tp_alloc(type, 0);
if (self == 0) if (self == 0)
@ -338,7 +340,7 @@ PyDoc_STRVAR(doc_Doc_getbinurl,
static PyObject * static PyObject *
Doc_getbinurl(recoll_DocObject *self) Doc_getbinurl(recoll_DocObject *self)
{ {
LOGDEB(("Doc_getbinurl\n")); LOGDEB0(("Doc_getbinurl\n"));
if (self->doc == 0 || if (self->doc == 0 ||
the_docs.find(self->doc) == the_docs.end()) { the_docs.find(self->doc) == the_docs.end()) {
PyErr_SetString(PyExc_AttributeError, "doc"); PyErr_SetString(PyExc_AttributeError, "doc");
@ -357,6 +359,7 @@ PyDoc_STRVAR(doc_Doc_setbinurl,
static PyObject * static PyObject *
Doc_setbinurl(recoll_DocObject *self, PyObject *value) Doc_setbinurl(recoll_DocObject *self, PyObject *value)
{ {
LOGDEB0(("Doc_setbinurl\n"));
if (self->doc == 0 || if (self->doc == 0 ||
the_docs.find(self->doc) == the_docs.end()) { the_docs.find(self->doc) == the_docs.end()) {
PyErr_SetString(PyExc_AttributeError, "doc??"); PyErr_SetString(PyExc_AttributeError, "doc??");
@ -378,7 +381,7 @@ PyDoc_STRVAR(doc_Doc_keys,
static PyObject * static PyObject *
Doc_keys(recoll_DocObject *self) Doc_keys(recoll_DocObject *self)
{ {
LOGDEB(("Doc_keys\n")); LOGDEB0(("Doc_keys\n"));
if (self->doc == 0 || if (self->doc == 0 ||
the_docs.find(self->doc) == the_docs.end()) { the_docs.find(self->doc) == the_docs.end()) {
PyErr_SetString(PyExc_AttributeError, "doc"); PyErr_SetString(PyExc_AttributeError, "doc");
@ -403,7 +406,7 @@ PyDoc_STRVAR(doc_Doc_items,
static PyObject * static PyObject *
Doc_items(recoll_DocObject *self) Doc_items(recoll_DocObject *self)
{ {
LOGDEB(("Doc_items\n")); LOGDEB0(("Doc_items\n"));
if (self->doc == 0 || if (self->doc == 0 ||
the_docs.find(self->doc) == the_docs.end()) { the_docs.find(self->doc) == the_docs.end()) {
PyErr_SetString(PyExc_AttributeError, "doc"); PyErr_SetString(PyExc_AttributeError, "doc");
@ -433,7 +436,7 @@ PyDoc_STRVAR(doc_Doc_get,
static PyObject * static PyObject *
Doc_get(recoll_DocObject *self, PyObject *args) Doc_get(recoll_DocObject *self, PyObject *args)
{ {
LOGDEB(("Doc_get\n")); LOGDEB0(("Doc_get\n"));
char *sutf8 = 0; // needs freeing char *sutf8 = 0; // needs freeing
if (!PyArg_ParseTuple(args, "es:Doc_get", if (!PyArg_ParseTuple(args, "es:Doc_get",
"utf-8", &sutf8)) { "utf-8", &sutf8)) {
@ -487,6 +490,7 @@ static PyMethodDef Doc_methods[] = {
static PyObject * static PyObject *
Doc_getattro(recoll_DocObject *self, PyObject *nameobj) Doc_getattro(recoll_DocObject *self, PyObject *nameobj)
{ {
LOGDEB0(("Doc_getattro\n"));
if (self->doc == 0 || the_docs.find(self->doc) == the_docs.end()) { if (self->doc == 0 || the_docs.find(self->doc) == the_docs.end()) {
PyErr_SetString(PyExc_AttributeError, "doc"); PyErr_SetString(PyExc_AttributeError, "doc");
return 0; return 0;
@ -514,7 +518,7 @@ Doc_getattro(recoll_DocObject *self, PyObject *nameobj)
Py_RETURN_NONE; Py_RETURN_NONE;
} }
key = rclconfig->fieldCanon(string(name)); key = rclconfig->fieldQCanon(string(name));
switch (key.at(0)) { switch (key.at(0)) {
case 'u': case 'u':
@ -605,11 +609,11 @@ Doc_getattro(recoll_DocObject *self, PyObject *nameobj)
static int static int
Doc_setattr(recoll_DocObject *self, char *name, PyObject *value) Doc_setattr(recoll_DocObject *self, char *name, PyObject *value)
{ {
LOGDEB0(("Doc_setattr: doc %p\n", self->doc));
if (self->doc == 0 || the_docs.find(self->doc) == the_docs.end()) { if (self->doc == 0 || the_docs.find(self->doc) == the_docs.end()) {
PyErr_SetString(PyExc_AttributeError, "doc??"); PyErr_SetString(PyExc_AttributeError, "doc??");
return -1; return -1;
} }
LOGDEB1(("Doc_setmeta: doc %p\n", self->doc));
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
if (PyString_Check(value)) { if (PyString_Check(value)) {
@ -636,7 +640,7 @@ Doc_setattr(recoll_DocObject *self, char *name, PyObject *value)
} }
char* uvalue = PyBytes_AsString(putf8); char* uvalue = PyBytes_AsString(putf8);
Py_DECREF(putf8); Py_DECREF(putf8);
string key = rclconfig->fieldCanon(string(name)); string key = rclconfig->fieldQCanon(string(name));
LOGDEB0(("Doc_setattr: [%s] (%s) -> [%s]\n", key.c_str(), name, uvalue)); LOGDEB0(("Doc_setattr: [%s] (%s) -> [%s]\n", key.c_str(), name, uvalue));
// We set the value in the meta array in all cases. Good idea ? or do it // We set the value in the meta array in all cases. Good idea ? or do it
@ -793,31 +797,36 @@ typedef struct {
PyDoc_STRVAR(doc_Query_close, PyDoc_STRVAR(doc_Query_close,
"close(). Deallocate query. Object is unusable after the call." "close(). Deallocate query. Object is unusable after the call."
); );
static void static PyObject *
Query_close(recoll_QueryObject *self) Query_close(recoll_QueryObject *self)
{ {
LOGDEB(("Query_close\n")); LOGDEB(("Query_close\n"));
if (self->query) if (self->query) {
the_queries.erase(self->query); the_queries.erase(self->query);
deleteZ(self->query); deleteZ(self->query);
}
deleteZ(self->sortfield); deleteZ(self->sortfield);
if (self->connection) if (self->connection) {
Py_DECREF(self->connection); Py_DECREF(self->connection);
self->connection = 0;
}
Py_RETURN_NONE;
} }
static void static void
Query_dealloc(recoll_QueryObject *self) Query_dealloc(recoll_QueryObject *self)
{ {
LOGDEB(("Query_dealloc\n")); LOGDEB(("Query_dealloc\n"));
Query_close(self); PyObject *ret = Query_close(self);
Py_DECREF(ret);
Py_TYPE(self)->tp_free((PyObject*)self); Py_TYPE(self)->tp_free((PyObject*)self);
} }
static PyObject * static PyObject *
Query_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) Query_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{ {
recoll_QueryObject *self;
LOGDEB(("Query_new\n")); LOGDEB(("Query_new\n"));
recoll_QueryObject *self;
self = (recoll_QueryObject *)type->tp_alloc(type, 0); self = (recoll_QueryObject *)type->tp_alloc(type, 0);
if (self == 0) if (self == 0)
@ -852,6 +861,7 @@ Query_init(recoll_QueryObject *self, PyObject *, PyObject *)
static PyObject * static PyObject *
Query_iter(PyObject *self) Query_iter(PyObject *self)
{ {
Py_INCREF(self);
return self; return self;
} }
@ -865,7 +875,7 @@ PyDoc_STRVAR(doc_Query_sortby,
static PyObject * static PyObject *
Query_sortby(recoll_QueryObject* self, PyObject *args, PyObject *kwargs) Query_sortby(recoll_QueryObject* self, PyObject *args, PyObject *kwargs)
{ {
LOGDEB(("Query_sortby\n")); LOGDEB0(("Query_sortby\n"));
static const char *kwlist[] = {"field", "ascending", NULL}; static const char *kwlist[] = {"field", "ascending", NULL};
char *sfield = 0; char *sfield = 0;
PyObject *ascobj = 0; PyObject *ascobj = 0;
@ -899,7 +909,7 @@ PyDoc_STRVAR(doc_Query_execute,
static PyObject * static PyObject *
Query_execute(recoll_QueryObject* self, PyObject *args, PyObject *kwargs) Query_execute(recoll_QueryObject* self, PyObject *args, PyObject *kwargs)
{ {
LOGDEB1(("Query_execute\n")); LOGDEB0(("Query_execute\n"));
static const char *kwlist[] = {"query_string", "stemming", "stemlang", NULL}; static const char *kwlist[] = {"query_string", "stemming", "stemlang", NULL};
char *sutf8 = 0; // needs freeing char *sutf8 = 0; // needs freeing
char *sstemlang = 0; char *sstemlang = 0;
@ -922,7 +932,7 @@ Query_execute(recoll_QueryObject* self, PyObject *args, PyObject *kwargs)
PyMem_Free(sstemlang); PyMem_Free(sstemlang);
} }
LOGDEB(("Query_execute: [%s] dostem %d stemlang [%s]\n", utf8.c_str(), LOGDEB0(("Query_execute: [%s] dostem %d stemlang [%s]\n", utf8.c_str(),
dostem, stemlang.c_str())); dostem, stemlang.c_str()));
if (self->query == 0 || if (self->query == 0 ||
@ -960,9 +970,9 @@ PyDoc_STRVAR(doc_Query_executesd,
static PyObject * static PyObject *
Query_executesd(recoll_QueryObject* self, PyObject *args, PyObject *kwargs) Query_executesd(recoll_QueryObject* self, PyObject *args, PyObject *kwargs)
{ {
LOGDEB0(("Query_executeSD\n"));
static const char *kwlist[] = {"searchdata", NULL}; static const char *kwlist[] = {"searchdata", NULL};
recoll_SearchDataObject *pysd = 0; recoll_SearchDataObject *pysd = 0;
LOGDEB(("Query_executeSD\n"));
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:Query_execute", if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!:Query_execute",
(char **)kwlist, (char **)kwlist,
&recoll_SearchDataType, &pysd)) { &recoll_SearchDataType, &pysd)) {
@ -1002,8 +1012,8 @@ PyDoc_STRVAR(doc_Query_fetchone,
static PyObject * static PyObject *
Query_fetchone(PyObject *_self) Query_fetchone(PyObject *_self)
{ {
LOGDEB0(("Query_fetchone/next\n"));
recoll_QueryObject* self = (recoll_QueryObject*)_self; recoll_QueryObject* self = (recoll_QueryObject*)_self;
LOGDEB(("Query_fetchone/next\n"));
if (self->query == 0 || if (self->query == 0 ||
the_queries.find(self->query) == the_queries.end()) { the_queries.find(self->query) == the_queries.end()) {
@ -1044,7 +1054,7 @@ PyDoc_STRVAR(doc_Query_fetchmany,
static PyObject * static PyObject *
Query_fetchmany(recoll_QueryObject* self, PyObject *args, PyObject *kwargs) Query_fetchmany(recoll_QueryObject* self, PyObject *args, PyObject *kwargs)
{ {
LOGDEB(("Query_fetchmany\n")); LOGDEB0(("Query_fetchmany\n"));
static const char *kwlist[] = {"size", NULL}; static const char *kwlist[] = {"size", NULL};
int size = 0; int size = 0;
@ -1096,7 +1106,7 @@ PyDoc_STRVAR(doc_Query_scroll,
static PyObject * static PyObject *
Query_scroll(recoll_QueryObject* self, PyObject *args, PyObject *kwargs) Query_scroll(recoll_QueryObject* self, PyObject *args, PyObject *kwargs)
{ {
LOGDEB(("Query_scroll\n")); LOGDEB0(("Query_scroll\n"));
static const char *kwlist[] = {"position", "mode", NULL}; static const char *kwlist[] = {"position", "mode", NULL};
int pos = 0; int pos = 0;
char *smode = 0; char *smode = 0;
@ -1183,7 +1193,7 @@ public:
static PyObject * static PyObject *
Query_highlight(recoll_QueryObject* self, PyObject *args, PyObject *kwargs) Query_highlight(recoll_QueryObject* self, PyObject *args, PyObject *kwargs)
{ {
LOGDEB1(("Query_highlight\n")); LOGDEB0(("Query_highlight\n"));
static const char *kwlist[] = {"text", "ishtml", "eolbr", "methods", NULL}; static const char *kwlist[] = {"text", "ishtml", "eolbr", "methods", NULL};
char *sutf8 = 0; // needs freeing char *sutf8 = 0; // needs freeing
int ishtml = 0; int ishtml = 0;
@ -1205,7 +1215,7 @@ Query_highlight(recoll_QueryObject* self, PyObject *args, PyObject *kwargs)
ishtml = 1; ishtml = 1;
if (eolbrobj && !PyObject_IsTrue(eolbrobj)) if (eolbrobj && !PyObject_IsTrue(eolbrobj))
eolbr = 0; eolbr = 0;
LOGDEB(("Query_highlight: ishtml %d\n", ishtml)); LOGDEB0(("Query_highlight: ishtml %d\n", ishtml));
if (self->query == 0 || if (self->query == 0 ||
the_queries.find(self->query) == the_queries.end()) { the_queries.find(self->query) == the_queries.end()) {
@ -1243,7 +1253,7 @@ PyDoc_STRVAR(doc_Query_makedocabstract,
static PyObject * static PyObject *
Query_makedocabstract(recoll_QueryObject* self, PyObject *args,PyObject *kwargs) Query_makedocabstract(recoll_QueryObject* self, PyObject *args,PyObject *kwargs)
{ {
LOGDEB(("Query_makeDocAbstract\n")); LOGDEB0(("Query_makeDocAbstract\n"));
static const char *kwlist[] = {"doc", "methods", NULL}; static const char *kwlist[] = {"doc", "methods", NULL};
recoll_DocObject *pydoc = 0; recoll_DocObject *pydoc = 0;
PyObject *hlmethods = 0; PyObject *hlmethods = 0;
@ -1313,7 +1323,7 @@ PyDoc_STRVAR(doc_Query_getxquery,
static PyObject * static PyObject *
Query_getxquery(recoll_QueryObject* self, PyObject *, PyObject *) Query_getxquery(recoll_QueryObject* self, PyObject *, PyObject *)
{ {
LOGDEB(("Query_getxquery self->query %p\n")); LOGDEB0(("Query_getxquery self->query %p\n", self->query));
if (self->query == 0 || if (self->query == 0 ||
the_queries.find(self->query) == the_queries.end()) { the_queries.find(self->query) == the_queries.end()) {
@ -1341,7 +1351,7 @@ PyDoc_STRVAR(doc_Query_getgroups,
static PyObject * static PyObject *
Query_getgroups(recoll_QueryObject* self, PyObject *, PyObject *) Query_getgroups(recoll_QueryObject* self, PyObject *, PyObject *)
{ {
LOGDEB(("Query_getxquery\n")); LOGDEB0(("Query_getgroups\n"));
if (self->query == 0 || if (self->query == 0 ||
the_queries.find(self->query) == the_queries.end()) { the_queries.find(self->query) == the_queries.end()) {
@ -1483,27 +1493,31 @@ typedef struct recoll_DbObject {
Rcl::Db *db; Rcl::Db *db;
} recoll_DbObject; } recoll_DbObject;
static void static PyObject *
Db_close(recoll_DbObject *self) Db_close(recoll_DbObject *self)
{ {
LOGDEB(("Db_close\n")); LOGDEB(("Db_close. self %p\n", self));
if (self->db) if (self->db) {
the_dbs.erase(self->db); the_dbs.erase(self->db);
delete self->db; delete self->db;
self->db = 0; self->db = 0;
}
Py_RETURN_NONE;
} }
static void static void
Db_dealloc(recoll_DbObject *self) Db_dealloc(recoll_DbObject *self)
{ {
LOGDEB(("Db_dealloc\n")); LOGDEB(("Db_dealloc\n"));
Db_close(self); PyObject *ret = Db_close(self);
Py_DECREF(ret);
Py_TYPE(self)->tp_free((PyObject*)self); Py_TYPE(self)->tp_free((PyObject*)self);
} }
static PyObject * static PyObject *
Db_new(PyTypeObject *type, PyObject *args, PyObject *kwds) Db_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
{ {
LOGDEB2(("Db_new\n"));
recoll_DbObject *self; recoll_DbObject *self;
self = (recoll_DbObject *)type->tp_alloc(type, 0); self = (recoll_DbObject *)type->tp_alloc(type, 0);
@ -1609,14 +1623,13 @@ Db_query(recoll_DbObject* self)
Py_INCREF(self); Py_INCREF(self);
the_queries.insert(result->query); the_queries.insert(result->query);
Py_INCREF(result);
return (PyObject *)result; return (PyObject *)result;
} }
static PyObject * static PyObject *
Db_setAbstractParams(recoll_DbObject *self, PyObject *args, PyObject *kwargs) Db_setAbstractParams(recoll_DbObject *self, PyObject *args, PyObject *kwargs)
{ {
LOGDEB(("Db_setAbstractParams\n")); LOGDEB0(("Db_setAbstractParams\n"));
static const char *kwlist[] = {"maxchars", "contextwords", NULL}; static const char *kwlist[] = {"maxchars", "contextwords", NULL};
int ctxwords = -1, maxchars = -1; int ctxwords = -1, maxchars = -1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ii", (char**)kwlist, if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ii", (char**)kwlist,
@ -1627,7 +1640,7 @@ Db_setAbstractParams(recoll_DbObject *self, PyObject *args, PyObject *kwargs)
PyErr_SetString(PyExc_AttributeError, "db id not found"); PyErr_SetString(PyExc_AttributeError, "db id not found");
return 0; return 0;
} }
LOGDEB(("Db_setAbstractParams: mxchrs %d, ctxwrds %d\n", maxchars, ctxwords)); LOGDEB0(("Db_setAbstractParams: mxchrs %d, ctxwrds %d\n", maxchars, ctxwords));
self->db->setAbstractParams(-1, maxchars, ctxwords); self->db->setAbstractParams(-1, maxchars, ctxwords);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
@ -1635,7 +1648,7 @@ Db_setAbstractParams(recoll_DbObject *self, PyObject *args, PyObject *kwargs)
static PyObject * static PyObject *
Db_makeDocAbstract(recoll_DbObject* self, PyObject *args) Db_makeDocAbstract(recoll_DbObject* self, PyObject *args)
{ {
LOGDEB(("Db_makeDocAbstract\n")); LOGDEB0(("Db_makeDocAbstract\n"));
recoll_DocObject *pydoc = 0; recoll_DocObject *pydoc = 0;
recoll_QueryObject *pyquery = 0; recoll_QueryObject *pyquery = 0;
if (!PyArg_ParseTuple(args, "O!O!:Db_makeDocAbstract", if (!PyArg_ParseTuple(args, "O!O!:Db_makeDocAbstract",
@ -1680,7 +1693,7 @@ PyDoc_STRVAR(doc_Db_termMatch,
static PyObject * static PyObject *
Db_termMatch(recoll_DbObject* self, PyObject *args, PyObject *kwargs) Db_termMatch(recoll_DbObject* self, PyObject *args, PyObject *kwargs)
{ {
LOGDEB(("Db_termMatch\n")); LOGDEB0(("Db_termMatch\n"));
static const char *kwlist[] = {"type", "expr", "field", "maxlen", static const char *kwlist[] = {"type", "expr", "field", "maxlen",
"casesens", "diacsens", "lang", NULL}; "casesens", "diacsens", "lang", NULL};
char *tp = 0; char *tp = 0;
@ -1749,9 +1762,9 @@ out:
static PyObject * static PyObject *
Db_needUpdate(recoll_DbObject* self, PyObject *args, PyObject *kwds) Db_needUpdate(recoll_DbObject* self, PyObject *args, PyObject *kwds)
{ {
LOGDEB0(("Db_needUpdate\n"));
char *udi = 0; // needs freeing char *udi = 0; // needs freeing
char *sig = 0; // needs freeing char *sig = 0; // needs freeing
LOGDEB(("Db_needUpdate\n"));
if (!PyArg_ParseTuple(args, "eses:Db_needUpdate", if (!PyArg_ParseTuple(args, "eses:Db_needUpdate",
"utf-8", &udi, "utf-8", &sig)) { "utf-8", &udi, "utf-8", &sig)) {
return 0; return 0;
@ -1772,8 +1785,8 @@ Db_needUpdate(recoll_DbObject* self, PyObject *args, PyObject *kwds)
static PyObject * static PyObject *
Db_delete(recoll_DbObject* self, PyObject *args, PyObject *kwds) Db_delete(recoll_DbObject* self, PyObject *args, PyObject *kwds)
{ {
LOGDEB0(("Db_delete\n"));
char *udi = 0; // needs freeing char *udi = 0; // needs freeing
LOGDEB(("Db_delete\n"));
if (!PyArg_ParseTuple(args, "es:Db_delete", "utf-8", &udi)) { if (!PyArg_ParseTuple(args, "es:Db_delete", "utf-8", &udi)) {
return 0; return 0;
} }
@ -1791,6 +1804,7 @@ Db_delete(recoll_DbObject* self, PyObject *args, PyObject *kwds)
static PyObject * static PyObject *
Db_purge(recoll_DbObject* self) Db_purge(recoll_DbObject* self)
{ {
LOGDEB0(("Db_purge\n"));
if (self->db == 0 || the_dbs.find(self->db) == the_dbs.end()) { if (self->db == 0 || the_dbs.find(self->db) == the_dbs.end()) {
LOGERR(("Db_purge: db not found %p\n", self->db)); LOGERR(("Db_purge: db not found %p\n", self->db));
PyErr_SetString(PyExc_AttributeError, "db"); PyErr_SetString(PyExc_AttributeError, "db");
@ -1803,7 +1817,7 @@ Db_purge(recoll_DbObject* self)
static PyObject * static PyObject *
Db_addOrUpdate(recoll_DbObject* self, PyObject *args, PyObject *) Db_addOrUpdate(recoll_DbObject* self, PyObject *args, PyObject *)
{ {
LOGDEB(("Db_addOrUpdate\n")); LOGDEB0(("Db_addOrUpdate\n"));
char *sudi = 0; // needs freeing char *sudi = 0; // needs freeing
char *sparent_udi = 0; // needs freeing char *sparent_udi = 0; // needs freeing
recoll_DocObject *pydoc; recoll_DocObject *pydoc;
@ -1944,6 +1958,7 @@ static PyTypeObject recoll_DbType = {
static PyObject * static PyObject *
recoll_connect(PyObject *self, PyObject *args, PyObject *kwargs) recoll_connect(PyObject *self, PyObject *args, PyObject *kwargs)
{ {
LOGDEB2(("recoll_connect\n"));
recoll_DbObject *db = (recoll_DbObject *) recoll_DbObject *db = (recoll_DbObject *)
PyObject_Call((PyObject *)&recoll_DbType, args, kwargs); PyObject_Call((PyObject *)&recoll_DbType, args, kwargs);
return (PyObject *)db; return (PyObject *)db;

0
src/python/samples/recollqsd.py Normal file → Executable file
View file

View file

@ -583,11 +583,11 @@ Klepněte na tlačítko Zrušit pro úpravu souboru s nastavením, předtím ne
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation>Výchozí znaková sada</translation> <translation type="obsolete">Výchozí znaková sada</translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>Toto je znaková sada, která se používá pro čtení souborů, které svou znakovou sadu vnitřně neurčují, např.. soubory s textem.&lt;br&gt;Výchozí hodnota je prázdná a používá se hodnota prostředí NLS.</translation> <translation type="obsolete">Toto je znaková sada, která se používá pro čtení souborů, které svou znakovou sadu vnitřně neurčují, např.. soubory s textem.&lt;br&gt;Výchozí hodnota je prázdná a používá se hodnota prostředí NLS.</translation>
</message> </message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
@ -617,6 +617,14 @@ Klepněte na tlačítko Zrušit pro úpravu souboru s nastavením, předtím ne
<source>Web history</source> <source>Web history</source>
<translation>Historie webu</translation> <translation>Historie webu</translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -837,7 +845,7 @@ Prověřte soubor mimeconf</translation>
</message> </message>
<message> <message>
<source>Document category filter</source> <source>Document category filter</source>
<translation>Filtr pro skupinu dokumentu</translation> <translation type="obsolete">Filtr pro skupinu dokumentu</translation>
</message> </message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
@ -969,20 +977,57 @@ Prověřte soubor mimeconf</translation>
</message> </message>
<message> <message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source> <source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation>Rejstřík není pro tento soubor nejnovější. Ukázání nesprávného záznamu bylo zamítnuto.</translation> <translation type="obsolete">Rejstřík není pro tento soubor nejnovější. Ukázání nesprávného záznamu bylo zamítnuto.</translation>
</message> </message>
<message> <message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source> <source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation>Klepněte na tlačítko pro aktualizaci rejstříku pro tento soubor, potom dotaz, bude rejstříkování hotovo, spusťte znovu. Jinak klepněte na Zrušit.</translation> <translation type="obsolete">Klepněte na tlačítko pro aktualizaci rejstříku pro tento soubor, potom dotaz, bude rejstříkování hotovo, spusťte znovu. Jinak klepněte na Zrušit.</translation>
</message> </message>
<message> <message>
<source>Indexer running so things should improve when it&apos;s done</source> <source>Indexer running so things should improve when it&apos;s done</source>
<translation>Rejstříkovač běží, takže věci by se po dokončení rejstříkování měly zlepšit</translation> <translation type="obsolete">Rejstříkovač běží, takže věci by se po dokončení rejstříkování měly zlepšit</translation>
</message> </message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation>Podřízené dokumenty a přílohy</translation> <translation>Podřízené dokumenty a přílohy</translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished">Zdvojené dokumenty</translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished">Tyto adresy ( | ipath) sdílejí totožný obsah:</translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -1016,11 +1061,11 @@ Prověřte soubor mimeconf</translation>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation>Nástroje pro hledání</translation> <translation type="obsolete">Nástroje pro hledání</translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation>Seznam s výsledky</translation> <translation type="obsolete">Seznam s výsledky</translation>
</message> </message>
<message> <message>
<source>&amp;About Recoll</source> <source>&amp;About Recoll</source>
@ -1108,7 +1153,7 @@ Prověřte soubor mimeconf</translation>
</message> </message>
<message> <message>
<source>All</source> <source>All</source>
<translation>Vše</translation> <translation type="obsolete">Vše</translation>
</message> </message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
@ -1414,11 +1459,11 @@ Prověřte soubor mimeconf</translation>
</message> </message>
<message> <message>
<source>Duplicate documents</source> <source>Duplicate documents</source>
<translation>Zdvojené dokumenty</translation> <translation type="obsolete">Zdvojené dokumenty</translation>
</message> </message>
<message> <message>
<source>These Urls ( | ipath) share the same content:</source> <source>These Urls ( | ipath) share the same content:</source>
<translation>Tyto adresy ( | ipath) sdílejí totožný obsah:</translation> <translation type="obsolete">Tyto adresy ( | ipath) sdílejí totožný obsah:</translation>
</message> </message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
@ -1573,6 +1618,10 @@ Prověřte soubor mimeconf</translation>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation>Ukázat podřízené dokumenty/přílohy</translation> <translation>Ukázat podřízené dokumenty/přílohy</translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2418,6 +2467,22 @@ To pomůže při prohledávání velmi velkých textových souborů (např. soub
<translation>Vnější filtry pracující déle než po tak dlouhou dobu budou přerušeny. Je to pro ten zřídkavý případ (např. postscript), kdy by dokument mohl zapříčinit vejití filtru do smyčky. Nastavte na -1 pro žádné omezení. <translation>Vnější filtry pracující déle než po tak dlouhou dobu budou přerušeny. Je to pro ten zřídkavý případ (např. postscript), kdy by dokument mohl zapříčinit vejití filtru do smyčky. Nastavte na -1 pro žádné omezení.
</translation> </translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2598,7 +2663,7 @@ To pomůže při prohledávání velmi velkých textových souborů (např. soub
</message> </message>
<message> <message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source> <source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation>Zobrazit skupinový filtr jako nástrojový pruh místo tlačítkového panelu (potřebuje spustit program znovu).</translation> <translation type="obsolete">Zobrazit skupinový filtr jako nástrojový pruh místo tlačítkového panelu (potřebuje spustit program znovu).</translation>
</message> </message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
@ -2846,5 +2911,25 @@ Výchozí hodnota je 2 (procenta).</translation>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation>Nastaví znovu styl okna s úryvky</translation> <translation>Nastaví znovu styl okna s úryvky</translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -582,11 +582,11 @@ Voreinstellung: leer.</translation>
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation>Standard-Zeichensatz</translation> <translation type="obsolete">Standard-Zeichensatz</translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>DIes ist der Zeichensatz, der für Dateien benutzt wird, die <translation type="obsolete">DIes ist der Zeichensatz, der für Dateien benutzt wird, die
ihren Zeichensatz nicht intern definieren, z.B. Textdateien. ihren Zeichensatz nicht intern definieren, z.B. Textdateien.
Der Standardwert ist leer und der Wert der NLS-Umgebung wird benutzt.</translation> Der Standardwert ist leer und der Wert der NLS-Umgebung wird benutzt.</translation>
</message> </message>
@ -620,6 +620,14 @@ Der Standardwert ist &quot;Nein&quot;, um doppelte Indizierung zu vermeiden.</tr
<source>Web history</source> <source>Web history</source>
<translation>Web-Chronik</translation> <translation>Web-Chronik</translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -836,7 +844,7 @@ Please check the mimeconf file</source>
</message> </message>
<message> <message>
<source>Document category filter</source> <source>Document category filter</source>
<translation>Filter für Dokumenten-Kategorie</translation> <translation type="obsolete">Filter für Dokumenten-Kategorie</translation>
</message> </message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
@ -965,20 +973,57 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source> <source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation>Der Index ist für diese Datei nicht mehr aktuell. Einträge könnten fehlerhaft sein und werden nicht angezeigt.</translation> <translation type="obsolete">Der Index ist für diese Datei nicht mehr aktuell. Einträge könnten fehlerhaft sein und werden nicht angezeigt.</translation>
</message> </message>
<message> <message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source> <source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation>Drücken Sie Ok, um den Index für diese Datei zu aktualisieren und die Suche daraufhin zu wiederholen. Ansonsten drücken Sie auf Abbrechen.</translation> <translation type="obsolete">Drücken Sie Ok, um den Index für diese Datei zu aktualisieren und die Suche daraufhin zu wiederholen. Ansonsten drücken Sie auf Abbrechen.</translation>
</message> </message>
<message> <message>
<source>Indexer running so things should improve when it&apos;s done</source> <source>Indexer running so things should improve when it&apos;s done</source>
<translation>Indizierung ist im Gange. Die Resultate sollten sich nach der Fertigstelltung verbessert haben</translation> <translation type="obsolete">Indizierung ist im Gange. Die Resultate sollten sich nach der Fertigstelltung verbessert haben</translation>
</message> </message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation>Untergeordnete Dokumente und Anhänge</translation> <translation>Untergeordnete Dokumente und Anhänge</translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished">Doppelte Dokumente</translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished">Diese URLs ( | ipath) sind inhaltsgleich:</translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -1012,11 +1057,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation>Suchwerkzeuge</translation> <translation type="obsolete">Suchwerkzeuge</translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation>Ergebnisliste</translation> <translation type="obsolete">Ergebnisliste</translation>
</message> </message>
<message> <message>
<source>&amp;About Recoll</source> <source>&amp;About Recoll</source>
@ -1104,7 +1149,7 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>All</source> <source>All</source>
<translation>Alle</translation> <translation type="obsolete">Alle</translation>
</message> </message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
@ -1402,12 +1447,12 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Duplicate documents</source> <source>Duplicate documents</source>
<translation>Doppelte Dokumente</translation> <translation type="obsolete">Doppelte Dokumente</translation>
</message> </message>
<message> <message>
<source>These Urls ( | ipath) share the same content:</source> <source>These Urls ( | ipath) share the same content:</source>
<translatorcomment>ipath?</translatorcomment> <translatorcomment>ipath?</translatorcomment>
<translation>Diese URLs ( | ipath) sind inhaltsgleich:</translation> <translation type="obsolete">Diese URLs ( | ipath) sind inhaltsgleich:</translation>
</message> </message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
@ -1554,6 +1599,10 @@ Please check the mimeview file</source>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation>Untergeordnete Dokumente / Anhänge anzeigen</translation> <translation>Untergeordnete Dokumente / Anhänge anzeigen</translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2406,6 +2455,22 @@ Auf -1 setzen, um keine Obergrenze zu haben.</translation>
Das ist für den seltenen Fall (Postscript), in dem ein Dokument eine unendliche Schleife auslöst. Das ist für den seltenen Fall (Postscript), in dem ein Dokument eine unendliche Schleife auslöst.
Auf -1 setzen, um keine Obergrenze zu haben.</translation> Auf -1 setzen, um keine Obergrenze zu haben.</translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2583,7 +2648,7 @@ für Ergebnisse</translation>
</message> </message>
<message> <message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source> <source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation>Kategorie-Filter in Werkzeugleiste statt als Radio-Buttons (Neustart erforderlich)</translation> <translation type="obsolete">Kategorie-Filter in Werkzeugleiste statt als Radio-Buttons (Neustart erforderlich)</translation>
</message> </message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
@ -2823,5 +2888,25 @@ und vermindern den Nutzender automatischen Phrasen. Der Standardwert ist 2.</tra
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation>Setzt das Schnipsel-Fenster Style Sheet auf den Standardwert zurück</translation> <translation>Setzt das Schnipsel-Fenster Style Sheet auf den Standardwert zurück</translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -565,11 +565,11 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation>Προκαθορισμένο σύνολο χαρακτήρων</translation> <translation type="obsolete">Προκαθορισμένο σύνολο χαρακτήρων</translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>Το σύνολο των χαρακτήρων που χρησιμοποιείται για την ανάγνωση των αρχείων στα οποία δεν μπορεί να αναγνωριστεί το σύνολο χαρακτήρων με εσωτερικό τρόπο, για παράδειγμα τα αρχεία απλού κειμένου.&lt;br&gt;Η προκαθορισμένη τιμή είναι κενή, και το πρόγραμμα χρησιμοποιεί αυτή του περιβάλλοντος.</translation> <translation type="obsolete">Το σύνολο των χαρακτήρων που χρησιμοποιείται για την ανάγνωση των αρχείων στα οποία δεν μπορεί να αναγνωριστεί το σύνολο χαρακτήρων με εσωτερικό τρόπο, για παράδειγμα τα αρχεία απλού κειμένου.&lt;br&gt;Η προκαθορισμένη τιμή είναι κενή, και το πρόγραμμα χρησιμοποιεί αυτή του περιβάλλοντος.</translation>
</message> </message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
@ -595,6 +595,14 @@ p, li { white-space: pre-wrap; }
<source>Web history</source> <source>Web history</source>
<translation>Ιστορικό ιστού</translation> <translation>Ιστορικό ιστού</translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -713,7 +721,7 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<source>Document category filter</source> <source>Document category filter</source>
<translation>Φίλτρο κατηγοριών των εγγράφων</translation> <translation type="obsolete">Φίλτρο κατηγοριών των εγγράφων</translation>
</message> </message>
<message> <message>
<source>Could not open external index. Db not open. Check external indexes list.</source> <source>Could not open external index. Db not open. Check external indexes list.</source>
@ -931,20 +939,57 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source> <source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation>Η δεικτοδότηση δεν είναι ενημερωμένηη για αυτό το αρχείο. Πιθανός κίνδυνος εμφάνισης μιας λανθασμένης εισαγωγής.</translation> <translation type="obsolete">Η δεικτοδότηση δεν είναι ενημερωμένηη για αυτό το αρχείο. Πιθανός κίνδυνος εμφάνισης μιας λανθασμένης εισαγωγής.</translation>
</message> </message>
<message> <message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source> <source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation>Κάντε κλικ στο Εντάξει για να ενημερώσετε τη δεικτοδότηση για αυτό το αρχείο, και στη συνέχεια επανεκκινήστε την αναζήτηση όταν θα έχει ολοκληρωθεί η δημιουργία του ευρετηρίου. Διαφορετικά, κλικ στο Ακύρωση.</translation> <translation type="obsolete">Κάντε κλικ στο Εντάξει για να ενημερώσετε τη δεικτοδότηση για αυτό το αρχείο, και στη συνέχεια επανεκκινήστε την αναζήτηση όταν θα έχει ολοκληρωθεί η δημιουργία του ευρετηρίου. Διαφορετικά, κλικ στο Ακύρωση.</translation>
</message> </message>
<message> <message>
<source>Indexer running so things should improve when it&apos;s done</source> <source>Indexer running so things should improve when it&apos;s done</source>
<translation>Η δημιουργία του ευρετηρίου βρίσκεται σε εξέλιξη, το αρχείο θα ενημερωθεί μετά το πέρας της ενημέρωσης</translation> <translation type="obsolete">Η δημιουργία του ευρετηρίου βρίσκεται σε εξέλιξη, το αρχείο θα ενημερωθεί μετά το πέρας της ενημέρωσης</translation>
</message> </message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation>Υπο-έγγραφα και συνημμένα</translation> <translation>Υπο-έγγραφα και συνημμένα</translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished">Διπλότυπα έγγραφα</translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished">Αυτά τα URL (| ipath) μοιράζονται το ίδιο περιεχόμενο:</translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -954,15 +999,15 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>All</source> <source>All</source>
<translation>Όλα</translation> <translation type="obsolete">Όλα</translation>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation>Εργαλεία αναζήτησης</translation> <translation type="obsolete">Εργαλεία αναζήτησης</translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation>Λίστα αποτελεσμάτων</translation> <translation type="obsolete">Λίστα αποτελεσμάτων</translation>
</message> </message>
<message> <message>
<source>&amp;File</source> <source>&amp;File</source>
@ -1356,11 +1401,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Duplicate documents</source> <source>Duplicate documents</source>
<translation>Διπλότυπα έγγραφα</translation> <translation type="obsolete">Διπλότυπα έγγραφα</translation>
</message> </message>
<message> <message>
<source>These Urls ( | ipath) share the same content:</source> <source>These Urls ( | ipath) share the same content:</source>
<translation>Αυτά τα URL (| ipath) μοιράζονται το ίδιο περιεχόμενο:</translation> <translation type="obsolete">Αυτά τα URL (| ipath) μοιράζονται το ίδιο περιεχόμενο:</translation>
</message> </message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
@ -1511,6 +1556,10 @@ Please check the mimeview file</source>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation>Εμφάνιση των υπο-εγγράφων / συνημμένων</translation> <translation>Εμφάνιση των υπο-εγγράφων / συνημμένων</translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2105,6 +2154,22 @@ This will help searching very big text files (ie: log files).</source>
</source> </source>
<translation>Τα εξωτερικά φίλτρα σε λειτουργία μεγαλύτερη από αυτό θα διακόπτονται. Χρήσιμο για τη σπάνια περίπτωση (π.χ. postscript) όπου ένα έγγραφο μπορεί να προκαλέσει ένα βρόγχο στο φίλτρο. Ορίστε το σε -1 για να αφαιρέσετε το όριο.</translation> <translation>Τα εξωτερικά φίλτρα σε λειτουργία μεγαλύτερη από αυτό θα διακόπτονται. Χρήσιμο για τη σπάνια περίπτωση (π.χ. postscript) όπου ένα έγγραφο μπορεί να προκαλέσει ένα βρόγχο στο φίλτρο. Ορίστε το σε -1 για να αφαιρέσετε το όριο.</translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2277,7 +2342,7 @@ This will help searching very big text files (ie: log files).</source>
</message> </message>
<message> <message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source> <source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation>Εμφάνιση φίλτρ. κατηγορίας ως γρ. εργαλείων αντί για πίν. κουμπιών (απαιτεί επανεκκίνηση).</translation> <translation type="obsolete">Εμφάνιση φίλτρ. κατηγορίας ως γρ. εργαλείων αντί για πίν. κουμπιών (απαιτεί επανεκκίνηση).</translation>
</message> </message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
@ -2505,5 +2570,25 @@ May be slow for big documents.</source>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation>Επαναφορά του στυλ του παραθύρου αποσπασμάτων</translation> <translation>Επαναφορά του στυλ του παραθύρου αποσπασμάτων</translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -574,11 +574,11 @@ Click Cancel if you want to edit the configuration file before indexing starts,
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation>Conjunto de caracteres por defecto </translation> <translation type="obsolete">Conjunto de caracteres por defecto </translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>Este es el conjunto de caracteres usado para leer archivos que no son identificados internamente, por ejemplo, archivos de texto puro.&lt;br&gt;El valor por defecto está vacío, y el valor del ambiente NLS es usado.</translation> <translation type="obsolete">Este es el conjunto de caracteres usado para leer archivos que no son identificados internamente, por ejemplo, archivos de texto puro.&lt;br&gt;El valor por defecto está vacío, y el valor del ambiente NLS es usado.</translation>
</message> </message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
@ -608,6 +608,14 @@ Click Cancel if you want to edit the configuration file before indexing starts,
<source>Web history</source> <source>Web history</source>
<translation>Historial Web</translation> <translation>Historial Web</translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -828,7 +836,7 @@ Por favor revise el fichero mimeconf</translation>
</message> </message>
<message> <message>
<source>Document category filter</source> <source>Document category filter</source>
<translation>Filtro de categorías de documentos</translation> <translation type="obsolete">Filtro de categorías de documentos</translation>
</message> </message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
@ -959,20 +967,57 @@ Por favor revise el archivo mimeconf</translation>
</message> </message>
<message> <message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source> <source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation>El índice no está actualizado para este archivo. Rehusando mostrar la entrada equivocada.</translation> <translation type="obsolete">El índice no está actualizado para este archivo. Rehusando mostrar la entrada equivocada.</translation>
</message> </message>
<message> <message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source> <source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation>Presione Ok para actualizar el índice para este archivo, y ejecute de nuevo la consulta cuando la indexación termine. En caso contrario, cancele.</translation> <translation type="obsolete">Presione Ok para actualizar el índice para este archivo, y ejecute de nuevo la consulta cuando la indexación termine. En caso contrario, cancele.</translation>
</message> </message>
<message> <message>
<source>Indexer running so things should improve when it&apos;s done</source> <source>Indexer running so things should improve when it&apos;s done</source>
<translation>El indexador está en ejecución, así que las cosas deberían mejorar cuando termine</translation> <translation type="obsolete">El indexador está en ejecución, así que las cosas deberían mejorar cuando termine</translation>
</message> </message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation>Sub-documentos y adjuntos</translation> <translation>Sub-documentos y adjuntos</translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished">Documentos duplicados</translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished">Estos URLs ( | ipath) comparten el mismo contenido: </translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -982,11 +1027,11 @@ Por favor revise el archivo mimeconf</translation>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation>Herramientas de búsqueda</translation> <translation type="obsolete">Herramientas de búsqueda</translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation>Lista de resultados</translation> <translation type="obsolete">Lista de resultados</translation>
</message> </message>
<message> <message>
<source>&amp;File</source> <source>&amp;File</source>
@ -1098,7 +1143,7 @@ Por favor revise el archivo mimeconf</translation>
</message> </message>
<message> <message>
<source>All</source> <source>All</source>
<translation>Todo</translation> <translation type="obsolete">Todo</translation>
</message> </message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
@ -1396,11 +1441,11 @@ Por favor revise el archivo mimeconf</translation>
</message> </message>
<message> <message>
<source>Duplicate documents</source> <source>Duplicate documents</source>
<translation>Documentos duplicados</translation> <translation type="obsolete">Documentos duplicados</translation>
</message> </message>
<message> <message>
<source>These Urls ( | ipath) share the same content:</source> <source>These Urls ( | ipath) share the same content:</source>
<translation>Estos URLs ( | ipath) comparten el mismo contenido: </translation> <translation type="obsolete">Estos URLs ( | ipath) comparten el mismo contenido: </translation>
</message> </message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
@ -1559,6 +1604,10 @@ Por favor revise el archivo mimeconf</translation>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation>Mostrar subdocumentos / adjuntos</translation> <translation>Mostrar subdocumentos / adjuntos</translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2185,6 +2234,22 @@ Esto ayuda con las búsquedas de archivos de texto muy grandes (ej: archivos de
</source> </source>
<translation>Filtros externos que se ejecuten por más tiempo del establecido serán detenidos. Esto es por el caso inusual (ej: postscript) dónde un documento puede causar que un filtro entre en un ciclo infinito. Establezca el número -1 para indicar que no hay límite.</translation> <translation>Filtros externos que se ejecuten por más tiempo del establecido serán detenidos. Esto es por el caso inusual (ej: postscript) dónde un documento puede causar que un filtro entre en un ciclo infinito. Establezca el número -1 para indicar que no hay límite.</translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2365,7 +2430,7 @@ Esto ayuda con las búsquedas de archivos de texto muy grandes (ej: archivos de
</message> </message>
<message> <message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source> <source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation>Mostrar filtros de categorías como barra de herramientas en lugar de panel de botones (necesita reinicio).</translation> <translation type="obsolete">Mostrar filtros de categorías como barra de herramientas en lugar de panel de botones (necesita reinicio).</translation>
</message> </message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
@ -2601,5 +2666,25 @@ El valor por defecto es 2 (por ciento).</translation>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation>Establece el valor por defecto para el estilo de la ventana de Fragmentos</translation> <translation>Establece el valor por defecto para el estilo de la ventana de Fragmentos</translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -582,11 +582,11 @@ Click Cancel if you want to edit the configuration file before indexing starts,
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation>Jeu de caractères par défaut</translation> <translation type="obsolete">Jeu de caractères par défaut</translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>Jeu de caractères utilisé pour lire les fichiers qui ne l&apos;identifient pas de manière interne, par exemple les fichiers de texte pur. &lt;br&gt;La valeur par défaut est vide, et le programme utilise l&apos;environnement.</translation> <translation type="obsolete">Jeu de caractères utilisé pour lire les fichiers qui ne l&apos;identifient pas de manière interne, par exemple les fichiers de texte pur. &lt;br&gt;La valeur par défaut est vide, et le programme utilise l&apos;environnement.</translation>
</message> </message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
@ -616,6 +616,14 @@ Click Cancel if you want to edit the configuration file before indexing starts,
<source>Web history</source> <source>Web history</source>
<translation>Historique Web</translation> <translation>Historique Web</translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -844,7 +852,7 @@ Vérifier le fichier mimeconf</translation>
</message> </message>
<message> <message>
<source>Document category filter</source> <source>Document category filter</source>
<translation>Filtre de catégories de documents</translation> <translation type="obsolete">Filtre de catégories de documents</translation>
</message> </message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
@ -975,20 +983,57 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source> <source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation>L&apos;index n&apos;est pas à jour pour ce fichier. Il y aurait un risque d&apos;afficher une entrée incorrecte</translation> <translation type="obsolete">L&apos;index n&apos;est pas à jour pour ce fichier. Il y aurait un risque d&apos;afficher une entrée incorrecte</translation>
</message> </message>
<message> <message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source> <source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation>Cliquer Ok pour mettre à jour l&apos;index pour ce fichier, puis relancer la recherche quand l&apos;indexation est terminée. Sinon cliquer Annuler</translation> <translation type="obsolete">Cliquer Ok pour mettre à jour l&apos;index pour ce fichier, puis relancer la recherche quand l&apos;indexation est terminée. Sinon cliquer Annuler</translation>
</message> </message>
<message> <message>
<source>Indexer running so things should improve when it&apos;s done</source> <source>Indexer running so things should improve when it&apos;s done</source>
<translation>L&apos;indexeur est en cours d&apos;execution, le fichier devrait être mis à jour</translation> <translation type="obsolete">L&apos;indexeur est en cours d&apos;execution, le fichier devrait être mis à jour</translation>
</message> </message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation>Sous-documents et attachements</translation> <translation>Sous-documents et attachements</translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished">Documents identiques</translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished">Ces URLs(| ipath) partagent le même contenu</translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -1022,11 +1067,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation>Outils de recherche</translation> <translation type="obsolete">Outils de recherche</translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation>Liste de résultats</translation> <translation type="obsolete">Liste de résultats</translation>
</message> </message>
<message> <message>
<source>&amp;About Recoll</source> <source>&amp;About Recoll</source>
@ -1114,7 +1159,7 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>All</source> <source>All</source>
<translation>Tout</translation> <translation type="obsolete">Tout</translation>
</message> </message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
@ -1428,11 +1473,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Duplicate documents</source> <source>Duplicate documents</source>
<translation>Documents identiques</translation> <translation type="obsolete">Documents identiques</translation>
</message> </message>
<message> <message>
<source>These Urls ( | ipath) share the same content:</source> <source>These Urls ( | ipath) share the same content:</source>
<translation>Ces URLs(| ipath) partagent le même contenu</translation> <translation type="obsolete">Ces URLs(| ipath) partagent le même contenu</translation>
</message> </message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
@ -1587,6 +1632,10 @@ Please check the mimeview file</source>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation>Afficher les sous-documents et attachements</translation> <translation>Afficher les sous-documents et attachements</translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2498,6 +2547,22 @@ Ceci diminue les ressources consommées par l&apos;indexation et aide le chargem
</source> </source>
<translation>Un filtre externe qui prend plus de temps sera arrêté. Traite le cas rare (possible avec postscript par exemple) un document pourrait amener un filtre à boucler sans fin. Mettre -1 pour complètement supprimer la limite (déconseillé).</translation> <translation>Un filtre externe qui prend plus de temps sera arrêté. Traite le cas rare (possible avec postscript par exemple) un document pourrait amener un filtre à boucler sans fin. Mettre -1 pour complètement supprimer la limite (déconseillé).</translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2678,7 +2743,7 @@ Ceci diminue les ressources consommées par l&apos;indexation et aide le chargem
</message> </message>
<message> <message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source> <source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation>Afficher le filtre de catégorie comme une barre d&apos;outils plutot que comme un panneau de boutons (après le redémarrage).</translation> <translation type="obsolete">Afficher le filtre de catégorie comme une barre d&apos;outils plutot que comme un panneau de boutons (après le redémarrage).</translation>
</message> </message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
@ -2926,5 +2991,25 @@ La valeur par défaut est 2%</translation>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation>Réinitialise le style de la fenêtre des fragments</translation> <translation>Réinitialise le style de la fenêtre des fragments</translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -546,11 +546,11 @@ Click Cancel if you want to edit the configuration file before indexing starts,
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation>Set di caratteri di default</translation> <translation type="obsolete">Set di caratteri di default</translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>Questa è la codifica caratteri usata per leggere i file che non contengono indicazioni interne sulla codifica usata, ad esempio file di testo semplice.&lt;br&gt;Il valore predefinito è vuoto, in modo che venga usata l&apos;impostazione locale del sistema.</translation> <translation type="obsolete">Questa è la codifica caratteri usata per leggere i file che non contengono indicazioni interne sulla codifica usata, ad esempio file di testo semplice.&lt;br&gt;Il valore predefinito è vuoto, in modo che venga usata l&apos;impostazione locale del sistema.</translation>
</message> </message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
@ -576,6 +576,14 @@ Click Cancel if you want to edit the configuration file before indexing starts,
<source>Web history</source> <source>Web history</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -777,10 +785,6 @@ Verifica il file mimeconf</translation>
<source>Missing helper programs</source> <source>Missing helper programs</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Document category filter</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -899,22 +903,47 @@ Please check the mimeview file</source>
<source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source> <source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Indexer running so things should improve when it&apos;s done</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -948,11 +977,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation>Strumenti di ricerca</translation> <translation type="obsolete">Strumenti di ricerca</translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation>Lista risultati</translation> <translation type="obsolete">Lista risultati</translation>
</message> </message>
<message> <message>
<source>&amp;About Recoll</source> <source>&amp;About Recoll</source>
@ -1038,10 +1067,6 @@ Please check the mimeview file</source>
<source>&amp;Indexing configuration</source> <source>&amp;Indexing configuration</source>
<translation type="obsolete">Conf&amp;igurazione indicizzazione</translation> <translation type="obsolete">Conf&amp;igurazione indicizzazione</translation>
</message> </message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1304,14 +1329,6 @@ Please check the mimeview file</source>
<source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source> <source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1425,6 +1442,10 @@ Please check the mimeview file</source>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2242,6 +2263,22 @@ This will help searching very big text files (ie: log files).</source>
</source> </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2420,10 +2457,6 @@ This will help searching very big text files (ie: log files).</source>
<source>Choose editor applications</source> <source>Choose editor applications</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
<translation>Inizia automaticamente una ricerca semplice digitando uno spazio.</translation> <translation>Inizia automaticamente una ricerca semplice digitando uno spazio.</translation>
@ -2639,5 +2672,25 @@ The default value is 2 (percent). </source>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -541,11 +541,11 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation>Numatytoji simbolių aibė</translation> <translation type="obsolete">Numatytoji simbolių aibė</translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>Pasirinkta simbolių aibė bus naudojama skaityti bylų, kurių simbolių aibės nepavyksta nustatyti, turiniui.&lt;br&gt;Numatytoji vertė yra nepasirinkti konkrečios simbolių aibės - tokiu atveju naudojama NLS aplinkos vertė.</translation> <translation type="obsolete">Pasirinkta simbolių aibė bus naudojama skaityti bylų, kurių simbolių aibės nepavyksta nustatyti, turiniui.&lt;br&gt;Numatytoji vertė yra nepasirinkti konkrečios simbolių aibės - tokiu atveju naudojama NLS aplinkos vertė.</translation>
</message> </message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
@ -575,6 +575,14 @@ p, li { white-space: pre-wrap; }
<source>Web history</source> <source>Web history</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -798,7 +806,7 @@ Prašome patikrinti mimeconf bylą</translation>
</message> </message>
<message> <message>
<source>Document category filter</source> <source>Document category filter</source>
<translation>Dokumentų kategorijų filtras</translation> <translation type="obsolete">Dokumentų kategorijų filtras</translation>
</message> </message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
@ -919,22 +927,47 @@ Please check the mimeview file</source>
<source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source> <source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Indexer running so things should improve when it&apos;s done</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -944,11 +977,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation>Paieškos įrankiai</translation> <translation type="obsolete">Paieškos įrankiai</translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation>Rezultatų sąrašas</translation> <translation type="obsolete">Rezultatų sąrašas</translation>
</message> </message>
<message> <message>
<source>&amp;File</source> <source>&amp;File</source>
@ -1060,7 +1093,7 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>All</source> <source>All</source>
<translation>Visi</translation> <translation type="obsolete">Visi</translation>
</message> </message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
@ -1344,14 +1377,6 @@ Please check the mimeview file</source>
<source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source> <source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1489,6 +1514,10 @@ Please check the mimeview file</source>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2357,6 +2386,22 @@ This will help searching very big text files (ie: log files).</source>
</source> </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2537,7 +2582,7 @@ This will help searching very big text files (ie: log files).</source>
</message> </message>
<message> <message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source> <source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation>Kategorijų filtrą rodyti kaip įrankų juostą (reikalauja perkrovimo).</translation> <translation type="obsolete">Kategorijų filtrą rodyti kaip įrankų juostą (reikalauja perkrovimo).</translation>
</message> </message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
@ -2753,5 +2798,25 @@ The default value is 2 (percent). </source>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -579,11 +579,11 @@ Click Cancel if you want to edit the configuration file before indexing starts,
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation>Кодировка по умолчанию</translation> <translation type="obsolete">Кодировка по умолчанию</translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>Эта кодировка будет использована при чтении файлов, в которых таковая не указывается явно (например, чисто текстовых файлов).&lt;br&gt;Обычно значение пусто, тогда оно извлекается из окружения (локали).</translation> <translation type="obsolete">Эта кодировка будет использована при чтении файлов, в которых таковая не указывается явно (например, чисто текстовых файлов).&lt;br&gt;Обычно значение пусто, тогда оно извлекается из окружения (локали).</translation>
</message> </message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
@ -613,6 +613,14 @@ Click Cancel if you want to edit the configuration file before indexing starts,
<source>Web history</source> <source>Web history</source>
<translation>Посещённые web-страницы</translation> <translation>Посещённые web-страницы</translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -841,7 +849,7 @@ Please check the mimeconf file</source>
</message> </message>
<message> <message>
<source>Document category filter</source> <source>Document category filter</source>
<translation>Фильтр категории документа</translation> <translation type="obsolete">Фильтр категории документа</translation>
</message> </message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
@ -973,20 +981,57 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source> <source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation>Индекс для этого файла устарел. Отказываюсь рисковать показывать неправильную запись.</translation> <translation type="obsolete">Индекс для этого файла устарел. Отказываюсь рисковать показывать неправильную запись.</translation>
</message> </message>
<message> <message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source> <source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation>Нажмите ОК, чтобы обновить индекс для файла, и перезапустите очередь по окончании. Или нажмите Отмена.</translation> <translation type="obsolete">Нажмите ОК, чтобы обновить индекс для файла, и перезапустите очередь по окончании. Или нажмите Отмена.</translation>
</message> </message>
<message> <message>
<source>Indexer running so things should improve when it&apos;s done</source> <source>Indexer running so things should improve when it&apos;s done</source>
<translation>Индексация выполняется, так что по завершении положение должно улучшиться</translation> <translation type="obsolete">Индексация выполняется, так что по завершении положение должно улучшиться</translation>
</message> </message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation>Вложенные документы</translation> <translation>Вложенные документы</translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished">Дублированные документы</translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished">Данные URL ( | индексные пути) имеют одно и то же содержимое:</translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -1012,11 +1057,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation>Инструменты поиска</translation> <translation type="obsolete">Инструменты поиска</translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation>Список результатов</translation> <translation type="obsolete">Список результатов</translation>
</message> </message>
<message> <message>
<source>E&amp;xit</source> <source>E&amp;xit</source>
@ -1112,7 +1157,7 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>All</source> <source>All</source>
<translation>все</translation> <translation type="obsolete">все</translation>
</message> </message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
@ -1414,11 +1459,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Duplicate documents</source> <source>Duplicate documents</source>
<translation>Дублированные документы</translation> <translation type="obsolete">Дублированные документы</translation>
</message> </message>
<message> <message>
<source>These Urls ( | ipath) share the same content:</source> <source>These Urls ( | ipath) share the same content:</source>
<translation>Данные URL ( | индексные пути) имеют одно и то же содержимое:</translation> <translation type="obsolete">Данные URL ( | индексные пути) имеют одно и то же содержимое:</translation>
</message> </message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
@ -1573,6 +1618,10 @@ Please check the mimeview file</source>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation>Показать вложенные документы</translation> <translation>Показать вложенные документы</translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2461,6 +2510,22 @@ This will help searching very big text files (ie: log files).</source>
<translation>Внешние фильтры, выполняющиеся дольше указанного предельного времени работы, принудительно завершаются. Это может помочь в тех редких случаях, когда фильтр (например, postscript) зацикливается при обработке некоторого документа. Значение, равное -1, выключает проверку времени работы. <translation>Внешние фильтры, выполняющиеся дольше указанного предельного времени работы, принудительно завершаются. Это может помочь в тех редких случаях, когда фильтр (например, postscript) зацикливается при обработке некоторого документа. Значение, равное -1, выключает проверку времени работы.
</translation> </translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2641,7 +2706,7 @@ This will help searching very big text files (ie: log files).</source>
</message> </message>
<message> <message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source> <source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation>Показывать фильтр категории документа в виде выпадающего списка, а не панели с кнопками (требуется перезапуск).</translation> <translation type="obsolete">Показывать фильтр категории документа в виде выпадающего списка, а не панели с кнопками (требуется перезапуск).</translation>
</message> </message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
@ -2881,5 +2946,25 @@ The default value is 2 (percent). </source>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation>Сбрасывает стиль окна Фрагменты</translation> <translation>Сбрасывает стиль окна Фрагменты</translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -547,11 +547,11 @@ Click Cancel if you want to edit the configuration file before indexing starts,
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation>Öntanımlı karakter seti</translation> <translation type="obsolete">Öntanımlı karakter seti</translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>Bu karakter seti, karakter kodlaması uygulama tarafından belirlenemeyen dosyalar için kulanılır, Örneğin salt metin dosyaları.&lt;br&gt;Öntanımlı değer boştur ve NLS çevresel değişkeni kullanılır.</translation> <translation type="obsolete">Bu karakter seti, karakter kodlaması uygulama tarafından belirlenemeyen dosyalar için kulanılır, Örneğin salt metin dosyaları.&lt;br&gt;Öntanımlı değer boştur ve NLS çevresel değişkeni kullanılır.</translation>
</message> </message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
@ -577,6 +577,14 @@ Click Cancel if you want to edit the configuration file before indexing starts,
<source>Web history</source> <source>Web history</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -778,10 +786,6 @@ Lütfen mimeconf dosyasını kontrol edin</translation>
<source>Missing helper programs</source> <source>Missing helper programs</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Document category filter</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -900,22 +904,47 @@ Please check the mimeview file</source>
<source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source> <source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Indexer running so things should improve when it&apos;s done</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -925,11 +954,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation>Arama araçları</translation> <translation type="obsolete">Arama araçları</translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation>Sonuç listesi</translation> <translation type="obsolete">Sonuç listesi</translation>
</message> </message>
<message> <message>
<source>&amp;File</source> <source>&amp;File</source>
@ -1039,10 +1068,6 @@ Please check the mimeview file</source>
<source>&amp;Indexing configuration</source> <source>&amp;Indexing configuration</source>
<translation type="obsolete">İ&amp;ndeksleme yapılandırması </translation> <translation type="obsolete">İ&amp;ndeksleme yapılandırması </translation>
</message> </message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1305,14 +1330,6 @@ Please check the mimeview file</source>
<source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source> <source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1426,6 +1443,10 @@ Please check the mimeview file</source>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2242,6 +2263,22 @@ This will help searching very big text files (ie: log files).</source>
</source> </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2420,10 +2457,6 @@ This will help searching very big text files (ie: log files).</source>
<source>Choose editor applications</source> <source>Choose editor applications</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
<translation>Beyaz alan girdisi olduğunda basit aramayı otomatik olarak başlat.</translation> <translation>Beyaz alan girdisi olduğunda basit aramayı otomatik olarak başlat.</translation>
@ -2639,5 +2672,25 @@ The default value is 2 (percent). </source>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -548,11 +548,11 @@ Click Cancel if you want to edit the configuration file before indexing starts,
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation>Типове кодування</translation> <translation type="obsolete">Типове кодування</translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>Кодування, яке буде застосовано при читанні файлів, які не вказують таке особливо (наприклад, чисто текстових файлів).&lt;br&gt;Типово невказане, тоді використовується значення з оточення (локалі).</translation> <translation type="obsolete">Кодування, яке буде застосовано при читанні файлів, які не вказують таке особливо (наприклад, чисто текстових файлів).&lt;br&gt;Типово невказане, тоді використовується значення з оточення (локалі).</translation>
</message> </message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
@ -578,6 +578,14 @@ Click Cancel if you want to edit the configuration file before indexing starts,
<source>Web history</source> <source>Web history</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -799,10 +807,6 @@ Please check the mimeconf file</source>
<source>Choose a file name to save under</source> <source>Choose a file name to save under</source>
<translation type="obsolete">Оберіть ім&apos;я файла для збереження</translation> <translation type="obsolete">Оберіть ім&apos;я файла для збереження</translation>
</message> </message>
<message>
<source>Document category filter</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -921,22 +925,47 @@ Please check the mimeview file</source>
<source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source> <source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Indexer running so things should improve when it&apos;s done</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -962,11 +991,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation>Інструменти пошуку</translation> <translation type="obsolete">Інструменти пошуку</translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation>Список результатів</translation> <translation type="obsolete">Список результатів</translation>
</message> </message>
<message> <message>
<source>E&amp;xit</source> <source>E&amp;xit</source>
@ -1062,7 +1091,7 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>All</source> <source>All</source>
<translation>всі</translation> <translation type="obsolete">всі</translation>
</message> </message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
@ -1334,14 +1363,6 @@ Please check the mimeview file</source>
<source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source> <source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1455,6 +1476,10 @@ Please check the mimeview file</source>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2287,6 +2312,22 @@ This will help searching very big text files (ie: log files).</source>
</source> </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2465,10 +2506,6 @@ This will help searching very big text files (ie: log files).</source>
<source>Choose editor applications</source> <source>Choose editor applications</source>
<translation>Оберіть редактори</translation> <translation>Оберіть редактори</translation>
</message> </message>
<message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
<translation>Починати простий пошук при введенні пробілу.</translation> <translation>Починати простий пошук при введенні пробілу.</translation>
@ -2684,5 +2721,25 @@ The default value is 2 (percent). </source>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -511,14 +511,6 @@ p, li { white-space: pre-wrap; }
<source>These are patterns for file or directory names which should not be indexed.</source> <source>These are patterns for file or directory names which should not be indexed.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Default character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -543,6 +535,14 @@ p, li { white-space: pre-wrap; }
<source>Web history</source> <source>Web history</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -730,10 +730,6 @@ p, li { white-space: pre-wrap; }
<source>Missing helper programs</source> <source>Missing helper programs</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Document category filter</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -848,22 +844,47 @@ Please check the mimeview file</source>
<source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source> <source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Indexer running so things should improve when it&apos;s done</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -871,14 +892,6 @@ Please check the mimeview file</source>
<source>Recoll</source> <source>Recoll</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Search tools</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Result list</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>&amp;File</source> <source>&amp;File</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -979,10 +992,6 @@ Please check the mimeview file</source>
<source>External index dialog</source> <source>External index dialog</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1221,14 +1230,6 @@ Please check the mimeview file</source>
<source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source> <source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1311,6 +1312,10 @@ Please check the mimeview file</source>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -1842,6 +1847,22 @@ This will help searching very big text files (ie: log files).</source>
</source> </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -1992,10 +2013,6 @@ This will help searching very big text files (ie: log files).</source>
<source>Choose editor applications</source> <source>Choose editor applications</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -2205,5 +2222,25 @@ The default value is 2 (percent). </source>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -612,11 +612,11 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>使&lt;br&gt;使</translation> <translation type="obsolete">使&lt;br&gt;使</translation>
</message> </message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
@ -646,6 +646,14 @@ p, li { white-space: pre-wrap; }
<source>Web history</source> <source>Web history</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -868,7 +876,7 @@ Please check the mimeconf file</source>
</message> </message>
<message> <message>
<source>Document category filter</source> <source>Document category filter</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
@ -993,22 +1001,47 @@ Please check the mimeview file</source>
<source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source> <source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Indexer running so things should improve when it&apos;s done</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -1018,11 +1051,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>&amp;File</source> <source>&amp;File</source>
@ -1134,7 +1167,7 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>All</source> <source>All</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
@ -1418,14 +1451,6 @@ Please check the mimeview file</source>
<source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source> <source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1575,6 +1600,10 @@ Please check the mimeview file</source>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2179,6 +2208,22 @@ This will help searching very big text files (ie: log files).</source>
</source> </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2351,7 +2396,7 @@ This will help searching very big text files (ie: log files).</source>
</message> </message>
<message> <message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source> <source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
@ -2579,5 +2624,25 @@ The default value is 2 (percent). </source>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -612,11 +612,11 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<source>Default character set</source> <source>Default character set</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source> <source>This is the character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation>使&lt;br&gt;使</translation> <translation type="obsolete">使&lt;br&gt;使</translation>
</message> </message>
<message> <message>
<source>Follow symbolic links</source> <source>Follow symbolic links</source>
@ -646,6 +646,14 @@ p, li { white-space: pre-wrap; }
<source>Web history</source> <source>Web history</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Default&lt;br&gt;character set</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Character set used for reading files which do not identify the character set internally, for example pure text files.&lt;br&gt;The default value is empty, and the value from the NLS environnement is used.</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RTIToolW</name> <name>RTIToolW</name>
@ -868,7 +876,7 @@ Please check the mimeconf file</source>
</message> </message>
<message> <message>
<source>Document category filter</source> <source>Document category filter</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>No external viewer configured for mime type [</source> <source>No external viewer configured for mime type [</source>
@ -993,22 +1001,47 @@ Please check the mimeview file</source>
<source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source> <source>External applications/commands needed for your file types and not found, as stored by the last indexing pass in </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then re-run the query when indexing is done. Else, Cancel.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Indexer running so things should improve when it&apos;s done</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Sub-documents and attachments</source> <source>Sub-documents and attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Document filter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Index not up to date for this file. Refusing to risk showing the wrong entry. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Ok to update the index for this file, then you will need to re-run the query when indexing is done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The indexer is running so things should improve when it&apos;s done. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The document belongs to an external indexwhich I can&apos;t update. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click Cancel to return to the list. Click Ignore to show the preview anyway. </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bad desktop app spec for %1: [%2]
Please check the desktop file</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>RclMainBase</name> <name>RclMainBase</name>
@ -1018,11 +1051,11 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>Search tools</source> <source>Search tools</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>Result list</source> <source>Result list</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>&amp;File</source> <source>&amp;File</source>
@ -1134,7 +1167,7 @@ Please check the mimeview file</source>
</message> </message>
<message> <message>
<source>All</source> <source>All</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>&amp;Show missing helpers</source> <source>&amp;Show missing helpers</source>
@ -1418,14 +1451,6 @@ Please check the mimeview file</source>
<source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source> <source>&lt;p&gt;&lt;i&gt;Alternate spellings: &lt;/i&gt;</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Duplicate documents</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>These Urls ( | ipath) share the same content:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Result count (est.)</source> <source>Result count (est.)</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@ -1575,6 +1600,10 @@ Please check the mimeview file</source>
<source>Show subdocuments / attachments</source> <source>Show subdocuments / attachments</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Open With</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SSearch</name> <name>SSearch</name>
@ -2179,6 +2208,22 @@ This will help searching very big text files (ie: log files).</source>
</source> </source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Only mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>An exclusive list of indexed mime types.&lt;br&gt;Nothing else will be indexed. Normally empty and inactive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exclude mime types</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mime types not to be indexed</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>confgui::ConfTopPanelW</name> <name>confgui::ConfTopPanelW</name>
@ -2351,7 +2396,7 @@ This will help searching very big text files (ie: log files).</source>
</message> </message>
<message> <message>
<source>Display category filter as toolbar instead of button panel (needs restart).</source> <source>Display category filter as toolbar instead of button panel (needs restart).</source>
<translation></translation> <translation type="obsolete"></translation>
</message> </message>
<message> <message>
<source>Auto-start simple search on whitespace entry.</source> <source>Auto-start simple search on whitespace entry.</source>
@ -2579,5 +2624,25 @@ The default value is 2 (percent). </source>
<source>Resets the Snippets window style</source> <source>Resets the Snippets window style</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Decide if document filters are shown as radio buttons, toolbar combobox, or menu.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Document filter choice style:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Buttons Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar Combobox</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
</TS> </TS>

View file

@ -58,6 +58,7 @@
#ifdef RCL_USE_ASPELL #ifdef RCL_USE_ASPELL
#include "rclaspell.h" #include "rclaspell.h"
#endif #endif
#include "appformime.h"
#include "respopup.h" #include "respopup.h"
static const QKeySequence quitKeySeq("Ctrl+q"); static const QKeySequence quitKeySeq("Ctrl+q");
@ -876,6 +877,20 @@ void ResList::linkWasClicked(const QUrl &url)
} }
break; break;
// Open parent folder
case 'F':
{
int i = atoi(ascurl.c_str()+1) - 1;
Rcl::Doc doc;
if (!getDoc(i, doc)) {
LOGERR(("ResList::linkWasClicked: can't get doc for %d\n", i));
return;
}
emit editRequested(ResultPopup::getParent(RefCntr<DocSequence>(),
doc));
}
break;
// Show query details // Show query details
case 'H': case 'H':
{ {
@ -913,6 +928,27 @@ void ResList::linkWasClicked(const QUrl &url)
resultPageBack(); resultPageBack();
break; break;
// Run script. Link format Rnn|Script Name
case 'R':
{
int i = atoi(ascurl.c_str() + 1) - 1;
QString s = url.toString();
int bar = s.indexOf("|");
if (bar == -1 || bar >= s.size()-1)
break;
string cmdname = qs2utf8s(s.right(s.size() - (bar + 1)));
DesktopDb ddb(path_cat(theconfig->getConfDir(), "scripts"));
DesktopDb::AppDef app;
if (ddb.appByName(cmdname, app)) {
QAction act(QString::fromUtf8(app.name.c_str()), this);
QVariant v(QString::fromUtf8(app.command.c_str()));
act.setData(v);
m_popDoc = i;
menuOpenWith(&act);
}
}
break;
// Spelling: replacement suggestion clicked // Spelling: replacement suggestion clicked
case 'S': case 'S':
{ {

View file

@ -77,6 +77,27 @@ QMenu *create(QWidget *me, int opts, RefCntr<DocSequence> source, Rcl::Doc& doc)
SLOT(menuOpenWith(QAction *))); SLOT(menuOpenWith(QAction *)));
} }
} }
// See if there are any desktop files in $RECOLL_CONFDIR/scripts
// and possibly create a "run script" menu.
aps.clear();
ddb = new DesktopDb(path_cat(theconfig->getConfDir(), "scripts"));
if (ddb && ddb->allApps(&aps) && !aps.empty()) {
QMenu *sub = popup->addMenu(me->tr("Run Script"));
if (sub) {
for (vector<DesktopDb::AppDef>::const_iterator it = aps.begin();
it != aps.end(); it++) {
QAction *act = new
QAction(QString::fromUtf8(it->name.c_str()), me);
QVariant v(QString::fromUtf8(it->command.c_str()));
act->setData(v);
sub->addAction(act);
}
sub->connect(sub, SIGNAL(triggered(QAction *)), me,
SLOT(menuOpenWith(QAction *)));
}
}
delete ddb;
} }
popup->addAction(me->tr("Copy &File Name"), me, SLOT(menuCopyFN())); popup->addAction(me->tr("Copy &File Name"), me, SLOT(menuCopyFN()));
@ -120,7 +141,7 @@ Rcl::Doc getParent(RefCntr<DocSequence> source, Rcl::Doc& doc)
if (source.isNull() || !source->getEnclosing(doc, pdoc)) { if (source.isNull() || !source->getEnclosing(doc, pdoc)) {
// No parent doc: show enclosing folder with app configured for // No parent doc: show enclosing folder with app configured for
// directories // directories
pdoc.url = path_getfather(doc.url); pdoc.url = url_parentfolder(doc.url);
pdoc.meta[Rcl::Doc::keychildurl] = doc.url; pdoc.meta[Rcl::Doc::keychildurl] = doc.url;
pdoc.meta[Rcl::Doc::keyapptg] = "parentopen"; pdoc.meta[Rcl::Doc::keyapptg] = "parentopen";
pdoc.mimetype = "inode/directory"; pdoc.mimetype = "inode/directory";

View file

@ -48,6 +48,7 @@
#include "respopup.h" #include "respopup.h"
#include "rclmain_w.h" #include "rclmain_w.h"
#include "multisave.h" #include "multisave.h"
#include "appformime.h"
static const QKeySequence quitKeySeq("Ctrl+q"); static const QKeySequence quitKeySeq("Ctrl+q");
static const QKeySequence closeKeySeq("Ctrl+w"); static const QKeySequence closeKeySeq("Ctrl+w");
@ -764,6 +765,14 @@ void ResTable::linkWasClicked(const QUrl &url)
m_rclmain->newDupsW(m_detaildoc, dups); m_rclmain->newDupsW(m_detaildoc, dups);
} }
} }
// Open parent folder
case 'F':
{
emit editRequested(ResultPopup::getParent(RefCntr<DocSequence>(),
m_detaildoc));
}
break;
case 'P': case 'P':
case 'E': case 'E':
{ {
@ -773,6 +782,25 @@ void ResTable::linkWasClicked(const QUrl &url)
emit editRequested(m_detaildoc); emit editRequested(m_detaildoc);
} }
break; break;
// Run script. Link format Rnn|Script Name
case 'R':
{
int bar = s.indexOf("|");
if (bar == -1 || bar >= s.size()-1)
break;
string cmdname = qs2utf8s(s.right(s.size() - (bar + 1)));
DesktopDb ddb(path_cat(theconfig->getConfDir(), "scripts"));
DesktopDb::AppDef app;
if (ddb.appByName(cmdname, app)) {
QAction act(QString::fromUtf8(app.name.c_str()), this);
QVariant v(QString::fromUtf8(app.command.c_str()));
act.setData(v);
menuOpenWith(&act);
}
}
break;
default: default:
LOGERR(("ResTable::linkWasClicked: bad link [%s]\n", ascurl)); LOGERR(("ResTable::linkWasClicked: bad link [%s]\n", ascurl));
break;// ?? break;// ??

View file

@ -381,6 +381,11 @@ endopts:
string titleorfn = doc.meta[Rcl::Doc::keytt]; string titleorfn = doc.meta[Rcl::Doc::keytt];
if (titleorfn.empty()) if (titleorfn.empty())
titleorfn = doc.meta[Rcl::Doc::keyfn]; titleorfn = doc.meta[Rcl::Doc::keyfn];
if (titleorfn.empty()) {
string url;
printableUrl(rclconfig->getDefCharset(), doc.url, url);
titleorfn = path_getsimple(url);
}
char cpc[20]; char cpc[20];
sprintf(cpc, "%d", doc.pc); sprintf(cpc, "%d", doc.pc);

View file

@ -179,6 +179,15 @@ void ResListPager::displayDoc(RclConfig *config, int i, Rcl::Doc& doc,
titleOrFilename = utf8fn; titleOrFilename = utf8fn;
} }
// Url for the parent directory. We strip the file:// part for local
// paths
string parenturl = url_parentfolder(url);
{
string localpath = fileurltolocalpath(parenturl);
if (!localpath.empty())
parenturl = localpath;
}
// Result number // Result number
char numbuf[20]; char numbuf[20];
int docnumforlinks = m_winfirst + 1 + i; int docnumforlinks = m_winfirst + 1 + i;
@ -286,6 +295,7 @@ void ResListPager::displayDoc(RclConfig *config, int i, Rcl::Doc& doc,
subs["L"] = linksbuf.str(); subs["L"] = linksbuf.str();
subs["N"] = numbuf; subs["N"] = numbuf;
subs["M"] = doc.mimetype; subs["M"] = doc.mimetype;
subs["P"] = parenturl;
subs["R"] = doc.meta[Rcl::Doc::keyrr]; subs["R"] = doc.meta[Rcl::Doc::keyrr];
subs["S"] = sizebuf; subs["S"] = sizebuf;
subs["T"] = maybeEscapeHtml(titleOrFilename); subs["T"] = maybeEscapeHtml(titleOrFilename);

View file

@ -1033,9 +1033,10 @@ bool Db::isopen()
} }
// Try to translate field specification into field prefix. // Try to translate field specification into field prefix.
bool Db::fieldToTraits(const string& fld, const FieldTraits **ftpp) bool Db::fieldToTraits(const string& fld, const FieldTraits **ftpp,
bool isquery)
{ {
if (m_config && m_config->getFieldTraits(fld, ftpp)) if (m_config && m_config->getFieldTraits(fld, ftpp, isquery))
return true; return true;
*ftpp = 0; *ftpp = 0;
@ -1060,8 +1061,7 @@ class TextSplitDb : public TextSplitP {
Xapian::termpos curpos; Xapian::termpos curpos;
TextSplitDb(Xapian::Document &d, TermProc *prc) TextSplitDb(Xapian::Document &d, TermProc *prc)
: TextSplitP(prc), : TextSplitP(prc), doc(d), basepos(1), curpos(0)
doc(d), basepos(1), curpos(0), wdfinc(1)
{} {}
// Reimplement text_to_words to insert the begin and end anchor terms. // Reimplement text_to_words to insert the begin and end anchor terms.
@ -1072,7 +1072,7 @@ class TextSplitDb : public TextSplitP {
try { try {
// Index the possibly prefixed start term. // Index the possibly prefixed start term.
doc.add_posting(prefix + start_of_field_term, basepos, wdfinc); doc.add_posting(ft.pfx + start_of_field_term, basepos, ft.wdfinc);
++basepos; ++basepos;
} XCATCHERROR(ermsg); } XCATCHERROR(ermsg);
if (!ermsg.empty()) { if (!ermsg.empty()) {
@ -1087,8 +1087,8 @@ class TextSplitDb : public TextSplitP {
try { try {
// Index the possibly prefixed end term. // Index the possibly prefixed end term.
doc.add_posting(prefix + end_of_field_term, basepos + curpos + 1, doc.add_posting(ft.pfx + end_of_field_term, basepos + curpos + 1,
wdfinc); ft.wdfinc);
++basepos; ++basepos;
} XCATCHERROR(ermsg); } XCATCHERROR(ermsg);
if (!ermsg.empty()) { if (!ermsg.empty()) {
@ -1103,27 +1103,17 @@ class TextSplitDb : public TextSplitP {
return true; return true;
} }
void setprefix(const string& pref) void setTraits(const FieldTraits& ftp)
{ {
if (pref.empty()) ft = ftp;
prefix.clear(); if (!ft.pfx.empty())
else ft.pfx = wrap_prefix(ft.pfx);
prefix = wrap_prefix(pref);
}
void setwdfinc(int i)
{
wdfinc = i;
} }
friend class TermProcIdx; friend class TermProcIdx;
private: private:
// If prefix is set, we also add a posting for the prefixed terms FieldTraits ft;
// (ie: for titles, add postings for both "term" and "Sterm")
string prefix;
// Some fields have more weight
int wdfinc;
}; };
class TermProcIdx : public TermProc { class TermProcIdx : public TermProc {
@ -1145,15 +1135,18 @@ public:
try { try {
// Index without prefix, using the field-specific weighting // Index without prefix, using the field-specific weighting
LOGDEB1(("Emitting term at %d : [%s]\n", pos, term.c_str())); LOGDEB1(("Emitting term at %d : [%s]\n", pos, term.c_str()));
m_ts->doc.add_posting(term, pos, m_ts->wdfinc); if (!m_ts->ft.pfxonly)
m_ts->doc.add_posting(term, pos, m_ts->ft.wdfinc);
#ifdef TESTING_XAPIAN_SPELL #ifdef TESTING_XAPIAN_SPELL
if (Db::isSpellingCandidate(term)) { if (Db::isSpellingCandidate(term)) {
m_ts->db.add_spelling(term); m_ts->db.add_spelling(term);
} }
#endif #endif
// Index the prefixed term. // Index the prefixed term.
if (!m_ts->prefix.empty()) { if (!m_ts->ft.pfx.empty()) {
m_ts->doc.add_posting(m_ts->prefix + term, pos, m_ts->wdfinc); m_ts->doc.add_posting(m_ts->ft.pfx + term, pos,
m_ts->ft.wdfinc);
} }
return true; return true;
} XCATCHERROR(ermsg); } XCATCHERROR(ermsg);
@ -1168,7 +1161,7 @@ public:
return; return;
} }
m_ts->doc.add_posting(m_ts->prefix + page_break_term, pos); m_ts->doc.add_posting(m_ts->ft.pfx + page_break_term, pos);
if (pos == m_lastpagepos) { if (pos == m_lastpagepos) {
m_pageincr++; m_pageincr++;
LOGDEB2(("newpage: same pos, pageincr %d lastpagepos %d\n", LOGDEB2(("newpage: same pos, pageincr %d lastpagepos %d\n",
@ -1351,15 +1344,15 @@ bool Db::addOrUpdate(const string &udi, const string &parent_udi, Doc &doc)
LOGDEB0(("Db::add: field [%s] pfx [%s] inc %d: [%s]\n", LOGDEB0(("Db::add: field [%s] pfx [%s] inc %d: [%s]\n",
meta_it->first.c_str(), ftp->pfx.c_str(), ftp->wdfinc, meta_it->first.c_str(), ftp->pfx.c_str(), ftp->wdfinc,
meta_it->second.c_str())); meta_it->second.c_str()));
splitter.setprefix(ftp->pfx); splitter.setTraits(*ftp);
splitter.setwdfinc(ftp->wdfinc);
if (!splitter.text_to_words(meta_it->second)) if (!splitter.text_to_words(meta_it->second))
LOGDEB(("Db::addOrUpdate: split failed for %s\n", LOGDEB(("Db::addOrUpdate: split failed for %s\n",
meta_it->first.c_str())); meta_it->first.c_str()));
} }
} }
splitter.setprefix(string());
splitter.setwdfinc(1); // Reset to no prefix and default params
splitter.setTraits(FieldTraits());
if (splitter.curpos < baseTextPosition) if (splitter.curpos < baseTextPosition)
splitter.basepos = baseTextPosition; splitter.basepos = baseTextPosition;
@ -1539,6 +1532,21 @@ bool Db::addOrUpdate(const string &udi, const string &parent_udi, Doc &doc)
} }
} }
// At this point, if the document "filename" field was empty,
// try to store the "container file name" value. This is done
// after indexing because we don't want search matches on
// this, but the filename is often useful for display
// purposes.
const string *fnp = 0;
if (!doc.peekmeta(Rcl::Doc::keyfn, &fnp) || fnp->empty()) {
if (doc.peekmeta(Rcl::Doc::keytcfn, &fnp) && !fnp->empty()) {
string value =
neutchars(truncate_to_word(*fnp,
m_idxMetaStoredLen), cstr_nc);
RECORD_APPEND(record, Rcl::Doc::keyfn, value);
}
}
// If empty pages (multiple break at same pos) were recorded, save // If empty pages (multiple break at same pos) were recorded, save
// them (this is because we have no way to record them in the // them (this is because we have no way to record them in the
// Xapian list // Xapian list
@ -1619,8 +1627,7 @@ bool Db::Native::docToXdocXattrOnly(TextSplitDb *splitter, const string &udi,
LOGDEB0(("Db::xattrOnly: field [%s] pfx [%s] inc %d: [%s]\n", LOGDEB0(("Db::xattrOnly: field [%s] pfx [%s] inc %d: [%s]\n",
meta_it->first.c_str(), ftp->pfx.c_str(), ftp->wdfinc, meta_it->first.c_str(), ftp->pfx.c_str(), ftp->wdfinc,
meta_it->second.c_str())); meta_it->second.c_str()));
splitter->setprefix(ftp->pfx); splitter->setTraits(*ftp);
splitter->setwdfinc(ftp->wdfinc);
if (!splitter->text_to_words(meta_it->second)) if (!splitter->text_to_words(meta_it->second))
LOGDEB(("Db::xattrOnly: split failed for %s\n", LOGDEB(("Db::xattrOnly: split failed for %s\n",
meta_it->first.c_str())); meta_it->first.c_str()));

View file

@ -223,7 +223,8 @@ class Db {
/* Return configured stop words */ /* Return configured stop words */
const StopList& getStopList() const {return m_stops;} const StopList& getStopList() const {return m_stops;}
/* Field name to prefix translation (ie: author -> 'A') */ /* Field name to prefix translation (ie: author -> 'A') */
bool fieldToTraits(const string& fldname, const FieldTraits **ftpp); bool fieldToTraits(const string& fldname, const FieldTraits **ftpp,
bool isquery = false);
/* Update-related methods ******************************************/ /* Update-related methods ******************************************/

View file

@ -30,6 +30,7 @@ namespace Rcl {
const string Doc::keyds("dbytes"); const string Doc::keyds("dbytes");
const string Doc::keyfmt("fmtime"); const string Doc::keyfmt("fmtime");
const string Doc::keyfn("filename"); const string Doc::keyfn("filename");
const string Doc::keytcfn("containerfilename");
const string Doc::keyfs("fbytes"); const string Doc::keyfs("fbytes");
const string Doc::keyipt("ipath"); const string Doc::keyipt("ipath");
const string Doc::keykw("keywords"); const string Doc::keykw("keywords");

View file

@ -246,7 +246,19 @@ class Doc {
// childurl. This is set when working with the parent of the result, to hold // childurl. This is set when working with the parent of the result, to hold
// the child of interest url, typically to highlight a directory entry // the child of interest url, typically to highlight a directory entry
static const string keychildurl; static const string keychildurl;
static const string keyfn; // file name // file name. This is set for filesystem-level containers or
// documents, and not inherited by subdocuments (which can get a
// keyfn anyway from, e.g, an attachment filename value). Subdocs
// used to inherit the file name, but this was undesirable (you
// usually don't want to see all subdocs when searching for the
// file name). Instead the container file name is now set in the
// document record but not indexed (see next entry).
static const string keyfn;
// Container file name. This is set for all subdocuments of a
// given top level container. It is not indexed by default but
// stored in the document record keyfn field if this is still
// empty when we create it, for display purposes.
static const string keytcfn;
static const string keyipt; // ipath static const string keyipt; // ipath
static const string keytp; // mime type static const string keytp; // mime type
static const string keyfmt; // file mtime static const string keyfmt; // file mtime

View file

@ -160,7 +160,7 @@ void Query::setSortBy(const string& fld, bool ascending) {
if (fld.empty()) { if (fld.empty()) {
m_sortField.erase(); m_sortField.erase();
} else { } else {
m_sortField = m_db->getConf()->fieldCanon(fld); m_sortField = m_db->getConf()->fieldQCanon(fld);
m_sortAscending = ascending; m_sortAscending = ascending;
} }
LOGDEB0(("RclQuery::setSortBy: [%s] %s\n", m_sortField.c_str(), LOGDEB0(("RclQuery::setSortBy: [%s] %s\n", m_sortField.c_str(),

View file

@ -328,7 +328,7 @@ bool Db::idxTermMatch(int typ_sens, const string &lang, const string &root,
string prefix; string prefix;
if (!field.empty()) { if (!field.empty()) {
const FieldTraits *ftp = 0; const FieldTraits *ftp = 0;
if (!fieldToTraits(field, &ftp) || ftp->pfx.empty()) { if (!fieldToTraits(field, &ftp, true) || ftp->pfx.empty()) {
LOGDEB(("Db::termMatch: field is not indexed (no prefix): [%s]\n", LOGDEB(("Db::termMatch: field is not indexed (no prefix): [%s]\n",
field.c_str())); field.c_str()));
} else { } else {

View file

@ -686,7 +686,7 @@ void SearchDataClauseSimple::processSimpleSpan(Rcl::Db &db, string& ermsg,
string prefix; string prefix;
const FieldTraits *ftp; const FieldTraits *ftp;
if (!m_field.empty() && db.fieldToTraits(m_field, &ftp)) { if (!m_field.empty() && db.fieldToTraits(m_field, &ftp, true)) {
prefix = wrap_prefix(ftp->pfx); prefix = wrap_prefix(ftp->pfx);
} }
@ -743,7 +743,7 @@ void SearchDataClauseSimple::processPhraseOrNear(Rcl::Db &db, string& ermsg,
string prefix; string prefix;
const FieldTraits *ftp; const FieldTraits *ftp;
if (!m_field.empty() && db.fieldToTraits(m_field, &ftp)) { if (!m_field.empty() && db.fieldToTraits(m_field, &ftp, true)) {
prefix = wrap_prefix(ftp->pfx); prefix = wrap_prefix(ftp->pfx);
} }

View file

@ -29,6 +29,10 @@
# (NOT CURRENTLY IMPLEMENTED) would automatically boost the weight of a # (NOT CURRENTLY IMPLEMENTED) would automatically boost the weight of a
# caption-based field query (ie: caption:mytitle or title:mytitle) at query # caption-based field query (ie: caption:mytitle or title:mytitle) at query
# time. # time.
#
# The pfxonly attribute can also be set on entries to express that terms
# from the field should be indexed only with a prefix (in general, field
# terms are indexed both with and without a prefix).
# The following ones are probably hard-coded in the c code, can't change at # The following ones are probably hard-coded in the c code, can't change at
# all. # all.
@ -44,8 +48,10 @@ rclmd5 = XM
dir = XP dir = XP
abstract = XS abstract = XS
filename = XSFN filename = XSFN
containerfilename = XCFN ; pfxonly = 1
rclUnsplitFN = XSFS rclUnsplitFN = XSFS
xapyear = Y xapyear = Y
recipient = XTO
# Extension examples. These are actually used by default by Recoll, you can # Extension examples. These are actually used by default by Recoll, you can
# add your own to search for fields produced by the filters and not handled # add your own to search for fields produced by the filters and not handled
@ -57,7 +63,6 @@ xapyear = Y
# I hereby commit to not using XY for Recoll: # I hereby commit to not using XY for Recoll:
# *** USE XY for beginning your local prefixes *** ie: # *** USE XY for beginning your local prefixes *** ie:
# myfield = XYMYPREF # myfield = XYMYPREF
recipient = XTO
[stored] [stored]
############################ ############################
@ -105,6 +110,14 @@ mtype = mime mimetype xesam:mimetype contenttype xesam:contenttype dc:format
recipient = to xesam:recipient recipient = to xesam:recipient
url = dc:identifier xesam:url url = dc:identifier xesam:url
##################
# The queryaliases section defines aliases which are used exclusively at
# query time: there is no risk to pick up a random field from a document
# (e.g. an HTML meta field) and index it.
[queryaliases]
#filename = fn
#containerfilename = cfn
[xattrtofields] [xattrtofields]
###################### ######################
# Processing for extended file attributes. # Processing for extended file attributes.
@ -113,10 +126,16 @@ url = dc:identifier xesam:url
# You can enter name translations as "xattrname = fieldname". Case matters. # You can enter name translations as "xattrname = fieldname". Case matters.
# Entering an empty translation will disable use of the attribute. # Entering an empty translation will disable use of the attribute.
# The values from the extended attributes will extend, not replace, the # The values from the extended attributes will extend, not replace, the
# data found from equivalent fields inside the document. As an example, the # data found from equivalent fields inside the document.
# following would map a quite plausible "tags" extended attribute into the
# "keywords" field. # As an example, the following would map a quite plausible "tags" extended
# attribute into the "keywords" field.
tags = keywords tags = keywords
# Proposed or standard freedesktop.org extended attributes
xdg.tags = keywords
xdg.comment = abstract
# Some standard fields are not to be indexed # Some standard fields are not to be indexed
mime_type = mime_type =
charset = charset =

View file

@ -26,6 +26,7 @@
# #
# The script (ie: rcluncomp) must output the uncompressed file name on # The script (ie: rcluncomp) must output the uncompressed file name on
# stdout. # stdout.
application/gzip = uncompress rcluncomp gunzip %f %t
application/x-gzip = uncompress rcluncomp gunzip %f %t application/x-gzip = uncompress rcluncomp gunzip %f %t
application/x-compress = uncompress rcluncomp gunzip %f %t application/x-compress = uncompress rcluncomp gunzip %f %t
application/x-bzip2 = uncompress rcluncomp bunzip2 %f %t application/x-bzip2 = uncompress rcluncomp bunzip2 %f %t
@ -41,6 +42,8 @@ application/x-lzma = uncompress rcluncomp unxz %f %t
# each filter, see the exemples below (ie: msword) # each filter, see the exemples below (ie: msword)
[index] [index]
application/epub+zip = execm rclepub application/epub+zip = execm rclepub
# Returned by xdg-mime for .js. Future-proofing
application/javascript = internal text/plain
# MSWORD: the rcldoc script handles a number of marginal case that raw # MSWORD: the rcldoc script handles a number of marginal case that raw
# antiword won't: # antiword won't:
@ -106,6 +109,8 @@ application/x-mimehtml = internal message/rfc822
#application/x-mobipocket-ebook = execm rclmobi #application/x-mobipocket-ebook = execm rclmobi
application/x-okular-notes = exec rclokulnote application/x-okular-notes = exec rclokulnote
application/x-perl = internal text/plain application/x-perl = internal text/plain
# Returned by xdg-mime for .php. Future-proofing
application/x-php = internal text/plain
application/x-rar = execm rclrar;charset=default application/x-rar = execm rclrar;charset=default
application/x-scribus = exec rclscribus application/x-scribus = exec rclscribus
application/x-shellscript = internal text/plain application/x-shellscript = internal text/plain
@ -161,6 +166,7 @@ text/xml = exec rclxml
# Icons to be used in the result list if required by gui config # Icons to be used in the result list if required by gui config
[icons] [icons]
application/epub+zip = book application/epub+zip = book
application/javascript = source
application/msword = wordprocessing application/msword = wordprocessing
application/ogg = sownd application/ogg = sownd
application/pdf = pdf application/pdf = pdf
@ -203,6 +209,7 @@ application/x-mimehtml = message
application/x-mobipocket-ebook = document application/x-mobipocket-ebook = document
application/x-okular-notes = document application/x-okular-notes = document
application/x-perl = source application/x-perl = source
application/x-php = source
application/x-rar = archive application/x-rar = archive
application/x-scribus = document application/x-scribus = document
application/x-scribus = wordprocessing application/x-scribus = wordprocessing

View file

@ -189,6 +189,10 @@ iconsdir = @prefix@/share/recoll/images
# identification ? This may be useful, but will usually cause the # identification ? This may be useful, but will usually cause the
# indexation of many bogus 'text' files # indexation of many bogus 'text' files
usesystemfilecommand = 1 usesystemfilecommand = 1
# Actual command to use as "file -i" workalike. xdg-mime works fine here.
# The file path will be added as a last parameter to the command line. If
# that's not what your preferred command would like, use an intermediary script
# systemfilecommand = xdg-mime query filetype
# Should we index the file names of files with mime types we don't # Should we index the file names of files with mime types we don't
# know? (we can otherwise just ignore them) # know? (we can otherwise just ignore them)

File diff suppressed because it is too large Load diff

View file

@ -35,7 +35,7 @@ extern "C" {
#define UNAC_BLOCK_SHIFT 3 #define UNAC_BLOCK_SHIFT 3
#define UNAC_BLOCK_MASK ((1 << UNAC_BLOCK_SHIFT) - 1) #define UNAC_BLOCK_MASK ((1 << UNAC_BLOCK_SHIFT) - 1)
#define UNAC_BLOCK_SIZE (1 << UNAC_BLOCK_SHIFT) #define UNAC_BLOCK_SIZE (1 << UNAC_BLOCK_SHIFT)
#define UNAC_BLOCK_COUNT 714 #define UNAC_BLOCK_COUNT 713
#define UNAC_INDEXES_SIZE (0x10000 >> UNAC_BLOCK_SHIFT) #define UNAC_INDEXES_SIZE (0x10000 >> UNAC_BLOCK_SHIFT)
/* Generated by builder. Do not modify. End defines */ /* Generated by builder. Do not modify. End defines */
@ -893,7 +893,6 @@ extern unsigned short unac_data709[];
extern unsigned short unac_data710[]; extern unsigned short unac_data710[];
extern unsigned short unac_data711[]; extern unsigned short unac_data711[];
extern unsigned short unac_data712[]; extern unsigned short unac_data712[];
extern unsigned short unac_data713[];
/* Generated by builder. Do not modify. End declarations */ /* Generated by builder. Do not modify. End declarations */
#ifdef __cplusplus #ifdef __cplusplus

View file

@ -30,21 +30,15 @@ static const string desktopext("desktop");
static DesktopDb *theDb; static DesktopDb *theDb;
typedef map<string, vector<DesktopDb::AppDef> > AppMap;
static AppMap theAppMap;
static std::string o_reason;
static bool o_ok;
class FstCb : public FsTreeWalkerCB { class FstCb : public FsTreeWalkerCB {
public: public:
FstCb(AppMap *appdefs) FstCb(DesktopDb::AppMap *appdefs)
: m_appdefs(appdefs) : m_appdefs(appdefs)
{ {
} }
virtual FsTreeWalker::Status virtual FsTreeWalker::Status
processone(const string &, const struct stat *, FsTreeWalker::CbFlag); processone(const string &, const struct stat *, FsTreeWalker::CbFlag);
AppMap *m_appdefs; DesktopDb::AppMap *m_appdefs;
}; };
FsTreeWalker::Status FstCb::processone(const string& fn, const struct stat *, FsTreeWalker::Status FstCb::processone(const string& fn, const struct stat *,
@ -100,27 +94,37 @@ DesktopDb* DesktopDb::getDb()
if (theDb == 0) { if (theDb == 0) {
theDb = new DesktopDb(); theDb = new DesktopDb();
} }
if (o_ok) if (theDb && theDb->m_ok)
return theDb; return theDb;
return 0; return 0;
} }
void DesktopDb::build(const string& dir)
{
FstCb procapp(&m_appMap);
FsTreeWalker walker;
if (walker.walk(dir, procapp) != FsTreeWalker::FtwOk) {
m_ok = false;
m_reason = walker.getReason();
}
m_ok = true;
}
DesktopDb::DesktopDb() DesktopDb::DesktopDb()
{ {
FstCb procapp(&theAppMap); build(topappsdir);
FsTreeWalker walker; }
if (walker.walk(topappsdir, procapp) != FsTreeWalker::FtwOk) {
o_ok = false; DesktopDb::DesktopDb(const string& dir)
o_reason = walker.getReason(); {
} build(dir);
o_ok = true;
} }
bool DesktopDb::appForMime(const string& mime, vector<AppDef> *apps, bool DesktopDb::appForMime(const string& mime, vector<AppDef> *apps,
string *reason) string *reason)
{ {
AppMap::const_iterator it = theAppMap.find(mime); AppMap::const_iterator it = m_appMap.find(mime);
if (it == theAppMap.end()) { if (it == m_appMap.end()) {
if (reason) if (reason)
*reason = string("No application found for ") + mime; *reason = string("No application found for ") + mime;
return false; return false;
@ -129,9 +133,43 @@ bool DesktopDb::appForMime(const string& mime, vector<AppDef> *apps,
return true; return true;
} }
bool DesktopDb::allApps(vector<AppDef> *apps)
{
map<string, AppDef> allaps;
for (AppMap::const_iterator it = m_appMap.begin();
it != m_appMap.end(); it++) {
for (vector<AppDef>::const_iterator it1 = it->second.begin();
it1 != it->second.end(); it1++) {
allaps.insert(pair<string, AppDef>
(it1->name, AppDef(it1->name, it1->command)));
}
}
for (map<string, AppDef>::const_iterator it = allaps.begin();
it != allaps.end(); it++) {
apps->push_back(it->second);
}
return true;
}
bool DesktopDb::appByName(const string& nm, AppDef& app)
{
for (AppMap::const_iterator it = m_appMap.begin();
it != m_appMap.end(); it++) {
for (vector<AppDef>::const_iterator it1 = it->second.begin();
it1 != it->second.end(); it1++) {
if (!nm.compare(it1->name)) {
app.name = it1->name;
app.command = it1->command;
return true;
}
}
}
return false;
}
const string& DesktopDb::getReason() const string& DesktopDb::getReason()
{ {
return o_reason; return m_reason;
} }
#else // TEST_APPFORMIME #else // TEST_APPFORMIME

View file

@ -33,13 +33,20 @@ public:
AppDef(const std::string& nm, const std::string& cmd) AppDef(const std::string& nm, const std::string& cmd)
: name(nm), command(cmd) : name(nm), command(cmd)
{} {}
AppDef() {}
std::string name; std::string name;
std::string command; std::string command;
}; };
/** Build/Get the db for the standard fdo directory */
static DesktopDb* getDb(); static DesktopDb* getDb();
static const string& getReason();
~DesktopDb(); /** Constructor for a db based on a non-standard location */
DesktopDb(const string& dir);
/** In case of error: what happened ? */
const string& getReason();
/** /**
* Get a list of applications able to process a given MIME type. * Get a list of applications able to process a given MIME type.
@ -52,10 +59,30 @@ public:
bool appForMime(const std::string& mime, vector<AppDef> *apps, bool appForMime(const std::string& mime, vector<AppDef> *apps,
std::string *reason = 0); std::string *reason = 0);
/**
* Get all applications defs:
* @param[output] apps applications
* @return true
*/
bool allApps(vector<AppDef> *apps);
/**
* Get app with given name
*/
bool appByName(const string& nm, AppDef& app);
typedef map<string, vector<DesktopDb::AppDef> > AppMap;
private: private:
/** This is used by getDb() and builds a db for the standard location */
DesktopDb(); DesktopDb();
void build(const string& dir);
DesktopDb(const DesktopDb &); DesktopDb(const DesktopDb &);
DesktopDb& operator=(const DesktopDb &); DesktopDb& operator=(const DesktopDb &);
AppMap m_appMap;
std::string m_reason;
bool m_ok;
}; };

View file

@ -525,6 +525,20 @@ string url_gpath(const string& url)
return path_canon(url.substr(colon+1)); return path_canon(url.substr(colon+1));
} }
string url_parentfolder(const string& url)
{
// In general, the parent is the directory above the full path
string parenturl = path_getfather(url_gpath(url));
// But if this is http, make sure to keep the host part. Recoll
// only has file or http urls for now.
bool isfileurl = urlisfileurl(url);
if (!isfileurl && parenturl == "/") {
parenturl = url_gpath(url);
}
return isfileurl ? string("file://") + parenturl :
string("http://") + parenturl;
}
// Convert to file path if url is like file: // Convert to file path if url is like file:
// Note: this only works with our internal pseudo-urls which are not // Note: this only works with our internal pseudo-urls which are not
// encoded/escaped // encoded/escaped
@ -540,6 +554,7 @@ string fileurltolocalpath(string url)
} }
return url; return url;
} }
bool urlisfileurl(const string& url) bool urlisfileurl(const string& url)
{ {
return url.find("file://") == 0; return url.find("file://") == 0;

View file

@ -60,6 +60,8 @@ extern bool printableUrl(const std::string &fcharset,
extern std::string fileurltolocalpath(std::string url); extern std::string fileurltolocalpath(std::string url);
/// Test for file:/// url /// Test for file:/// url
extern bool urlisfileurl(const std::string& url); extern bool urlisfileurl(const std::string& url);
///
extern std::string url_parentfolder(const std::string& url);
/// Return the host+path part of an url. This is not a general /// Return the host+path part of an url. This is not a general
/// routine, it does the right thing only in the recoll context /// routine, it does the right thing only in the recoll context

View file

@ -4,12 +4,9 @@ topdir=`dirname $0`/..
. $topdir/shared.sh . $topdir/shared.sh
initvariables $0 initvariables $0
(
for q in xing;do
echo $q
recollq -q $q
done
(
recollq -S url -q xing dir:embed
) 2> $mystderr | egrep -v '^Recoll query: ' > $mystdout ) 2> $mystderr | egrep -v '^Recoll query: ' > $mystdout
diff -w ${myname}.txt $mystdout > $mydiffs 2>&1 diff -w ${myname}.txt $mystdout > $mydiffs 2>&1

View file

@ -1,5 +1,2 @@
xing 1 results
3 results
message/rfc822 [file:///home/dockes/projets/fulltext/testrecoll/mail/outmail] [video+recdat] 1027 bytes
application/msword [file:///home/dockes/projets/fulltext/testrecoll/msword/xingfx1.doc] [xingfx1.doc] 24576 bytes
application/msword [file:///home/dockes/projets/fulltext/testrecoll/embed/thunderbirdlocalfolders.zip] [xingfx1.doc] 24576 bytes application/msword [file:///home/dockes/projets/fulltext/testrecoll/embed/thunderbirdlocalfolders.zip] [xingfx1.doc] 24576 bytes

View file

@ -6,9 +6,9 @@ topdir=`dirname $0`/..
initvariables $0 initvariables $0
( (
recollq -S mtime 'Bienvenue Dans Univers De Lyx' recollq -S url 'Bienvenue Dans Univers De Lyx'
recollq -S mtime 'Welcome To Lyx' recollq -S url 'Welcome To Lyx'
recollq -S mtime 'LyX jol dokumentalt' recollq -S url 'LyX jol dokumentalt'
) 2> $mystderr | egrep -v '^Recoll query: ' > $mystdout ) 2> $mystderr | egrep -v '^Recoll query: ' > $mystdout
diff -w ${myname}.txt $mystdout > $mydiffs 2>&1 diff -w ${myname}.txt $mystdout > $mydiffs 2>&1

View file

@ -2,7 +2,7 @@
application/x-lyx [file:///home/dockes/projets/fulltext/testrecoll/lyx/accentué.lyx] [accentué.lyx] 3577 bytes application/x-lyx [file:///home/dockes/projets/fulltext/testrecoll/lyx/accentué.lyx] [accentué.lyx] 3577 bytes
application/x-lyx [file:///home/dockes/projets/fulltext/testrecoll/lyx/fr_splash.lyx] [fr_splash.lyx] 3577 bytes application/x-lyx [file:///home/dockes/projets/fulltext/testrecoll/lyx/fr_splash.lyx] [fr_splash.lyx] 3577 bytes
2 results 2 results
application/x-lyx [file:///home/dockes/projets/fulltext/testrecoll/lyx/with spaces.lyx] [with spaces.lyx] 2974 bytes
application/x-lyx [file:///home/dockes/projets/fulltext/testrecoll/lyx/splash.lyx] [splash.lyx] 2974 bytes application/x-lyx [file:///home/dockes/projets/fulltext/testrecoll/lyx/splash.lyx] [splash.lyx] 2974 bytes
application/x-lyx [file:///home/dockes/projets/fulltext/testrecoll/lyx/with spaces.lyx] [with spaces.lyx] 2974 bytes
1 results 1 results
application/x-lyx [file:///home/dockes/projets/fulltext/testrecoll/lyx/hu_splash.lyx] [hu_splash.lyx] 4773 bytes application/x-lyx [file:///home/dockes/projets/fulltext/testrecoll/lyx/hu_splash.lyx] [hu_splash.lyx] 4773 bytes

View file

@ -6,8 +6,8 @@ topdir=`dirname $0`/..
initvariables $0 initvariables $0
( (
recollq '"Evenements et programme 2006"' recollq -S url '"Evenements et programme 2006"'
recollq 'pcx11 manuel de programmation iamactuallyanrtf' recollq -S url 'pcx11 manuel de programmation iamactuallyanrtf'
) 2> $mystderr | egrep -v '^Recoll query: ' > $mystdout ) 2> $mystderr | egrep -v '^Recoll query: ' > $mystdout
diff -w ${myname}.txt $mystdout > $mydiffs 2>&1 diff -w ${myname}.txt $mystdout > $mydiffs 2>&1

View file

@ -14,7 +14,7 @@ d=${tstdata}/partialpurge/
recollindex -Zi $d/testmbox recollindex -Zi $d/testmbox
echo Should have 2 results: testmbox and longmbox: echo Should have 2 results: testmbox and longmbox:
recollq -q deletedmessageuniqueterm recollq -S url -q deletedmessageuniqueterm
echo echo
echo Changing file and reindexing echo Changing file and reindexing
@ -22,17 +22,17 @@ d=${tstdata}/partialpurge/
recollindex -Zi $d/testmbox recollindex -Zi $d/testmbox
echo Should have 1 result: longmbox: echo Should have 1 result: longmbox:
recollq -q deletedmessageuniqueterm recollq -S url -q deletedmessageuniqueterm
echo echo
echo Purging whole test file echo Purging whole test file
recollindex -e $d/testmbox recollindex -e $d/testmbox
echo Should have 1 result: longmbox: echo Should have 1 result: longmbox:
recollq -q deletedmessageuniqueterm recollq -S url -q deletedmessageuniqueterm
echo Should have 2 results: longmbox shortmbox: echo Should have 2 results: longmbox shortmbox:
recollq -q stablemessageuniqueterm recollq -S url -q stablemessageuniqueterm
) 2> $mystderr | egrep -v '^Recoll query: ' > $mystdout ) 2> $mystderr | egrep -v '^Recoll query: ' > $mystdout

View file

@ -34,11 +34,11 @@ for doc in query:
for fld in ('title', 'testfield', 'filename'): for fld in ('title', 'testfield', 'filename'):
print("getattr(doc, %s) -> [%s]"%(fld,utf8string(getattr(doc, fld)))) print("getattr(doc, %s) -> [%s]"%(fld,utf8string(getattr(doc, fld))))
print("doc.get(%s) -> [%s]"%(fld,utf8string(doc.get(fld)))) print("doc.get(%s) -> [%s]"%(fld,utf8string(doc.get(fld))))
print("\nfor fld in doc.keys():") print("\nfor fld in sorted(doc.keys()):")
for fld in doc.keys(): for fld in sorted(doc.keys()):
print(utf8string("[%s] -> [%s]" % (fld, getattr(doc, fld)))) print(utf8string("[%s] -> [%s]" % (fld, getattr(doc, fld))))
print("\nfor k,v in doc.items().items():") print("\nfor k,v in sorted(doc.items().items()):")
for k,v in doc.items().items(): for k,v in sorted(doc.items().items(), key=lambda itm: itm[0]):
print(utf8string("[%s] -> [%s]" % (k, v))) print(utf8string("[%s] -> [%s]" % (k, v)))
print("\nAccented query:") print("\nAccented query:")

View file

@ -10,7 +10,7 @@ doc.get(testfield) -> [testfieldvalue1]
getattr(doc, filename) -> [htmlfield1.html] getattr(doc, filename) -> [htmlfield1.html]
doc.get(filename) -> [htmlfield1.html] doc.get(filename) -> [htmlfield1.html]
for fld in doc.keys(): for fld in sorted(doc.keys()):
[abstract] -> [ ThisIsTheFieldHtmlTestFile] [abstract] -> [ ThisIsTheFieldHtmlTestFile]
[caption] -> [HTML fields test file: été à noël] [caption] -> [HTML fields test file: été à noël]
[dbytes] -> [27] [dbytes] -> [27]
@ -24,29 +24,29 @@ for fld in doc.keys():
[pcbytes] -> [267] [pcbytes] -> [267]
[rcludi] -> [/home/dockes/projets/fulltext/testrecoll/html/htmlfield1.html|] [rcludi] -> [/home/dockes/projets/fulltext/testrecoll/html/htmlfield1.html|]
[relevancyrating] -> [100%] [relevancyrating] -> [100%]
[sig] -> [2671383154417] [sig] -> [2671402138880]
[testfield] -> [testfieldvalue1] [testfield] -> [testfieldvalue1]
[title] -> [HTML fields test file: été à noël] [title] -> [HTML fields test file: été à noël]
[url] -> [file:///home/dockes/projets/fulltext/testrecoll/html/htmlfield1.html] [url] -> [file:///home/dockes/projets/fulltext/testrecoll/html/htmlfield1.html]
for k,v in doc.items().items(): for k,v in sorted(doc.items().items()):
[testfield] -> [testfieldvalue1]
[ipath] -> []
[url] -> [file:///home/dockes/projets/fulltext/testrecoll/html/htmlfield1.html]
[abstract] -> [ ThisIsTheFieldHtmlTestFile] [abstract] -> [ ThisIsTheFieldHtmlTestFile]
[pcbytes] -> [267] [caption] -> [HTML fields test file: été à noël]
[dbytes] -> [27]
[fbytes] -> [267] [fbytes] -> [267]
[filename] -> [htmlfield1.html] [filename] -> [htmlfield1.html]
[mtype] -> [text/html]
[caption] -> [HTML fields test file: été à noël]
[fmtime] -> [01383154417] [fmtime] -> [01383154417]
[dbytes] -> [27] [ipath] -> []
[sig] -> [2671383154417]
[mtime] -> [01383154417] [mtime] -> [01383154417]
[title] -> [HTML fields test file: été à noël] [mtype] -> [text/html]
[origcharset] -> [utf-8]
[pcbytes] -> [267]
[rcludi] -> [/home/dockes/projets/fulltext/testrecoll/html/htmlfield1.html|] [rcludi] -> [/home/dockes/projets/fulltext/testrecoll/html/htmlfield1.html|]
[relevancyrating] -> [100%] [relevancyrating] -> [100%]
[origcharset] -> [utf-8] [sig] -> [2671402138880]
[testfield] -> [testfieldvalue1]
[title] -> [HTML fields test file: été à noël]
[url] -> [file:///home/dockes/projets/fulltext/testrecoll/html/htmlfield1.html]
Accented query: Accented query:
User query [title:"été à noël"] User query [title:"été à noël"]

View file

@ -7,6 +7,8 @@ else:
ISP3 = False ISP3 = False
def utf8string(s): def utf8string(s):
if s is None:
return "None"
if ISP3: if ISP3:
return s return s
else: else:

View file

@ -3,7 +3,11 @@
RECOLL_TESTDATA=/home/dockes/projets/fulltext/testrecoll RECOLL_TESTDATA=/home/dockes/projets/fulltext/testrecoll
RECOLL_CONFDIR=/home/dockes/projets/fulltext/recoll/tests/config # All source'rs should set topdir as a relative path from their location to
# this directory
topdir=${topdir:-.}
RECOLL_CONFDIR=$topdir/config/
export RECOLL_CONFDIR export RECOLL_CONFDIR
ECHON="/bin/echo -n" ECHON="/bin/echo -n"

View file

@ -7,8 +7,8 @@ initvariables $0
( (
recollq -S mtime -q '"simulating shock turbulence interactions"' recollq -S url -q '"simulating shock turbulence interactions"'
recollq -S mtime Utf8pathunique recollq -S url Utf8pathunique
) 2> $mystderr | egrep -v '^Recoll query: ' > $mystdout ) 2> $mystderr | egrep -v '^Recoll query: ' > $mystdout

View file

@ -1,6 +1,6 @@
2 results 2 results
image/vnd.djvu [file:///home/dockes/projets/fulltext/testrecoll/utfInPath/accentué/1999_Hu_Shu.OCR.djvu] [1999_Hu_Shu.OCR.djvu] 753409 bytes
image/vnd.djvu [file:///home/dockes/projets/fulltext/testrecoll/utfInPath/accentué/1999_Hu_Shu.OCR.djvu] [1999_Hu_Shu.OCR.djvu] 753409 bytes image/vnd.djvu [file:///home/dockes/projets/fulltext/testrecoll/utfInPath/accentué/1999_Hu_Shu.OCR.djvu] [1999_Hu_Shu.OCR.djvu] 753409 bytes
image/vnd.djvu [file:///home/dockes/projets/fulltext/testrecoll/utfInPath/accentué/1999_Hu_Shu.OCR.djvu] [1999_Hu_Shu.OCR.djvu] 753409 bytes
2 results 2 results
text/plain [file:///home/dockes/projets/fulltext/testrecoll/utfInPath/accentué/utf8path.txt] [utf8path.txt] 49 bytes
text/plain [file:///home/dockes/projets/fulltext/testrecoll/utfInPath/accentué/utf8path.txt] [utf8path.txt] 49 bytes text/plain [file:///home/dockes/projets/fulltext/testrecoll/utfInPath/accentué/utf8path.txt] [utf8path.txt] 49 bytes
text/plain [file:///home/dockes/projets/fulltext/testrecoll/utfInPath/accentué/utf8path.txt] [utf8path.txt] 49 bytes

View file

@ -97,6 +97,8 @@ sub main {
# Hindi Devanagari # Hindi Devanagari
&& !(hex $code_value >= 0x0900 && hex $code_value <= 0x097f) && !(hex $code_value >= 0x0900 && hex $code_value <= 0x097f)
&& !(hex $code_value >= 0xa8e0 && hex $code_value <= 0xa8ff) && !(hex $code_value >= 0xa8e0 && hex $code_value <= 0xa8ff)
# Bengali
&& !(hex $code_value >= 0x0980 && hex $code_value <= 0x09ff)
) { ) {
# If a decomposition exists, record it # If a decomposition exists, record it
if($character_decomposition_mapping =~ /(<.*>)?\s*(.+)/) { if($character_decomposition_mapping =~ /(<.*>)?\s*(.+)/) {

File diff suppressed because it is too large Load diff

View file

@ -35,7 +35,7 @@ extern "C" {
#define UNAC_BLOCK_SHIFT 3 #define UNAC_BLOCK_SHIFT 3
#define UNAC_BLOCK_MASK ((1 << UNAC_BLOCK_SHIFT) - 1) #define UNAC_BLOCK_MASK ((1 << UNAC_BLOCK_SHIFT) - 1)
#define UNAC_BLOCK_SIZE (1 << UNAC_BLOCK_SHIFT) #define UNAC_BLOCK_SIZE (1 << UNAC_BLOCK_SHIFT)
#define UNAC_BLOCK_COUNT 714 #define UNAC_BLOCK_COUNT 713
#define UNAC_INDEXES_SIZE (0x10000 >> UNAC_BLOCK_SHIFT) #define UNAC_INDEXES_SIZE (0x10000 >> UNAC_BLOCK_SHIFT)
/* Generated by builder. Do not modify. End defines */ /* Generated by builder. Do not modify. End defines */
@ -893,7 +893,6 @@ extern unsigned short unac_data709[];
extern unsigned short unac_data710[]; extern unsigned short unac_data710[];
extern unsigned short unac_data711[]; extern unsigned short unac_data711[];
extern unsigned short unac_data712[]; extern unsigned short unac_data712[];
extern unsigned short unac_data713[];
/* Generated by builder. Do not modify. End declarations */ /* Generated by builder. Do not modify. End declarations */
#ifdef __cplusplus #ifdef __cplusplus

View file

@ -29,7 +29,7 @@
later versions. Bugs listed in the topmost section may also exist in older later versions. Bugs listed in the topmost section may also exist in older
versions.</i></p> versions.</i></p>
<h2><a name="b_latest">recoll 1.19.14p1</a></h2> <h2><a name="b_latest">recoll 1.19.14p2</a></h2>
<ul> <ul>
<li>The Open/LibreOffice document filter does not output white space <li>The Open/LibreOffice document filter does not output white space
for tab-separated words in input, leading to search failures.</li> for tab-separated words in input, leading to search failures.</li>
@ -67,6 +67,12 @@ versions.</i></p>
recoll.</li> recoll.</li>
</ul> </ul>
<h2><a name="b_1_19_14p1">recoll 1.19.14p1</a></h2>
<ul>
<li>The Py_INCREF fix in 1.19.14p1 activated a bug in the Query
object iterator, a missing INCREF this time.</li>
</ul>
<h2><a name="b_1_19_14">recoll 1.19.14</a></h2> <h2><a name="b_1_19_14">recoll 1.19.14</a></h2>
<ul> <ul>
<li>A stray Py_INCREF causes a descriptor and memory leak in the Python <li>A stray Py_INCREF causes a descriptor and memory leak in the Python

View file

@ -67,7 +67,7 @@ function showdiv(viewid)
<div id="general"> <div id="general">
<h2><a name="general">General information</a></h2> <h2><a name="general">General information</a></h2>
<p>The current version is 1.19.14p1. <a href="release-1.19.html">Release <p>The current version is 1.19.14p2. <a href="release-1.19.html">Release
notes</a>.</p> notes</a>.</p>
<p>The download page for Recoll 1.18 is <a href="download-1.18.html">still <p>The download page for Recoll 1.18 is <a href="download-1.18.html">still
@ -117,17 +117,23 @@ is probably no necessity to upgrade anyway.</p>
<div id="source"> <div id="source">
<h2><a name="source">Source</a></h2> <h2><a name="source">Source</a></h2>
<h3>Current release distribution: 1.19.14:</h3> <h3>Current release distribution: 1.19.14p2:</h3>
<!-- Attention: source packages must remain here, not in a <!-- Attention: source packages must remain here, not in a
subdirectory, because of all the places they're referred from subdirectory, because of all the places they're referred from
(package watches) --> (package watches) -->
<p><a href="recoll-1.19.14.tar.gz">recoll-1.19.14.tar.gz</a>. </p> <p><a href="recoll-1.19.14p2.tar.gz">recoll-1.19.14p2.tar.gz</a>. </p>
<h3>1.20 preview</h3> <h3>1.20 preview</h3>
<p>See the <a href="release-1.20.html">release notes</a>.</p> <p>Recoll 1.20 will contain no revolutionary changes, but a set of
<p><a href="recoll-1.20.0.tar.gz">recoll-1.20.0.tar.gz</a>. </p> hopefully useful adjustments, which will be released in a series of
incremental snapshots. The current snapshot is
<a href="recoll-1.20.0p2.tar.gz">recoll-1.20.0p2.tar.gz</a>.
See the <a href="release-1.20.html">release notes</a> for what's in
there.</p>
<!-- <!--
<h3>Snapshot</h3> <h3>Snapshot</h3>
@ -202,6 +208,8 @@ branch for the current production version.</p>
<h3>Older recoll releases:</h3> <h3>Older recoll releases:</h3>
<p> <p>
<a href="recoll-1.19.14p1.tar.gz">1.19.14p1</a>.
<a href="recoll-1.19.14.tar.gz">1.19.14</a>.
<a href="recoll-1.19.13.tar.gz">1.19.13</a>. <a href="recoll-1.19.13.tar.gz">1.19.13</a>.
<a href="recoll-1.19.12p1.tar.gz">1.19.12p1</a>. <a href="recoll-1.19.12p1.tar.gz">1.19.12p1</a>.
<a href="recoll-1.19.9.tar.gz">1.19.9</a>. <a href="recoll-1.19.9.tar.gz">1.19.9</a>.

View file

@ -43,7 +43,8 @@
<ul> <ul>
<li>It can search <li>It can search
most <span class="important"><a href="features.html#doctypes">document most <span class="important"><a href="features.html#doctypes">document
formats</a></span>.</li> formats</a></span>. <a href="features.html#doctypes">You may
need external applications for text extraction</a>.</li>
<li>It can reach any storage place: files, <li>It can reach any storage place: files,
archive members, email attachments, transparently archive members, email attachments, transparently
handling decompression.</li> handling decompression.</li>
@ -51,10 +52,11 @@
display an even quicker text preview.</li> display an even quicker text preview.</li>
<li>The software is free, open source, <li>The software is free, open source,
and licensed under the GPL.</li> and licensed under the GPL.</li>
<li><a href="features.html">Detailed features</a>. <li><a href="features.html">Detailed features</a>.</li>
</ul> </ul>
<p>The current <span class="application">Recoll</span> version is <p>The current <span class="application">Recoll</span> version is
<a href="download.html">1.19.14p1</a> <a href="download.html">1.19.14p2</a>
(<a href="release-1.19.html">Release notes</a>, (<a href="release-1.19.html">Release notes</a>,
<a href="BUGS.html">known bugs</a>).</p> <a href="BUGS.html">known bugs</a>).</p>
@ -92,10 +94,16 @@
<div class="news"> <div class="news">
<dl> <dl>
<dt>2014-06-26</dt> <dd>Recoll version 1.19.14p1 fixes a <dt>2014-07-28</dt> <dd>A nice new application to complement
descriptor (and memory) leak in the Python module. Only the Recoll: <a href="https://github.com/pidlug/recollfs">recollfs</a>
Python package needs upgrading (no changes to the main implements a Fuse filesystem where Recoll queries are
library or programs).</dd> represented as directories, the contents of which are links
to the result documents.</dd>
<dt>2014-07-16</dt> <dd>Recoll version 1.19.14p2 fixes more
resource management issues in the Python module (only the
Python package needs upgrading for this), and the processing
of Bengali characters (no more diacritics stripping).</dd>
<dt>2014-06-24</dt> <dd><a href="filters/filters.html#soff1">An <dt>2014-06-24</dt> <dd><a href="filters/filters.html#soff1">An
updated filter</a> for Open/LibreOffice documents. The updated filter</a> for Open/LibreOffice documents. The

View file

@ -49,7 +49,7 @@
<p><span class="application">Recoll</span> est un logiciel libre <p><span class="application">Recoll</span> est un logiciel libre
gratuit, dont le code source est disponible sous licence GPL. gratuit, dont le code source est disponible sous licence GPL.
La dernière version est La dernière version est
<a class="important" href="download.html">1.19.14</a> <a class="important" href="download.html">1.19.14p2</a>
(<a href="release-1.19.html">notes sur la version, en (<a href="release-1.19.html">notes sur la version, en
anglais</a>)</p> anglais</a>)</p>
@ -77,7 +77,9 @@
<li>Traite la plupart des <a href="fr/features.html#doctypes"> <li>Traite la plupart des <a href="fr/features.html#doctypes">
types de documents</a> courants, les messages et leurs fichiers types de documents</a> courants, les messages et leurs fichiers
attachés. Peut aussi traiter leurs versions comprimées attachés. Peut aussi traiter leurs versions comprimées
(gzip ou bzip2) de tous ces documents.</li> (gzip ou bzip2) de tous ces documents.
<a href="features.html#doctypes">Application externes pour
l'extraction du texte</a>.</li>
<li>Fonctions de recherche puissantes, avec expressions Booléennes, <li>Fonctions de recherche puissantes, avec expressions Booléennes,
phrases et proximité, wildcards, filtrage sur les types de fichiers phrases et proximité, wildcards, filtrage sur les types de fichiers
@ -88,6 +90,7 @@
<li><a class="weak" href="fr/features.html"> <li><a class="weak" href="fr/features.html">
(plus de détails)</a></li> (plus de détails)</a></li>
</ul> </ul>
<p><b><i>Déjà utilisateur ?</i></b> Il est possible qu'il <p><b><i>Déjà utilisateur ?</i></b> Il est possible qu'il

View file

@ -63,6 +63,11 @@ Configuration</em> menu.</p>
<h2><a name="minor_releases">Minor releases at a glance</a></h2> <h2><a name="minor_releases">Minor releases at a glance</a></h2>
<ul> <ul>
<li>1.19.14p2 fixes another reference count issue in the Python
module (a problem with the Query iterator put in evidence by the
change in 1.19.14p1). It also changes the handling of diacritics
for Bengali (accents are now unstripped, as for Hindi).</li>
<li>1.19.14p1 fixes a descriptor and memory leak in the Python <li>1.19.14p1 fixes a descriptor and memory leak in the Python
module. The main library and programs are unchanged.</li> module. The main library and programs are unchanged.</li>

View file

@ -64,7 +64,7 @@
opposed to only bug fixes). There will be a freeze at some opposed to only bug fixes). There will be a freeze at some
point. point.
<h2>Changes in Recoll 1.20.0</h2> <h2>Changes in Recoll 1.20.0p1</h2>
<ul> <ul>
<li>An <em>Open With</em> entry was added to the result list <li>An <em>Open With</em> entry was added to the result list
@ -97,6 +97,8 @@
possible to search for left-truncated versions of the possible to search for left-truncated versions of the
compound, e.g., all emails from a given domain.</li> compound, e.g., all emails from a given domain.</li>
<li>Recoll now indexes <em>#hashtags</em> as such.</li>
<li>It is now possible to configure the GUI in wide form <li>It is now possible to configure the GUI in wide form
factor by dragging the toolbars to one of the sides (their factor by dragging the toolbars to one of the sides (their
location is remembered between sessions), and moving the location is remembered between sessions), and moving the
@ -109,11 +111,40 @@
ininteresting variables were also removed.</li> ininteresting variables were also removed.</li>
<li>When indexing, we no longer add the top container <li>When indexing, we no longer add the top container
file-name as a term for the contained sub-documents (if file name as a term for the contained sub-documents (if
any). This made no sense at all in most cases. However, any). This made no sense in most cases, as it meant that
this was sometimes useful when searching email you would get hits on all the sections from a chm or epub
folders. Complain if you do not like this change, and I'll when the top file name matched the search, when you
make it configurable.</li> probably wanted only the parent document in this case.<br>
However, the container file name was sometimes useful for
filtering results, and it is still accessible, in a
different way: the top container file name is added as a
term to all the sub-documents, <em>only for searching with
a prefix</em>. The field name
is <span class="literal">containerfilename</span>, and no
match on the subdocuments will occur if the field is not
specified (this is different from
previous <span class="literal">filename</span> processing,
which was indexed as a general
term. <span class="literal">containerfilename</span> is
also set on files without sub-documents (e.g. a pdf).</li>
<li>A new attribute, <span class="literal">pfxonly</span>,
was created. This can be set on any metadata field inside
the <span class="literal">[prefixes]</span> section of
the <span class="filename">fields</span> file.</li>
<li>A new <span class="literal">[queryaliases]</span>
section was created in
the <span class="filename">fields</span>, for definining
field name aliases to be used only at query time (to avoid
unwanted collection of data on random fields during
indexing). The section is empty by default, but 2 obvious
alias are in
comment: <span class="literal">filename=fn</span>
and <span class="literal">containerfilename=cfn</span>. Setting
them in your personal file may save you some typing if you
search on file names.</li>
<li>You can now use both <em>-e</em> and <em>-i</em> for <li>You can now use both <em>-e</em> and <em>-i</em> for
erasing then updating the index for the given file erasing then updating the index for the given file
@ -127,6 +158,20 @@
terms was added. See terms was added. See
<span class="filename">src/python/samples/docdups.py</span></li> <span class="filename">src/python/samples/docdups.py</span></li>
<li>The command used to identify the mime types of files
when the internal method is <span class="literal">file
-i</span> by default. It is now possible to customize this
command by setting
the <span class="literal">systemfilecommand</span> in the
configuration. A suggested value would
be <span class="filename">xdg-mime</span>, which sometimes
works better than <span class="filename">file</span>.</li>
<li>The result list has two new elements: %P substitution
for printing the parent folder name, and an <tt>F</tt>
link target which will open the parent folder in a
file manager window.</li>
<li><span class="filename">/media</span> was added to the default <li><span class="filename">/media</span> was added to the default
skippedPaths list mostly as a reminder that blindly skippedPaths list mostly as a reminder that blindly
processing these with the general indexer is a bad idea processing these with the general indexer is a bad idea