git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kio-locate@1089224 283d02a7-25f6-0310-bc7c-ecb5cbfe19dav3.5.13-sru
commit
630b7196d9
@ -0,0 +1,3 @@
|
||||
Tobi Vollebregt <tobivollebregt@gmail.com>
|
||||
Armin Straub <linux@arminstraub.de>
|
||||
Michael Schuerig <schuerig@acm.org>
|
@ -0,0 +1,180 @@
|
||||
kio-locate (0.4.5) 2006-02-05 -- Armin Straub
|
||||
|
||||
* Search hits with non-ascii characters in the file name always showed up
|
||||
with invalid size/owner/group information (fixed by Johan Billing).
|
||||
* kio-locate should now compile with gcc-4.1_beta (fixed by Jan Jitse
|
||||
Venselaar).
|
||||
* Updated to bksys 1.5.1.
|
||||
|
||||
|
||||
kio-locate (0.4.4) 2005-10-19 -- Armin Straub
|
||||
|
||||
+ Warn if locate (or whatever is selected) is not installed (suggested
|
||||
by Axel K. Braun).
|
||||
* Use slocate and rlocate as default when available (suggested by Nicolas
|
||||
Degand).
|
||||
* Closed a bug preventing the display of items having the same prefix
|
||||
(reported by Takis).
|
||||
|
||||
|
||||
kio-locate (0.4.3) 2005-09-15 -- Armin Straub
|
||||
|
||||
* Made the config dialogs more verbose.
|
||||
* Replaced the previous screenshot (105K) with a similar one (27K)
|
||||
significantly reducing the package size.
|
||||
+ Added a (crude?) German translation.
|
||||
|
||||
|
||||
kio-locate (0.4.2tvo0.2) 2005-08-21 -- Tobi Vollebregt
|
||||
|
||||
* Hit counting is now recursive.
|
||||
* Fixed a packaging bug which caused the helpfiles to be inaccessable
|
||||
if installed using the .deb file.
|
||||
* Updated to the newest version of bksys.
|
||||
|
||||
|
||||
kio-locate (0.4.2tvo0.1) 2005-07-14 -- Tobi Vollebregt
|
||||
|
||||
+ Directory collapsing if pattern matches the directory part of a path.
|
||||
+ Entries for searching within directories and entries for plain
|
||||
browsing of the directories.
|
||||
+ Added full wildcard support in all patterns (after discussion this seemed
|
||||
to be more appropriate than full regexp support for `locate:').
|
||||
+ Added full regexp support in the filtering patterns with the `rlocate:'
|
||||
protocol.
|
||||
+ A case sensitivity setting in the config page.
|
||||
+ A `config succesfully updated' or `config unchanged' message is
|
||||
displayed after closing the config dialog.
|
||||
+ Different icons for normal and collapsed directories.
|
||||
+ Configurable RegExp filtering, using a white list and a black list.
|
||||
* Fixed searches within a directory other than root (/).
|
||||
* Reduced flickering when listing results.
|
||||
* Number of hits displayed in front of a directory, is now exactly
|
||||
the number of entries you'll see after you click that entry.
|
||||
* `locater:help' now actually works.
|
||||
* Updated to the newest version of bksys.
|
||||
|
||||
|
||||
kio-locate (0.4.2) 2005-05-22 -- Armin Straub
|
||||
|
||||
* Removed stupid bug inverting case sensitivity.
|
||||
|
||||
|
||||
kio-locate (0.4.1) 2005-05-21 -- Armin Straub
|
||||
|
||||
+ Added a config page for settings related to locate (the real
|
||||
one :-)). You can e.g. choose slocate or other replacements now.
|
||||
* For compatibility -i is used instead of --ignore-case when calling
|
||||
locate.
|
||||
* Case Sensitivity is now chosen for every part of the search
|
||||
pattern on its own.
|
||||
|
||||
|
||||
kio-locate (0.4.0) 2005-04-10 -- Armin Straub
|
||||
|
||||
+ Using scons and bksys instead of autotools and the like. This
|
||||
saves both - a lot of space (around 500kb) and lots of time
|
||||
when developing (thanks to Nagy Thomas for his help).
|
||||
Read INSTALL for a quick guide.
|
||||
+ Added the possibility to configure some aspects of kio-locate
|
||||
by envoking locater:config. (More to come...)
|
||||
* Use the locater protocol which uses standard Urls for more
|
||||
complex tasks and keep the locate protocol for simple queries.
|
||||
* Don't use ilocate and clocate anymore. (Check the settings for
|
||||
configuring kio-locate's case sensitivity.)
|
||||
* Some minor enhancements and some new bugs :-)
|
||||
|
||||
|
||||
kio-locate (0.3.4) 2005-01-22 -- Armin Straub
|
||||
|
||||
* Removed yet another bug preventing kio-locate from compiling when using
|
||||
KDE 3.2 (thanks to Sergio Cambra).
|
||||
|
||||
|
||||
kio-locate (0.3.3) 2005-01-21 -- Armin Straub
|
||||
|
||||
* Removed small bug preventing kio-locate from compiling on some systems
|
||||
(thanks to Francesco di Cugno who also provided a package for Slackware).
|
||||
|
||||
|
||||
kio-locate (0.3.2) 2005-01-17 -- Armin Straub
|
||||
|
||||
+ Several hits in one directory are now grouped together. For code and
|
||||
ideas lots of thanks to Fred Schaettgen.
|
||||
* The search process should be a bit faster as only those files are
|
||||
checked for existence that are displayed (thanks to Fred Schaettgen).
|
||||
|
||||
|
||||
kio-locate (0.3.1) 2004-12-10 -- Armin Straub
|
||||
|
||||
* The locate protocol no more does only case sensitive searches, but
|
||||
searches case insensitive by default and switches to case sensitivity if
|
||||
the search string contains upper case characters.
|
||||
+ Added the protocol clocate for case sensitive searches.
|
||||
+ Added a locate search to konquerors list of web shortcuts. This enables
|
||||
you to select locate as the default search engine in konqueror. (Whenever
|
||||
you enter a nonsense url then, konqueror will use locate to search for
|
||||
this "nonsense".)
|
||||
|
||||
|
||||
kio-locate (0.3.0) 2004-11-01 -- Armin Straub
|
||||
|
||||
* Filtering by regular expressions is now possible:
|
||||
You can use "locate:pattern [!]regexp ..." now. pattern uses standard locate
|
||||
syntax followed by regexps that may be preceded by ! meaning that they
|
||||
shouldn't match.
|
||||
|
||||
|
||||
kio-locate (0.2.4) 2004-10-26 -- Armin Straub
|
||||
|
||||
* Removed bugs in kio-locate.spec used to generate rpm's (thanks to Sami
|
||||
Vento).
|
||||
|
||||
|
||||
kio-locate (0.2.3) 2004-10-25 -- Armin Straub
|
||||
|
||||
* Taking current locale into account, so kio-locate won't change non-latin1
|
||||
encoded file names (thanks to Jakub Stachowski).
|
||||
+ Added kio-locate.spec so that you can build rpms by just typing
|
||||
rpmbuild -ta --target=i686 kio-locate_$VERSION.tar.gz (thanks to Sami
|
||||
Vento).
|
||||
|
||||
|
||||
kio-locate (0.2.2) 2004-10-24 -- Armin Straub
|
||||
|
||||
+ Added the protocol ilocate for case insensitive searches.
|
||||
+ Interpret ~/ and ~user/ in a search (expand just as the shell normally
|
||||
does).
|
||||
+ Detection of konquerors autocompletion.
|
||||
|
||||
|
||||
kio-locate (0.2.1) 2004-10-22 -- Armin Straub
|
||||
|
||||
+ Added french translation (thanks to Laurent Rathle).
|
||||
* Included stdlib.h correctly (previously preventing kio-locate to compile on
|
||||
some machines).
|
||||
|
||||
|
||||
kio-locate (0.2.0) 2004-10-15 -- Armin Straub
|
||||
|
||||
* Complete rewrite.
|
||||
* Works with KDE 3.3.
|
||||
+ Displays detailed information in Konqueror (not just filenames).
|
||||
+ Enabled patterns like the ones used for locate.
|
||||
|
||||
|
||||
kio-locate (0.1.1-1) -- Michael Schuerig
|
||||
|
||||
* Corrected URL prefix ("file:" instead of "file:/").
|
||||
* Update admin dir.
|
||||
|
||||
|
||||
kio-locate (0.1-2) -- Michael Schuerig
|
||||
|
||||
* Rebuild for KDE 3.1.
|
||||
|
||||
|
||||
kio-locate (0.1-1) -- Michael Schuerig
|
||||
|
||||
* Initial Release.
|
||||
|
@ -0,0 +1,55 @@
|
||||
QUICKSTART
|
||||
|
||||
kio-locate uses scons for configuring and building. In general
|
||||
it should suffice to execute (if you have scons installed):
|
||||
|
||||
$ scons configure
|
||||
$ scons
|
||||
$ sudo scons install
|
||||
|
||||
If you don't have scons installed, you can use the stripped
|
||||
down version shipping with kio-locate. This can be found in the
|
||||
file scons-mini.tar.bz2 and has to be unpacked.
|
||||
|
||||
$ tar xjf scons-mini.tar.bz2
|
||||
$ python scons.py configure
|
||||
$ python scons.py
|
||||
$ sudo python scons.py install
|
||||
|
||||
As you can see the command "python scons.py" replaces executing
|
||||
"scons" if you don't have that installed. In the following you
|
||||
have to bear this in mind.
|
||||
|
||||
|
||||
SPECIAL CONFIGURING
|
||||
|
||||
On some systems, it might be necessary to configure the project
|
||||
using scons configure qtincludes=path1 kdeincludes=path2
|
||||
like this:
|
||||
$ scons configure qtincludes=/usr/include/qt3/include \
|
||||
> kdeincludes=/usr/lib/kde3/include
|
||||
When in doubt, use scons --help or scons -h to display the options.
|
||||
|
||||
As when using ./configure you can specify using prefix=... where to
|
||||
install the package.
|
||||
$ scons configure prefix=/usr
|
||||
|
||||
To enable debug mode you can use:
|
||||
$ scons configure debug=1
|
||||
|
||||
To clean the project:
|
||||
$ scons -c
|
||||
|
||||
And to uninstall kio-locate:
|
||||
$ scons -c install
|
||||
|
||||
|
||||
NOTE THIS
|
||||
|
||||
This is just a very overview about what you can do.
|
||||
|
||||
If you encounter problems, please post them (or better their solutions)
|
||||
to me, so that I can include them into this guide.
|
||||
|
||||
Armin Straub
|
||||
linux@arminstraub.de
|
@ -0,0 +1,82 @@
|
||||
#!/usr/bin/python
|
||||
# kio-locate
|
||||
#
|
||||
# Copyright (C) 2005 by Tobi Vollebregt
|
||||
# tobivollebregt@gmail.com
|
||||
#
|
||||
# Thanks to Google's Summer Of Code Program!
|
||||
#
|
||||
# Copyright (C) 2005 by Armin Straub
|
||||
# linux@arminstraub.de
|
||||
#
|
||||
# Adapted from the example shipping with bksys.
|
||||
# Thomas Nagy, 2004, 2005
|
||||
# Thanks for this great tool!
|
||||
|
||||
"""
|
||||
help -> scons -h
|
||||
compile -> scons
|
||||
clean -> scons -c
|
||||
install -> scons install
|
||||
uninstall -> scons -c install
|
||||
configure -> scons configure prefix=/tmp/ita debug=full extraincludes=/usr/local/include:/tmp/include prefix=/usr/local
|
||||
|
||||
Run from a subdirectory -> scons -u
|
||||
The variables are saved automatically after the first run (look at cache/kde.cache.py, ..)
|
||||
"""
|
||||
|
||||
###################################################################
|
||||
# LOAD THE ENVIRONMENT AND SET UP THE TOOLS
|
||||
###################################################################
|
||||
|
||||
## Load the builders in config
|
||||
env = Environment( tools=['default', 'generic', 'kde'], toolpath=['./admin'])
|
||||
|
||||
# Set the build directory so we can do "rm -rf build" to clean up.
|
||||
BuildDir('build/src', 'src')
|
||||
|
||||
env.KDEuse("environ")
|
||||
#env.KDEuse("environ rpath lang_qt thread nohelp")
|
||||
|
||||
# Add -DHAVE_UDS_HIDDEN if we detected the UDS_HIDDEN patch.
|
||||
if '1' in env['HAVE_UDS_HIDDEN']:
|
||||
env.Append(CPPFLAGS = ['-DHAVE_UDS_HIDDEN'])
|
||||
|
||||
###################################################################
|
||||
# SCRIPTS FOR BUILDING THE TARGETS
|
||||
###################################################################
|
||||
|
||||
## target processing is done in the subdirectories
|
||||
env.subdirs('build/src')
|
||||
|
||||
############################
|
||||
## Process the documentation
|
||||
############################
|
||||
|
||||
## Use a distinct environment
|
||||
myenv=env.Copy()
|
||||
|
||||
## Define this to enable docbook file dependency tracking
|
||||
#myenv['i_am_a_documentation_writer']=1
|
||||
|
||||
# This shouldn't be needed, but it works around a (possible) bug in bksys 1.5.2.rc1.
|
||||
# myenv['_BUILDDIR_']='build'
|
||||
|
||||
## Use docfolder for each documentation directory
|
||||
## The parameters of docfolder are: documentation dir, language code, app name
|
||||
myenv.docfolder('doc/en/', 'en', 'kio-locate/')
|
||||
#myenv.docfolder('doc/fr/', 'fr', 'kio-locate/')
|
||||
|
||||
############################
|
||||
## Process the translations
|
||||
############################
|
||||
|
||||
## They are usually located in the po/ directory
|
||||
## We use myenv here because it has the _BUILDDIR_ workaround. See above.
|
||||
myenv.KDElang('po/', 'kio-locate')
|
||||
|
||||
###################################################################
|
||||
# CONVENIENCE FUNCTIONS TO EMULATE 'make dist' and 'make distclean'
|
||||
###################################################################
|
||||
|
||||
env.dist('kio-locate')
|
@ -0,0 +1,14 @@
|
||||
Short Term
|
||||
|
||||
Mid Term
|
||||
+ Add kio-locate to kde-extragear.
|
||||
+ Translations needed. Contact Håvard Dahle for Norwegian translation.
|
||||
+ Support searches on remote servers via ssh. A possible search could
|
||||
then look like "locate://username@server:port pattern". (Suggested
|
||||
by Ferdinand Gassauer)
|
||||
|
||||
Ideas
|
||||
+ Some kind of first start screen?
|
||||
+ Check out beagle-query which was said to behave similar
|
||||
to command line locate. (Benjamin Kudria)
|
||||
+ Use other backends like kat?
|
@ -0,0 +1,29 @@
|
||||
Only in kio-locate/admin/: .arch-ids
|
||||
diff -ur bksys-1.5.1.pre4/admin/kde.py kio-locate/admin/kde.py
|
||||
--- bksys-1.5.1.pre4/admin/kde.py 2005-08-16 23:16:32.000000000 +0200
|
||||
+++ kio-locate/admin/kde.py 2005-08-17 12:27:49.000000000 +0200
|
||||
@@ -242,6 +242,15 @@
|
||||
qtlibs=qtdir+"/lib"+libsuffix
|
||||
env['QTLIBPATH']=qtlibs
|
||||
|
||||
+ ## check if KDE has the UDS_HIDDEN patch
|
||||
+ print "Checking KDE for UDS_HIDDEN : ",
|
||||
+ if 'UDS_HIDDEN' in os.popen('cat ' + env['KDEINCLUDEPATH'] + '/kio/global.h').read():
|
||||
+ env['HAVE_UDS_HIDDEN']='1'
|
||||
+ p('GREEN', 'yes')
|
||||
+ else:
|
||||
+ env['HAVE_UDS_HIDDEN']='0'
|
||||
+ p('YELLOW', 'no')
|
||||
+
|
||||
def generate(env):
|
||||
""""Set up the qt and kde environment and builders - the moc part is difficult to understand """
|
||||
|
||||
@@ -304,7 +313,7 @@
|
||||
('KDELOCALE', ''), ('KDEDOC', ''), ('KDEKCFG', ''),
|
||||
('KDEXDG', ''), ('KDEXDGDIR', ''), ('KDEMENU', ''),
|
||||
('KDEMIME', ''), ('KDEICONS', ''), ('KDESERV', ''),
|
||||
- ('KDESERVTYPES', ''), ('KDEAPPS', ''),
|
||||
+ ('KDESERVTYPES', ''), ('KDEAPPS', ''), ('HAVE_UDS_HIDDEN', ''),
|
||||
)
|
||||
opts.Update(env)
|
||||
|
@ -0,0 +1,635 @@
|
||||
## Thomas Nagy, 2005
|
||||
""" Run scons -h to display the associated help, or look below """
|
||||
|
||||
import os, re, types, sys, string, shutil, stat, glob
|
||||
import SCons.Defaults
|
||||
import SCons.Tool
|
||||
import SCons.Util
|
||||
from SCons.Script.SConscript import SConsEnvironment
|
||||
from SCons.Options import Options, PathOption
|
||||
|
||||
def getreldir(lenv):
|
||||
cwd=os.getcwd()
|
||||
root=SCons.Node.FS.default_fs.Dir('#').abspath
|
||||
return cwd.replace(root,'').lstrip('/')
|
||||
|
||||
def dist(env, appname, version=None):
|
||||
### To make a tarball of your masterpiece, use 'scons dist'
|
||||
import os
|
||||
if 'dist' in sys.argv:
|
||||
if not version: VERSION=os.popen("cat VERSION").read().rstrip()
|
||||
else: VERSION=version
|
||||
FOLDER = appname+'-'+VERSION
|
||||
TMPFOLD = ".tmp"+FOLDER
|
||||
ARCHIVE = FOLDER+'.tar.bz2'
|
||||
|
||||
## check if the temporary directory already exists
|
||||
os.popen('rm -rf %s %s %s' % (FOLDER, TMPFOLD, ARCHIVE) )
|
||||
|
||||
## create a temporary directory
|
||||
startdir = os.getcwd()
|
||||
|
||||
os.popen("mkdir -p "+TMPFOLD)
|
||||
os.popen("cp -R * "+TMPFOLD)
|
||||
os.popen("mv "+TMPFOLD+" "+FOLDER)
|
||||
|
||||
## remove scons-local if it is unpacked
|
||||
os.popen("rm -rf "+FOLDER+"/scons "+FOLDER+"/sconsign "+FOLDER+"/scons-local-0.96.1")
|
||||
|
||||
## remove our object files first
|
||||
os.popen("find "+FOLDER+" -name \"cache\" | xargs rm -rf")
|
||||
os.popen("find "+FOLDER+" -name \"build\" | xargs rm -rf")
|
||||
os.popen("find "+FOLDER+" -name \"*.pyc\" | xargs rm -f")
|
||||
|
||||
## CVS cleanup
|
||||
os.popen("find "+FOLDER+" -name \"CVS\" | xargs rm -rf")
|
||||
os.popen("find "+FOLDER+" -name \".cvsignore\" | xargs rm -rf")
|
||||
|
||||
## Subversion cleanup
|
||||
os.popen("find %s -name .svn -type d | xargs rm -rf" % FOLDER)
|
||||
|
||||
## GNU Arch cleanup
|
||||
os.popen("find "+FOLDER+" -name \"{arch}\" | xargs rm -rf")
|
||||
os.popen("find "+FOLDER+" -name \".arch-i*\" | xargs rm -rf")
|
||||
|
||||
## Create the tarball (coloured output)
|
||||
print "\033[92m"+"Writing archive "+ARCHIVE+"\033[0m"
|
||||
os.popen("tar cjf "+ARCHIVE+" "+FOLDER)
|
||||
|
||||
## Remove the temporary directory
|
||||
os.popen('rm -rf '+FOLDER)
|
||||
env.Exit(0)
|
||||
|
||||
if 'distclean' in sys.argv:
|
||||
## Remove the cache directory
|
||||
import os, shutil
|
||||
if os.path.isdir(env['CACHEDIR']): shutil.rmtree(env['CACHEDIR'])
|
||||
os.popen("find . -name \"*.pyc\" | xargs rm -rf")
|
||||
env.Exit(0)
|
||||
|
||||
colors= {
|
||||
'BOLD' :"\033[1m",
|
||||
'RED' :"\033[91m",
|
||||
'GREEN' :"\033[92m",
|
||||
'YELLOW':"\033[1m", #"\033[93m" # unreadable on white backgrounds
|
||||
'CYAN' :"\033[96m",
|
||||
'NORMAL':"\033[0m",
|
||||
}
|
||||
|
||||
def pprint(env, col, str, label=''):
|
||||
if env.has_key('NOCOLORS'):
|
||||
print "%s %s" % (str, label)
|
||||
return
|
||||
try: mycol=colors[col]
|
||||
except: mycol=''
|
||||
print "%s%s%s %s" % (mycol, str, colors['NORMAL'], label)
|
||||
|
||||
class genobj:
|
||||
def __init__(self, val, env):
|
||||
if not val in "program shlib kioslave staticlib".split():
|
||||
print "unknown genobj given: "+val
|
||||
env.Exit(1)
|
||||
|
||||
self.type = val
|
||||
self.orenv = env
|
||||
self.env = None
|
||||
self.executed = 0
|
||||
|
||||
self.target=''
|
||||
self.src=None
|
||||
|
||||
self.cxxflags=''
|
||||
self.cflags=''
|
||||
self.includes=''
|
||||
|
||||
self.linkflags=''
|
||||
self.libpaths=''
|
||||
self.libs=''
|
||||
|
||||
# vars used by shlibs
|
||||
self.vnum=''
|
||||
self.libprefix=''
|
||||
|
||||
# a directory where to install the targets (optional)
|
||||
self.instdir=''
|
||||
|
||||
# change the working directory before reading the targets
|
||||
self.chdir=''
|
||||
|
||||
# unix permissions
|
||||
self.perms=''
|
||||
|
||||
# these members are private
|
||||
self.chdir_lock=None
|
||||
self.dirprefix='./'
|
||||
self.old_os_dir=''
|
||||
self.old_fs_dir=''
|
||||
self.p_local_shlibs=[]
|
||||
self.p_local_staticlibs=[]
|
||||
self.p_global_shlibs=[]
|
||||
|
||||
self.p_localsource=None
|
||||
self.p_localtarget=None
|
||||
|
||||
# work directory
|
||||
self.workdir_lock=None
|
||||
self.orig_fs_dir=SCons.Node.FS.default_fs.getcwd()
|
||||
self.not_orig_fs_dir=''
|
||||
self.not_orig_os_dir=''
|
||||
|
||||
if not env.has_key('USE_THE_FORCE_LUKE'): env['USE_THE_FORCE_LUKE']=[self]
|
||||
else: env['USE_THE_FORCE_LUKE'].append(self)
|
||||
|
||||
def joinpath(self, val):
|
||||
dir=self.dirprefix
|
||||
|
||||
thing=self.orenv.make_list(val)
|
||||
files=[]
|
||||
bdir="./"
|
||||
if self.orenv.has_key('_BUILDDIR_'): bdir=self.orenv['_BUILDDIR_']
|
||||
|
||||
for v in thing:
|
||||
files.append( self.orenv.join(bdir, dir, v) )
|
||||
|
||||
#for f in files: print f
|
||||
#print "\n"
|
||||
return files
|
||||
|
||||
# a list of paths, with absolute and relative ones
|
||||
def fixpath(self, val):
|
||||
dir=self.dirprefix
|
||||
|
||||
thing=self.orenv.make_list(val)
|
||||
ret=[]
|
||||
bdir="./"
|
||||
if self.orenv.has_key('_BUILDDIR_'): bdir=self.orenv['_BUILDDIR_']
|
||||
for v in thing:
|
||||
if v[:2] == "./" or v[:3] == "../":
|
||||
ret.append( self.orenv.join(bdir, dir, v) )
|
||||
elif v[:1] == "#" or v[:1] == "/":
|
||||
ret.append( v )
|
||||
else:
|
||||
ret.append( self.orenv.join(bdir, dir, v) )
|
||||
return ret
|
||||
|
||||
def lockworkdir(self):
|
||||
if self.workdir_lock: return
|
||||
self.workdir_lock=1
|
||||
self.not_orig_fs_dir=SCons.Node.FS.default_fs.getcwd()
|
||||
self.not_orig_os_dir=os.getcwd()
|
||||
SCons.Node.FS.default_fs.chdir( self.orig_fs_dir, change_os_dir=1)
|
||||
|
||||
def unlockworkdir(self):
|
||||
if not self.workdir_lock: return
|
||||
SCons.Node.FS.default_fs.chdir( self.not_orig_fs_dir, change_os_dir=0)
|
||||
os.chdir(self.not_orig_os_dir)
|
||||
self.workdir_lock=None
|
||||
|
||||
def lockchdir(self):
|
||||
if not self.chdir: return
|
||||
if self.chdir_lock: return
|
||||
self.chdir_lock=1
|
||||
SConfFS=SCons.Node.FS.default_fs
|
||||
self.old_fs_dir=SConfFS.getcwd()
|
||||
self.old_os_dir=os.getcwd()
|
||||
SConfFS.chdir( SConfFS.Dir('#/'+self.chdir), change_os_dir=1)
|
||||
|
||||
def unlockchdir(self):
|
||||
if not self.chdir: return
|
||||
if not self.chdir_lock: return
|
||||
SCons.Node.FS.default_fs.chdir(self.old_fs_dir, change_os_dir=0)
|
||||
os.chdir(self.old_os_dir)
|
||||
self.chdir_lock=None
|
||||
|
||||
def execute(self):
|
||||
if self.executed: return
|
||||
|
||||
self.lockchdir()
|
||||
|
||||
if self.orenv.has_key('DUMPCONFIG'):
|
||||
print self.xml()
|
||||
self.unlockchdir()
|
||||
self.executed=1
|
||||
return
|
||||
|
||||
self.env = self.orenv.Copy()
|
||||
|
||||
if not self.p_localtarget: self.p_localtarget = self.joinpath(self.target)
|
||||
if not self.p_localsource: self.p_localsource = self.joinpath(self.src)
|
||||
|
||||
if (not self.src or len(self.src) == 0) and not self.p_localsource:
|
||||
self.env.pprint('RED',"no source file given to object - self.src")
|
||||
self.env.Exit(1)
|
||||
if not self.target:
|
||||
self.env.pprint('RED',"no target given to object - self.target")
|
||||
self.env.Exit(1)
|
||||
if not self.env.has_key('nosmart_includes'): self.env.AppendUnique(CPPPATH=['./'])
|
||||
if self.type == "kioslave": self.libprefix=''
|
||||
|
||||
if len(self.includes)>0: self.env.AppendUnique(CPPPATH=self.fixpath(self.includes))
|
||||
if len(self.cxxflags)>0: self.env.AppendUnique(CXXFLAGS=self.env.make_list(self.cxxflags))
|
||||
if len(self.cflags)>0: self.env.AppendUnique(CCFLAGS=self.env.make_list(self.cflags))
|
||||
|
||||
llist=self.env.make_list(self.libs)
|
||||
lext=['.so', '.la']
|
||||
sext='.a'.split()
|
||||
for l in llist:
|
||||
sal=SCons.Util.splitext(l)
|
||||
if len(sal)>1:
|
||||
if sal[1] in lext: self.p_local_shlibs.append(self.fixpath(sal[0]+'.so')[0])
|
||||
elif sal[1] in sext: self.p_local_staticlibs.append(sal[0]+'.a')
|
||||
else: self.p_global_shlibs.append(l)
|
||||
|
||||
if len(self.p_global_shlibs)>0: self.env.AppendUnique(LIBS=self.p_global_shlibs)
|
||||
if len(self.libpaths)>0: self.env.PrependUnique(LIBPATH=self.fixpath(self.libpaths))
|
||||
if len(self.linkflags)>0: self.env.PrependUnique(LINKFLAGS=self.env.make_list(self.linkflags))
|
||||
if len(self.p_local_shlibs)>0:
|
||||
self.env.link_local_shlib(self.p_local_shlibs)
|
||||
if len(self.p_local_staticlibs)>0:
|
||||
self.env.link_local_staticlib(self.p_local_staticlibs)
|
||||
|
||||
# the target to return - no more self.env modification is allowed after this part
|
||||
ret=None
|
||||
if self.type=='shlib' or self.type=='kioslave':
|
||||
ret=self.env.bksys_shlib(self.p_localtarget, self.p_localsource, self.instdir,
|
||||
self.libprefix, self.vnum)
|
||||
elif self.type=='program':
|
||||
ret=self.env.Program(self.p_localtarget, self.p_localsource)
|
||||
if not self.env.has_key('NOAUTOINSTALL'):
|
||||
ins=self.env.bksys_install(self.instdir, ret)
|
||||
if self.perms: self.env.AddPostAction(ins, self.env.Chmod(ins, self.perms))
|
||||
elif self.type=='staticlib':
|
||||
ret=self.env.StaticLibrary(self.p_localtarget, self.p_localsource)
|
||||
|
||||
# we link the program against a shared library made locally, add the dependency
|
||||
if len(self.p_local_shlibs)>0:
|
||||
if ret: self.env.Depends( ret, self.p_local_shlibs )
|
||||
if len(self.p_local_staticlibs)>0:
|
||||
if ret: self.env.Depends( ret, self.p_local_staticlibs )
|
||||
|
||||
self.unlockchdir()
|
||||
self.executed=1
|
||||
|
||||
## Copy function that honors symlinks
|
||||
def copy_bksys(dest, source, env):
|
||||
if os.path.islink(source):
|
||||
#print "symlinking "+source+" "+dest
|
||||
if os.path.islink(dest):
|
||||
os.unlink(dest)
|
||||
os.symlink(os.readlink(source), dest)
|
||||
else:
|
||||
shutil.copy2(source, dest)
|
||||
st=os.stat(source)
|
||||
os.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
|
||||
return 0
|
||||
|
||||
## Return a list of things
|
||||
def make_list(env, s):
|
||||
if type(s) is types.ListType: return s
|
||||
else:
|
||||
try: return s.split()
|
||||
except AttributeError: return s
|
||||
|
||||
def join(lenv, s1, s2, s3=None, s4=None):
|
||||
if s4 and s3: return lenv.join(s1, s2, lenv.join(s3, s4))
|
||||
if s3 and s2: return lenv.join(s1, lenv.join(s2, s3))
|
||||
elif not s2: return s1
|
||||
# having s1, s2
|
||||
#print "path1 is "+s1+" path2 is "+s2+" "+os.path.join(s1,string.lstrip(s2,'/'))
|
||||
if not s1: s1="/"
|
||||
return os.path.join(s1,string.lstrip(s2,'/'))
|
||||
|
||||
def exists(env):
|
||||
return true
|
||||
|
||||
def generate(env):
|
||||
## Bksys requires scons 0.96
|
||||
env.EnsureSConsVersion(0, 96)
|
||||
|
||||
SConsEnvironment.pprint = pprint
|
||||
SConsEnvironment.make_list = make_list
|
||||
SConsEnvironment.join = join
|
||||
SConsEnvironment.dist = dist
|
||||
SConsEnvironment.getreldir = getreldir
|
||||
|
||||
env['HELP']=0
|
||||
if '--help' in sys.argv or '-h' in sys.argv or 'help' in sys.argv: env['HELP']=1
|
||||
if env['HELP']:
|
||||
p=env.pprint
|
||||
p('BOLD','*** Instructions ***')
|
||||
p('BOLD','--------------------')
|
||||
p('BOLD','* scons ','to compile')
|
||||
p('BOLD','* scons -j4 ','to compile with several instances')
|
||||
p('BOLD','* scons install ','to compile and install')
|
||||
p('BOLD','* scons -c install','to uninstall')
|
||||
p('BOLD','\n*** Generic options ***')
|
||||
p('BOLD','--------------------')
|
||||
p('BOLD','* debug ','debug=1 (-g) or debug=full (-g3, slower) else use environment CXXFLAGS, or -O2 by default')
|
||||
p('BOLD','* prefix ','the installation path')
|
||||
p('BOLD','* extraincludes','a list of paths separated by ":"')
|
||||
p('BOLD','* scons configure debug=full prefix=/usr/local extraincludes=/tmp/include:/usr/local')
|
||||
p('BOLD','* scons install prefix=/opt/local DESTDIR=/tmp/blah\n')
|
||||
return
|
||||
|
||||
## Global cache directory
|
||||
# Put all project files in it so a rm -rf cache will clean up the config
|
||||
if not env.has_key('CACHEDIR'): env['CACHEDIR'] = env.join(os.getcwd(),'/cache/')
|
||||
if not os.path.isdir(env['CACHEDIR']): os.mkdir(env['CACHEDIR'])
|
||||
|
||||
## SCons cache directory
|
||||
# This avoids recompiling the same files over and over again:
|
||||
# very handy when working with cvs
|
||||
if os.getuid() != 0: env.CacheDir(os.getcwd()+'/cache/objects')
|
||||
|
||||
# Avoid spreading .sconsign files everywhere - keep this line
|
||||
env.SConsignFile(env['CACHEDIR']+'/scons_signatures')
|
||||
|
||||
def makeHashTable(args):
|
||||
table = { }
|
||||
for arg in args:
|
||||
if len(arg) > 1:
|
||||
lst=arg.split('=')
|
||||
if len(lst) < 2: continue
|
||||
key=lst[0]
|
||||
value=lst[1]
|
||||
if len(key) > 0 and len(value) >0: table[key] = value
|
||||
return table
|
||||
|
||||
env['ARGS']=makeHashTable(sys.argv)
|
||||
|
||||
SConsEnvironment.Chmod = SCons.Action.ActionFactory(os.chmod, lambda dest, mode: 'Chmod("%s", 0%o)' % (dest, mode))
|
||||
|
||||
## Special trick for installing rpms ...
|
||||
env['DESTDIR']=''
|
||||
if 'install' in sys.argv:
|
||||
dd=''
|
||||
if os.environ.has_key('DESTDIR'): dd=os.environ['DESTDIR']
|
||||
if not dd:
|
||||
if env['ARGS'] and env['ARGS'].has_key('DESTDIR'): dd=env['ARGS']['DESTDIR']
|
||||
if dd:
|
||||
env['DESTDIR']=dd
|
||||
env.pprint('CYAN','** Enabling DESTDIR for the project ** ',env['DESTDIR'])
|
||||
|
||||
## install symlinks for shared libraries properly
|
||||
env['INSTALL'] = copy_bksys
|
||||
|
||||
## Use the same extension .o for all object files
|
||||
env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1
|
||||
|
||||
## no colors
|
||||
if os.environ.has_key('NOCOLORS'): env['NOCOLORS']=1
|
||||
|
||||
## load the options
|
||||
cachefile=env['CACHEDIR']+'generic.cache.py'
|
||||
opts = Options(cachefile)
|
||||
opts.AddOptions(
|
||||
( 'GENCCFLAGS', 'C flags' ),
|
||||
( 'GENCXXFLAGS', 'debug level for the project : full or just anything' ),
|
||||
( 'GENLINKFLAGS', 'additional link flags' ),
|
||||
( 'PREFIX', 'prefix for installation' ),
|
||||
( 'EXTRAINCLUDES', 'extra include paths for the project' ),
|
||||
( 'ISCONFIGURED', 'is the project configured' ),
|
||||
)
|
||||
opts.Update(env)
|
||||
|
||||
# Use this to avoid an error message 'how to make target configure ?'
|
||||
env.Alias('configure', None)
|
||||
|
||||
# Check if the following command line arguments have been given
|
||||
# and set a flag in the environment to show whether or not it was
|
||||
# given.
|
||||
if 'install' in sys.argv: env['_INSTALL']=1
|
||||
else: env['_INSTALL']=0
|
||||
if 'configure' in sys.argv: env['_CONFIGURE']=1
|
||||
else: env['_CONFIGURE']=0
|
||||
|
||||
# Configure the environment if needed
|
||||
if not env['HELP'] and (env['_CONFIGURE'] or not env.has_key('ISCONFIGURED')):
|
||||
# be paranoid, unset existing variables
|
||||
for var in ['GENCXXFLAGS', 'GENCCFLAGS', 'GENLINKFLAGS', 'PREFIX', 'EXTRAINCLUDES', 'ISCONFIGURED', 'EXTRAINCLUDES']:
|
||||
if env.has_key(var): env.__delitem__(var)
|
||||
|
||||
if env['ARGS'].get('debug', None):
|
||||
debuglevel = env['ARGS'].get('debug', None)
|
||||
env.pprint('CYAN','** Enabling debug for the project **')
|
||||
if (debuglevel == "full"): env['GENCXXFLAGS'] = ['-DDEBUG', '-g3', '-Wall']
|
||||
else: env['GENCXXFLAGS'] = ['-DDEBUG', '-g', '-Wall']
|
||||
else:
|
||||
if os.environ.has_key('CXXFLAGS'):
|
||||
# user-defined flags (gentooers will be elighted)
|
||||
env['GENCXXFLAGS'] = SCons.Util.CLVar( os.environ['CXXFLAGS'] )
|
||||
env.Append( GENCXXFLAGS = ['-DNDEBUG', '-DNO_DEBUG'] )
|
||||
else:
|
||||
env.Append(GENCXXFLAGS = ['-O2', '-DNDEBUG', '-DNO_DEBUG'])
|
||||
|
||||
if os.environ.has_key('CFLAGS'): env['GENCCFLAGS'] = SCons.Util.CLVar( os.environ['CFLAGS'] )
|
||||
|
||||
## FreeBSD settings (contributed by will at freebsd dot org)
|
||||
if os.uname()[0] == "FreeBSD":
|
||||
if os.environ.has_key('PTHREAD_LIBS'):
|
||||
env.AppendUnique( GENLINKFLAGS = SCons.Util.CLVar( os.environ['PTHREAD_LIBS'] ) )
|
||||
else:
|
||||
syspf = os.popen('/sbin/sysctl kern.osreldate')
|
||||
osreldate = int(syspf.read().split()[1])
|
||||
syspf.close()
|
||||
if osreldate < 500016:
|
||||
env.AppendUnique( GENLINKFLAGS = ['-pthread'])
|
||||
env.AppendUnique( GENCXXFLAGS = ['-D_THREAD_SAFE'])
|
||||
elif osreldate < 502102:
|
||||
env.AppendUnique( GENLINKFLAGS = ['-lc_r'])
|
||||
env.AppendUnique( GENCXXFLAGS = ['-D_THREAD_SAFE'])
|
||||
else:
|
||||
env.AppendUnique( GENLINKFLAGS = ['-pthread'])
|
||||
|
||||
# User-specified prefix
|
||||
if env['ARGS'].has_key('prefix'):
|
||||
env['PREFIX'] = os.path.abspath( env['ARGS'].get('prefix', '') )
|
||||
env.pprint('CYAN','** installation prefix for the project set to:',env['PREFIX'])
|
||||
|
||||
# User-specified include paths
|
||||
env['EXTRAINCLUDES'] = env['ARGS'].get('extraincludes', None)
|
||||
if env['EXTRAINCLUDES']:
|
||||
env.pprint('CYAN','** extra include paths for the project set to:',env['EXTRAINCLUDES'])
|
||||
|
||||
env['ISCONFIGURED']=1
|
||||
|
||||
# And finally save the options in the cache
|
||||
opts.Save(cachefile, env)
|
||||
|
||||
def bksys_install(lenv, subdir, files, destfile=None, perms=None):
|
||||
""" Install files on 'scons install' """
|
||||
if not env['_INSTALL']: return
|
||||
basedir = env['DESTDIR']
|
||||
install_list=None
|
||||
if not destfile: install_list = env.Install(lenv.join(basedir,subdir), lenv.make_list(files))
|
||||
elif subdir: install_list = env.InstallAs(lenv.join(basedir,subdir,destfile), lenv.make_list(files))
|
||||
else: install_list = env.InstallAs(lenv.join(basedir,destfile), lenv.make_list(files))
|
||||
if perms and install_list: lenv.AddPostAction(install_list, lenv.Chmod(install_list, perms))
|
||||
env.Alias('install', install_list)
|
||||
return install_list
|
||||
|
||||
def build_la_file(target, source, env):
|
||||
""" Writes a .la file, used by libtool """
|
||||
dest=open(target[0].path, 'w')
|
||||
sname=source[0].name
|
||||
dest.write("# Generated by ltmain.sh - GNU libtool 1.5.18 - (pwn3d by bksys)\n#\n#\n")
|
||||
if len(env['BKSYS_VNUM'])>0:
|
||||
vnum=env['BKSYS_VNUM']
|
||||
nums=vnum.split('.')
|
||||
src=source[0].name
|
||||
name = src.split('so.')[0] + 'so'
|
||||
strn = src+" "+name+"."+str(nums[0])+" "+name
|
||||
dest.write("dlname='%s'\n" % (name+'.'+str(nums[0])) )
|
||||
dest.write("library_names='%s'\n" % (strn) )
|
||||
else:
|
||||
dest.write("dlname='%s'\n" % sname)
|
||||
dest.write("library_names='%s %s %s'\n" % (sname, sname, sname) )
|
||||
dest.write("old_library=''\ndependency_libs=''\ncurrent=0\n")
|
||||
dest.write("age=0\nrevision=0\ninstalled=yes\nshouldnotlink=no\n")
|
||||
dest.write("dlopen=''\ndlpreopen=''\n")
|
||||
dest.write("libdir='%s'" % env['BKSYS_DESTDIR'])
|
||||
dest.close()
|
||||
return 0
|
||||
|
||||
def string_la_file(target, source, env):
|
||||
print "building '%s' from '%s'" % (target[0].name, source[0].name)
|
||||
la_file = env.Action(build_la_file, string_la_file, 'BKSYS_VNUM', 'BKSYS_DESTDIR')
|
||||
env['BUILDERS']['LaFile'] = env.Builder(action=la_file,suffix='.la',src_suffix=env['SHLIBSUFFIX'])
|
||||
|
||||
## Function for building shared libraries
|
||||
def bksys_shlib(lenv, ntarget, source, libdir, libprefix='lib', vnum='', noinst=None):
|
||||
""" Install a shared library.
|
||||
|
||||
Installs a shared library, with or without a version number, and create a
|
||||
.la file for use by libtool.
|
||||
|
||||
If library version numbering is to be used, the version number
|
||||
should be passed as a period-delimited version number (e.g.
|
||||
vnum = '1.2.3'). This causes the library to be installed
|
||||
with its full version number, and with symlinks pointing to it.
|
||||
|
||||
For example, for libfoo version 1.2.3, install the file
|
||||
libfoo.so.1.2.3, and create symlinks libfoo.so and
|
||||
libfoo.so.1 that point to it.
|
||||
"""
|
||||
# parameter can be a list
|
||||
if type(ntarget) is types.ListType: target=ntarget[0]
|
||||
else: target=ntarget
|
||||
|
||||
thisenv = lenv.Copy() # copying an existing environment is cheap
|
||||
thisenv['BKSYS_DESTDIR']=libdir
|
||||
thisenv['BKSYS_VNUM']=vnum
|
||||
thisenv['SHLIBPREFIX']=libprefix
|
||||
|
||||
if len(vnum)>0:
|
||||
thisenv['SHLIBSUFFIX']='.so.'+vnum
|
||||
thisenv.Depends(target, thisenv.Value(vnum))
|
||||
num=vnum.split('.')[0]
|
||||
lst=target.split('/')
|
||||
tname=lst[len(lst)-1]
|
||||
libname=tname.split('.')[0]
|
||||
thisenv.AppendUnique(LINKFLAGS = ["-Wl,--soname=%s.so.%s" % (libname, num)] )
|
||||
|
||||
# Fix against a scons bug - shared libs and ordinal out of range(128)
|
||||
if type(source) is types.ListType:
|
||||
src2=[]
|
||||
for i in source: src2.append( str(i) )
|
||||
source=src2
|
||||
|
||||
library_list = thisenv.SharedLibrary(target, source)
|
||||
lafile_list = thisenv.LaFile(target, library_list)
|
||||
|
||||
## Install the libraries automatically
|
||||
if not thisenv.has_key('NOAUTOINSTALL') and not noinst:
|
||||
thisenv.bksys_install(libdir, library_list)
|
||||
thisenv.bksys_install(libdir, lafile_list)
|
||||
|
||||
## Handle the versioning
|
||||
if len(vnum)>0:
|
||||
nums=vnum.split('.')
|
||||
symlinkcom = ('cd $TARGET.dir && rm -f $TARGET.name && ln -s $SOURCE.name $TARGET.name')
|
||||
tg = target+'.so.'+vnum
|
||||
nm1 = target+'.so'
|
||||
nm2 = target+'.so.'+nums[0]
|
||||
thisenv.Command(nm1, tg, symlinkcom)
|
||||
thisenv.Command(nm2, tg, symlinkcom)
|
||||
thisenv.bksys_install(libdir, nm1)
|
||||
thisenv.bksys_install(libdir, nm2)
|
||||
return library_list
|
||||
|
||||
# Declare scons scripts to process
|
||||
def subdirs(lenv, folderlist):
|
||||
flist=lenv.make_list(folderlist)
|
||||
for i in flist:
|
||||
lenv.SConscript(lenv.join(i, 'SConscript'))
|
||||
# take all objects - warn those who are not already executed
|
||||
if lenv.has_key('USE_THE_FORCE_LUKE'):
|
||||
for ke in lenv['USE_THE_FORCE_LUKE']:
|
||||
if ke.executed: continue
|
||||
#lenv.pprint('GREEN',"you forgot to execute object "+ke.target)
|
||||
ke.lockworkdir()
|
||||
ke.execute()
|
||||
ke.unlockworkdir()
|
||||
|
||||
def link_local_shlib(lenv, str):
|
||||
""" Links against a shared library made in the project """
|
||||
lst = lenv.make_list(str)
|
||||
for file in lst:
|
||||
import re
|
||||
reg=re.compile("(.*)/lib(.*).(la|so)$")
|
||||
result=reg.match(file)
|
||||
if not result:
|
||||
reg = re.compile("(.*)/lib(.*).(la|so)\.(.)")
|
||||
result=reg.match(file)
|
||||
if not result:
|
||||
print "Unknown la file given "+file
|
||||
continue
|
||||
dir = result.group(1)
|
||||
link = result.group(2)
|
||||
else:
|
||||
dir = result.group(1)
|
||||
link = result.group(2)
|
||||
|
||||
lenv.AppendUnique(LIBS = [link])
|
||||
lenv.PrependUnique(LIBPATH = [dir])
|
||||
|
||||
def link_local_staticlib(lenv, str):
|
||||
""" Links against a shared library made in the project """
|
||||
lst = lenv.make_list(str)
|
||||
for file in lst:
|
||||
import re
|
||||
reg = re.compile("(.*)/(lib.*.a)")
|
||||
result = reg.match(file)
|
||||
if not result:
|
||||
print "Unknown archive file given "+file
|
||||
continue
|
||||
f=SCons.Node.FS.default_fs.File(file)
|
||||
lenv.Append(LINKFLAGS=[f.path])
|
||||
|
||||
def set_build_dir(lenv, dirs, buildto):
|
||||
lenv.SetOption('duplicate', 'soft-copy')
|
||||
lenv['_BUILDDIR_']=buildto
|
||||
ldirs=lenv.make_list(dirs)
|
||||
for dir in ldirs:
|
||||
lenv.BuildDir(buildto+os.path.sep+dir, dir)
|
||||
|
||||
#valid_targets = "program shlib kioslave staticlib".split()
|
||||
SConsEnvironment.bksys_install = bksys_install
|
||||
SConsEnvironment.bksys_shlib = bksys_shlib
|
||||
SConsEnvironment.subdirs = subdirs
|
||||
SConsEnvironment.link_local_shlib = link_local_shlib
|
||||
SConsEnvironment.link_local_staticlib = link_local_staticlib
|
||||
SConsEnvironment.genobj=genobj
|
||||
SConsEnvironment.set_build_dir=set_build_dir
|
||||
|
||||
if env.has_key('GENCXXFLAGS'): env.AppendUnique( CPPFLAGS = env['GENCXXFLAGS'] )
|
||||
if env.has_key('GENCCFLAGS'): env.AppendUnique( CCFLAGS = env['GENCCFLAGS'] )
|
||||
if env.has_key('GENLINKFLAGS'): env.AppendUnique( LINKFLAGS = env['GENLINKFLAGS'] )
|
||||
|
||||
if env.has_key('EXTRAINCLUDES'):
|
||||
if env['EXTRAINCLUDES']:
|
||||
incpaths = []
|
||||
for dir in str(env['EXTRAINCLUDES']).split(':'): incpaths.append( dir )
|
||||
env.Append(CPPPATH = incpaths)
|
||||
|
||||
env.Export('env')
|
@ -0,0 +1,839 @@
|
||||
# Thomas Nagy, 2005 <tnagy2^8@yahoo.fr>
|
||||
""" Run scons -h to display the associated help, or look below """
|
||||
|
||||
import os, re, types
|
||||
from SCons.Script.SConscript import SConsEnvironment
|
||||
|
||||
# Returns the name of the shared object (i.e. libkdeui.so.4)
|
||||
# referenced by a libtool archive (like libkdeui.la)
|
||||
def getSOfromLA(lafile):
|
||||
contents = open(lafile, 'r').read()
|
||||
match = re.search("^dlname='([^']*)'$", contents, re.M)
|
||||
if match: return match.group(1)
|
||||
return None
|
||||
|
||||
# A helper, needed .. everywhere
|
||||
def KDEuse(lenv, flags):
|
||||
if lenv['HELP']: lenv.Exit(0)
|
||||
|
||||
_flags=lenv.make_list(flags)
|
||||
if 'environ' in _flags:
|
||||
## The scons developers advise against using this but it is mostly innocuous :)
|
||||
lenv.AppendUnique( ENV = os.environ )
|
||||
if not 'lang_qt' in _flags:
|
||||
## Use this define if you are using the kde translation scheme (.po files)
|
||||
lenv.Append( CPPFLAGS = '-DQT_NO_TRANSLATION' )
|
||||
if 'rpath' in _flags:
|
||||
## Use this to set rpath - this may cause trouble if folders are moved (chrpath)
|
||||
kdelibpaths=[]
|
||||
if lenv['KDELIBPATH'] == lenv['KDELIB']: kdelibpaths = [lenv['KDELIB']]
|
||||
else: kdelibpaths = [lenv['KDELIBPATH'], lenv['KDELIB']]
|
||||
lenv.Append( RPATH = [lenv['QTLIBPATH'], lenv['KDEMODULE']]+kdelibpaths )
|
||||
if 'thread' in _flags:
|
||||
## Uncomment the following if you need threading support
|
||||
lenv.KDEaddflags_cxx( ['-DQT_THREAD_SUPPORT', '-D_REENTRANT'] )
|
||||
if 'fastmoc' in _flags:
|
||||
lenv['BKSYS_FASTMOC']=1
|
||||
if not 'nohelp' in _flags:
|
||||
if lenv['_CONFIGURE'] or lenv['HELP']: lenv.Exit(0)
|
||||
if not 'nosmart' or not lenv.has_key('nosmart_includes'):
|
||||
lenv.AppendUnique(CPPPATH=['#/'])
|
||||
lst=[]
|
||||
if lenv.has_key('USE_THE_FORCE_LUKE'):
|
||||
lst=lenv['USE_THE_FORCE_LUKE']
|
||||
lenv.__delitem__('USE_THE_FORCE_LUKE')
|
||||
for v in lst: v.execute()
|
||||
else: lenv['nosmart_includes']=1
|
||||
|
||||
## To use kdDebug(intvalue)<<"some trace"<<endl; you need to define -DDEBUG
|
||||
## it is done in admin/generic.py automatically when you do scons configure debug=1
|
||||
|
||||
def exists(env):
|
||||
return True
|
||||
|
||||
def detect_kde(env):
|
||||
""" Detect the qt and kde environment using kde-config mostly """
|
||||
def getpath(varname):
|
||||
if not env.has_key('ARGS'): return None
|
||||
v=env['ARGS'].get(varname, None)
|
||||
if v: v=os.path.abspath(v)
|
||||
return v
|
||||
|
||||
def getstr(varname):
|
||||
if env.has_key('ARGS'): return env['ARGS'].get(varname, '')
|
||||
return ''
|
||||
|
||||
prefix = getpath('prefix')
|
||||
execprefix = getpath('execprefix')
|
||||
datadir = getpath('datadir')
|
||||
libdir = getpath('libdir')
|
||||
|
||||
kdedir = getstr('kdedir')
|
||||
kdeincludes = getpath('kdeincludes')
|
||||
kdelibs = getpath('kdelibs')
|
||||
|
||||
qtdir = getstr('qtdir')
|
||||
qtincludes = getpath('qtincludes')
|
||||
qtlibs = getpath('qtlibs')
|
||||
libsuffix = getstr('libsuffix')
|
||||
|
||||
p=env.pprint
|
||||
|
||||
if libdir: libdir = libdir+libsuffix
|
||||
|
||||
## Detect the kde libraries
|
||||
print "Checking for kde-config : ",
|
||||
str="which kde-config 2>/dev/null"
|
||||
if kdedir: str="which %s 2>/dev/null" % (kdedir+'/bin/kde-config')
|
||||
kde_config = os.popen(str).read().strip()
|
||||
if len(kde_config):
|
||||
p('GREEN', 'kde-config was found as '+kde_config)
|
||||
else:
|
||||
if kdedir: p('RED','kde-config was NOT found in the folder given '+kdedir)
|
||||
else: p('RED','kde-config was NOT found in your PATH')
|
||||
print "Make sure kde is installed properly"
|
||||
print "(missing package kdebase-devel?)"
|
||||
env.Exit(1)
|
||||
if kdedir: env['KDEDIR']=kdedir
|
||||
else: env['KDEDIR'] = os.popen(kde_config+' -prefix').read().strip()
|
||||
|
||||
print "Checking for kde version : ",
|
||||
kde_version = os.popen(kde_config+" --version|grep KDE").read().strip().split()[1]
|
||||
if int(kde_version[0]) != 3 or int(kde_version[2]) < 2:
|
||||
p('RED', kde_version)
|
||||
p('RED',"Your kde version can be too old")
|
||||
p('RED',"Please make sure kde is at least 3.2")
|
||||
else:
|
||||
p('GREEN',kde_version)
|
||||
|
||||
## Detect the qt library
|
||||
print "Checking for the qt library : ",
|
||||
if not qtdir: qtdir = os.getenv("QTDIR")
|
||||
if qtdir:
|
||||
p('GREEN',"qt is in "+qtdir)
|
||||
else:
|
||||
try:
|
||||
tmplibdir = os.popen(kde_config+' --expandvars --install lib').read().strip()
|
||||
libkdeuiSO = env.join(tmplibdir, getSOfromLA(env.join(tmplibdir,'/libkdeui.la')) )
|
||||
m = re.search('(.*)/lib/libqt.*', os.popen('ldd ' + libkdeuiSO + ' | grep libqt').read().strip().split()[2])
|
||||
except: m=None
|
||||
if m:
|
||||
qtdir = m.group(1)
|
||||
p('YELLOW',"qt was found as "+m.group(1))
|
||||
else:
|
||||
p('RED','qt was not found')
|
||||
p('RED','Please set QTDIR first (/usr/lib/qt3?) or try scons -h for more options')
|
||||
env.Exit(1)
|
||||
env['QTDIR'] = qtdir.strip()
|
||||
|
||||
## Find the necessary programs uic and moc
|
||||
print "Checking for uic : ",
|
||||
uic = qtdir + "/bin/uic"
|
||||
if os.path.isfile(uic):
|
||||
p('GREEN',"uic was found as "+uic)
|
||||
else:
|
||||
uic = os.popen("which uic 2>/dev/null").read().strip()
|
||||
if len(uic):
|
||||
p('YELLOW',"uic was found as "+uic)
|
||||
else:
|
||||
uic = os.popen("which uic 2>/dev/null").read().strip()
|
||||
if len(uic):
|
||||
p('YELLOW',"uic was found as "+uic)
|
||||
else:
|
||||
p('RED',"uic was not found - set QTDIR put it in your PATH ?")
|
||||
env.Exit(1)
|
||||
env['QT_UIC'] = uic
|
||||
|
||||
print "Checking for moc : ",
|
||||
moc = qtdir + "/bin/moc"
|
||||
if os.path.isfile(moc):
|
||||
p('GREEN',"moc was found as "+moc)
|
||||
else:
|
||||
moc = os.popen("which moc 2>/dev/null").read().strip()
|
||||
if len(moc):
|
||||
p('YELLOW',"moc was found as "+moc)
|
||||
elif os.path.isfile("/usr/share/qt3/bin/moc"):
|
||||
moc = "/usr/share/qt3/bin/moc"
|
||||
p('YELLOW',"moc was found as "+moc)
|
||||
else:
|
||||
p('RED',"moc was not found - set QTDIR or put it in your PATH ?")
|
||||
env.Exit(1)
|
||||
env['QT_MOC'] = moc
|
||||
|
||||
## check for the qt and kde includes
|
||||
print "Checking for the qt includes : ",
|
||||
if qtincludes and os.path.isfile(qtincludes + "/qlayout.h"):
|
||||
# The user told where to look for and it looks valid
|
||||
p('GREEN',"ok "+qtincludes)
|
||||
else:
|
||||
if os.path.isfile(qtdir + "/include/qlayout.h"):
|
||||
# Automatic detection
|
||||
p('GREEN',"ok "+qtdir+"/include/")
|
||||
qtincludes = qtdir + "/include/"
|
||||
elif os.path.isfile("/usr/include/qt3/qlayout.h"):
|
||||
# Debian probably
|
||||
p('YELLOW','the qt headers were found in /usr/include/qt3/')
|
||||
qtincludes = "/usr/include/qt3"
|
||||
else:
|
||||
p('RED',"the qt headers were not found")
|
||||
env.Exit(1)
|
||||
|
||||
print "Checking for the kde includes : ",
|
||||
kdeprefix = os.popen(kde_config+" --prefix").read().strip()
|
||||
if not kdeincludes:
|
||||
kdeincludes = kdeprefix+"/include/"
|
||||
if os.path.isfile(kdeincludes + "/klineedit.h"):
|
||||
p('GREEN',"ok "+kdeincludes)
|
||||
else:
|
||||
if os.path.isfile(kdeprefix+"/include/kde/klineedit.h"):
|
||||
# Debian, Fedora probably
|
||||
p('YELLOW',"the kde headers were found in %s/include/kde/"%kdeprefix)
|
||||
kdeincludes = kdeprefix + "/include/kde/"
|
||||
else:
|
||||
p('RED',"The kde includes were NOT found")
|
||||
env.Exit(1)
|
||||
|
||||
# kde-config options
|
||||
kdec_opts = {'KDEBIN' : 'exe', 'KDEAPPS' : 'apps',
|
||||
'KDEDATA' : 'data', 'KDEICONS' : 'icon',
|
||||
'KDEMODULE' : 'module', 'KDELOCALE' : 'locale',
|
||||
'KDEKCFG' : 'kcfg', 'KDEDOC' : 'html',
|
||||
'KDEMENU' : 'apps', 'KDEXDG' : 'xdgdata-apps',
|
||||
'KDEMIME' : 'mime', 'KDEXDGDIR' : 'xdgdata-dirs',
|
||||
'KDESERV' : 'services','KDESERVTYPES' : 'servicetypes',
|
||||
'KDEINCLUDE': 'include' }
|
||||
|
||||
if prefix:
|
||||
## use the user-specified prefix
|
||||
if not execprefix: execprefix=prefix
|
||||
if not datadir: datadir=env.join(prefix,'share')
|
||||
if not libdir: libdir=env.join(execprefix, "lib"+libsuffix)
|
||||
|
||||
subst_vars = lambda x: x.replace('${exec_prefix}', execprefix)\
|
||||
.replace('${datadir}', datadir)\
|
||||
.replace('${libdir}', libdir)\
|
||||
.replace('${prefix}', prefix)
|
||||
debian_fix = lambda x: x.replace('/usr/share', '${datadir}')
|
||||
env['PREFIX'] = prefix
|
||||
env['KDELIB'] = libdir
|
||||
for (var, option) in kdec_opts.items():
|
||||
dir = os.popen(kde_config+' --install ' + option).read().strip()
|
||||
if var == 'KDEDOC': dir = debian_fix(dir)
|
||||
env[var] = subst_vars(dir)
|
||||
|
||||
else:
|
||||
env['PREFIX'] = os.popen(kde_config+' --expandvars --prefix').read().strip()
|
||||
env['KDELIB'] = os.popen(kde_config+' --expandvars --install lib').read().strip()
|
||||
for (var, option) in kdec_opts.items():
|
||||
dir = os.popen(kde_config+' --expandvars --install ' + option).read().strip()
|
||||
env[var] = dir
|
||||
|
||||
env['QTPLUGINS']=os.popen(kde_config+' --expandvars --install qtplugins').read().strip()
|
||||
|
||||
## kde libs and includes
|
||||
env['KDEINCLUDEPATH']=kdeincludes
|
||||
if not kdelibs:
|
||||
kdelibs=os.popen(kde_config+' --expandvars --install lib').read().strip()
|
||||
env['KDELIBPATH']=kdelibs
|
||||
|
||||
## qt libs and includes
|
||||
env['QTINCLUDEPATH']=qtincludes
|
||||
if not qtlibs:
|
||||
qtlibs=qtdir+"/lib"+libsuffix
|
||||
env['QTLIBPATH']=qtlibs
|
||||
|
||||
## check if KDE has the UDS_HIDDEN patch
|
||||
print "Checking KDE for UDS_HIDDEN : ",
|
||||
if 'UDS_HIDDEN' in os.popen('cat ' + env['KDEINCLUDEPATH'] + '/kio/global.h').read():
|
||||
env['HAVE_UDS_HIDDEN']='1'
|
||||
p('GREEN', 'yes')
|
||||
else:
|
||||
env['HAVE_UDS_HIDDEN']='0'
|
||||
p('YELLOW', 'no')
|
||||
|
||||
def generate(env):
|
||||
""""Set up the qt and kde environment and builders - the moc part is difficult to understand """
|
||||
|
||||
# attach this function immediately
|
||||
SConsEnvironment.KDEuse=KDEuse
|
||||
|
||||
if env['HELP']:
|
||||
p=env.pprint
|
||||
p('BOLD','*** KDE options ***')
|
||||
p('BOLD','--------------------')
|
||||
p('BOLD','* prefix ','base install path, ie: /usr/local')
|
||||
p('BOLD','* execprefix ','install path for binaries, ie: /usr/bin')
|
||||
p('BOLD','* datadir ','install path for the data, ie: /usr/local/share')
|
||||
p('BOLD','* libdir ','install path for the libs, ie: /usr/lib')
|
||||
|
||||
p('BOLD','* qtdir ','base of the kde libraries')
|
||||
p('BOLD','* kdedir ','base of the qt libraries')
|
||||
|
||||
p('BOLD','* libsuffix ','suffix of libraries on amd64, ie: 64, 32')
|
||||
p('BOLD','* kdeincludes','kde includes path (/usr/include/kde on debian, ..)')
|
||||
p('BOLD','* qtincludes ','qt includes path (/usr/include/qt on debian, ..)')
|
||||
p('BOLD','* kdelibs ','kde libraries path, for linking the programs')
|
||||
p('BOLD','* qtlibs ','qt libraries path, for linking the program')
|
||||
|
||||
p('BOLD','* scons configure libdir=/usr/local/lib qtincludes=/usr/include/qt\n')
|
||||
return
|
||||
|
||||
import SCons.Defaults
|
||||
import SCons.Tool
|
||||
import SCons.Util
|
||||
import SCons.Node
|
||||
|
||||
CLVar = SCons.Util.CLVar
|
||||
splitext = SCons.Util.splitext
|
||||
Builder = SCons.Builder.Builder
|
||||
|
||||
# Detect the environment - replaces ./configure implicitely and store the options into a cache
|
||||
from SCons.Options import Options
|
||||
cachefile=env['CACHEDIR']+'kde.cache.py'
|
||||
opts = Options(cachefile)
|
||||
opts.AddOptions(
|
||||
('PREFIX', 'root of the program installation'),
|
||||
|
||||
('QTDIR', ''),
|
||||
('QTLIBPATH', 'path to the qt libraries'),
|
||||
('QTINCLUDEPATH', 'path to the qt includes'),
|
||||
('QT_UIC', 'uic command'),
|
||||
('QT_MOC', 'moc command'),
|
||||
('QTPLUGINS', 'uic executable command'),
|
||||
|
||||
('KDEDIR', ''),
|
||||
('KDELIBPATH', 'path to the installed kde libs'),
|
||||
('KDEINCLUDEPATH', 'path to the installed kde includes'),
|
||||
|
||||
('KDEBIN', 'inst path of the kde binaries'),
|
||||
('KDEINCLUDE', 'inst path of the kde include files'),
|
||||
('KDELIB', 'inst path of the kde libraries'),
|
||||
('KDEMODULE', 'inst path of the parts and libs'),
|
||||
('KDEDATA', 'inst path of the application data'),
|
||||
('KDELOCALE', ''), ('KDEDOC', ''), ('KDEKCFG', ''),
|
||||
('KDEXDG', ''), ('KDEXDGDIR', ''), ('KDEMENU', ''),
|
||||
('KDEMIME', ''), ('KDEICONS', ''), ('KDESERV', ''),
|
||||
('KDESERVTYPES', ''), ('KDEAPPS', ''), ('HAVE_UDS_HIDDEN', ''),
|
||||
)
|
||||
opts.Update(env)
|
||||
|
||||
def getInstDirForResType(lenv,restype):
|
||||
if len(restype) == 0 or not lenv.has_key(restype):
|
||||
lenv.pprint('RED',"unknown resource type "+restype)
|
||||
lenv.Exit(1)
|
||||
else: instdir = lenv[restype]
|
||||
|
||||
if env['ARGS'] and env['ARGS'].has_key('prefix'):
|
||||
instdir = instdir.replace(lenv['PREFIX'], env['ARGS']['prefix'])
|
||||
return instdir
|
||||
|
||||
# reconfigure when things are missing
|
||||
if not env['HELP'] and (env['_CONFIGURE'] or not env.has_key('QTDIR') or not env.has_key('KDEDIR')):
|
||||
detect_kde(env)
|
||||
opts.Save(cachefile, env)
|
||||
|
||||
## set default variables, one can override them in sconscript files
|
||||
env.Append(CXXFLAGS = ['-I'+env['KDEINCLUDEPATH'], '-I'+env['QTINCLUDEPATH'] ],
|
||||
LIBPATH = [env['KDELIBPATH'], env['QTLIBPATH'] ])
|
||||
|
||||
env['QT_AUTOSCAN'] = 1
|
||||
env['QT_DEBUG'] = 0
|
||||
|
||||
env['MEINPROC'] = 'meinproc'
|
||||
env['MSGFMT'] = 'msgfmt'
|
||||
|
||||
## ui file processing
|
||||
def uic_processing(target, source, env):
|
||||
inc_kde ='#include <klocale.h>\n#include <kdialog.h>\n'
|
||||
inc_moc ='#include "%s"\n' % target[2].name
|
||||
comp_h ='$QT_UIC -L $QTPLUGINS -nounload -o %s %s' % (target[0].path, source[0].path)
|
||||
comp_c ='$QT_UIC -L $QTPLUGINS -nounload -tr tr2i18n -impl %s %s' % (target[0].path, source[0].path)
|
||||
comp_moc ='$QT_MOC -o %s %s' % (target[2].path, target[0].path)
|
||||
if env.Execute(comp_h): return ret
|
||||
dest = open( target[1].path, "w" )
|
||||
dest.write(inc_kde)
|
||||
dest.close()
|
||||
if env.Execute( comp_c+" >> "+target[1].path ): return ret
|
||||
dest = open( target[1].path, "a" )
|
||||
dest.write(inc_moc)
|
||||
dest.close()
|
||||
ret = env.Execute( comp_moc )
|
||||
return ret
|
||||
def uicEmitter(target, source, env):
|
||||
adjustixes = SCons.Util.adjustixes
|
||||
bs = SCons.Util.splitext(str(source[0].name))[0]
|
||||
bs = env.join(str(target[0].get_dir()),bs)
|
||||
target.append(bs+'.cpp')
|
||||
target.append(bs+'.moc')
|
||||
return target, source
|
||||
env['BUILDERS']['Uic']=Builder(action=uic_processing,emitter=uicEmitter,suffix='.h',src_suffix='.ui')
|
||||
|
||||
def kcfg_buildit(target, source, env):
|
||||
comp='kconfig_compiler -d%s %s %s' % (str(source[0].get_dir()), source[1].path, source[0].path)
|
||||
return env.Execute(comp)
|
||||
def kcfg_stringit(target, source, env):
|
||||
print "processing %s to get %s and %s" % (source[0].name, target[0].name, target[1].name)
|
||||
def kcfgEmitter(target, source, env):
|
||||
adjustixes = SCons.Util.adjustixes
|
||||
file=str(source[0].srcnode().name)
|
||||
bs = SCons.Util.splitext(str(source[0].name))[0]
|
||||
bs = env.join(str(target[0].get_dir()),bs)
|
||||
# .h file is already there
|
||||
target.append( bs+'.cpp' )
|
||||
|
||||
content=source[0].srcnode().get_contents()
|
||||
#print content
|
||||
|
||||
kcfgfilename=""
|
||||
kcfgFileDeclRx = re.compile("[fF]ile\s*=\s*(.+)\s*")
|
||||
match = kcfgFileDeclRx.search(content)
|
||||
if match: kcfgfilename = match.group(1)
|
||||
|
||||
if not kcfgfilename:
|
||||
env.pprint('RED','invalid kcfgc file '+source[0].srcnode().abspath)
|
||||
env.Exit(1)
|
||||
source.append( env.join( str(source[0].get_dir()), kcfgfilename) )
|
||||
return target, source
|
||||
|
||||
env['BUILDERS']['Kcfg']=Builder(action=env.Action(kcfg_buildit, kcfg_stringit),
|
||||
emitter=kcfgEmitter, suffix='.h', src_suffix='.kcfgc')
|
||||
|
||||
## MOC processing
|
||||
env['BUILDERS']['Moc']=Builder(action='$QT_MOC -o $TARGET $SOURCE',suffix='.moc',src_suffix='.h')
|
||||
env['BUILDERS']['Moccpp']=Builder(action='$QT_MOC -o $TARGET $SOURCE',suffix='_moc.cpp',src_suffix='.h')
|
||||
|
||||
## KIDL file
|
||||
env['BUILDERS']['Kidl']=Builder(action= 'dcopidl $SOURCE > $TARGET || (rm -f $TARGET ; false)',
|
||||
suffix='.kidl', src_suffix='.h')
|
||||
## DCOP
|
||||
env['BUILDERS']['Dcop']=Builder(action='dcopidl2cpp --c++-suffix cpp --no-signals --no-stub $SOURCE',
|
||||
suffix='_skel.cpp', src_suffix='.kidl')
|
||||
## STUB
|
||||
env['BUILDERS']['Stub']=Builder(action= 'dcopidl2cpp --c++-suffix cpp --no-signals --no-skel $SOURCE',
|
||||
suffix='_stub.cpp', src_suffix='.kidl')
|
||||
## DOCUMENTATION
|
||||
env['BUILDERS']['Meinproc']=Builder(action='cd $TARGET.dir && $MEINPROC --check --cache $TARGET.name $SOURCE.name',suffix='.cache.bz2')
|
||||
## TRANSLATIONS
|
||||
env['BUILDERS']['Transfiles']=Builder(action='$MSGFMT $SOURCE -o $TARGET',suffix='.gmo',src_suffix='.po')
|
||||
|
||||
## Handy helpers for building kde programs
|
||||
## You should not have to modify them ..
|
||||
|
||||
ui_ext = [".ui"]
|
||||
kcfg_ext = ['.kcfgc']
|
||||
header_ext = [".h", ".hxx", ".hpp", ".hh"]
|
||||
cpp_ext = [".cpp", ".cxx", ".cc"]
|
||||
skel_ext = [".skel", ".SKEL"]
|
||||
stub_ext = [".stub", ".STUB"]
|
||||
|
||||
def KDEfiles(lenv, target, source):
|
||||
""" Returns a list of files for scons (handles kde tricks like .skel)
|
||||
It also makes custom checks against double includes like : ['file.ui', 'file.cpp']
|
||||
(file.cpp is already included because of file.ui) """
|
||||
|
||||
q_object_search = re.compile(r'[^A-Za-z0-9]Q_OBJECT[^A-Za-z0-9]')
|
||||
def scan_moc(cppfile):
|
||||
addfile=None
|
||||
|
||||
# try to find the header
|
||||
orifile=cppfile.srcnode().name
|
||||
bs=SCons.Util.splitext(orifile)[0]
|
||||
|
||||
h_file=''
|
||||
dir=cppfile.dir
|
||||
for n_h_ext in header_ext:
|
||||
afile=dir.File(bs+n_h_ext)
|
||||
if afile.rexists():
|
||||
#h_ext=n_h_ext
|
||||
h_file=afile
|
||||
break
|
||||
# We have the header corresponding to the cpp file
|
||||
if h_file:
|
||||
h_contents = h_file.get_contents()
|
||||
if q_object_search.search(h_contents):
|
||||
# we know now there is Q_OBJECT macro
|
||||
reg = '\n\s*#include\s*("|<)'+str(bs)+'.moc("|>)'
|
||||
meta_object_search = re.compile(reg)
|
||||
#cpp_contents = open(file_cpp, 'rb').read()
|
||||
cpp_contents=cppfile.get_contents()
|
||||
if meta_object_search.search(cpp_contents):
|
||||
lenv.Moc(h_file)
|
||||
else:
|
||||
lenv.Moccpp(h_file)
|
||||
addfile=bs+'_moc.cpp'
|
||||
print "WARNING: moc.cpp for "+h_file.name+" consider using #include <file.moc> instead"
|
||||
return addfile
|
||||
|
||||
src=[]
|
||||
ui_files=[]
|
||||
kcfg_files=[]
|
||||
other_files=[]
|
||||
kidl=[]
|
||||
|
||||
source_=lenv.make_list(source)
|
||||
|
||||
# For each file, check wether it is a dcop file or not, and create the complete list of sources
|
||||
for file in source_:
|
||||
sfile=SCons.Node.FS.default_fs.File(str(file)) # why str(file) ? because ordinal not in range issues
|
||||
bs = SCons.Util.splitext(file)[0]
|
||||
ext = SCons.Util.splitext(file)[1]
|
||||
if ext in skel_ext:
|
||||
if not bs in kidl:
|
||||
kidl.append(bs)
|
||||
lenv.Dcop(bs+'.kidl')
|
||||
src.append(bs+'_skel.cpp')
|
||||
elif ext in stub_ext:
|
||||
if not bs in kidl:
|
||||
kidl.append(bs)
|
||||
lenv.Stub(bs+'.kidl')
|
||||
src.append(bs+'_stub.cpp')
|
||||
elif ext == ".moch":
|
||||
lenv.Moccpp(bs+'.h')
|
||||
src.append(bs+'_moc.cpp')
|
||||
elif ext in cpp_ext:
|
||||
src.append(file)
|
||||
if not env.has_key('NOMOCFILE'):
|
||||
ret = scan_moc(sfile)
|
||||
if ret: src.append( ret )
|
||||
elif ext in ui_ext:
|
||||
lenv.Uic(file)
|
||||
src.append(bs+'.cpp')
|
||||
elif ext in kcfg_ext:
|
||||
name=SCons.Util.splitext(sfile.name)[0]
|
||||
hfile=lenv.Kcfg(file)
|
||||
cppkcfgfile=sfile.dir.File(bs+'.cpp')
|
||||
src.append(bs+'.cpp')
|
||||
else:
|
||||
src.append(file)
|
||||
|
||||
for base in kidl: lenv.Kidl(base+'.h')
|
||||
|
||||
# Now check against typical newbie errors
|
||||
for file in ui_files:
|
||||
for ofile in other_files:
|
||||
if ofile == file:
|
||||
env.pprint('RED',"WARNING: You have included %s.ui and another file of the same prefix"%file)
|
||||
print "Files generated by uic (file.h, file.cpp must not be included"
|
||||
for file in kcfg_files:
|
||||
for ofile in other_files:
|
||||
if ofile == file:
|
||||
env.pprint('RED',"WARNING: You have included %s.kcfg and another file of the same prefix"%file)
|
||||
print "Files generated by kconfig_compiler (settings.h, settings.cpp) must not be included"
|
||||
return src
|
||||
|
||||
|
||||
""" In the future, these functions will contain the code that will dump the
|
||||
configuration for re-use from an IDE """
|
||||
def KDEinstall(lenv, restype, subdir, files, perms=None):
|
||||
if env.has_key('DUMPCONFIG'):
|
||||
print "<install type=\"%s\" subdir=\"%s\">" % (restype, subdir)
|
||||
for i in lenv.make_list(files): print " <file name=\"%s\"/>" % (lenv.join(lenv.getreldir(),i))
|
||||
print "</install>"
|
||||
return
|
||||
|
||||
if not env['_INSTALL']: return None
|
||||
dir = getInstDirForResType(lenv, restype)
|
||||
|
||||
p=None
|
||||
if not perms:
|
||||
if restype=='KDEBIN': p=0755
|
||||
else: p=perms
|
||||
install_list = lenv.bksys_install(lenv.join(dir, subdir), files, perms=p)
|
||||
return install_list
|
||||
|
||||
def KDEinstallas(lenv, restype, destfile, file):
|
||||
if not env['_INSTALL']: return
|
||||
dir = getInstDirForResType(lenv, restype)
|
||||
install_list = lenv.InstallAs(lenv.join(dir, destfile), file)
|
||||
env.Alias('install', install_list)
|
||||
return install_list
|
||||
|
||||
def KDEprogram(lenv, target, source,
|
||||
includes='', localshlibs='', globallibs='', globalcxxflags=''):
|
||||
""" Makes a kde program
|
||||
The program is installed except if one sets env['NOAUTOINSTALL'] """
|
||||
src = KDEfiles(lenv, target, source)
|
||||
program_list = lenv.Program(target, src)
|
||||
|
||||
# we link the program against a shared library done locally, add the dependency
|
||||
if not lenv.has_key('nosmart_includes'):
|
||||
lenv.AppendUnique(CPPPATH=['./'])
|
||||
if len(localshlibs)>0:
|
||||
lst=lenv.make_list(localshlibs)
|
||||
lenv.link_local_shlib(lst)
|
||||
lenv.Depends( program_list, lst )
|
||||
|
||||
if len(includes)>0: lenv.KDEaddpaths_includes(includes)
|
||||
if len(globallibs)>0: lenv.KDEaddlibs(globallibs)
|
||||
if len(globalcxxflags)>0: lenv.KDEaddflags_cxx(globalcxxflags)
|
||||
|
||||
if not lenv.has_key('NOAUTOINSTALL'):
|
||||
KDEinstall(lenv, 'KDEBIN', '', target)
|
||||
return program_list
|
||||
|
||||
def KDEshlib(lenv, target, source, kdelib=0, libprefix='lib',
|
||||
includes='', localshlibs='', globallibs='', globalcxxflags='', vnum=''):
|
||||
""" Makes a shared library for kde (.la file for klibloader)
|
||||
The library is installed except if one sets env['NOAUTOINSTALL'] """
|
||||
src = KDEfiles(lenv, target, source)
|
||||
|
||||
if not lenv.has_key('nosmart_includes'):
|
||||
lenv.AppendUnique(CPPPATH=['./'])
|
||||
# we link the program against a shared library done locally, add the dependency
|
||||
lst=[]
|
||||
if len(localshlibs)>0:
|
||||
lst=lenv.make_list(localshlibs)
|
||||
lenv.link_local_shlib(lst)
|
||||
if len(includes)>0: lenv.KDEaddpaths_includes(includes)
|
||||
if len(globallibs)>0: lenv.KDEaddlibs(globallibs)
|
||||
if len(globalcxxflags)>0: lenv.KDEaddflags_cxx(globalcxxflags)
|
||||
|
||||
restype='KDEMODULE'
|
||||
if kdelib==1: restype='KDELIB'
|
||||
|
||||
library_list = lenv.bksys_shlib(target, src, getInstDirForResType(lenv, restype), libprefix, vnum)
|
||||
if len(lst)>0: lenv.Depends( library_list, lst )
|
||||
|
||||
return library_list
|
||||
|
||||
def KDEstaticlib(lenv, target, source):
|
||||
""" Makes a static library for kde - in practice you should not use static libraries
|
||||
1. they take more memory than shared ones
|
||||
2. makefile.am needed it because of limitations
|
||||
(cannot handle sources in separate folders - takes extra processing) """
|
||||
if not lenv.has_key('nosmart_includes'): lenv.AppendUnique(CPPPATH=['./'])
|
||||
src=KDEfiles(lenv, target, source)
|
||||
return lenv.StaticLibrary(target, src)
|
||||
# do not install static libraries by default
|
||||
|
||||
def KDEaddflags_cxx(lenv, fl):
|
||||
""" Compilation flags for C++ programs """
|
||||
lenv.AppendUnique(CXXFLAGS = lenv.make_list(fl))
|
||||
|
||||
def KDEaddflags_c(lenv, fl):
|
||||
""" Compilation flags for C programs """
|
||||
lenv.AppendUnique(CFLAGS = lenv.make_list(fl))
|
||||
|
||||
def KDEaddflags_link(lenv, fl):
|
||||
""" Add link flags - Use this if KDEaddlibs below is not enough """
|
||||
lenv.PrependUnique(LINKFLAGS = lenv.make_list(fl))
|
||||
|
||||
def KDEaddlibs(lenv, libs):
|
||||
""" Helper function """
|
||||
lenv.AppendUnique(LIBS = lenv.make_list(libs))
|
||||
|
||||
def KDEaddpaths_includes(lenv, paths):
|
||||
""" Add new include paths """
|
||||
lenv.AppendUnique(CPPPATH = lenv.make_list(paths))
|
||||
|
||||
def KDEaddpaths_libs(lenv, paths):
|
||||
""" Add paths to libraries """
|
||||
lenv.PrependUnique(LIBPATH = lenv.make_list(paths))
|
||||
|
||||
def KDElang(lenv, folder, appname):
|
||||
""" Process translations (.po files) in a po/ dir """
|
||||
import glob
|
||||
dir=SCons.Node.FS.default_fs.Dir(folder).srcnode()
|
||||
fld=dir.srcnode()
|
||||
tmptransfiles = glob.glob(str(fld)+'/*.po')
|
||||
|
||||
transfiles=[]
|
||||
if lenv.has_key('_BUILDDIR_'):
|
||||
bdir=lenv['_BUILDDIR_']
|
||||
for dir in lenv.make_list(tmptransfiles):
|
||||
transfiles.append( lenv.join(bdir, dir) )
|
||||
else: tmptransfiles=transfiles
|
||||
|
||||
languages=None
|
||||
if lenv['ARGS'] and lenv['ARGS'].has_key('languages'):
|
||||
languages=lenv.make_list(lenv['ARGS']['languages'])
|
||||
mydir=SCons.Node.FS.default_fs.Dir('.')
|
||||
for f in transfiles:
|
||||
fname=f.replace(mydir.abspath, '')
|
||||
file=SCons.Node.FS.default_fs.File(fname)
|
||||
country = SCons.Util.splitext(file.name)[0]
|
||||
if not languages or country in languages:
|
||||
result = lenv.Transfiles(file)
|
||||
dir=lenv.join( getInstDirForResType(lenv, 'KDELOCALE'), country)
|
||||
lenv.bksys_install(lenv.join(dir, 'LC_MESSAGES'), result, destfile=appname+'.mo')
|
||||
|
||||
def KDEicon(lenv, icname='*', path='./', restype='KDEICONS', subdir=''):
|
||||
"""Contributed by: "Andrey Golovizin" <grooz()gorodok()net>
|
||||
modified by "Martin Ellis" <m.a.ellis()ncl()ac()uk>
|
||||
|
||||
Installs icons with filenames such as cr22-action-frame.png into
|
||||
KDE icon hierachy with names like icons/crystalsvg/22x22/actions/frame.png.
|
||||
|
||||
Global KDE icons can be installed simply using env.KDEicon('name').
|
||||
The second parameter, path, is optional, and specifies the icons
|
||||
location in the source, relative to the SConscript file.
|
||||
|
||||
To install icons that need to go under an applications directory (to
|
||||
avoid name conflicts, for example), use e.g.
|
||||
env.KDEicon('name', './', 'KDEDATA', 'appname/icons')"""
|
||||
|
||||
if env.has_key('DUMPCONFIG'):
|
||||
print "<icondirent subdir=\"%s\" />" % (lenv.join(lenv.getreldir(),path,subdir))
|
||||
return
|
||||
|
||||
type_dic = { 'action':'actions', 'app':'apps', 'device':'devices',
|
||||
'filesys':'filesystems', 'mime':'mimetypes' }
|
||||
dir_dic = {
|
||||
'los' :'locolor/16x16', 'lom' :'locolor/32x32',
|
||||
'him' :'hicolor/32x32', 'hil' :'hicolor/48x48',
|
||||
'lo16' :'locolor/16x16', 'lo22' :'locolor/22x22', 'lo32' :'locolor/32x32',
|
||||
'hi16' :'hicolor/16x16', 'hi22' :'hicolor/22x22', 'hi32' :'hicolor/32x32',
|
||||
'hi48' :'hicolor/48x48', 'hi64' :'hicolor/64x64', 'hi128':'hicolor/128x128',
|
||||
'hisc' :'hicolor/scalable',
|
||||
'cr16' :'crystalsvg/16x16', 'cr22' :'crystalsvg/22x22', 'cr32' :'crystalsvg/32x32',
|
||||
'cr48' :'crystalsvg/48x48', 'cr64' :'crystalsvg/64x64', 'cr128':'crystalsvg/128x128',
|
||||
'crsc' :'crystalsvg/scalable'
|
||||
}
|
||||
|
||||
iconfiles = []
|
||||
dir=SCons.Node.FS.default_fs.Dir(path).srcnode()
|
||||
mydir=SCons.Node.FS.default_fs.Dir('.')
|
||||
import glob
|
||||
for ext in ['png', 'xpm', 'mng', 'svg', 'svgz']:
|
||||
files = glob.glob(str(dir)+'/'+'*-*-%s.%s' % (icname, ext))
|
||||
for file in files:
|
||||
iconfiles.append( file.replace(mydir.abspath, '') )
|
||||
for iconfile in iconfiles:
|
||||
lst = iconfile.split('/')
|
||||
filename = lst[ len(lst) - 1 ]
|
||||
tmp = filename.split('-')
|
||||
if len(tmp)!=3:
|
||||
env.pprint('RED','WARNING: icon filename has unknown format: '+iconfile)
|
||||
continue
|
||||
[icon_dir, icon_type, icon_filename]=tmp
|
||||
try:
|
||||
basedir=getInstDirForResType(lenv, restype)
|
||||
destdir = '%s/%s/%s/%s/' % (basedir, subdir, dir_dic[icon_dir], type_dic[icon_type])
|
||||
except KeyError:
|
||||
env.pprint('RED','WARNING: unknown icon type: '+iconfile)
|
||||
continue
|
||||
lenv.bksys_install(destdir, iconfile, icon_filename)
|
||||
|
||||
## This function uses env imported above - WARNING ugly code, i will have to rewrite (ITA)
|
||||
def docfolder(lenv, folder, lang, destination=""):
|
||||
# folder is the folder to process
|
||||
# lang is the language
|
||||
# destination is the subdirectory in KDEDOC
|
||||
import glob
|
||||
docfiles=[]
|
||||
dir=SCons.Node.FS.default_fs.Dir(folder).srcnode()
|
||||
mydir=SCons.Node.FS.default_fs.Dir('.')
|
||||
dirpath=mydir.srcnode().abspath
|
||||
docg = glob.glob(str(dir)+"/???*.*") # file files that are at least 4 chars wide :)
|
||||
for file in docg:
|
||||
f = file.replace(dirpath, '')
|
||||
docfiles.append(f)
|
||||
|
||||
# warn about errors
|
||||
#if len(lang) != 2:
|
||||
# print "error, lang must be a two-letter string, like 'en'"
|
||||
|
||||
# when the destination is not given, use the folder
|
||||
if len(destination) == 0: destination=folder
|
||||
docbook_list = []
|
||||
|
||||
bdir='.'
|
||||
if lenv.has_key('_BUILDDIR_'): bdir = lenv['_BUILDDIR_']
|
||||
for file in docfiles:
|
||||
# do not process folders
|
||||
#if not os.path.isfile( lenv.join('.', file) ): continue
|
||||
|
||||
# using nodefile forces to symlink in builddir
|
||||
nodefile=SCons.Node.FS.default_fs.File( lenv.join(mydir.abspath, file) )
|
||||
|
||||
# do not process the cache file
|
||||
if file == 'index.cache.bz2': continue
|
||||
# ignore invalid files (TODO??)
|
||||
if len( SCons.Util.splitext( file ) ) <= 1: continue
|
||||
ext = SCons.Util.splitext( file )[1]
|
||||
|
||||
# install picture files
|
||||
if ext in ['.jpeg', '.jpg', '.png']: lenv.KDEinstall('KDEDOC', lenv.join(lang,destination), nodefile.srcnode())
|
||||
# docbook files are processed by meinproc
|
||||
if ext != '.docbook': continue
|
||||
|
||||
docbook_list.append( nodefile )
|
||||
lenv.KDEinstall('KDEDOC', lenv.join(lang,destination), nodefile.srcnode())
|
||||
|
||||
# Now process the index.docbook files ..
|
||||
if len(docbook_list) == 0: return
|
||||
# TODO
|
||||
#if not os.path.isfile( folder+'/index.docbook' ):
|
||||
# print "Error, index.docbook was not found in "+folder+'/index.docbook'
|
||||
# return
|
||||
## Define this to 1 if you are writing documentation else to 0 :)
|
||||
#if lenv.has_key('i_am_a_documentation_writer'):
|
||||
for file in docbook_list:
|
||||
lenv.Depends( folder+'index.cache.bz2', nodefile )
|
||||
|
||||
if lenv.has_key('_BUILDDIR_'): folder=lenv.join(lenv['_BUILDDIR_'], folder)
|
||||
|
||||
lenv.Meinproc( lenv.join(folder,'index.cache.bz2'), lenv.join(folder,'index.docbook') )
|
||||
lenv.KDEinstall( 'KDEDOC', lenv.join(lang,destination), lenv.join(folder,'index.cache.bz2') )
|
||||
|
||||
if env['_INSTALL']:
|
||||
dir=lenv.join(lenv.getInstDirForResType('KDEDOC'), lang, destination)
|
||||
comp='mkdir -p %s && cd %s && rm -f common && ln -s ../common common' % (dir, dir)
|
||||
lenv.Execute(comp)
|
||||
|
||||
#valid_targets = "program shlib kioslave staticlib".split()
|
||||
import generic
|
||||
class kobject(generic.genobj):
|
||||
def __init__(self, val, senv=None):
|
||||
if senv: generic.genobj.__init__(self, val, senv)
|
||||
else: generic.genobj.__init__(self, val, env)
|
||||
self.iskdelib=0
|
||||
def it_is_a_kdelib(self): self.iskdelib=1
|
||||
def execute(self):
|
||||
if self.executed: return
|
||||
self.lockchdir()
|
||||
if self.orenv.has_key('DUMPCONFIG'):
|
||||
print self.xml()
|
||||
self.unlockchdir()
|
||||
self.executed=1
|
||||
return
|
||||
if (self.type=='shlib' or self.type=='kioslave'):
|
||||
install_dir = 'KDEMODULE'
|
||||
if self.iskdelib==1: install_dir = 'KDELIB'
|
||||
self.instdir=getInstDirForResType(self.orenv, install_dir)
|
||||
elif self.type=='program':
|
||||
self.instdir=getInstDirForResType(self.orenv, 'KDEBIN')
|
||||
self.perms=0755
|
||||
|
||||
self.p_localsource=KDEfiles(env, self.joinpath(self.target), self.joinpath(self.source))
|
||||
generic.genobj.execute(self)
|
||||
self.unlockchdir()
|
||||
|
||||
def xml(self):
|
||||
chdirto=self.orenv.join(self.orenv.getreldir(),self.chdir)
|
||||
ret= '<compile type="%s" chdir="%s" target="%s" cxxflags="%s" cflags="%s" includes="%s" linkflags="%s" libpaths="%s" libs="%s" vnum="%s" iskdelib="%s" libprefix="%s">\n' % (self.type, chdirto, self.target, self.cxxflags, self.cflags, self.includes, self.linkflags, self.libpaths, self.libs, self.vnum, self.iskdelib, self.libprefix)
|
||||
if self.source:
|
||||
for i in self.orenv.make_list(self.source): ret+=' <source file="%s"/>\n' % i
|
||||
ret += "</compile>"
|
||||
return ret
|
||||
|
||||
# Attach the functions to the environment so that SConscripts can use them
|
||||
SConsEnvironment.KDEprogram = KDEprogram
|
||||
SConsEnvironment.KDEshlib = KDEshlib
|
||||
SConsEnvironment.KDEstaticlib = KDEstaticlib
|
||||
SConsEnvironment.KDEinstall = KDEinstall
|
||||
SConsEnvironment.KDEinstallas = KDEinstallas
|
||||
SConsEnvironment.KDElang = KDElang
|
||||
SConsEnvironment.KDEicon = KDEicon
|
||||
|
||||
SConsEnvironment.KDEaddflags_cxx = KDEaddflags_cxx
|
||||
SConsEnvironment.KDEaddflags_c = KDEaddflags_c
|
||||
SConsEnvironment.KDEaddflags_link = KDEaddflags_link
|
||||
SConsEnvironment.KDEaddlibs = KDEaddlibs
|
||||
SConsEnvironment.KDEaddpaths_includes = KDEaddpaths_includes
|
||||
SConsEnvironment.KDEaddpaths_libs = KDEaddpaths_libs
|
||||
|
||||
SConsEnvironment.docfolder = docfolder
|
||||
SConsEnvironment.getInstDirForResType = getInstDirForResType
|
||||
SConsEnvironment.kobject = kobject
|
||||
|
@ -0,0 +1,189 @@
|
||||
kio-locate-kde3 (0.4.5-1ubuntu4) karmic; urgency=low
|
||||
|
||||
* Karmic rebuild
|
||||
|
||||
-- Timothy Pearson <kb9vqf@pearsoncomputing.net> Thu, 02 July 2009 16:08:00 -0600
|
||||
|
||||
kio-locate-kde3 (0.4.5-1ubuntu2) intrepid; urgency=low
|
||||
|
||||
* Moved KDE3 to /opt/kde3
|
||||
* Integrated properly with KDE4.2+
|
||||
|
||||
-- Timothy Pearson <kb9vqf@pearsoncomputing.net> Thu, 05 March 2009 29:52:00 -0600
|
||||
|
||||
kio-locate-kde3 (0.4.5-1ubuntu1) intrepid; urgency=low
|
||||
|
||||
* Added -kde3 suffix
|
||||
|
||||
-- Timothy Pearson <kb9vqf@pearsoncomputing.net> Thu, 04 Dec 2008 00:35:00 -0600
|
||||
|
||||
kio-locate (0.4.5-0ubuntu3) hardy; urgency=low
|
||||
|
||||
* Rebuild with recent g++ compiler version.
|
||||
|
||||
-- Matthias Klose <doko@ubuntu.com> Thu, 03 Apr 2008 11:24:38 +0000
|
||||
|
||||
kio-locate (0.4.5-0ubuntu2) feisty; urgency=low
|
||||
|
||||
* debian/control: Update maintainer fields according to debian-
|
||||
maintainer-field spec.
|
||||
|
||||
-- Martin Pitt <martin.pitt@ubuntu.com> Mon, 26 Feb 2007 08:49:35 +0000
|
||||
|
||||
kio-locate (0.4.5-0ubuntu1) edgy; urgency=low
|
||||
|
||||
* Sync with upstream.
|
||||
* Added an entry in debian/rules to work arround a build issue.
|
||||
* Switched to debhelper 5
|
||||
|
||||
-- Anthony Mercatante <tonio@ubuntu.com> Sun, 24 Jul 2006 23:30:58 +0200
|
||||
|
||||
kio-locate (0.4.5-1) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Sun, 05 Feb 2006 17:02:09 +0100
|
||||
|
||||
kio-locate (0.4.4-1) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Wed, 19 Oct 2005 18:01:59 +0200
|
||||
|
||||
kio-locate (0.4.3-1) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Thu, 15 Sep 2005 09:12:38 +0200
|
||||
|
||||
kio-locate (0.4.2tvo0.2) breezy; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Tobi Vollebregt <tobivollebregt@gmail.com> Sun, 21 Aug 2005 14:31:16 +0200
|
||||
|
||||
kio-locate (0.4.2tvo0.1) breezy; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
* Minor changes for ubuntu.
|
||||
* Add bzip2 and python to build-deps.
|
||||
* Fix the clean rule.
|
||||
|
||||
-- Tobi Vollebregt <tobivollebregt@gmail.com> Thu, 14 Jul 2005 23:14:16 +0200
|
||||
|
||||
kio-locate (0.4.2-1) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Sun, 22 May 2005 09:55:57 +0200
|
||||
|
||||
kio-locate (0.4.1-1) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Sat, 21 May 2005 16:21:19 +0200
|
||||
|
||||
kio-locate (0.4.0-1) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
* Adapted to the usage of scons.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Sun, 10 Apr 2005 13:12:28 +0200
|
||||
|
||||
kio-locate (0.3.4-1) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Sat, 22 Jan 2005 16:13:54 +0100
|
||||
|
||||
kio-locate (0.3.3-1) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Fri, 21 Jan 2005 10:23:13 +0100
|
||||
|
||||
kio-locate (0.3.2-1) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Mon, 17 Jan 2005 16:38:47 +0100
|
||||
|
||||
kio-locate (0.3.1-1) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Fri, 10 Dec 2004 10:24:34 +0100
|
||||
|
||||
kio-locate (0.3.0) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Mon, 01 Nov 2004 08:41:55 +0100
|
||||
|
||||
kio-locate (0.2.4-2) unstable; urgency=low
|
||||
|
||||
* Non-maintainer upload.
|
||||
* Reupload with orig.tar.gz named correctly.
|
||||
|
||||
-- Christoffer Sawicki <qerub@home.se> Sat, 30 Oct 2004 19:33:56 +0200
|
||||
|
||||
kio-locate (0.2.4-1) unstable; urgency=low
|
||||
|
||||
* Non-maintainer upload.
|
||||
* This is a non-native package and should be treated as such.
|
||||
* Switched to CDBS.
|
||||
|
||||
-- Christoffer Sawicki <qerub@home.se> Sat, 30 Oct 2004 19:03:23 +0200
|
||||
|
||||
kio-locate (0.2.4) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Tue, 26 Oct 2004 18:08:05 +0200
|
||||
|
||||
kio-locate (0.2.3) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Mon, 25 Oct 2004 19:49:52 +0200
|
||||
|
||||
kio-locate (0.2.2) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
* Adjusted the control file to the new release.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Sun, 24 Oct 2004 13:29:05 +0200
|
||||
|
||||
kio-locate (0.2.1) unstable; urgency=low
|
||||
|
||||
* New release of kio-locate.
|
||||
* Using kde as the section instead of utils.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Fri, 22 Oct 2004 10:31:37 +0200
|
||||
|
||||
kio-locate (0.2.0) unstable; urgency=low
|
||||
|
||||
* Complete rewrite.
|
||||
* Works with KDE 3.3.
|
||||
|
||||
-- Armin Straub <linux@arminstraub.de> Fri, 15 Oct 2004 08:20:36 +0200
|
||||
|
||||
kio-locate (0.1.1-1) unstable; urgency=low
|
||||
|
||||
* Corrected URL prefix ("file:" instead of "file:/").
|
||||
* Update admin dir.
|
||||
|
||||
-- Michael Schuerig <michael@schuerig.de> Sun, 7 Mar 2004 13:10:35 +0100
|
||||
|
||||
kio-locate (0.1-2) unstable; urgency=low
|
||||
|
||||
* Rebuild for KDE 3.1.
|
||||
|
||||
-- Michael Schuerig <schuerig@acm.org> Mon, 24 Feb 2003 09:07:34 +0100
|
||||
|
||||
kio-locate (0.1-1) unstable; urgency=low
|
||||
|
||||
* Initial Release.
|
||||
|
||||
-- Michael Schuerig <schuerig@acm.org> Sat, 14 Dec 2002 01:24:28 +0100
|
||||
|
@ -0,0 +1 @@
|
||||
5
|
@ -0,0 +1,18 @@
|
||||
Source: kio-locate-kde3
|
||||
Section: kde
|
||||
Priority: optional
|
||||
Maintainer: Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||
XSBC-Original-Maintainer: Tobi Vollebregt <tobivollebregt@gmail.com>
|
||||
Build-Depends: cdbs, debhelper (>= 5), kdelibs4-kde3-dev, bzip2, python (>= 2.3), scons
|
||||
Standards-Version: 3.7.2
|
||||
|
||||
Package: kio-locate-kde3
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}
|
||||
Description: kio-slave for the locate command [KDE3]
|
||||
Adds support for the "locate:" and "locater:"
|
||||
protocols to Konqueror and other KDE applications.
|
||||
.
|
||||
This enables you to perform locate searches as you
|
||||
would in a terminal. The result is displayed just
|
||||
as a directory.
|
@ -0,0 +1,29 @@
|
||||
This package was debianized by Tobi Vollebregt <tobivollebregt@gmail.com> on
|
||||
Thu, 14 Jul 2005 22:47:39 +0200
|
||||
|
||||
It was downloaded from http://arminstraub.de
|
||||
|
||||
Copyright:
|
||||
Copyright (C) 2004 by Tobi Vollebregt
|
||||
tobivollebregt@gmail.com
|
||||
|
||||
Copyright (C) 2004 by Armin Straub
|
||||
linux@arminstraub.de
|
||||
|
||||
This program was initially written by Michael Schuerig.
|
||||
Although I have completely rewritten it, most ideas are adopted
|
||||
from his original work.
|
||||
|
||||
Copyright (C) 2002 by Michael Schuerig
|
||||
michael@schuerig.de
|
||||
|
||||
Upstream Authors:
|
||||
Tobi Vollebregt <tobivollebregt@gmail.com>
|
||||
Armin Straub <linux@arminstraub.de>
|
||||
Michael Schuerig <schuerig@acm.org>
|
||||
|
||||
License:
|
||||
You are free to distribute this software under the terms of
|
||||
the GNU General Public License.
|
||||
On Debian systems, the complete text of the GNU General Public
|
||||
License can be found in the file `/usr/share/common-licenses/GPL'.
|
@ -0,0 +1,37 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
include /usr/share/cdbs/1/rules/debhelper.mk
|
||||
|
||||
DEB_CONFIGURE_INCLUDEDIR := /opt/kde3/include/kde
|
||||
DEB_CONFIGURE_MANDIR := /opt/kde3/share/man
|
||||
DEB_CONFIGURE_PREFIX := /opt/kde3
|
||||
DEB_CONFIGURE_INFODIR := /opt/kde3/share/info
|
||||
|
||||
cdbs_configure_flags := --with-qt-dir=/usr/share/qt3 --disable-rpath --with-xinerama $(cdbs_kde_enable_final) $(cdbs_kde_enable_debug)
|
||||
|
||||
DEB_COMPRESS_EXCLUDE=.docbook
|
||||
DEB_SCONS_PREFIX=/opt/kde3
|
||||
|
||||
CONFIG_STATUS=$(DEB_BUILDDIR)/config.status
|
||||
SCONS_CMD=/usr/bin/scons
|
||||
|
||||
common-configure-arch common-configure-indep:: common-configure-impl
|
||||
common-configure-impl:: $(CONFIG_STATUS)
|
||||
$(CONFIG_STATUS):
|
||||
env PATH=/opt/kde3/bin:$(PATH) $(SCONS_CMD) configure prefix=$(DEB_DESTDIR)$(DEB_SCONS_PREFIX)
|
||||
touch $(CONFIG_STATUS)
|
||||
|
||||
common-build-arch common-build-indep:: common-build-impl
|
||||
common-build-impl::
|
||||
env PATH=/opt/kde3/bin:$(PATH) $(SCONS_CMD)
|
||||
rm -f doc/en/index.cache.bz2
|
||||
|
||||
common-install-arch common-install-indep:: common-install-impl
|
||||
common-install-impl::
|
||||
env PATH=/opt/kde3/bin:$(PATH) $(SCONS_CMD) install
|
||||
|
||||
clean::
|
||||
rm -rf build cache scons-mini
|
||||
rm -f admin/*.pyc $(CONFIG_STATUS)
|
||||
|
||||
DEB_INSTALL_DOCS_kio-locate-kde3 := -XREADME -XNEWS -XTODO -XAUTHORS
|
@ -0,0 +1,185 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.1.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||||
<!ENTITY app "kio-locate">
|
||||
<!ENTITY app_date "2005-09-15"> <!-- (YYYY-MM-DD) -->
|
||||
<!ENTITY app_version "0.4.3"> <!-- (V.MM.LL) -->
|
||||
<!ENTITY kio-locate "<application>&app;</application>">
|
||||
<!ENTITY kappname "<application>&app; &app_version;</application>"><!-- Do *not* replace kappname-->
|
||||
|
||||
<!ENTITY my_email "tobivollebregt@gmail.com">
|
||||
|
||||
<!ENTITY package "kde-module"><!-- kdebase, kdeadmin, etc -->
|
||||
<!ENTITY % addindex "IGNORE">
|
||||
<!ENTITY % English "INCLUDE"><!-- change language only here -->
|
||||
|
||||
|
||||
<!-- Do not define any other entities; instead, use the entities
|
||||
from kde-genent.entities and $LANG/user.entities. -->
|
||||
]>
|
||||
|
||||
|
||||
<book lang="&language;">
|
||||
|
||||
|
||||
<bookinfo>
|
||||
<title>&kappname; Handbook</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Tobi</firstname>
|
||||
<othername></othername>
|
||||
<surname>Vollebregt</surname>
|
||||
<affiliation>
|
||||
<address><email>&my_email;</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Armin</firstname>
|
||||
<othername></othername>
|
||||
<surname>Straub</surname>
|
||||
<affiliation>
|
||||
<address><email>linux@arminstraub.de</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
<author>
|
||||
<firstname>Michael</firstname>
|
||||
<othername></othername>
|
||||
<surname>Schuerig</surname>
|
||||
<affiliation>
|
||||
<address><email>michael@schuerig.de</email></address>
|
||||
</affiliation>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<copyright>
|
||||
<year>2005</year>
|
||||
<holder>Tobi Vollebregt</holder>
|
||||
</copyright>
|
||||
<copyright>
|
||||
<year>2005</year>
|
||||
<holder>Armin Straub</holder>
|
||||
</copyright>
|
||||
<copyright>
|
||||
<year>2002</year>
|
||||
<holder>Michael Schuerig</holder>
|
||||
</copyright>
|
||||
<legalnotice>&FDLNotice;</legalnotice>
|
||||
|
||||
<date>&app_date;</date>
|
||||
<releaseinfo>&app_version;</releaseinfo>
|
||||
|
||||
<abstract>
|
||||
<para>
|
||||
&kio-locate; is a KDE I/O Slave for the locate command.
|
||||
</para>
|
||||
</abstract>
|
||||
|
||||
<keywordset>
|
||||
<keyword>KDE</keyword>
|
||||
<keyword>kio-locate</keyword>
|
||||
<keyword>kio_locate</keyword>
|
||||
<keyword>kiolocate</keyword>
|
||||
<keyword>locate</keyword>
|
||||
<keyword>slocate</keyword>
|
||||
<keyword>kio-slave</keyword>
|
||||
<keyword>kio_slave</keyword>
|
||||
<keyword>kioslave</keyword>
|
||||
<keyword>search</keyword>
|
||||
</keywordset>
|
||||
|
||||
</bookinfo>
|
||||
|
||||
|
||||
|
||||
<chapter id="introduction">
|
||||
<title>Introduction</title>
|
||||
|
||||
<!-- The introduction chapter contains a brief introduction for the
|
||||
application that explains what it does and where to report
|
||||
problems. Basically a long version of the abstract. Don't include a
|
||||
revision history. (see installation appendix comment) -->
|
||||
|
||||
<para>
|
||||
&kio-locate; is a KDE I/O Slave for the locate command.
|
||||
</para>
|
||||
<para>
|
||||
This means that you can use &kio-locate; by simply typing in konquerors address box. You can e.g. type <command>locate:index.html</command> to find all files that contain "index.html" in their name.
|
||||
</para>
|
||||
<para>
|
||||
There's even more: You can use &kio-locate; in all KDE applications that accept URLs.
|
||||
</para>
|
||||
<para>
|
||||
To find out more about &kio-locate; and to look for new versions, you should take a look at <ulink url="http://arminstraub.de">arminstraub.de</ulink>.
|
||||
</para>
|
||||
</chapter>
|
||||
|
||||
|
||||
<chapter id="using-kio-locate">
|
||||
<title>How to use this?</title>
|
||||
|
||||
<para>
|
||||
You can use &kio-locate; mostly as you use locate. Instead of typing <command>locate pattern</command> at a command prompt, you start the search with &kio-locate; directly in konqueror. You just enter <command>locate:pattern</command> as the address.
|
||||
</para>
|
||||
<para>
|
||||
By default, a search <command>locate:pattern</command> is case insensitive if the pattern is lowercase. If the pattern is mixed- or uppercase the search is case sensitive. This default behaviour can be overridden.
|
||||
</para>
|
||||
<para>
|
||||
<emphasis>Hint:</emphasis> Type <command>locater:config</command> in the konqueror address bar to show the configuration dialog. Likewise, <command>locater:help</command> shows this help document.
|
||||
</para>
|
||||
|
||||
<sect1 id="kio-locate-patterns">
|
||||
<title>How to write patterns</title>
|
||||
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem><para>Regular wildcard characters may be used in the patterns passed to &kio-locate;: A star (*) matches any string with nonzero length, a question mark (?) matches a single character, and a character list ([abc-z]) matches the characters in the list. A character list can be inverted by putting a caret after the first square bracket ([^abc-z]).</para></listitem>
|
||||
<listitem><para>Every plus (+) in a search is used just as a star (*) is. Instead of <command>locate:*.html</command> you may also type <command>locate:+.html</command>. This is because you can't use the star in konqueror. In other apps both ways are supported.</para></listitem>
|
||||
<listitem><para>Should you need to use a plus in your search you have to escape it with a backslash. Instead of <command>locate:g++</command> you have to use <command>locate:g\+\+</command>.</para></listitem>
|
||||
<listitem><para>Furthermore you can't use a slash as the last character of your query. O.k. you can, but KDE will ignore it. In such a case you can quote your pattern: Write <command>locate:"servicemenus/"</command> rather than <command>locate:servicemenus/</command>.</para></listitem>
|
||||
<listitem><para>A search as e.g. <command>locate:~/*.doc</command> works as you might expect. This means that <command>~/</command> and <command>~user/</command> are expanded correctly at the beginning of the pattern.</para></listitem>
|
||||
<listitem><para>You may add a filtering pattern after the first pattern, e.g. <command>locate:fish home</command> results in all files whose path contains fish AND home.</para></listitem>
|
||||
<listitem><para>A filtering pattern may be inverted by prefixing it with an exclamation mark. E.g. <command>locate:fish !home</command> results in all files whose path contains fish AND NOT home.</para></listitem>
|
||||
<listitem><para>Any number of filtering patterns may be used.</para></listitem>
|
||||
<listitem><para>With <command>locate:</command> wildcard matching is performed with all patterns. If you're a regular expression guru, you might want to use <command>rlocate:</command>, which enables regexp matching for all filtering patterns (that is: all patterns except the first one).</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
<sect1 id="kio-locate-screenshot">
|
||||
<title>Take a look at &kio-locate;</title>
|
||||
|
||||
<para>
|
||||
<screenshot>
|
||||
<screeninfo>Here's a screenshot of &kio-locate;</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="screenshot.png" format="PNG"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>Screenshot</phrase>
|
||||
</textobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
|
||||
<chapter id="license">
|
||||
|
||||
<title>License</title>
|
||||
|
||||
&underFDL; <!-- FDL: do not remove -->
|
||||
&underGPL; <!-- GPL License -->
|
||||
|
||||
<para>
|
||||
Also, I'd like to thank Google for their <ulink url="http://code.google.com/summerofcode.html">Summer Of Code Program</ulink> and Jonathan Riddell for being my mentor!
|
||||
</para>
|
||||
|
||||
</chapter>
|
||||
|
||||
&documentation.index;
|
||||
</book>
|
||||
|
Binary file not shown.
@ -0,0 +1,244 @@
|
||||
# kio-locate: KDE I/O Slave for the locate command
|
||||
#
|
||||
# Copyright (C) 2004 by Armin Straub
|
||||
# linux@arminstraub.de
|
||||
#
|
||||
# This file is distributed under the same license as kio-locate.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kio-locate\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-09-15 10:08+0200\n"
|
||||
"PO-Revision-Date: 2004-09-29 12:59+0200\n"
|
||||
"Last-Translator: Armin Straub <linux@arminstraub.de>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: ../src/kio_locate.cpp:499
|
||||
msgid "Locating %1 ..."
|
||||
msgstr "Suche %1 ..."
|
||||
|
||||
#: ../src/kio_locate.cpp:614
|
||||
msgid "Finished."
|
||||
msgstr "Suche abgeschlossen."
|
||||
|
||||
#: ../src/kio_locate.cpp:752
|
||||
msgid "Configure - kio-locate"
|
||||
msgstr "Einstellungen - kio-locate"
|
||||
|
||||
#: ../src/kio_locate.cpp:755
|
||||
msgid "General"
|
||||
msgstr "Allgemeines"
|
||||
|
||||
#: ../src/kio_locate.cpp:756
|
||||
msgid "Filters"
|
||||
msgstr "Filter"
|
||||
|
||||
#: ../src/kio_locate.cpp:757
|
||||
msgid "Locate"
|
||||
msgstr "Locate"
|
||||
|
||||
#: ../src/kio_locate.cpp:778
|
||||
msgid "Configuration succesfully updated."
|
||||
msgstr "Einstellungen wurden übernommen."
|
||||
|
||||
#: ../src/kio_locate.cpp:780
|
||||
msgid "Configuration unchanged."
|
||||
msgstr "Einstellungen unverändert."
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:78
|
||||
msgid "KLocateConfigFilterWidget"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:79
|
||||
msgid "Filter Settings"
|
||||
msgstr "Filter Einstellungen"
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:80
|
||||
msgid ""
|
||||
"A path must match at least one of the regular expressions in the White List "
|
||||
"and it must not match any of the expressions in the Black List for being "
|
||||
"displayed as a hit."
|
||||
msgstr "Damit ein Pfad als Treffer angezeigt wird, muss er mit mindestens einem regulären Ausdruck aus der White List übereinstimmen und darf mit keinem Eintrag aus der Black List übereinstimmen."
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:81
|
||||
msgid "&White List"
|
||||
msgstr "&White List"
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:82
|
||||
msgid "A path must match at least one of these regular expressions."
|
||||
msgstr "Pfade müssen mit mindestens einer dieser regulären Ausdrücke übereinstimmen."
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:83
|
||||
msgid ""
|
||||
"<i>Hint:</i> E.g. replacing the default '.' entry by '^/home/user/' will "
|
||||
"only allow hits in the home directory of user."
|
||||
msgstr "<i>Tipp:</i> Sie können z.B. den standardmäßigen Eintrag '.' durch '^/home/user/' ersetzen, um nur noch Treffer im Heimatverzeichnis von user anzuzeigen."
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:84
|
||||
msgid "&Black List"
|
||||
msgstr "&Black List"
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:85
|
||||
msgid "A path may not match any of these regular expressions."
|
||||
msgstr "Pfade dürfen mit keiner dieser regulären Ausdrücke übereinstimmen."
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:86
|
||||
msgid ""
|
||||
"<i>Hint:</i> Adding e.g. '/\\.' will no longer display hidden files (this "
|
||||
"will be unnecessary in some next version of kde though)."
|
||||
msgstr "<i>Tipp:</i> Fügen Sie z.B. '/\\.' hinzu, um versteckte Dateien bei der Suche zu ignorieren (in einer der nächsten KDE Versionen wird das unnötig sein)."
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:111
|
||||
msgid "KLocateConfigLocateWidget"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:112
|
||||
msgid "Locate Settings"
|
||||
msgstr "Einstellungen für Locate"
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:113
|
||||
msgid ""
|
||||
"<p>kio-locate does not handle the settings of locate, because this setup "
|
||||
"varies among different distributions. There are even distributions that use "
|
||||
"replacements like slocate.</p>\n"
|
||||
"<p>To configure locate you should take a look at the manpage of locate. "
|
||||
"Since most distributions use cron for updating locate's database, it may "
|
||||
"also be useful to take a look at the manpage of crontab.</p>"
|
||||
msgstr "<p>Sie können die Einstellungen von locate nicht mit kio-locate vornehmen, da es dabei große Unterschiede zwischen verschiedenen Distributionen gibt. Einige verwenden sogar ganz andere Ersatzprogramme.</p>\n"
|
||||
"<p>Für die Einstellungen von locate lohnt es sich einen Blick in die Manpage zu locate zu werfen. Da die meisten Distributionen cron zur Aktualisierung der Datenbank für locate verwenden, kann es sich auch lohnen die Manpage zu crontab zu lesen.</p>"
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:115
|
||||
msgid "Locate Binary"
|
||||
msgstr "Locate Backend"
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:116
|
||||
msgid ""
|
||||
"Use these settings only if you really know what you do. Otherwise the "
|
||||
"default should be ok."
|
||||
msgstr "Verwenden Sie die folgenden Einstellung nur wenn Sie genau wissen, was Sie tun. Ansonsten sollten die Vorgaben genügen."
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:117
|
||||
msgid "Locate &binary:"
|
||||
msgstr "&Pfad zu locate:"
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:118
|
||||
msgid ""
|
||||
"<i>Hint:</i> You may for example choose to use slocate instead of plain old "
|
||||
"locate."
|
||||
msgstr "<i>Tipp:</i> Sie könnten hier z.B. slocate anstelle von locate verwenden."
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:119
|
||||
msgid "Additional &arguments:"
|
||||
msgstr "Zusätzliche &Argumente:"
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:120
|
||||
msgid ""
|
||||
"<i>Hint:</i> Do not use -r or -i here. The first will confuse kio-locate, "
|
||||
"and the latter can be changed through the \"Case sensitivity\" option."
|
||||
msgstr "<i>Tipp:</i> Verwenden Sie nicht -r oder -i. Ersteres verwirrt kio-locate und letzteres kann durch die Option \"Groß- und Kleinschreibung\" eingestellt werden."
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:870
|
||||
msgid "KLocateConfigWidget"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:871
|
||||
msgid "General Settings"
|
||||
msgstr "Allgemeine Einstellungen"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:872
|
||||
msgid "Case se&nsitivity:"
|
||||
msgstr "&Groß- und Kleinschreibung"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:874
|
||||
msgid "Auto"
|
||||
msgstr "Auto"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:875
|
||||
msgid "Sensitive"
|
||||
msgstr "Verwenden"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:876
|
||||
msgid "Insensitive"
|
||||
msgstr "Ignorieren"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:877
|
||||
msgid ""
|
||||
"<i>Hint:</i> With \"Auto\" case sensitivity a pattern will be case "
|
||||
"insensitive if it is lowercase and case sensitive if it is mixed- or "
|
||||
"uppercase."
|
||||
msgstr "<i>Tipp:</i> Wenn Sie \"Auto\" auswählen wird eine Suche Groß- und Kleinschreibung nur dann unterscheiden, falls Sie nicht durchgehend klein geschrieben ist."
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:878
|
||||
msgid "Collapsing Search Results"
|
||||
msgstr "Verzeichnisse zusammenfassen"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:879
|
||||
msgid "&Collapse a directory with more hits:"
|
||||
msgstr "Verzeichnisse mit mehr Treffern &zusammenfassen."
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:880
|
||||
msgid "Collapse a directory with more hits."
|
||||
msgstr "Verzeichnisse mit mehr Treffern zusammenfassen."
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:881
|
||||
msgid "Text of a collapsed &directory:"
|
||||
msgstr "Anzeige einer &Verzeichnissuche:"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:882
|
||||
msgid ""
|
||||
"<i>Hint:</i> %1 is substituted by the number of hits and %2 by the name of "
|
||||
"the directory."
|
||||
msgstr "<i>Tipp:</i> %1 wird durch die Anzahl der Treffer und %2 durch den Verzeichnisnamen ersetzt."
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:883
|
||||
msgid "&Icon of a collapsed directory:"
|
||||
msgstr "&Icon für Verzeichnissuchen:"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:885
|
||||
msgid "Blue"
|
||||
msgstr "Blau"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:886
|
||||
msgid "Green"
|
||||
msgstr "Grün"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:887
|
||||
msgid "Grey"
|
||||
msgstr "Grau"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:888
|
||||
msgid "Orange"
|
||||
msgstr "Orange"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:889
|
||||
msgid "Red"
|
||||
msgstr "Rot"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:890
|
||||
msgid "Violet"
|
||||
msgstr "Violett"
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:891
|
||||
msgid "Yellow"
|
||||
msgstr "Gelb"
|
||||
|
||||
#: ../src/tmphack/klocateconfig.cpp:35
|
||||
msgid "(%1 Hits) %2"
|
||||
msgstr "(%1 Treffer) %2"
|
||||
|
||||
#: ../src/_translatorinfo.cpp:1
|
||||
msgid ""
|
||||
"_: NAME OF TRANSLATORS\n"
|
||||
"Your names"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/_translatorinfo.cpp:3
|
||||
msgid ""
|
||||
"_: EMAIL OF TRANSLATORS\n"
|
||||
"Your emails"
|
||||
msgstr ""
|
@ -0,0 +1,244 @@
|
||||
# translation of kio_locate.po to French
|
||||
# kio-locate: KDE I/O Slave for the locate command
|
||||
#
|
||||
# Copyright (C) 2004 by Armin Straub
|
||||
# linux@arminstraub.de
|
||||
#
|
||||
# This file is distributed under the same license as kio-locate.
|
||||
# Laurent Rathle <lrathle@kde-france.org>, 2004.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: kio_locate\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-09-15 10:08+0200\n"
|
||||
"PO-Revision-Date: 2004-10-21 16:52+0200\n"
|
||||
"Last-Translator: Laurent Rathle <lrathle@kde-france.org>\n"
|
||||
"Language-Team: French <kde-francophone@kde.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.9\n"
|
||||
|
||||
#: ../src/kio_locate.cpp:499
|
||||
msgid "Locating %1 ..."
|
||||
msgstr "Recherche de %1 en cours ..."
|
||||
|
||||
#: ../src/kio_locate.cpp:614
|
||||
msgid "Finished."
|
||||
msgstr "Terminé."
|
||||
|
||||
#: ../src/kio_locate.cpp:752
|
||||
msgid "Configure - kio-locate"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:755
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:756
|
||||
msgid "Filters"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:757
|
||||
msgid "Locate"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:778
|
||||
msgid "Configuration succesfully updated."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:780
|
||||
msgid "Configuration unchanged."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:78
|
||||
msgid "KLocateConfigFilterWidget"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:79
|
||||
msgid "Filter Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:80
|
||||
msgid ""
|
||||
"A path must match at least one of the regular expressions in the White List "
|
||||
"and it must not match any of the expressions in the Black List for being "
|
||||
"displayed as a hit."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:81
|
||||
msgid "&White List"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:82
|
||||
msgid "A path must match at least one of these regular expressions."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:83
|
||||
msgid ""
|
||||
"<i>Hint:</i> E.g. replacing the default '.' entry by '^/home/user/' will "
|
||||
"only allow hits in the home directory of user."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:84
|
||||
msgid "&Black List"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:85
|
||||
msgid "A path may not match any of these regular expressions."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:86
|
||||
msgid ""
|
||||
"<i>Hint:</i> Adding e.g. '/\\.' will no longer display hidden files (this "
|
||||
"will be unnecessary in some next version of kde though)."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:111
|
||||
msgid "KLocateConfigLocateWidget"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:112
|
||||
msgid "Locate Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:113
|
||||
msgid ""
|
||||
"<p>kio-locate does not handle the settings of locate, because this setup "
|
||||
"varies among different distributions. There are even distributions that use "
|
||||
"replacements like slocate.</p>\n"
|
||||
"<p>To configure locate you should take a look at the manpage of locate. "
|
||||
"Since most distributions use cron for updating locate's database, it may "
|
||||
"also be useful to take a look at the manpage of crontab.</p>"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:115
|
||||
msgid "Locate Binary"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:116
|
||||
msgid ""
|
||||
"Use these settings only if you really know what you do. Otherwise the "
|
||||
"default should be ok."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:117
|
||||
msgid "Locate &binary:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:118
|
||||
msgid ""
|
||||
"<i>Hint:</i> You may for example choose to use slocate instead of plain old "
|
||||
"locate."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:119
|
||||
msgid "Additional &arguments:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:120
|
||||
msgid ""
|
||||
"<i>Hint:</i> Do not use -r or -i here. The first will confuse kio-locate, "
|
||||
"and the latter can be changed through the \"Case sensitivity\" option."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:870
|
||||
msgid "KLocateConfigWidget"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:871
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:872
|
||||
msgid "Case se&nsitivity:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:874
|
||||
msgid "Auto"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:875
|
||||
msgid "Sensitive"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:876
|
||||
msgid "Insensitive"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:877
|
||||
msgid ""
|
||||
"<i>Hint:</i> With \"Auto\" case sensitivity a pattern will be case "
|
||||
"insensitive if it is lowercase and case sensitive if it is mixed- or "
|
||||
"uppercase."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:878
|
||||
msgid "Collapsing Search Results"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:879
|
||||
msgid "&Collapse a directory with more hits:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:880
|
||||
msgid "Collapse a directory with more hits."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:881
|
||||
msgid "Text of a collapsed &directory:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:882
|
||||
msgid ""
|
||||
"<i>Hint:</i> %1 is substituted by the number of hits and %2 by the name of "
|
||||
"the directory."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:883
|
||||
msgid "&Icon of a collapsed directory:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:885
|
||||
msgid "Blue"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:886
|
||||
msgid "Green"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:887
|
||||
msgid "Grey"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:888
|
||||
msgid "Orange"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:889
|
||||
msgid "Red"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:890
|
||||
msgid "Violet"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:891
|
||||
msgid "Yellow"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfig.cpp:35
|
||||
msgid "(%1 Hits) %2"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/_translatorinfo.cpp:1
|
||||
msgid ""
|
||||
"_: NAME OF TRANSLATORS\n"
|
||||
"Your names"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/_translatorinfo.cpp:3
|
||||
msgid ""
|
||||
"_: EMAIL OF TRANSLATORS\n"
|
||||
"Your emails"
|
||||
msgstr ""
|
@ -0,0 +1,241 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2005-09-15 10:08+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../src/kio_locate.cpp:499
|
||||
msgid "Locating %1 ..."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:614
|
||||
msgid "Finished."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:752
|
||||
msgid "Configure - kio-locate"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:755
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:756
|
||||
msgid "Filters"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:757
|
||||
msgid "Locate"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:778
|
||||
msgid "Configuration succesfully updated."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/kio_locate.cpp:780
|
||||
msgid "Configuration unchanged."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:78
|
||||
msgid "KLocateConfigFilterWidget"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:79
|
||||
msgid "Filter Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:80
|
||||
msgid ""
|
||||
"A path must match at least one of the regular expressions in the White List "
|
||||
"and it must not match any of the expressions in the Black List for being "
|
||||
"displayed as a hit."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:81
|
||||
msgid "&White List"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:82
|
||||
msgid "A path must match at least one of these regular expressions."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:83
|
||||
msgid ""
|
||||
"<i>Hint:</i> E.g. replacing the default '.' entry by '^/home/user/' will "
|
||||
"only allow hits in the home directory of user."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:84
|
||||
msgid "&Black List"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:85
|
||||
msgid "A path may not match any of these regular expressions."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigfilterwidget.ui.cpp:86
|
||||
msgid ""
|
||||
"<i>Hint:</i> Adding e.g. '/\\.' will no longer display hidden files (this "
|
||||
"will be unnecessary in some next version of kde though)."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:111
|
||||
msgid "KLocateConfigLocateWidget"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:112
|
||||
msgid "Locate Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:113
|
||||
msgid ""
|
||||
"<p>kio-locate does not handle the settings of locate, because this setup "
|
||||
"varies among different distributions. There are even distributions that use "
|
||||
"replacements like slocate.</p>\n"
|
||||
"<p>To configure locate you should take a look at the manpage of locate. "
|
||||
"Since most distributions use cron for updating locate's database, it may "
|
||||
"also be useful to take a look at the manpage of crontab.</p>"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:115
|
||||
msgid "Locate Binary"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:116
|
||||
msgid ""
|
||||
"Use these settings only if you really know what you do. Otherwise the "
|
||||
"default should be ok."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:117
|
||||
msgid "Locate &binary:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:118
|
||||
msgid ""
|
||||
"<i>Hint:</i> You may for example choose to use slocate instead of plain old "
|
||||
"locate."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:119
|
||||
msgid "Additional &arguments:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfiglocatewidget.ui.cpp:120
|
||||
msgid ""
|
||||
"<i>Hint:</i> Do not use -r or -i here. The first will confuse kio-locate, "
|
||||
"and the latter can be changed through the \"Case sensitivity\" option."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:870
|
||||
msgid "KLocateConfigWidget"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:871
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:872
|
||||
msgid "Case se&nsitivity:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:874
|
||||
msgid "Auto"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:875
|
||||
msgid "Sensitive"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:876
|
||||
msgid "Insensitive"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:877
|
||||
msgid ""
|
||||
"<i>Hint:</i> With \"Auto\" case sensitivity a pattern will be case "
|
||||
"insensitive if it is lowercase and case sensitive if it is mixed- or "
|
||||
"uppercase."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:878
|
||||
msgid "Collapsing Search Results"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:879
|
||||
msgid "&Collapse a directory with more hits:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:880
|
||||
msgid "Collapse a directory with more hits."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:881
|
||||
msgid "Text of a collapsed &directory:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:882
|
||||
msgid ""
|
||||
"<i>Hint:</i> %1 is substituted by the number of hits and %2 by the name of "
|
||||
"the directory."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:883
|
||||
msgid "&Icon of a collapsed directory:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:885
|
||||
msgid "Blue"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:886
|
||||
msgid "Green"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:887
|
||||
msgid "Grey"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:888
|
||||
msgid "Orange"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:889
|
||||
msgid "Red"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:890
|
||||
msgid "Violet"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfigwidget.ui.cpp:891
|
||||
msgid "Yellow"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/tmphack/klocateconfig.cpp:35
|
||||
msgid "(%1 Hits) %2"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/_translatorinfo.cpp:1
|
||||
msgid ""
|
||||
"_: NAME OF TRANSLATORS\n"
|
||||
"Your names"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/_translatorinfo.cpp:3
|
||||
msgid ""
|
||||
"_: EMAIL OF TRANSLATORS\n"
|
||||
"Your emails"
|
||||
msgstr ""
|
@ -0,0 +1,69 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Modified by Tobi Vollebregt for use with kio-locate.
|
||||
|
||||
# Inspired by Makefile.common from coolo
|
||||
# this script is used to update the .po files
|
||||
|
||||
# To update the translations, you will need a specific gettext
|
||||
# patched for kde and a lot of patience, tenacity, luck, time ..
|
||||
|
||||
|
||||
# I guess one should only update the .po files when all .cpp files
|
||||
# are generated (after a make or scons)
|
||||
|
||||
# If you have a better way to do this, do not keep that info
|
||||
# for yourself and help me to improve this script, thanks
|
||||
# (tnagyemail-mail tat yahoo d0tt fr)
|
||||
#
|
||||
|
||||
SRCDIR=../src
|
||||
TIPSDIR=$SRCDIR/appdata
|
||||
|
||||
KDEDIR=`kde-config --prefix`
|
||||
EXTRACTRC=extractrc
|
||||
KDEPOT=`kde-config --prefix`/include/kde/kde.pot
|
||||
XGETTEXT="xgettext -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale -x $KDEPOT "
|
||||
|
||||
## check that kde.pot is available
|
||||
if ! test -e $KDEPOT; then
|
||||
echo "$KDEPOT does not exist, there may be something wrong with your installation!"
|
||||
XGETTEXT="xgettext -C -ki18n -ktr2i18n -kI18N_NOOP -ktranslate -kaliasLocale "
|
||||
fi
|
||||
|
||||
## extract the strings
|
||||
echo "extracting the strings"
|
||||
|
||||
echo -e 'i18n("_: NAME OF TRANSLATORS\\n"\n"Your names")\ni18n("_: EMAIL OF TRANSLATORS\\n"\n"Your emails")' > $SRCDIR/_translatorinfo.cpp
|
||||
|
||||
## bad hack to get strings from *.ui files
|
||||
# Armin Straub <linux@arminstraub.de>
|
||||
UIC="uic -tr i18n"
|
||||
TMPHACK="$SRCDIR/tmphack"
|
||||
mkdir $TMPHACK || exit 1
|
||||
for F in "$SRCDIR/"*.ui; do
|
||||
echo ".. preparing $F"
|
||||
FN=$TMPHACK/$(basename "$F")
|
||||
$UIC "$F" > "$FN.h" && $UIC -impl "$FN.h" "$F" > "$FN.cpp"
|
||||
done
|
||||
kconfig_compiler -d $TMPHACK $SRCDIR/*.kcfg $SRCDIR/*.kcfgc
|
||||
## bad hack to get strings from *.ui files
|
||||
|
||||
$XGETTEXT `find $SRCDIR -name "*.cpp"` -o kio_locate.pot
|
||||
|
||||
## bad hack to get strings from *.ui files
|
||||
rm -rf "$TMPHACK"
|
||||
## bad hack to get strings from *.ui files
|
||||
|
||||
# remove the intermediate files
|
||||
rm -f $SRCDIR/_translatorinfo.cpp
|
||||
|
||||
## now merge the .po files ..
|
||||
echo "merging the .po files"
|
||||
|
||||
for i in `ls *.po`; do
|
||||
msgmerge $i kio_locate.pot -o $i || exit 1
|
||||
done
|
||||
|
||||
## finished
|
||||
echo "Done"
|
@ -0,0 +1,40 @@
|
||||
#!/usr/bin/python
|
||||
# kio-locate
|
||||
#
|
||||
# Copyright (C) 2005 by Tobi Vollebregt
|
||||
# tobivollebregt@gmail.com
|
||||
#
|
||||
# Thanks to Google's Summer Of Code Program!
|
||||
#
|
||||
# Copyright (C) 2005 by Armin Straub
|
||||
# linux@arminstraub.de
|
||||
#
|
||||
# Adapted from the example shipping with bksys.
|
||||
# Thomas Nagy, 2004, 2005
|
||||
# Thanks for this great tool!
|
||||
|
||||
Import('env')
|
||||
|
||||
# The kioslave library is kio_test5.so and not libkio_test5.so (empty string)
|
||||
obj=env.kobject('kioslave')
|
||||
obj.target='kio_locate'
|
||||
obj.source="""
|
||||
klocateconfig.kcfgc
|
||||
klocateconfigwidget.ui
|
||||
klocateconfigfilterwidget.ui
|
||||
klocateconfiglocatewidget.ui
|
||||
kio_locate.cpp
|
||||
locater.cpp
|
||||
pattern.cpp
|
||||
"""
|
||||
obj.libs='qt-mt kio'
|
||||
obj.linkflags='-module -avoid-version' # add more link flags
|
||||
obj.execute()
|
||||
|
||||
# Install the protocol files
|
||||
env.KDEinstall('KDESERV', '', 'locate.protocol')
|
||||
env.KDEinstall('KDESERV', '', 'locater.protocol')
|
||||
env.KDEinstall('KDESERV', '', 'rlocate.protocol')
|
||||
|
||||
# Install the searchprovider file
|
||||
env.KDEinstall('KDESERV', '/searchproviders', 'locate.desktop')
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,273 @@
|
||||
/***************************************************************************
|
||||
* kio-locate: KDE I/O Slave for the locate command *
|
||||
* *
|
||||
* Copyright (C) 2005 by Tobi Vollebregt *
|
||||
* tobivollebregt@gmail.com *
|
||||
* *
|
||||
* Thanks to Google's Summer Of Code Program! *
|
||||
* *
|
||||
* Copyright (C) 2004 by Armin Straub *
|
||||
* linux@arminstraub.de *
|
||||
* *
|
||||
* This program was initially written by Michael Schuerig. *
|
||||
* Although I have completely rewritten it, most ideas are adopted *
|
||||
* from his original work. *
|
||||
* *
|
||||
* Copyright (C) 2002 by Michael Schuerig *
|
||||
* michael@schuerig.de *
|
||||
* *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
/**
|
||||
* \mainpage KDE I/O Slave for the locate command
|
||||
*
|
||||
* \section intro_sec What is kio-locate?
|
||||
* kio-locate is a KDE I/O Slave for the locate command.
|
||||
* <p>This means that you can use kio-locate by simply typing in konquerors
|
||||
* address box. You can e.g. type "locate:index.html" to find all files that
|
||||
* contain "index.html" in their name.
|
||||
* <p>There's even more: You can use kio-locate in all KDE applications, that
|
||||
* accept URLs.
|
||||
* <p>To find out more about kio-locate and to look for new versions, you
|
||||
* should take a look at
|
||||
* <a href="http://arminstraub.de/browse.php?page=programs_kiolocate">
|
||||
* arminstraub.de</a>.
|
||||
*
|
||||
*
|
||||
* \todo Implement locater:help.
|
||||
*
|
||||
* \todo If a directory matches then don't add its childs.\ At least make
|
||||
* this configurable.
|
||||
*
|
||||
* \todo Use different icons for collapsed directories and make this
|
||||
* configurable.
|
||||
*
|
||||
* \todo After updating the settings show a success html message instead
|
||||
* of a blank page.
|
||||
*
|
||||
* \todo Check if locate's databases are outdated and warn about that.
|
||||
*
|
||||
* \todo Provide a means of updating the locate database (configurable
|
||||
* of course).
|
||||
*/
|
||||
|
||||
#ifndef _kio_locate_H_
|
||||
#define _kio_locate_H_
|
||||
|
||||
#include <qcstring.h>
|
||||
#include <qstring.h>
|
||||
#include <qstringlist.h>
|
||||
#include <qdict.h>
|
||||
#include <qvaluelist.h>
|
||||
|
||||
#include <kio/global.h>
|
||||
#include <kio/slavebase.h>
|
||||
|
||||
#include "locater.h"
|
||||
#include "pattern.h"
|
||||
|
||||
class QCString;
|
||||
|
||||
class KURL;
|
||||
|
||||
|
||||
class LocateItem;
|
||||
class LocateDirectory;
|
||||
|
||||
typedef QValueList<LocateItem> LocateItems;
|
||||
typedef QDict<LocateDirectory> LocateDirectories;
|
||||
typedef QDictIterator<LocateDirectory> LocateDirectoriesIterator;
|
||||
|
||||
enum LocateCaseSensitivity { caseAuto, caseSensitive, caseInsensitive };
|
||||
enum LocateCollapsedIcon { iconBlue, iconGreen, iconGrey, iconOrange, iconRed, iconViolet, iconYellow };
|
||||
|
||||
|
||||
/**
|
||||
* Implementation of the kioslave for the locate protocol.
|
||||
*
|
||||
* Enables you to enter "locate:pattern" wherever an URL can be used
|
||||
* in KDE.
|
||||
*/
|
||||
class LocateProtocol : public QObject, public KIO::SlaveBase
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
LocateProtocol(const QCString &pool_socket, const QCString &app_socket);
|
||||
|
||||
virtual ~LocateProtocol();
|
||||
|
||||
/**
|
||||
* Returns the mimetype "inode/directory".
|
||||
* @param url the url to work on
|
||||
*/
|
||||
virtual void mimetype(const KURL& url);
|
||||
|
||||
/**
|
||||
* Raises an error so that eyerone notes we are dealing with
|
||||
* directories only.
|
||||
* @param url the url to work on
|
||||
*/
|
||||
virtual void get(const KURL& url);
|
||||
|
||||
/**
|
||||
* Marks the url as a directory.
|
||||
* @param url the url to work on
|
||||
*/
|
||||
virtual void stat(const KURL& url);
|
||||
|
||||
/**
|
||||
* Searches for the pattern specified in the url.
|
||||
* Every file found is listed.
|
||||
* @param url the url to work on
|
||||
*/
|
||||
virtual void listDir(const KURL& url);
|
||||
|
||||
/**
|
||||
* Actually report a hit.
|
||||
* If subItems > 0 then this hit is a "directory subsearch".
|
||||
* @param path the path of the hit
|
||||
* @param subItems the number of hits beneath this one
|
||||
* (or 0 for a regular hit)
|
||||
*/
|
||||
virtual void addHit(const QString& path, int subItems = 0);
|
||||
|
||||
const LocateRegExp& getRegExp() const;
|
||||
int getCollapseDirectoryThreshold() const;
|
||||
|
||||
private slots:
|
||||
void processLocateOutput(const QStringList& items);
|
||||
void locateFinished();
|
||||
void configFinished();
|
||||
void updateConfig();
|
||||
|
||||
private:
|
||||
Locater m_locater;
|
||||
KURL m_url;
|
||||
|
||||
QString m_locatePattern;
|
||||
LocateRegExp m_locateRegExp; // Equals m_locatePattern, but regexp.
|
||||
QString m_locateDirectory; // Includes a trailing slash.
|
||||
LocateRegExpList m_regExps; // List of extra filtering regexps.
|
||||
|
||||
LocateCaseSensitivity m_caseSensitivity; // For current search.
|
||||
bool m_useRegExp;
|
||||
|
||||
// Options
|
||||
struct
|
||||
{
|
||||
LocateCaseSensitivity m_caseSensitivity; // Default case sensitivity.
|
||||
int m_collapseDirectoryThreshold; // Maximum number of hits in a directory
|
||||
// before a directory search is created
|
||||
QString m_collapsedDisplay; // Format string used for collapsed directories.
|
||||
LocateCollapsedIcon m_collapsedIcon; // Icon used for collapsed directories.
|
||||
LocateRegExpList m_whiteList; // Path must match at least one regexp in this list.
|
||||
LocateRegExpList m_blackList; // Path may not match any regexp in this list.
|
||||
} m_config;
|
||||
|
||||
bool m_configUpdated; // Used in config methods to check if config was cancelled or okay'ed.
|
||||
QString m_pendingPath; // Must be processed as soon as new output becomes available.
|
||||
|
||||
LocateDirectory *m_baseDir; // The toplevel directory, e.g. "/usr/".
|
||||
LocateDirectory *m_curDir; // The current directory (while locating).
|
||||
|
||||
KIO::UDSEntryList m_entries; // Used to cache a lot of hits and list them all at once.
|
||||
|
||||
QString partToPattern(const QString& part, bool forLocate);
|
||||
bool isMatching(const QString& file);
|
||||
QString pathToDisplay(const QString& path, int subItems = 0);
|
||||
void addPreviousLocateOutput();
|
||||
void processPath(const QString &path, const QString &nextPath);
|
||||
|
||||
bool isSearchRequest();
|
||||
bool isConfigRequest();
|
||||
bool isHelpRequest();
|
||||
|
||||
void searchRequest();
|
||||
void configRequest();
|
||||
void helpRequest();
|
||||
|
||||
bool isCaseSensitive(const QString& text);
|
||||
|
||||
/**
|
||||
* Composes a locater:... url for the current search parameters
|
||||
* bound to a given directory.
|
||||
* @param directory the directory in which we should be searched
|
||||
* @return the url that envokes the specified search
|
||||
*/
|
||||
QString makeLocaterUrl(const QString& dir);
|
||||
|
||||
/**
|
||||
* This function has to check whether we are accessed via the standard
|
||||
* locater protocol. If this is not the case we have to redirect
|
||||
* this access to an access via the locater protocol.
|
||||
* There are other ways, that I have tried to achieve this:
|
||||
* - Use a search provider. This works perfectly for konqueror but
|
||||
* not for any other KDE application.
|
||||
* - Really use redirection. But this turned out not to be a good
|
||||
* solution. Seemed not to work from OpenDialogs ...
|
||||
* - So no we just internally redirect... Works, isn't it?
|
||||
*/
|
||||
void setUrl(const KURL& url);
|
||||
|
||||
void outputHtml(const QString& body);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Internally used class to represent a hit as kio-locate will
|
||||
* report.
|
||||
*
|
||||
* This may either be a path as given by locate or a directory
|
||||
* search (if the number of subItems is set to a positive number).
|
||||
*/
|
||||
class LocateItem
|
||||
{
|
||||
public:
|
||||
LocateItem();
|
||||
LocateItem(const QString& path, int subItems);
|
||||
|
||||
public:
|
||||
QString m_path;
|
||||
int m_subItems;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Internally used class to represent a directory while kio-locate
|
||||
* gathers data from locate.
|
||||
*
|
||||
* Each directory has a list of files found in just that directory
|
||||
* and a list of all subdirectories.
|
||||
*/
|
||||
class LocateDirectory
|
||||
{
|
||||
public:
|
||||
LocateDirectory(LocateDirectory *parent, const QString& path);
|
||||
|
||||
LocateDirectory *addPath(const QString& path);
|
||||
void prepareListing(const LocateProtocol* protocol, int skip);
|
||||
void listItems(LocateProtocol *protocol);
|
||||
void debugTrace(int level = 0);
|
||||
|
||||
public:
|
||||
QString m_path; // Including trailing slash.
|
||||
LocateDirectory *m_parent;
|
||||
LocateDirectories m_childs;
|
||||
LocateItems m_items;
|
||||
int m_itemsCount;
|
||||
int m_fullCount;
|
||||
|
||||
LocateDirectory *getSubDirectory(const QString& relPath);
|
||||
void addItem(const QString& path);
|
||||
int countMatchingItems(const LocateProtocol *protocol, int skip);
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,62 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
|
||||
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
|
||||
|
||||
<kcfgfile name="kio_locaterc"/>
|
||||
<include>klocale.h</include>
|
||||
<group name="General">
|
||||
<entry name="caseSensitivity" type="Int">
|
||||
<label>Case sensitivity</label>
|
||||
<whatsthis>0 for automatic case sensitivity determination (lowercase pattern -> case insensitive, upper- or mixedcase pattern -> case sensitive), 1 for case sensitive and 2 for case insensitive.</whatsthis>
|
||||
<default>0</default>
|
||||
</entry>
|
||||
|
||||
<entry name="collapseDirectoryThreshold" type="Int">
|
||||
<label>Collapse directory</label>
|
||||
<whatsthis>Collapse a directory with more hits.</whatsthis>
|
||||
<default>5</default>
|
||||
</entry>
|
||||
|
||||
<entry name="collapsedDisplay" type="String">
|
||||
<label>How to display a collapsed directory entry</label>
|
||||
<whatsthis>Hint: %1 is substituted by the number of hits, %2 by the name of the directory.</whatsthis>
|
||||
<default code="true">i18n("(%1 Hits) %2")</default>
|
||||
</entry>
|
||||
|
||||
<entry name="collapsedIcon" type="Int">
|
||||
<label>Icon to use for a collapsed directory entry</label>
|
||||
<whatsthis>0-Blue, 1-Green, 2-Grey, 3-Orange, 4-Red, 5-Violet, 6-Yellow</whatsthis>
|
||||
<default>1</default>
|
||||
</entry>
|
||||
</group>
|
||||
|
||||
<group name="Filtering">
|
||||
<entry name="whiteList" type="StringList">
|
||||
<label>White list</label>
|
||||
<whatsthis>A path must match at least one of these regular expressions.</whatsthis>
|
||||
<default>.</default>
|
||||
</entry>
|
||||
|
||||
<entry name="blackList" type="StringList">
|
||||
<label>Black list</label>
|
||||
<whatsthis>A path may not match any of these regular expressions.</whatsthis>
|
||||
<default></default>
|
||||
</entry>
|
||||
</group>
|
||||
|
||||
<group name="Locate">
|
||||
<entry name="locateBinary" type="String">
|
||||
<label>Locate Binary</label>
|
||||
<default></default>
|
||||
</entry>
|
||||
|
||||
<entry name="locateAdditionalArguments" type="String">
|
||||
<label>Additional Arguments for locate</label>
|
||||
<whatsthis>Do not use -r or -i here. The first will confuse kio-locate, while the latter can be changed through the caseSensitivity option.</whatsthis>
|
||||
<default></default>
|
||||
</entry>
|
||||
</group>
|
||||
|
||||
</kcfg>
|
@ -0,0 +1,6 @@
|
||||
# Code generation options for kconfig_compiler
|
||||
File=kio_locate.kcfg
|
||||
ClassName=KLocateConfig
|
||||
Singleton=true
|
||||
Mutators=true
|
||||
# will create the necessary code for setting those variables
|
@ -0,0 +1,105 @@
|
||||
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||
<class>KLocateConfigFilterWidget</class>
|
||||
<widget class="QWidget">
|
||||
<property name="name">
|
||||
<cstring>KLocateConfigFilterWidget</cstring>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>497</width>
|
||||
<height>347</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="caption">
|
||||
<string>KLocateConfigFilterWidget</string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QGroupBox">
|
||||
<property name="name">
|
||||
<cstring>groupBox6</cstring>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Filter Settings</string>
|
||||
</property>
|
||||
<grid>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QLabel" row="0" column="0" rowspan="1" colspan="2">
|
||||
<property name="name">
|
||||
<cstring>textLabel1</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>A path must match at least one of the regular expressions in the White List and it must not match any of the expressions in the Black List for being displayed as a hit.</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>RichText</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="KEditListBox" row="1" column="0">
|
||||
<property name="name">
|
||||
<cstring>kcfg_whiteList</cstring>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>&White List</string>
|
||||
</property>
|
||||
<property name="buttons">
|
||||
<set>Remove|Add</set>
|
||||
</property>
|
||||
<property name="toolTip" stdset="0">
|
||||
<string>A path must match at least one of these regular expressions.</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="KEditListBox" row="1" column="1">
|
||||
<property name="name">
|
||||
<cstring>kcfg_blackList</cstring>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>&Black List</string>
|
||||
</property>
|
||||
<property name="buttons">
|
||||
<set>Remove|Add</set>
|
||||
</property>
|
||||
<property name="toolTip" stdset="0">
|
||||
<string>A path may not match any of these regular expressions.</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" row="2" column="0">
|
||||
<property name="name">
|
||||
<cstring>textLabel2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><i>Hint:</i> E.g. replacing the default '.' entry by '^/home/user/' will only allow hits in the home directory of user.</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>RichText</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" row="2" column="1">
|
||||
<property name="name">
|
||||
<cstring>textLabel2_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><i>Hint:</i> Adding e.g. '/\.' will no longer display hidden files (this will be unnecessary in some next version of kde though).</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>RichText</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</grid>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
<layoutdefaults spacing="6" margin="11"/>
|
||||
<includehints>
|
||||
<includehint>keditlistbox.h</includehint>
|
||||
<includehint>klineedit.h</includehint>
|
||||
<includehint>keditlistbox.h</includehint>
|
||||
<includehint>klineedit.h</includehint>
|
||||
</includehints>
|
||||
</UI>
|
@ -0,0 +1,211 @@
|
||||
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||
<class>KLocateConfigLocateWidget</class>
|
||||
<widget class="QWidget">
|
||||
<property name="name">
|
||||
<cstring>KLocateConfigLocateWidget</cstring>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>567</width>
|
||||
<height>385</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="caption">
|
||||
<string>KLocateConfigLocateWidget</string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QGroupBox">
|
||||
<property name="name">
|
||||
<cstring>groupBox4</cstring>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Locate Settings</string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel3_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><p>kio-locate does not handle the settings of locate, because this setup varies among different distributions. There are even distributions that use replacements like slocate.</p>
|
||||
<p>To configure locate you should take a look at the manpage of locate. Since most distributions use cron for updating locate's database, it may also be useful to take a look at the manpage of crontab.</p></string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>RichText</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
<widget class="QGroupBox">
|
||||
<property name="name">
|
||||
<cstring>groupBox2</cstring>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Locate Binary</string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_3_2_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Use these settings only if you really know what you do. Otherwise the default should be ok.</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>layout11</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_4</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Locate &binary:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy" stdset="0">
|
||||
<cstring>kcfg_locateBinary</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer4</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>81</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="KLineEdit">
|
||||
<property name="name">
|
||||
<cstring>kcfg_locateBinary</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>0</hsizetype>
|
||||
<vsizetype>0</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</hbox>
|
||||
</widget>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_3_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><i>Hint:</i> If you don't specify a value here (which is the default), kio-locate will automatically pick slocate, rlocate or locate (in that order).</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>layout12</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_4_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Additional &arguments:</string>
|
||||
</property>
|
||||
<property name="buddy" stdset="0">
|
||||
<cstring>kcfg_locateAdditionalArguments</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer5</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>51</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="KLineEdit">
|
||||
<property name="name">
|
||||
<cstring>kcfg_locateAdditionalArguments</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>0</hsizetype>
|
||||
<vsizetype>0</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</hbox>
|
||||
</widget>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel3</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><i>Hint:</i> Do not use -r or -i here. The first will confuse kio-locate, and the latter can be changed through the "Case sensitivity" option.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
<layoutdefaults spacing="6" margin="11"/>
|
||||
<includehints>
|
||||
<includehint>klineedit.h</includehint>
|
||||
<includehint>klineedit.h</includehint>
|
||||
</includehints>
|
||||
</UI>
|
@ -0,0 +1,391 @@
|
||||
<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
|
||||
<class>KLocateConfigWidget</class>
|
||||
<widget class="QWidget">
|
||||
<property name="name">
|
||||
<cstring>KLocateConfigWidget</cstring>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>442</width>
|
||||
<height>298</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="caption">
|
||||
<string>KLocateConfigWidget</string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QGroupBox">
|
||||
<property name="name">
|
||||
<cstring>groupBox1</cstring>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>General Settings</string>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>layout10</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Case se&nsitivity:</string>
|
||||
</property>
|
||||
<property name="buddy" stdset="0">
|
||||
<cstring>kcfg_caseSensitivity</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer3</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>284</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QComboBox">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Auto</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Sensitive</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Insensitive</string>
|
||||
</property>
|
||||
</item>
|
||||
<property name="name">
|
||||
<cstring>kcfg_caseSensitivity</cstring>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>150</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</hbox>
|
||||
</widget>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><i>Hint:</i> With "Auto" case sensitivity a pattern will be case insensitive if it is lowercase and case sensitive if it is mixed- or uppercase.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
<widget class="QGroupBox">
|
||||
<property name="name">
|
||||
<cstring>groupBox2</cstring>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Collapsing Search Results</string>
|
||||
</property>
|
||||
<property name="flat">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<vbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>layout6</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_3</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>7</hsizetype>
|
||||
<vsizetype>5</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&Collapse a directory with more hits:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy" stdset="0">
|
||||
<cstring>kcfg_collapseDirectoryThreshold</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer6</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>141</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="KIntSpinBox">
|
||||
<property name="name">
|
||||
<cstring>kcfg_collapseDirectoryThreshold</cstring>
|
||||
</property>
|
||||
<property name="whatsThis" stdset="0">
|
||||
<string>Collapse a directory with more hits.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</hbox>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>layout4</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_4</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>7</hsizetype>
|
||||
<vsizetype>5</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Text of a collapsed &directory:</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>AlignVCenter</set>
|
||||
</property>
|
||||
<property name="buddy" stdset="0">
|
||||
<cstring>kcfg_collapsedDisplay</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer1</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="KLineEdit">
|
||||
<property name="name">
|
||||
<cstring>kcfg_collapsedDisplay</cstring>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy>
|
||||
<hsizetype>0</hsizetype>
|
||||
<vsizetype>0</vsizetype>
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>200</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</hbox>
|
||||
</widget>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_3_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string><i>Hint:</i> %1 is substituted by the number of hits and %2 by the name of the directory.</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLayoutWidget">
|
||||
<property name="name">
|
||||
<cstring>layout3</cstring>
|
||||
</property>
|
||||
<hbox>
|
||||
<property name="name">
|
||||
<cstring>unnamed</cstring>
|
||||
</property>
|
||||
<widget class="QLabel">
|
||||
<property name="name">
|
||||
<cstring>textLabel1_2</cstring>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&Icon of a collapsed directory:</string>
|
||||
</property>
|
||||
<property name="buddy" stdset="0">
|
||||
<cstring>kcfg_collapsedIcon</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
<spacer>
|
||||
<property name="name">
|
||||
<cstring>spacer3_2</cstring>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint">
|
||||
<size>
|
||||
<width>161</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<widget class="QComboBox">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Blue</string>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap>image0</pixmap>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Green</string>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap>image1</pixmap>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Grey</string>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap>image2</pixmap>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Orange</string>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap>image3</pixmap>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Red</string>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap>image4</pixmap>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Violet</string>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap>image5</pixmap>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Yellow</string>
|
||||
</property>
|
||||
<property name="pixmap">
|
||||
<pixmap>image6</pixmap>
|
||||
</property>
|
||||
</item>
|
||||
<property name="name">
|
||||
<cstring>kcfg_collapsedIcon</cstring>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>150</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</hbox>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
</vbox>
|
||||
</widget>
|
||||
<images>
|
||||
<image name="image0">
|
||||
<data format="PNG" length="1136">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000043749444154388d9d946f88545518c67f3b7347cea551eec49833667507ffac635acdd29a2e19ecc6464ebb8a9b164cf9410721dc224a0824a2c22ff9519420c824d3faa0ad41ba94e55ad6ba90b42bacb962e68cecb273d91d766eeb65ee69f6b8b70f77d6dd30f0cff3e570e03dbff739cf793941ee459aa1c756b66f7c66f3be4fae3b2ae4483922c20fcd5565ab3455527397c0a06136d4a79ab7b6373436ac935a7c4ed7b727fa13517dbcb7af3797fff1bdd741fe0da0dd29d358b07a49726dfb6be9d674464423f37216c8d112ab5735d4f65c90976c5588a361a0b8152cc231216289650076beef024a56442c154f36665e6d6a79715b6a4562d1804d4d61c8459f009b083d97dc9adca0bc219461a019f7a3ac6bd3604d04cca733f54d9bb26fb4ad493d9f77e4e4e12f3a3eb70bb96be90dd9cdabeb137512b4812117a120a2e9f48d42ce0284ae19213b2e893b68910560f5f96021428ddbf66dcf6ec9bc935eaecf270475e824cdecdbaec2d335820316946c97b8d0b95884fc28146c1080841aa119115b163c114e98d2190020105b9a5e98dd9279f395943e5f84fc4824908812888409e62c1f100febe41cb05d4081d0fc3a14e01212447484590bcc0208d84ee11fa4bc3195b3acaeaeaa1e522e86809c33b5afd629bfa16b038a00a02396d582300002a9b5ed2df1a8884e41c5cdd1829c0d86d0b16515a2a69b0a40daa0cb6a13618410e642118e99008148d4a84dc674c3e56666b82ef45d011c10c23f28673845f95024b8d20520b95806b6b6c617602c5b0910bc2ea5b362cdba171e9b17bacf01064bd03f04f130cc9e03c50a941c9093201d70ca20c7fda6b20cb36729d6d7db649b25894708f6ffe54c58574e7f17b0ce779debfca1e78c3b0185eb902b42caf4937215c86ae852829ca8aed51ba44c971d1b6c32cd121176d101636efc71446c71102555a9a2d1d4bcbe5569687a002211702a604bffdac5aa3bbbecbbd627e1e514bcb4c661494c838a2437a4f8f8eb9ec2b99f3b0fcb627f9706605de8faa9e374eff9ec86ba551725c4abce50d3f0a92949c6a06d05240cffbf29146d3a7f2954f61fe9ecce9f3fbc17277f0a18d70064313fda79ace3ab7463dd4a1401b73aa733472b22a029054d26800b4ad077c962ff91de42c7b1cf0e4aebec0194fd273009109c9a2ecb1ab412cb9f6b8e3f38f7819a80ff58b68452191206ac5f020d0f0301508ee2cbef072a1feeed3873fa9bddefabb173079994c380c7ff29d9b2e3ada3bddec4f1cb9e776ac4f38e5ef5bc3f46bcffe8eae5b2b775e7f121c36cfb0844addfea361286392fb3bbfbd743bf79deef639e37569906962b9e77b46b58a65a769d246cae0366df163853b127331bb7ef1f1e1f1e9b860e8f78debb7bba078da56dbbd0c4a23b72798b34a19b9b3e3d70e88c4f3e7e7658366ede7792b0d90a84ef1e3843229a7a34bdb3bb6fc79eeeabb127321fdcbbcb5bd135c4524f09c37c96bbcdb2aa7f01e2660a8dfb27078d0000000049454e44ae426082</data>
|
||||
</image>
|
||||
<image name="image1">
|
||||
<data format="PNG" length="1276">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000004c349444154388d955451681c55143dbb99a46fcaa6ddd5adce486a76a5d5cc62c4867eb8512909feb816d12952bbb18211a9b445a8890af6332a141205493e84b622a42dd5742b9444a19248216d699b9d62da8e92a52f1fa5b392907936e3ce257dcdf8319bb4552bf5c1e5f26698f3ce3be7ce89044180ffbb5cd7ad2d5c2c6c1a991ad94b826accf566a7e33a8d669b6965d299390088fc4fe0c8b035dc34668fedf075ff7591140ff349fe872ef4a2231dad15adeff7bed7fb230028f705771328968a0d23d3236f8a98e8749bddc76cb223b806a4f5f46a0ebed62a597354a2b5beeb434da87703bbaecb0a970acdae70eb3a9ee928ea6b749fcff0f8a10b874c2ef9cec4bac4d336d935eeac0b1d3a100346c5288410b544544ba04749125454817ddf8f162e155a2c61edd634ed259bd9caee93bb8f18f5c60562b495a5d8262858519c2d42870e2da6c1220b5c700000632c4992161de9343a65a72eb126b1a038334eddc0c5811d4c631f6637661bb8e4d0a50e8ad3bbae741755a6466dcf8e400046ccc0b49c06270e971c000081c0185b09895502a2c1be66afce346766a2a7a74f1bf164bc7bc3ba0d0db6b421204020e8313d4231aae11e8fa4a141d334d88a054772f8d207c042b660204111c6980a059a35693d020051e18905482c966539145a86cd973e20012619e2c9046c69812481aaef212964ec12e00150b002313cc0057f1c3781a8edd9cfa931b59e2d3150c2ae2a2a8808baa2c381b36c3053aa872b0c980720aa7b861a30acb666ad8dceac13897297b7a51a520f3ab2aa599589239c906d9ca12ccbcb4c97bb209020806e0f6d2e65322d9e7eb6f86b714d8d99376fd5c66a5f5457a9cc931ebc450fceac0363a501f5a108a6a253f0681e80844712524a78c2839c97900b125804b43a0d3b1a3f82a96f4504caaac9d2f973d1dc93b95376c99e606010520002c837986049064771966f40145ed9f7fcdbd3a030b42773e835fa914be6a02a71e8313d7ea664bd1c6d4db5cef933fe10f3d82d48201bcf42650990224092b0a4fd9261aa12ca65d41bd8bbfe13f434f7221dcb000a603b7670ecec619b5bf659052ab0a579cb0fa3a5d1dfb4262dc33d1e8ed0125349a1399240007c0998c93c3ae21d482b69f84410d2c7a1f387ff1c192b145a74a36ff8cbe15f1400c83665a7477f1a3d9e90890c971c04111a5235c647380569a6239fec442b6b0d0ff708f62c0f064ef4d9e529fe45f7abbb8eeedabe6b1e6ad54f5555a1433fea949c37a0a15110c155dc2a631f2a54b4c75ad1117f1b716880049cd9320ae78f7907be3b38d4a21b9ff77f367429b321b31c95cbb1e9ceb891ee13ddfb5a9e6ff9c0555c08cd01f7a6919629e4625bd05edf0ef8a11456a918f41defbb629fb1faba5eeb1aca6fcbcfabf5ea9d7976771e0f5bc34d63e5b1efb575f127ca49078692418e99d06bf5f06f9cf771f0e783dec091812183197d3d7b7a2e679a33ff1ee841102c57a55241d7375d7b769edab9307e633cb8735dbd7e7531bf2f3f696c36deeaffaabf3ea804777dfbf7fac783f1e278b26da0ede4e095c1200882a0b25009064f0fde30b61b07cc77cccce5e2e5ff04bc27701004e829f4bc607e6bfe3e717d62b173a0d332361bdbf71fd81fabdca8dc17e83d81e7e6e66a739fe63e4e6d4b7d9d7d25fbd4c4b989fb065caabf0002b81688eda386d60000000049454e44ae426082</data>
|
||||
</image>
|
||||
<image name="image2">
|
||||
<data format="PNG" length="1233">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000049849444154388d95945d68145714c7ffbb199b3b4ddacea2a13b6583b9904067a9d40d15dc102a2b163158b0115f126cadd052941644fbd04a2b69f0a5d207212d48fd409a4ac192521b93076b22a19b209a2cc4246b35cda446338b59666ee93073dc0cb97dd8754df1033d70b8dc0f7efccfc73d2129259ed59c05273c7069a03193c97ceae41dab7d677b07b91435d61ad3baae2f0240e899c08bc0d8c4d8ea81c181f7225a6497d160f0befebe5b8e702e0b57e84d6f347db8f793bd5900509e963995995a353832b843abd63e6a5ad7f41a0284cd9b26781dafc52cbcd99bb3ae75db8a017818ec2c384af67a963bc209373537fd158944026bceaa1ebb3ab625b790db9b58934842c173d66d0be413a00056ce0a99b3e692239c15e6ac19f3fff5a1bea096c03e30757dca18b932f201e77c1b1185cffc70e604636c9c29ec5dcef9665ecfabccdb26c82d02110056ce020303632c4a01fd635a26475014a95896a50c5c18d8a9ebfa672d6fb7d40308810033677e0942a045b54a2144283b9d45a43a0230402c0858c202001008ac9abd44010570c1b3b3d9cac648e3bdb0396dc6f55afd50727db201400841f1318f72458fe94ce4458888c0631c080022020504555101000c0ce45285c634d511ce6a2b674500204c444b4c6121222a2a0896ad2550341a857005fcc0072d16effdc00700e4f2390857000a98aaa8af64ae64560340d89ab3d631c6aa98c28000600a2b2509705c078c95cec1ca0a0140850ae10a38c201168148754481821a73da7cddf77d84852b36f33abe5290281705281646b802da2aad1cfef2482c61c1110eee470a86502ad5f262ce111bb213d9ca8ab61d6d4b4a95b2a546aba90c0a01c82358390bdaf31a6a63b5081542208f80254078024121c082bd00f2a8d8214b80b652c3c60dad48ac7b136e3e5f3577d7bca02492894be675f32a8ff18d44042b6f81d77330858188cab9242a2a15ae28e75e652af8ab71341a49a094b2688cd70e0ef66c52e246dcce64323f0b2136f8e457e8511d5af523c207408b0406062770108d71180d06788c830820f2317c6d24e8ebefb92cf2d67818000c6ef48d4d8cfda956ab705ce7e1eeb8df0541b1a88944021b532d88d71b0000211cfc78f6e4c2c953df7e63aca96b3f7feefc4505008cb5c6dfe62f660f02c4414518032baf22100000ad46038fc511d1b4e2087009996b53c18953dffd81c0ffbaf3ab8317b7bfb3bd509e15aaaa8237f09fcc69b39d698c97bf6d49315318a27551e8515eee1c73d644cfd99e5c4fff99ef53a9d4b103fb0edce19c3f183c52caa21764a8fb74f7e1d1e15139393e29ed795b4e4e4dca991b33d2b33d29a5949e27a5677bb2f7dcc542ebd6d6df5b36b5bcd5dbd3bb4216e4034ec9ffb7191d1ead3f7eecf8447a382de76fcd4bdbb6a52cc8b2cdcfdbb2b3e3c89de4fae4a1ce8e4eddb6ed87808f047b9e87aea35d7bba4f77dfb3efda72b98d0e8fde6bdbd1d6dfbab535951e4a2b8f033e122ca5c4cc8d19ede017077f4b0fa5a59452dab62dbb8e76dd4a36a73eefece87cd9befb78954f044b29d17baeb7f9c8e12373e9a134ed7e7ff7afaddb5a9bd343e98aa7013e112c3d59b1e7e33dbb126b13fbf7efdbffd42a97fb7fa1807393b78b271b0000000049454e44ae426082</data>
|
||||
</image>
|
||||
<image name="image3">
|
||||
<data format="PNG" length="1135">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000043649444154388d9d946f8814651cc73fbbfbdcf14ccdc5acac3a2b1beca679adfd6305cd3b5438c3b235ad4c0bb67ca18b905e1275d09b080b09ea45ef34903249bc8490eb4597889282751d78b527dec549c2edc9c5ee72b7dc4e3aec3cade34e2f66cf5b4af0cff7e5cceff9f079bebf6142dc470c89d6bdc1dc7aa067ed21575d6f51557beae1889c5fb2dccaec4ce01e81a1cec78c153b37a5ba3b3b3a3747a57ae8c79fcf8e6846e25a6e3497fff0c8c4dbcae56f0071b7d08eb8b1b47b5bf2ad74573a13d6e542ac3c155bd1d9d1d1ae8a83978bba154560703bb0a94b9930e53280e1096b54b9d4523119cdbc907cf3d5f5e95d89787209e5b180532e82ae1116164e7930a054fea66148c390cc2b29aede024b4130b32abe22fbcababda9355b3628ab54effbfef037f9b27535fb727a7b22d9b11ca584531e0329d1f430d8c360e7d10442e946346a2a3b6c102b590c0308296939b0bd6b4f6647f67ded89f42214684a91dd9d780f1c0fb410e5311cb782664441e5c11a03b708484005649b0c83e52522323e36a10008a697988b333bb2ef681d6f2cc2958d5214e88920221cc2ca832ee7a06a76f1d29f13804e4bb84d6a719376a0152058b4ad7f94e226371af3aef20fb90eb8e008401a60e7c19d7ddf34271d10041168cb12b44b810110ec5e9f7a5146a2915ba6a2c9c4cea3490394d578eeccad5b4a900aa406280c5db6c4e32c3623320e103422e1762d9634709d86a9f26d4bc33e44cc3e6b36058402094ee39c12c96034b933b62cc64a809052d7edcd6b9edcd8623ef520351bac49981a01230ac1365065a855a00ed46d102e888adfa4ab705bdbb0f48d283d0b3211b24b2337ce5d2c9d0a9e1d2d0d0d9e3b791ed701bb08561ecc5453cf0d432cbf22ac5be68e91c28af4a08c0c0e06a0118d194f9b068f86948b2b6a155e7a7edd265c21686d817ad8b77315e0825b86ba82bae5d7130cc0a2d7b1e7bd86786029ca05b77c85c1335f144ffe30d43b32aece86002ab69a5ebb34dc156d5f196366125ae743adecc3ab65dfb45e8120a027e0912c15a313826d58d5698aa3a76b7dbd9f9c3fd83bb46ff0b23aead6991600136535ddd77ff2f8f235e99540d0dfbef46f2e00a54046c14c82b90e07897415a5d230b933878b5f1fef3bfaeb4575c4525cc1df06a1d9ffc4e454a9f45c2ab17efe82e8020834be04cb378d2420be11a29d7ebd35c5d86fdfd6fabefcf8fc6787ceed1bfad33daa5c0a80c7edd2b32df9ae973b71c3cbf57bdea59f3c2f77c2f30a7f78cda94e8d7bfd8776feb56595f1a914b4fb37bc43e211b970e060e617efc231cf1bffddf3aad53962adea157227d4fedda9d37193cd40db1d81cdc9ac36b716bedb73cd9b29cc41670ade40ef07935b5619fba564c95d59fe3752a27db52b7e64e6c231cff33caf70a95f1dd8db753a1e6113a0df33b039a9987c7ce0f3f4f0c0e19ef1cc6af32329eed3f27fd682402ac633f1887c967bedb2917f01b258f688d5631b0b0000000049454e44ae426082</data>
|
||||
</image>
|
||||
<image name="image4">
|
||||
<data format="PNG" length="1154">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000044949444154388d9d945d6c145514803fb677e50e5dc8349466568ab4b1a05b6a4c1112b6d2041a6a604c7dd8a431a962848607bb068dc89b890fbe49786b8da8c410a02406d104e98326954068496abb468b8b8add461a7702851dcbd8b92cb71d1f66a5e527043cc97db973f39d6fce393965fc8fb060f16b96f5eafbebd67fe44ebad3b78aea9fb8904b2667f5df00f6161bf1284009d1a494cf776e48bed9d2dab4d58472c775a25d954d337d3f0e9ccf4eaabd4011c14383176c96b2e195864497dd66b7c72db9d41fcfe3b88a96c6647d6e70f062dc532b24980aaea0ef025b8245b531d6282d67b29e1a058ab582951d4f275e4fb5d93bea1b122bfd892cf9d13c0889a514ce5026e28fe76e298d2961b1822bb78d25947554cb64676b7277635be716f7724e9f387cf050c1534e6a5b6a7b7d73d333f86ea4707104b4812980892ceaaa8b19938f2929aba452d74c8de5c21f681012a2dd9b6adeeae87a77afb1295505607805d289c43b68054246fc6c063559400ac0c9423e8f522005b882052a2697a254b1425033ae398780484b254f76ec4a7719ede92a04a054782ae3116266c4ff3d0b425281c2b894c1700b61238544010a40ca4552c8f25a580d44d010f13545a599c1f74103da075d827b2e0a3050e0e400f051a5022ad090f714521a65866089855c05942320926eb052152b6aabd0255b4d78f0f12fe7a8302bc02b8430ad3090a5ef90572a34064cd334e252d65bb01c0d1115ab78829ac412941bbed00adc3c7e6610a4846829218000ff5698dcf114aa2421854436b788c4f6f4aab8e0390494e179532f3cbbda36ea1a634ce5612c0397734457ad275a1e85ab79987241dd04cf0bf34e2bf4ac44690d562d46dbcb2c7eb183e8f215d11b438353ee12f96da4df513f0c9cfcf2349e1bd6512bd89c829811764687a6281f7c50f3ec65b38ddcbd07d96a83340088c7ccb5264675c4859bbd6733c7b9f48b8f06ac44f848c81028e695a2340d325e8bdcb10763479a8aba46d0a07e1e09063e7cefd7bed1cce72e5c13000313eee98193bdc34ded1d1b7172509df86f904ad052c30c09eb9b60db4ea88c8386c2449edc5727bc13c77a4ef53b4e8f0343b640098071cdb5beeffa8f35b5a63670a320d085d058cf1bad9a04246d58d7021848e5933f3f383bf8c9fedf8e9eee3f90d1ea0b057920b863571cbde87c9d3adbdf9968a85d6b4cba730b44c839e0b238f8809367e0d3835edfe183a77a27c67b5c189afb45ee5d6d5d75567afac0be62d07724087e3a1704678e07c1d858101483308a41f0d799e1d9cfb6a6b24929df061e0716dc85c1de62df796109967dd3bef9fbe943dd41f0e78520989e0e6ec7f5ebc1f0feeea99dd535bd16348785bf7fd85bed7b2f5395e64b1776a5dc606c6c8e39323c73a4bd63b451cab404eb7e960f3426d458f881657e7cfdc0be20989a0e2ef4744f75d5d51c3621093cf620e0038d016ae0a9e31b1bcf1f69b7479231f906a1e543c77d8de7c1d798d0082c7c142884c6ff02ebb2fb9af346c6500000000049454e44ae426082</data>
|
||||
</image>
|
||||
<image name="image5">
|
||||
<data format="PNG" length="1194">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000047149444154388d95945f6c145514c6bf9d4ef50e4ee3dcb8c4dd80a6230bba95865283ba4422d4c43f0d3eb8ca832598501e88c43e348d4f0d26c0830f92a8498d12f1c18855b4f4c1204d508201bb25c0ee9a005d024d072d74d652772e769c7b7427bd3eec6e5b2328dce4e46672cffd9def7e2773224a29dce9f23c5997f9bef0547ea4d04da1184a6f4a1d1482ee4dad5ffdb3d16000002277042e03991f7389fc49775bacd1de623f602f19fc7af02c63ec5a3e9f973dbbdbb7af5db7f67700d06f97397acebd3f7fb2f02a63b1eda90d6d2b4086e65c76904cac5d55186326f9e257d7712dacc34dc065d43957bd072591168f3187733eeb4eb866eeacbb515ca73792cda9c701d4bb1302e41781d0865b949a3b21ca9ecf1af23f15a22fbf865fe6c1656074cc5de65ca56d71d37ac5b94a91e343b98f98695c62b0b6dacbede79a1af922a7e8417a048416880c8869c0d08d3aa018856efde1095a0a200700ba9c91dac8a9621a3a7bab35613f4a80c6a31c6ed47a1b21422bc619094446afb830740b0087108010f30f650d8c23842a9c739779d73df0c51c5ae162d186ce76af5e196fa6101a420021108ff1fa788c1b621a11411eb819879c31403e4021c0163848c0dd8c714682ad708b6e1d0068c2f766990e8da89224c3f95d8600851e2c93c3131520550b5335cf151e1022029d2d229f2f77ae38160068de345a98c9cc5a75439fdfc9072cc6502b8a054a990e78be84573de326bf0bbafd9098201b0034c7719f8d47f99285971102eeb4048512d00d100154ae3ebb7aee0809e11388082803d6621969db105b9a3955780252424b26e3836ed1fb8db1ca051902ae9060a6016655a00801563f6f81ebcbb95ca633c46d42fb464436bcc4eb31836772e70bf76876829f72aeb823355f852f61371a60acd2959a972401518552081011b809b43e29d0f682048f130c93010d6c4dffc7834d5a53d29e21290e912fcb140276ac0a0de7bbef51054a04305466819d00da5e24a45200332bf999a1bc2c9cc9ff009da67400482eb7becb9d772eb4ae6c6af17c893833e6947a0450cd7b006012a966829d2040af14731da1063f3b72b97031f3deb6eecdfd9d5b3b6e54c02df635e772fe900ce52a222352535a83a3dab8584c22d90c700b40c8e0098191a1d1e0d017fddfd8cdd6defdfd7b73ada956052c986eb991d187c5b4719845638978d4802700e1035ef50fb39702762300784008142ebaeaf30f8f8c1d3f73e4dd9e3737f7776ce9b8511b990000a554250285039f0cefce664ab3d9d381ca9e56ead851a5b219a54a534a29a5541028559a0ad4c0be63417b4be7c1f6f5e9c7864f0c6b738c05f18f8f6ce6c2b2031f0c9fcb9e085436a7d4e4b852ea2f35b7262f9554efeb7d63a947dabbf6ecdcc34ba5d2bf803705074180fdef1fde31f0e9853f6b2a95aac0878f8e07e9f53bbe4a3fdfb1e6562a6f09564a617c749cf7760d7c9bcd4c2aa5942a4d06b37dbb06c6522de9ae3dbbdee1a5a95babfc4fb0520a07f61d7eba6fe7b1c9e1a3e341e7a6de2f6f57e5ff824b5381dedbddd7996a4977f574f7dc77bb2a17c6df8cbd46ed068731d30000000049454e44ae426082</data>
|
||||
</image>
|
||||
<image name="image6">
|
||||
<data format="PNG" length="1211">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b0000048249444154388d95944f6c54551487bf695ff53e9cea0c69c94c6cb02fb4d84682b601a30425d3c4a8c0c63646a9ff426b62005920246aaa0b52c584d2850b1660d005200b086cccc0a653443b1a10c604e96b80f40db6ce1b6bed7bb193be0b73e5ba98a1b4091238c9c9c9bdb9f73b27e777cf0d69adb96f0b82d0f0a96f9ff42fa6b67b8aacf5f2963e5379b5b1156dd74cd35400a1fb0217c11d49d7c98ba9b7a976375acfc41bd2075357e5a47916e5c6bda6ee773bbab68c0218f7caf41c67a17df24087552b375989c872c2540623195a9aad25b26057b8e7ec69fbeaf0a3c01dc0c5a032c866164b4988bae66c341abde98d390bfc5f922fa29cf75b5e88ac3663de038c3b042311ccb0807006dfb19529657550c8d605d30166b5590617c11b492d259bee8ed6d02efd8cb607c57e8475296e78efc45646d7994d224c3e03bf4540c430635990c320cc9010625144492dff722c29c1ac0623980e2afd9ff7be2ef07ba2abad26a24e284a8c96a6ec2e0a6ed16c889b4827c4af1284053117940d05ff9692448578385014a3ca5bea8cdb46b4b65519fe48ea0921646ff439cb82f46c574cabbe0a64156336e463506f020e4817a40443800c4a8727658529446544e597f879f711e0ef0a6fd2d7200cb0a128e7b85f8a79010d71306c501ec87266e5956256c2a40443565882c5f6b9c13a800a39966915029322a54ad49c98f7c1b0c0704b6b55a62a0998909730564e2444c8aaa656f8de72800a0ace5ab3deaca160972e48bf14b32e8cc7202640e54105b7e10a18f74a5059eeb521427259bbe9e5f36b5cc7312adf7bad3d1479c878a92a9c7f901bd3505090ad02e369585a050b1c9005b8a9402a985130aec0036e144019040b1ab9d2b883f1c73af1738ee94979ca88af5c3b98bf78fc82158badc17760b2191a2c88b8805f6a0b4041420198e476e54604b7ae0d37de8d4f0414881acb4a1d3d9ca88837ac9a747d8ee15bff520062cd10714a5005204a82493147b800a2ad388d9fe1357f82147104e06406d58593c7cf66b2cee50a4c88b7ac4dba23f92b080b7c67be805296804a9645130475dd380dbd04b1b6524edf257da4ffcfe4377bfacc952d6f1e4ea64f1b00d653cf8e0e1f499d882beb630a0ea848a9d232a8f4b404849b09eadec0375a1040e04bdc4cba983cd8ff435e89dd9dbbf6a43a5ee928defe2b4c13bfda3ae25cb5375811ea29081065a8f4c088424d1b41b813a9040270b30e3f1dfdda4d9e3cfc959568dfb767db8e9c6559b30336fb6d069e17b28f7efe456ba3f8908807f5f9f284b540b81d8c560205c800fbc764f1f8fefed3b62f77777dd0fbfdbaf5eb8a5431dfb4d6b33e9a1e78fcd2decdf6cc991ead27bab4fee790d67a4adfb2a9df73fad8ceed639d2bea7bb66fea8ae54673f3eecff5f91b33330c7dd9b3357760f3753d715ecfb55c7ae07aefab8964d7fab56b86524386be7167e09dc15a93bb7c69e1775b13c9a93387b4d65acf4ce4f4407fcfb5aed5cd1ff5edec5d3435317557e0ff82b5d60ceceb7dfefca7ed7f8ca68e057d1b1227bad627560d9d19aabc17e05dc133135395bd6f2536b62f8b6cebd9b6f99eab9cebff01a7a517d9791775a00000000049454e44ae426082</data>
|
||||
</image>
|
||||
</images>
|
||||
<layoutdefaults spacing="6" margin="11"/>
|
||||
<includehints>
|
||||
<includehint>knuminput.h</includehint>
|
||||
<includehint>klineedit.h</includehint>
|
||||
</includehints>
|
||||
</UI>
|
@ -0,0 +1,8 @@
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Type=Service
|
||||
Name=locate - Search for local files
|
||||
ServiceTypes=SearchProvider
|
||||
Keys=locate
|
||||
Query=locate:\\{@}
|
||||
Charset=utf8
|
@ -0,0 +1,18 @@
|
||||
[Protocol]
|
||||
exec=kio_locate
|
||||
protocol=locate
|
||||
input=none
|
||||
output=filesystem
|
||||
listing=Name,Type,Size,Date,AccessDate,Access,Owner,Group,Link
|
||||
reading=true
|
||||
Icon=find
|
||||
Description=KDE I/O Slave for the locate command
|
||||
|
||||
# Using this will e.g. display previews etc.
|
||||
Class=:local
|
||||
|
||||
# No special parsing needed. locate does not use URL syntax.
|
||||
URIMode=rawuri
|
||||
|
||||
# Our very sophisticated documentation
|
||||
DocPath=kio-locate/index.html
|
@ -0,0 +1,131 @@
|
||||
/***************************************************************************
|
||||
* kio-locate: KDE I/O Slave for the locate command *
|
||||
* *
|
||||
* Copyright (C) 2005 by Tobi Vollebregt *
|
||||
* tobivollebregt@gmail.com *
|
||||
* *
|
||||
* Thanks to Google's Summer Of Code Program! *
|
||||
* *
|
||||
* Copyright (C) 2004 by Armin Straub *
|
||||
* linux@arminstraub.de *
|
||||
* *
|
||||
* This program was initially written by Michael Schuerig. *
|
||||
* Although I have completely rewritten it, most ideas are adopted *
|
||||
* from his original work. *
|
||||
* *
|
||||
* Copyright (C) 2002 by Michael Schuerig *
|
||||
* michael@schuerig.de *
|
||||
* *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <qtextcodec.h>
|
||||
|
||||
#include <kdebug.h>
|
||||
#include <kstandarddirs.h>
|
||||
|
||||
#include "locater.h"
|
||||
|
||||
|
||||
Locater::Locater(QObject *parent, const char *name)
|
||||
: QObject(parent, name), m_process(QTextCodec::codecForLocale())
|
||||
{
|
||||
DEBUGSTR << "Locater::Locater" << endl;
|
||||
|
||||
connect(&m_process, SIGNAL(processExited(KProcess*)),
|
||||
this, SLOT(finished(KProcess*)));
|
||||
connect(&m_process, SIGNAL(readReady(KProcIO*)),
|
||||
this, SLOT(gotOutput(KProcIO*)));
|
||||
|
||||
setupLocate();
|
||||
}
|
||||
|
||||
|
||||
Locater::~Locater()
|
||||
{
|
||||
DEBUGSTR << "Locater::~Locater" << endl;
|
||||
}
|
||||
|
||||
|
||||
void Locater::setupLocate(const QString& binary, const QString& additionalArguments)
|
||||
{
|
||||
DEBUGSTR << "Locater::setupLocate(" << binary << ", " << additionalArguments << ")" << endl;
|
||||
|
||||
// Automatically choose the correct binary if not specified.
|
||||
if (binary.isEmpty()) {
|
||||
if (KStandardDirs::findExe("slocate")) {
|
||||
m_binary = "slocate";
|
||||
} else if (KStandardDirs::findExe("rlocate")) {
|
||||
m_binary = "rlocate";
|
||||
} else {
|
||||
m_binary = "locate";
|
||||
}
|
||||
DEBUGSTR << "Using binary:" << m_binary << endl;
|
||||
} else {
|
||||
m_binary = binary;
|
||||
}
|
||||
m_additionalArguments = additionalArguments;
|
||||
m_binaryExists = KStandardDirs::findExe(m_binary) != QString::null;
|
||||
}
|
||||
|
||||
|
||||
bool Locater::locate(const QString& pattern, bool ignoreCase, bool regExp)
|
||||
{
|
||||
DEBUGSTR << "Locater::locate(" << pattern << "," << ignoreCase << "," << regExp << ")" << endl;
|
||||
|
||||
m_process.resetAll();
|
||||
m_process << m_binary;
|
||||
if (!m_additionalArguments.isEmpty()) {
|
||||
m_process << m_additionalArguments;
|
||||
}
|
||||
if (ignoreCase) {
|
||||
// m_process << "--ignore-case";
|
||||
m_process << "-i";
|
||||
}
|
||||
if (regExp) {
|
||||
m_process << "-r";
|
||||
}
|
||||
m_process << pattern;
|
||||
|
||||
return m_process.start(KProcess::Block, false);
|
||||
}
|
||||
|
||||
void Locater::stop()
|
||||
{
|
||||
DEBUGSTR << "Locater::stop()" << endl;
|
||||
|
||||
m_process.kill();
|
||||
emit finished();
|
||||
}
|
||||
|
||||
|
||||
void Locater::gotOutput(KProcIO* /*proc*/)
|
||||
{
|
||||
//DEBUGSTR << "Locater::gotOutput" << endl;
|
||||
|
||||
QStringList items;
|
||||
QString line;
|
||||
|
||||
while (m_process.readln(line) != -1) {
|
||||
//DEBUGSTR << "OUTPUT>> '" << line << "'" << endl;
|
||||
|
||||
items << line;
|
||||
}
|
||||
|
||||
emit found(items);
|
||||
}
|
||||
|
||||
|
||||
void Locater::finished(KProcess* /*proc*/)
|
||||
{
|
||||
DEBUGSTR << "Locater::finished" << endl;
|
||||
|
||||
emit finished();
|
||||
}
|
||||
|
||||
|
||||
#include "locater.moc"
|
@ -0,0 +1,103 @@
|
||||
/***************************************************************************
|
||||
* kio-locate: KDE I/O Slave for the locate command *
|
||||
* *
|
||||
* Copyright (C) 2005 by Tobi Vollebregt *
|
||||
* tobivollebregt@gmail.com *
|
||||
* *
|
||||
* Thanks to Google's Summer Of Code Program! *
|
||||
* *
|
||||
* Copyright (C) 2004 by Armin Straub *
|
||||
* linux@arminstraub.de *
|
||||
* *
|
||||
* This program was initially written by Michael Schuerig. *
|
||||
* Although I have completely rewritten it, most ideas are adopted *
|
||||
* from his original work. *
|
||||
* *
|
||||
* Copyright (C) 2002 by Michael Schuerig *
|
||||
* michael@schuerig.de *
|
||||
* *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef LOCATER_H
|
||||
#define LOCATER_H
|
||||
|
||||
#include <qobject.h>
|
||||
#include <qstringlist.h>
|
||||
|
||||
#include <kprocio.h>
|
||||
|
||||
|
||||
#define DEBUGSTR kdDebug(7199)
|
||||
|
||||
|
||||
/**
|
||||
* Interface to the locate command.
|
||||
*
|
||||
* Usage is very simple:
|
||||
* - Calling locate searches for the given pattern.
|
||||
* - You can then collect the found files by connecting to the signal
|
||||
* found.
|
||||
* - When finished the signal finished is emitted.
|
||||
*/
|
||||
class Locater : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Locater(QObject *parent = 0, const char *name = 0);
|
||||
|
||||
virtual ~Locater();
|
||||
|
||||
/**
|
||||
* Starts the search.
|
||||
* @param pattern the pattern to search for
|
||||
* @param ignoreCase whether to ignore case or not
|
||||
* @param regExp whether to treat pattern as a regular expression or not
|
||||
* @return true if locate could be started
|
||||
*/
|
||||
bool locate(const QString& pattern, bool ignoreCase = false, bool regExp = false);
|
||||
|
||||
/**
|
||||
* Set parameters for using locate.
|
||||
* @param binary the binary to use (default: automatically chosen from
|
||||
* slocate, rlocate and locate)
|
||||
* @param additionalArguments additional arguments to use
|
||||
*/
|
||||
void setupLocate(const QString& binary = "", const QString& additionalArguments = "");
|
||||
|
||||
void stop();
|
||||
|
||||
QString binary() { return m_binary; }
|
||||
bool binaryExists() { return m_binaryExists; }
|
||||
|
||||
signals:
|
||||
/**
|
||||
* Emitted whenever some new files are found.
|
||||
* @param items a list of the new filenames
|
||||
*/
|
||||
void found(const QStringList& items);
|
||||
|
||||
/**
|
||||
* Emitted when the search is finished.
|
||||
*/
|
||||
void finished();
|
||||
|
||||
private slots:
|
||||
void gotOutput(KProcIO* proc);
|
||||
void finished(KProcess* proc);
|
||||
|
||||
private:
|
||||
KProcIO m_process;
|
||||
QString m_binary;
|
||||
QString m_additionalArguments;
|
||||
bool m_binaryExists;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,15 @@
|
||||
[Protocol]
|
||||
exec=kio_locate
|
||||
protocol=locater
|
||||
input=none
|
||||
output=filesystem
|
||||
listing=Name,Type,Size,Date,AccessDate,Access,Owner,Group,Link
|
||||
reading=true
|
||||
Icon=find
|
||||
Description=KDE I/O Slave for the locate command
|
||||
|
||||
# Using this will e.g. display previews etc.
|
||||
Class=:local
|
||||
|
||||
# Our very sophisticated documentation
|
||||
DocPath=kio-locate/index.html
|
@ -0,0 +1,124 @@
|
||||
/***************************************************************************
|
||||
* kio-locate: KDE I/O Slave for the locate command *
|
||||
* *
|
||||
* Copyright (C) 2005 by Tobi Vollebregt *
|
||||
* tobivollebregt@gmail.com *
|
||||
* *
|
||||
* Thanks to Google's Summer Of Code Program! *
|
||||
* *
|
||||
* Copyright (C) 2004 by Armin Straub *
|
||||
* linux@arminstraub.de *
|
||||
* *
|
||||
* This program was initially written by Michael Schuerig. *
|
||||
* Although I have completely rewritten it, most ideas are adopted *
|
||||
* from his original work. *
|
||||
* *
|
||||
* Copyright (C) 2002 by Michael Schuerig *
|
||||
* michael@schuerig.de *
|
||||
* *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#include <kdebug.h>
|
||||
|
||||
#include "pattern.h"
|
||||
|
||||
|
||||
LocateRegExp::LocateRegExp(const QString& pattern, bool ignoreCase)
|
||||
{
|
||||
m_ignoreCase = ignoreCase;
|
||||
setPattern(pattern);
|
||||
}
|
||||
|
||||
|
||||
LocateRegExp::LocateRegExp()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
LocateRegExp::~LocateRegExp()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
bool LocateRegExp::isMatching(const QString& file) const
|
||||
{
|
||||
bool matching = m_regExp.search(file) >= 0;
|
||||
if (m_negated) {
|
||||
matching = !matching;
|
||||
}
|
||||
return matching;
|
||||
}
|
||||
|
||||
|
||||
int LocateRegExp::getMatchPosition() const
|
||||
{
|
||||
// Why is QRegExp::pos() non const?
|
||||
return const_cast<LocateRegExp*>(this)->m_regExp.pos();
|
||||
}
|
||||
|
||||
|
||||
int LocateRegExp::getMatchedLength() const
|
||||
{
|
||||
return m_regExp.matchedLength();
|
||||
}
|
||||
|
||||
|
||||
void LocateRegExp::setPattern(const QString& pattern)
|
||||
{
|
||||
m_negated = false;
|
||||
m_pattern = pattern;
|
||||
if ((m_pattern.length() > 0) && (m_pattern[0] == '!')) {
|
||||
m_negated = true;
|
||||
m_pattern = m_pattern.mid(1, m_pattern.length()-1);
|
||||
}
|
||||
m_regExp = QRegExp(m_pattern, !m_ignoreCase);
|
||||
}
|
||||
|
||||
|
||||
QString LocateRegExp::getPattern() const
|
||||
{
|
||||
return m_pattern;
|
||||
}
|
||||
|
||||
|
||||
LocateRegExpList::~LocateRegExpList()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
LocateRegExpList& LocateRegExpList::operator = (const QStringList& list)
|
||||
{
|
||||
clear();
|
||||
QStringList::ConstIterator it = list.begin();
|
||||
for (; it != list.end(); ++it) {
|
||||
append(LocateRegExp((*it), (*it) == (*it).lower()));
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
bool LocateRegExpList::isMatchingOne(const QString& file) const
|
||||
{
|
||||
bool matches = false;
|
||||
LocateRegExpList::ConstIterator it = begin();
|
||||
for (; !matches && (it != end()); ++it) {
|
||||
matches = (*it).isMatching(file);
|
||||
}
|
||||
return matches;
|
||||
}
|
||||
|
||||
|
||||
bool LocateRegExpList::isMatchingAll(const QString& file) const
|
||||
{
|
||||
bool matches = true;
|
||||
LocateRegExpList::ConstIterator it = begin();
|
||||
for (; matches && (it != end()); ++it) {
|
||||
matches = (*it).isMatching(file);
|
||||
}
|
||||
return matches;
|
||||
}
|
@ -0,0 +1,114 @@
|
||||
/***************************************************************************
|
||||
* kio-locate: KDE I/O Slave for the locate command *
|
||||
* *
|
||||
* Copyright (C) 2005 by Tobi Vollebregt *
|
||||
* tobivollebregt@gmail.com *
|
||||
* *
|
||||
* Thanks to Google's Summer Of Code Program! *
|
||||
* *
|
||||
* Copyright (C) 2004 by Armin Straub *
|
||||
* linux@arminstraub.de *
|
||||
* *
|
||||
* This program was initially written by Michael Schuerig. *
|
||||
* Although I have completely rewritten it, most ideas are adopted *
|
||||
* from his original work. *
|
||||
* *
|
||||
* Copyright (C) 2002 by Michael Schuerig *
|
||||
* michael@schuerig.de *
|
||||
* *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef PATTERN_H
|
||||
#define PATTERN_H
|
||||
|
||||
#include <qregexp.h>
|
||||
#include <qstring.h>
|
||||
#include <qvaluelist.h>
|
||||
|
||||
/**
|
||||
* Regular Expression adapted to the needs of kio-locate.
|
||||
*/
|
||||
class LocateRegExp
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* Constructor
|
||||
* @param pattern the pattern to start with
|
||||
* @param ignoreCase specifies, if the search should be case sensitive
|
||||
*/
|
||||
LocateRegExp(const QString& pattern, bool ignoreCase = false);
|
||||
LocateRegExp();
|
||||
|
||||
virtual ~LocateRegExp();
|
||||
|
||||
/**
|
||||
* Determines whether a file name is matching this regular expression.
|
||||
* @param file the filename to match
|
||||
*/
|
||||
virtual bool isMatching(const QString& file) const;
|
||||
|
||||
/**
|
||||
* @return The position of the last match.
|
||||
*/
|
||||
virtual int getMatchPosition() const;
|
||||
|
||||
/**
|
||||
* @return The length of the last match.
|
||||
*/
|
||||
virtual int getMatchedLength() const;
|
||||
|
||||
/**
|
||||
* Set the pattern.
|
||||
* @param pattern the pattern to search for. It may be prepended by an
|
||||
* exclamation mark, to invert its meaning.
|
||||
*/
|
||||
virtual void setPattern(const QString& pattern);
|
||||
|
||||
/**
|
||||
* Get the pattern.
|
||||
* @return search pattern
|
||||
*/
|
||||
virtual QString getPattern() const;
|
||||
|
||||
private:
|
||||
bool m_negated;
|
||||
bool m_ignoreCase;
|
||||
QRegExp m_regExp;
|
||||
QString m_pattern;
|
||||
};
|
||||
|
||||
/**
|
||||
* List of regular expressions
|
||||
*/
|
||||
class LocateRegExpList: public QValueList<LocateRegExp>
|
||||
{
|
||||
public:
|
||||
virtual ~LocateRegExpList();
|
||||
|
||||
/**
|
||||
* Converts a stringlist into a regexplist.
|
||||
* @param list the stringlist to convert
|
||||
*/
|
||||
LocateRegExpList& operator = (const QStringList& list);
|
||||
|
||||
/**
|
||||
* Determines whether a file name is matching at least one regular
|
||||
* expression in the list.
|
||||
* @param file the filename to match
|
||||
*/
|
||||
virtual bool isMatchingOne(const QString& file) const;
|
||||
|
||||
/**
|
||||
* Determines whether a file name is matching all regular expressions
|
||||
* in the list.
|
||||
* @param file the filename to match
|
||||
*/
|
||||
virtual bool isMatchingAll(const QString& file) const;
|
||||
};
|
||||
|
||||
#endif
|
@ -0,0 +1,18 @@
|
||||
[Protocol]
|
||||
exec=kio_locate
|
||||
protocol=rlocate
|
||||
input=none
|
||||
output=filesystem
|
||||
listing=Name,Type,Size,Date,AccessDate,Access,Owner,Group,Link
|
||||
reading=true
|
||||
Icon=find
|
||||
Description=KDE I/O Slave for the locate command
|
||||
|
||||
# Using this will e.g. display previews etc.
|
||||
Class=:local
|
||||
|
||||
# No special parsing needed. locate does not use URL syntax.
|
||||
URIMode=rawuri
|
||||
|
||||
# Our very sophisticated documentation
|
||||
DocPath=kio-locate/index.html
|
@ -0,0 +1,22 @@
|
||||
/***************************************************************************
|
||||
* kio-locate: KDE I/O Slave for the locate command *
|
||||
* *
|
||||
* Copyright (C) 2005 by Tobi Vollebregt *
|
||||
* tobivollebregt@gmail.com *
|
||||
* *
|
||||
* Copyright (C) 2004 by Armin Straub *
|
||||
* linux@arminstraub.de *
|
||||
* *
|
||||
* This program was initially written by Michael Schuerig. *
|
||||
* Although I have completely rewritten it, most ideas are adopted *
|
||||
* from his original work. *
|
||||
* *
|
||||
* Copyright (C) 2002 by Michael Schuerig *
|
||||
* michael@schuerig.de *
|
||||
* *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
@ -0,0 +1,22 @@
|
||||
/***************************************************************************
|
||||
* kio-locate: KDE I/O Slave for the locate command *
|
||||
* *
|
||||
* Copyright (C) 2005 by Tobi Vollebregt *
|
||||
* tobivollebregt@gmail.com *
|
||||
* *
|
||||
* Copyright (C) 2004 by Armin Straub *
|
||||
* linux@arminstraub.de *
|
||||
* *
|
||||
* This program was initially written by Michael Schuerig. *
|
||||
* Although I have completely rewritten it, most ideas are adopted *
|
||||
* from his original work. *
|
||||
* *
|
||||
* Copyright (C) 2002 by Michael Schuerig *
|
||||
* michael@schuerig.de *
|
||||
* *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
***************************************************************************/
|
Loading…
Reference in new issue